タイプアノテーションに応じて異なるタイプの値を返すRust関数

Dulguun Otgon

タイプの注釈に応じて異なるタイプの値を返す関数が必要です。次のようになります。

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]

編集
0

コメントを追加

0

関連記事

分類Dev

インタープリター付きのLLVMRunFunctionが異なる関数に対して同じ値を返すのはなぜですか?

分類Dev

アノテーションを実装して、FunctionalInterfaceのようなメンバー関数、関数タイプなどの数を制限する方法は?

分類Dev

関数アノテーションを使用して関数呼び出しタイプを確認する方法

分類Dev

@Primary アノテーションに関係なく、Spring Boot が同じタイプの Bean を作成するのはなぜですか?

分類Dev

関数ポインターの可変性に応じて、Rustで関数ポインターの動作が異なるのはなぜですか?

分類Dev

タイプに応じて異なる関数を呼び出す

分類Dev

テンプレートパラメータのタイプに応じて値を返す

分類Dev

オプションの入力に基づいて2つの異なるタイプを返す関数を入力する

分類Dev

ルートデータに応じて異なるモデルタイプのAsp.netシングルコントローラーアクション

分類Dev

メソッドは、コンテキストに応じて異なるタイプの変数を返します

分類Dev

Wine内のすべてのファイルタイプを対応するネイティブアプリケーションに関連付ける方法は?

分類Dev

Wine内のすべてのファイルタイプを対応するネイティブアプリケーションに関連付ける方法は?

分類Dev

Reactのプロパティ値に応じて異なるアイコンをマッピングする

分類Dev

コンテナの要素タイプに応じてテンプレート関数のインスタンス化を有効にする方法

分類Dev

コンテナの要素タイプに応じてテンプレート関数のインスタンス化を有効にする方法

分類Dev

Rustで明示的なアノテーションを使用して生のポインタを逆参照する

分類Dev

アノテーションのみを使用して、同じタイプのBeanを配列に結合するにはどうすればよいですか?

分類Dev

インスタンス化のポイントに応じて異なるタイプを期待する

分類Dev

特別な条件に応じて関数のタイプを定義する

分類Dev

asp.net Webアプリケーションでjavascriptを使用して、ドロップダウンリストから選択したオプションに応じて異なる入力タイプを表示する方法

分類Dev

関連するビューなしでコントローラーアクションにマップされた送信ボタン。状況に応じて異なるビューを返す

分類Dev

C ++のテンプレートタイプに応じて関数を呼び出す方法は?

分類Dev

Guiceは、親インスタンスのアノテーションに基づいて異なるインスタンスを挿入します

分類Dev

使用するターゲットコンパイラオプションに応じて、異なるクラスメソッドを使用する

分類Dev

ファクトリ関数を使用してPython3.7でアノテーションタイプを生成する際の「typing.ClassVar」の問題

分類Dev

JSR269アノテーション処理getElementsAnnotatedWith()は、ループごとにすべてのアノテーション付き要素を返し、どのタイプに属しているかを区別できません。

分類Dev

Typescript関数は、引数の数またはタイプに応じてタイプを返します

分類Dev

コードを共有しながら、アプリケーションごとに異なる構成を使用して、複数反応のネイティブアプリケーションを管理するにはどうすればよいですか?

分類Dev

変数のタイプに応じて異なる関数を呼び出すときの正しいフロータイプパターンは何ですか?

Related 関連記事

  1. 1

    インタープリター付きのLLVMRunFunctionが異なる関数に対して同じ値を返すのはなぜですか?

  2. 2

    アノテーションを実装して、FunctionalInterfaceのようなメンバー関数、関数タイプなどの数を制限する方法は?

  3. 3

    関数アノテーションを使用して関数呼び出しタイプを確認する方法

  4. 4

    @Primary アノテーションに関係なく、Spring Boot が同じタイプの Bean を作成するのはなぜですか?

  5. 5

    関数ポインターの可変性に応じて、Rustで関数ポインターの動作が異なるのはなぜですか?

  6. 6

    タイプに応じて異なる関数を呼び出す

  7. 7

    テンプレートパラメータのタイプに応じて値を返す

  8. 8

    オプションの入力に基づいて2つの異なるタイプを返す関数を入力する

  9. 9

    ルートデータに応じて異なるモデルタイプのAsp.netシングルコントローラーアクション

  10. 10

    メソッドは、コンテキストに応じて異なるタイプの変数を返します

  11. 11

    Wine内のすべてのファイルタイプを対応するネイティブアプリケーションに関連付ける方法は?

  12. 12

    Wine内のすべてのファイルタイプを対応するネイティブアプリケーションに関連付ける方法は?

  13. 13

    Reactのプロパティ値に応じて異なるアイコンをマッピングする

  14. 14

    コンテナの要素タイプに応じてテンプレート関数のインスタンス化を有効にする方法

  15. 15

    コンテナの要素タイプに応じてテンプレート関数のインスタンス化を有効にする方法

  16. 16

    Rustで明示的なアノテーションを使用して生のポインタを逆参照する

  17. 17

    アノテーションのみを使用して、同じタイプのBeanを配列に結合するにはどうすればよいですか?

  18. 18

    インスタンス化のポイントに応じて異なるタイプを期待する

  19. 19

    特別な条件に応じて関数のタイプを定義する

  20. 20

    asp.net Webアプリケーションでjavascriptを使用して、ドロップダウンリストから選択したオプションに応じて異なる入力タイプを表示する方法

  21. 21

    関連するビューなしでコントローラーアクションにマップされた送信ボタン。状況に応じて異なるビューを返す

  22. 22

    C ++のテンプレートタイプに応じて関数を呼び出す方法は?

  23. 23

    Guiceは、親インスタンスのアノテーションに基づいて異なるインスタンスを挿入します

  24. 24

    使用するターゲットコンパイラオプションに応じて、異なるクラスメソッドを使用する

  25. 25

    ファクトリ関数を使用してPython3.7でアノテーションタイプを生成する際の「typing.ClassVar」の問題

  26. 26

    JSR269アノテーション処理getElementsAnnotatedWith()は、ループごとにすべてのアノテーション付き要素を返し、どのタイプに属しているかを区別できません。

  27. 27

    Typescript関数は、引数の数またはタイプに応じてタイプを返します

  28. 28

    コードを共有しながら、アプリケーションごとに異なる構成を使用して、複数反応のネイティブアプリケーションを管理するにはどうすればよいですか?

  29. 29

    変数のタイプに応じて異なる関数を呼び出すときの正しいフロータイプパターンは何ですか?

ホットタグ

アーカイブ