面试题答案
一键面试fn handle_result<T, E: std::fmt::Debug>(res: Result<T, E>) {
match res {
Ok(value) => {
let boxed_value = Box::new(value);
println!("Ok value memory address: {:p}", &*boxed_value);
},
Err(error) => {
println!("Error: {:?}", error);
}
}
}
在处理可能带有生命周期的错误类型时需要注意:
- 确保错误类型
E
实现了std::fmt::Debug
trait,以便可以使用{:?}
格式化打印错误信息。 - 由于
E
可能包含生命周期,在函数签名和使用E
的地方,要确保生命周期的一致性和正确性,例如在定义函数时,生命周期会隐式地遵循Rust的生命周期省略规则,不需要显式声明。如果函数内部的操作涉及到引用E
中的数据,要确保这些引用的生命周期是有效的且与函数的整体生命周期规则相符。