Конечно, есть.
Сначала давайте объясним, что делают ваши пути. Они сочетают в себе различные функции языка, и, хотя все они, похоже, «объявляют плавающее число в Rust», они не являются простыми объявлениями. используйте большую часть времени:
let _another_one = 3.4;
И вот несколько других слишком сложных способов:
let _another_one = 17./5.; // good old math
let _another_one: f64 = From::from(3.4); // From::from identity conversion
let _another_one = f64::from(3.4); // Same as above, no inference
let _another_one = "3.4".parse::<f64>().unwrap(); // Why not parse them?
let _another_one = f64::from_bits(4614838538166547251); // When you really need your bits right
let _another_one = unsafe { std::mem::transmute::<_, f64>(4614838538166547251u64) }; // same as above, but only if you want to be naughty
let (_another_one,): (f64,) = (3.4,); // Deconstructing a one-tuple.
// Deserialize from JSON:
let _another_one: f64 = {
use serde; // 1.0.104
use serde_json; // 1.0.44
serde_json::from_str("3.4").unwrap()
};
// This requires #![feature(type_ascription)] at the moment:
let _another_one = 3.4 : f64;