Ожидается несовпадение типов Rust(), найдена структура `Enumerate

Я пытаюсь вернуть данные из coremidi, которые представляют собой список имен устройств midi. Я не уверен, в каком формате он находится. Если это невозможно, я пытаюсь вернуть каждое имя в цикле for.

Я продолжаю получать несоответствующие типы.

      #![cfg_attr(
    all(not(debug_assertions), target_os = "windows"),
    windows_subsystem = "windows"
)]

extern crate coremidi;

fn main() {
    tauri::Builder::default()
        .invoke_handler(tauri::generate_handler![get_midi_device_list])
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

#[tauri::command]
fn get_midi_device_list() {
    println!("System destinations:");

    for (i, destination) in coremidi::Destinations.into_iter().enumerate() {
        let display_name = get_display_name(&destination);
        println!("[{}] {}", i, display_name);
    }

    println!();
    println!("System sources:");

    for (i, source) in coremidi::Sources.into_iter().enumerate() {
        let display_name = get_display_name(&source);
        println!("[{}] {}", i, display_name);
    }

    //Trying to return data from line below or the data in the for  loop
    coremidi::Destinations.into_iter().enumerate()
}

fn get_display_name(endpoint: &coremidi::Endpoint) -> String {
    endpoint
        .display_name()
        .unwrap_or_else(|| "[Unknown Display Name]".to_string())
}

1 ответ

Хотя кажется, что команды tauri могут возвращать данные, все приведенные ими примеры имеют аннотированный тип возвращаемого значения (т. е. атрибут, похоже, не переписывает это).

Поэтому убедитесь, что вы указали для своей функции возвращаемый тип:

      #[tauri::command]
fn get_midi_device_list() -> impl Iterator<(usize, Destination)> {
  // ...

  coremidi::Destinations.into_iter().enumerate()
}

Точный тип возвращаемого значения может быть другим, это просто для иллюстративных целей.

Другие вопросы по тегам