タイプの注釈に応じて異なるタイプの値を返す関数が必要です。次のようになります。
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();
これは、特性を定義することによって行われます。
trait GiveFive {
fn give_five() -> Self;
}
必要なタイプに実装します。
impl GiveFive for &'static str {
fn give_five() -> &'static str {
return "five";
}
}
impl GiveFive for i32 {
fn give_five() -> i32 {
return 5;
}
}
impl GiveFive for f32 {
fn give_five() -> f32 {
return 5.0;
}
}
次にそれを使用するには:
fn main() {
let x: &str = GiveFive::give_five(); // returns "five"
let y: i32 = GiveFive::give_five(); // returns 5
let z: f32 = GiveFive::give_five(); // return 5.0
}
または
fn main() {
let x = <&str>::give_five(); // returns "five"
let y = i32::give_five(); // returns 5
let z = f32::give_five(); // return 5.0
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加