我无法找到如何解析当前Rust中的浮点数according to the documentation我认为这应该有效:
use std::f32;
use std::from_str::FromStr;
fn main() {
let result = f32::from_str("3.14");
println!("{}", result.unwrap());
}
但是编译器抱怨:
<anon>:5:18: 5:31 error: unresolved name `f32::from_str`.
<anon>:5 let result = f32::from_str("3.14");
^~~~~~~~~~~~~
(参见Rust围栏:here)
我在这里缺少什么?
答案 0 :(得分:10)
在 1.0.0 alpha~Nightly 中,您可以使用std::str::StrExt::parse代替
assert_eq!("3.14".parse(), Ok(3.14f64))
此处还有您的代码示例
fn main() {
let result: f32 = "3.14".parse().unwrap();
println!("{}", result);
}
答案 1 :(得分:8)
目前,静态特征方法只能通过特征调用,返回值通过类型推断推断,因此let x: Option<f32> = FromStr::from_str("3.14");
。实施UFCS(#16293)后,这将更加灵活,至少无需编写完整的Option<f32>
类型签名。
但是,在这种特定情况下,推荐的方法是前置的独立from_str
函数,因此可以在没有导入的情况下使用。该函数在变量绑定上使用显式类型注释,如上所述,但也可以使用较短的类型提示:
fn main() {
let result = from_str::<f32>("3.14");
println!("{}", result.unwrap());
}