面试题答案
一键面试隐式转换规则
在Rust中,隐式转换并不像其他语言那样常见。不过,对于数字类型,Rust有一些内置的转换特性,例如从较小范围的整数类型转换到较大范围的整数类型,这通常是安全的。对于数组,如果存在从i32到目标类型的合理转换(比如i64,因为i32可以无损转换为i64),可以使用map方法来遍历数组并执行转换。
代码示例
fn main() {
let i32_array: [i32; 3] = [1, 2, 3];
let i64_array: Vec<i64> = i32_array.iter().map(|&x| x as i64).collect();
println!("{:?}", i64_array);
}
在上述代码中,我们将i32类型的数组i32_array通过map方法转换为i64类型的Vec。这里使用iter方法来遍历i32_array,map方法对每个元素执行as i64的转换,最后使用collect方法将结果收集到Vec<i64>中。
请注意,如果要转换为固定长度数组,需要手动指定数组长度,如下:
fn main() {
let i32_array: [i32; 3] = [1, 2, 3];
let mut i64_array: [i64; 3] = [0; 3];
for (i, &num) in i32_array.iter().enumerate() {
i64_array[i] = num as i64;
}
println!("{:?}", i64_array);
}
这段代码通过遍历i32_array并将转换后的元素赋值给i64_array,实现了将i32类型固定长度数组转换为i64类型固定长度数组。
