2015-02-01 2 views
2

Видимо, что-то изменилось, и, таким образом, я не могу разобрать I64 из строки:Как разобрать i64 из строки?

use std::from_str::FromStr; 

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

Ошибка:

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) 
+0

Нам действительно нужен кто-то с Mjolnir в теге Rust ... –

ответ

5

Ваш импорт терпит неудачу, потому что FromStr черта теперь в str::str::FromStr. Кроме того, from_str больше не находится в prelude. Предпочтительным способом преобразования строк в целые числа является недавно добавленный std::str::StrExt::parse.

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

печатает

Some(123) 

Demo

+2

Использование 'Пусть I: I64 = "123" .parse(); 'вместо от уродливого синтаксиса шаблона, если это возможно. – Hauleth

+1

@hauleth, '.parse()' возвращает 'Опция ', поэтому это должно быть 'let i: Option =" 123 ".parse();'. – Dogbert

+0

Да. Конечно. Я забыл. – Hauleth

Смежные вопросы