gpt4 book ai didi

rust - 如何通过在 Rust 中调用它们的方法来避免重复重新声明变量?

转载 作者:行者123 更新时间:2023-11-29 08:10:35 32 4
gpt4 key购买 nike

我在 Rust 中对多个参数使用 Into 并希望避免许多赋值和愚蠢的错误。

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
}

有没有办法避免写出大块作业?一个宏也许能够做到这一点:

expand_into!(v, u, i, l, j);

into() 方法没有什么特别之处,它只是一个示例,您可能经常以一种可以轻松去重的方式在函数的开头重新声明许多参数.

最佳答案

如@paholg 所述,您可以使用宏轻松完成此操作。但是,您不需要使用递归,递归会稍微慢一点,用处也小一些(在编译器放弃之前,您只能递归有限的次数)。

我还冒昧地使用了 Into::into 方法的完全限定名称,以避免名称冲突问题:

macro_rules! expand_into {
($($names:ident),*) => {
$(let $names = ::std::convert::Into::into($names);)*
};
}

关于rust - 如何通过在 Rust 中调用它们的方法来避免重复重新声明变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40567538/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com