gpt4 book ai didi

reflection - 如何检查 Rust 的编译时是否实现了特征?

转载 作者:行者123 更新时间:2023-12-05 06:31:31 25 4
gpt4 key购买 nike

我想打印一个带有 Display 特性的变量,如果它被实现,或者带有 Debug 特性。所有类型在编译时都是已知的。

let display = MyDisplayType::new(); // implements Display
let debug = MyDebugType::new(); // implements Debug

output!(display); // uses Display a.k.a. println!("{}", display);
output!(debug); // uses Debug a.k.a. println!("{:?}", debug);

什么是最干净的方法?

最佳答案

如果你想在编译时断言一个类型实现了一个特征,这是可能的。例如,在单元测试中,您可以为特征创建一个有界的函数。如果类型没有实现特征,代码将无法编译。

fn implements_the_trait<T: MyTrait>() {}

#[test]
fn implements_my_trait() {
implements_the_trait::<MyType>();
}

关于reflection - 如何检查 Rust 的编译时是否实现了特征?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51812126/

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