Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 是否可以用Rust中的match初始化不可变变量?_Variables_Rust_Immutability_Mutability - Fatal编程技术网

Variables 是否可以用Rust中的match初始化不可变变量?

Variables 是否可以用Rust中的match初始化不可变变量?,variables,rust,immutability,mutability,Variables,Rust,Immutability,Mutability,我有一段代码,尝试将命令行参数转换为整数。问题是,宽度和高度变量应该是不变的,因为我不打算改变它们。是否有任何方法可以使用像let width={match….}这样的匹配,并在一步中将它们初始化为不可变变量,而不是给它们一个默认值并对其进行变异?我相信这样会更安全、更有效率 let args: Vec<String> = env::args().collect(); let width_arg = &args[1]; let height_arg = &args[2

我有一段代码,尝试将命令行参数转换为整数。问题是,宽度和高度变量应该是不变的,因为我不打算改变它们。是否有任何方法可以使用像let width={match….}这样的匹配,并在一步中将它们初始化为不可变变量,而不是给它们一个默认值并对其进行变异?我相信这样会更安全、更有效率

let args: Vec<String> = env::args().collect();
let width_arg = &args[1];
let height_arg = &args[2];

let mut width = 0;
let mut height = 0;

match width_arg.parse::<i32>() {
    Ok(w) => width = w,
    Err(_) => ask_for_number(),
}

match height_arg.parse::<i32>() {
    Ok(h) => height = h,
    Err(_) => ask_for_number(),
}

是的,只需像这样初始化变量:让a=match b{/*您的代码在这里*/}

是的,只需像这样初始化变量:让a=match b{/*您的代码在这里*/}

当然,match是一个表达式,所以您应该能够按如下方式重写它:

let args: Vec<String> = env::args().collect();
let width_arg = &args[1];
let height_arg = &args[2];

let width = match width_arg.parse::<i32>() {
    Ok(w) => w,
    Err(_) => ask_for_number(),
};

let height = match height_arg.parse::<i32>() {
    Ok(h) => h,
    Err(_) => ask_for_number(),
};

当然,match是一个表达式,因此您应该能够按如下方式重写它:

let args: Vec<String> = env::args().collect();
let width_arg = &args[1];
let height_arg = &args[2];

let width = match width_arg.parse::<i32>() {
    Ok(w) => w,
    Err(_) => ask_for_number(),
};

let height = match height_arg.parse::<i32>() {
    Ok(h) => h,
    Err(_) => ask_for_number(),
};

这正是我想要的。谢谢。这正是我想要的。谢谢。你可能对……感兴趣