rust - 为什么我不必为类型实现 Any 特征,即使它是必需的?
问题描述
:
在定义一个特征时,我的理解是,在左侧实现任何时候都需要右侧的特征名称。如果是这样,为什么以下编译:
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
包含实现:
impl<T> Any for T
where
T: 'static + ?Sized,
这意味着Any
只要它包含的任何引用是'static
并且类型被调整大小,任何类型都可以实现。您的Thing
结构满足这两个要求,因此它确实实现Any
并且您的代码可以编译。
推荐阅读
- sql - 具有限制的 Postgres 查询选择具有相似标识符的所有记录
- reactjs - 我在反应应用程序上遇到 npm start 问题
- google-apps-script - Google Sheets API - 创建应用脚本或将它们附加到使用 API 创建的电子表格
- java - 在 JPA/Hibernate 中实现喜欢/不喜欢状态检索的最有效方法?
- vb.net - 无法在树莓派 4 中从 SMTP 发送电子邮件 - vb.net
- python - 在 discord.py 中,如何通过 ID 删除多条消息?
- swift - 使用 QLPreviewingController.preparePreviewOfFile 预览时设置 QuickLook 窗口大小
- sql - 更新查询语句
- node.js - NVM 不会将 Node 更新到最新版本
- ios - 用于在字符串中搜索格式说明符的 Swift 正则表达式