Ожидается несовпадение типов 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()
}
Точный тип возвращаемого значения может быть другим, это просто для иллюстративных целей.