Rust 对os::args中的字符串从_str调用时类型不匹配
我正在完成的锈教程,我目前在Collatz的问题。当我试图编译这段代码时,我得到一个错误:Rust 对os::args中的字符串从_str调用时类型不匹配,rust,Rust,我正在完成的锈教程,我目前在Collatz的问题。当我试图编译这段代码时,我得到一个错误: main.rs:9:26: 9:39 error: mismatched types: expected `&str`, found `collections::string::String` (expected &-ptr, found struct collections::string::String)
main.rs:9:26: 9:39 error: mismatched types: expected `&str`, found `collections::string::String` (expected &-ptr, found struct collections::string::String)
main.rs:9 let i = from_str::<int>(os::args()[1]).unwrap();
该教程指出:
2014年春季
这在锈迹斑斑的土地上是个坏消息。直到最近,这种语言还在经历许多结构上的变化。但是,自1.0.0 betas发布以来,该语言已经非常稳定
下面是一个固定的例子:
use std::env; // env, not os
fn main() {
// args is an iterator now
let args: Vec<_> = env::args().collect();
if args.len() < 2 {
println!("Error: Please provide a number as argument.");
return;
}
// int doesn't exist anymore, from_str is better as `parse`
let i: i32 = args[1].parse().unwrap();
// No more `d` specifier
println!("{} has {} Collatz steps", i, collatz(i));
}
// variables should be snake_case
fn collatz(n: i32) -> i32 {
if n == 1 { return 0; }
match n % 2 {
0 => { 1 + collatz(n/2) }
_ => { 1 + collatz(n*3+1) }
}
}
使用std::env;//环境,而不是操作系统
fn main(){
//args现在是迭代器
让args:Vec=env::args().collect();
如果args.len()小于2{
println!(“错误:请提供一个数字作为参数。”);
返回;
}
//int不再存在,from_str作为'parse'更好`
设i:i32=args[1].parse().unwrap();
//没有更多的'd'说明符
println!(“{}有{}个Collatz步”,i,Collatz(i));
}
//变量应为snake\u情况
fn collatz(n:i32)->i32{
如果n==1{返回0;}
匹配%2{
0=>{1+collatz(n/2)}
_=>{1+collatz(n*3+1)}
}
}
我建议你选一个
use std::env; // env, not os
fn main() {
// args is an iterator now
let args: Vec<_> = env::args().collect();
if args.len() < 2 {
println!("Error: Please provide a number as argument.");
return;
}
// int doesn't exist anymore, from_str is better as `parse`
let i: i32 = args[1].parse().unwrap();
// No more `d` specifier
println!("{} has {} Collatz steps", i, collatz(i));
}
// variables should be snake_case
fn collatz(n: i32) -> i32 {
if n == 1 { return 0; }
match n % 2 {
0 => { 1 + collatz(n/2) }
_ => { 1 + collatz(n*3+1) }
}
}