2016-05-18 8 views

答えて

4

あなたはnumまたは​​木箱を使用してnum::Floatnum::Integerまたは関連するものは何でも形質とあなたの一般的な関数型をバインドすることができます:

私はこの仮定の HasSQRTのように、一般的なタイプの境界のためにそれを使用したいのですが
extern crate num; 

use num::Float; 

fn main() { 
    let f1: f32 = 2.0; 
    let f2: f64 = 3.0; 
    let i1: i32 = 3; 

    println!("{:?}", sqrt(f1)); 
    println!("{:?}", sqrt(f2)); 
    println!("{:?}", sqrt(i1)); // error 
} 

fn sqrt<T: Float>(input: T) -> T { 
    input.sqrt() 
} 
+1

できる限り私のプロジェクトに依存関係を追加したくありません。それ以外の方法はありますか? –

+0

私は必要な機能を提供できる新しい特性を定義することを考えていますが、これは私の最新のオプションの1つです。 –

+9

@HosseinNoroozpourは依存関係を使用します。 Rustは、パッケージ管理が組み込まれ、強く受け入れられている点で、他の多くの言語とは異なります。標準的な例は乱数生成であり、これは標準ライブラリではなくクレートで提供されます。 – Shepmaster