ide*_*n42 1 variable-assignment rust
我Into在Rust中使用多个参数,并希望避免许多任务和愚蠢的错误.
pub fn my_fancy_function<T>(v: T, u: T, i: T, l: T, j: T)
where T: Into<MyStruct>
{
let v = v.into();
let u = u.into();
let i = l.into(); // Oops, I transposed these!
let l = i.into();
let j = j.into();
// some code
}
Run Code Online (Sandbox Code Playgroud)
有没有办法避免写出大量的作业?宏可能能够这样做:
expand_into!(v, u, i, l, j);
Run Code Online (Sandbox Code Playgroud)
这个方法没有什么特别之处into(),它只是一个例子,你可能经常在一个函数的开头重新声明许多参数,这种参数可以很容易地重复删除.
正如@paholg所说,你可以用宏来轻松完成.但是,你不要需要使用递归,这将是慢一点,少一点有用的(你只能递归的次数有限之前,编译器只是放弃).
我还冒昧地使用方法的完全限定名称Into::into,以避免名称冲突问题:
macro_rules! expand_into {
($($names:ident),*) => {
$(let $names = ::std::convert::Into::into($names);)*
};
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
76 次 |
| 最近记录: |