作者:贷款喝稀饭 | 来源:互联网 | 2022-11-29 18:55
在定义特征时,我的理解是:
在左侧实施的任何时候都需要右侧的特征名称.如果是这样,为什么以下编译:
use std::any::Any;
trait Trait: Any {}
struct Thing {}
impl Trait for Thing {}
以下不编译(这符合我对正确的理解)
trait RequiredTrait {}
trait Trait: RequiredTrait {}
struct Thing {}
impl Trait for Thing {}
sepp2k..
7
std::any
包含实现:
impl Any for T
where
T: 'static + ?Sized,
这意味着任何类型Any
只要它包含的任何引用都是实现的'static
,并且类型的大小.您的Thing
结构符合这两个要求,因此它实现Any
并且您的代码编译.
1> sepp2k..:
std::any
包含实现:
impl Any for T
where
T: 'static + ?Sized,
这意味着任何类型Any
只要它包含的任何引用都是实现的'static
,并且类型的大小.您的Thing
结构符合这两个要求,因此它实现Any
并且您的代码编译.