【发布时间】:2021-02-15 23:10:22
【问题描述】:
我想返回引用类型,但是第一个make_debug 函数实现没有编译。此函数签名的返回类型使用T 或impl std::fmt::Debug 有什么区别?
fn test() -> impl std::fmt::Debug + 'static {
let value = "v".to_string();
make_debug(&value)
}
// This function not work
// fn make_debug<'a, T: std::fmt::Debug>(_: &'a T) -> T {
// 42u8
// }
// This one works well
fn make_debug<'a, T: std::fmt::Debug>(_: &'a T) -> impl std::fmt::Debug {
42u8
}
【问题讨论】:
-
一个小时前有一个类似的question
-
这是因为想象
make_debug::<String>(123)。然后make_debug将返回String但您正试图返回u8 -
是的,谢谢,我明白了。 @pretzelhammer
标签: rust