rust - 为什么我不必为类型实现 Any 特性,即使它是必需的?

标签 rust

定义特征时,我的理解是 : 右侧的特征名称在实现左侧时都是必需的。如果是这样,为什么会编译以下内容:

use std::any::Any;

trait Trait: Any {}

struct Thing {}

impl Trait for Thing {}

以下不编译(这符合我对什么是正确的理解)

trait RequiredTrait {}
trait Trait: RequiredTrait {}

struct Thing {}

impl Trait for Thing {}

最佳答案

std::any 包含 the implementation :

impl<T> Any for T
where
    T: 'static + ?Sized, 

这意味着任何类型都可以实现 Any,只要它包含的任何引用都是 'static 并且该类型是大小合适的。您的 Thing 结构满足这两个要求,因此它确实实现了 Any 并且您的代码可以编译。

关于rust - 为什么我不必为类型实现 Any 特性,即使它是必需的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53309958/

相关文章:

rust - 将字符串转换为 SocketAddr

rust - 使用hyper关闭的Rust生命周期

rust - 包含具有不同要求和冲突的参数的 Clap arg 组

rust - 这是从二进制文件中读取结构的最自然方式吗?

nested - 将具有父 ID 的结构列表转换为树列表

rust - futures::executor::block_on 和 block_in_place 之间是否存在性能差异

optional-parameters - 如何在 Rust 中使用参数重载或可选参数?

rust - 如何证明 Rust 类型系统支持代数数据类型 (ADT)?

rust - 如何更好地理解 Rust 中的 Crate?

rust - 使用标准库实现 slice_shift_char