Я хочу иметь функцию, которая возвращает различный тип значения в зависимости от типа аннотации, что-то вроде:
give_five::<String>(); // returns "five"
give_five::<i32>(); // returns 5
give_five::<f32>(); // return 5.0
Я пытался написать, но это не работает. Я знаю, почему это не работает. Но я понятия не имею, как это сделать.
fn give_five<String>() -> String {
String::from("five")
}
fn give_five<i32>() -> i32 {
5
}
fn give_five<f32>() -> f32 {
5.0
}
Я получил идею из rand
ящика. Так как это может сделать
let mut rng = rand::thread_rng();
let x: i32 = rng.gen();
let y: f32 = rng.gen();