如何用夜间Rust解析浮子?

Lev*_*ans 4 rust

我不知道如何从当前的Rust解析浮点数,根据我认为应该工作的文档:

use std::f32;
use std::from_str::FromStr;

fn main() {
    let result = f32::from_str("3.14");
    println!("{}", result.unwrap());
}
Run Code Online (Sandbox Code Playgroud)

但编译器抱怨:

<anon>:5:18: 5:31 error: unresolved name `f32::from_str`.
<anon>:5     let result = f32::from_str("3.14");
                          ^~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)

(参见Rust围栏:这里)

我在这里缺少什么?

Abd*_*iaa 10

1.0.0 alpha~Nightly中你可以使用std :: str :: StrExt :: parse代替

assert_eq!("3.14".parse(), Ok(3.14f64))
Run Code Online (Sandbox Code Playgroud)

这里还有一个代码示例

fn main() {
    let result: f32 = "3.14".parse().unwrap();
    println!("{}", result);
}
Run Code Online (Sandbox Code Playgroud)

围栏链接


huo*_*uon 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());
}
Run Code Online (Sandbox Code Playgroud)

围栏

  • @DavideAversa您可以使用`"3.14".parse :: <f32>()`代替. (3认同)