2016-03-15 37 views

risposta

11

Attualmente tutta la storia generica con tipi numerici primitivi in ​​Rust è disponibile nella cassa ufficiale num. Questa cassa contiene, tra le altre cose, una serie di tratti che sono implementati per vari tipi di numeri primitivi, e in particolare c'è Float che rappresenta un numero in virgola mobile.

Float caratteristica fornisce un sacco di metodi che sono specifici per i numeri in virgola mobile, ma si estende anche Num e NumCast tratti che permettono di eseguire operazioni numeriche e ottenere tipi generici di numeri primitivi arbitrari. Con Float il codice potrebbe essere la seguente:

use num::{Float, NumCast}; 

fn multiply<F: Float>(n: F) -> F { 
    n * NumCast::from(2).unwrap() 
} 

NumCast::from() rendimenti Option perché non tutti i calchi numerici hanno senso, ma in questo caso particolare è garantito il funzionamento, quindi ho utilizzato unwrap().