如何从字符串解析i64?

アレッ*_*ックス 4 rust

显然,有些东西发生了变化,因此我无法从字符串中解析i64:

use std::from_str::FromStr;

let tree1: BTreeMap<String, String> = //....
let my_i64: i64 = from_str(tree1.get("key1").unwrap().as_slice()).unwrap();
Run Code Online (Sandbox Code Playgroud)

错误:

16:27 error: unresolved import `std::from_str::FromStr`. Could not find `from_str` in `std`

$ rustc -V
rustc 1.0.0-nightly (4be79d6ac 2015-01-23 16:08:14 +0000)
Run Code Online (Sandbox Code Playgroud)

Dog*_*ert 13

您的导入失败,因为FromStr现在是特征std::str::FromStr.而且,from_str已经不在了prelude.将字符串转换为整数的首选方法是str::parse

fn main() {
    let i = "123".parse::<i64>();
    println!("{:?}", i);
}
Run Code Online (Sandbox Code Playgroud)

版画

Some(123)
Run Code Online (Sandbox Code Playgroud)

演示

  • 如果可能的话,使用`let i:i64 ="123".parse();`而不是丑陋的模板语法. (2认同)
  • @hauleth,`.parse()`返回`Option &lt;T&gt;`,因此必须为`let i:Option &lt;i64&gt; =“ 123” .parse();`。 (2认同)