使用静态函数实现特征对特征

2023-12-03

trait Trait<T> {
    fn equality() -> bool;
}

impl<T> PartialEq for Trait<T> {
    fn eq(&self, other: &Trait<T>) -> bool {
        self.equality()
    }
}

结果是

main.rs:5:23: 5:31 error: the trait `Trait` cannot be made into an object [E0372]
main.rs:5 impl<T> PartialEq for Trait<T> {

删除静态方法使其可编译。带有 &self 参数的方法也可以编译。


这归结为一个称为物体安全,您可以在其中找到相关信息RFC 255;休恩有他的博客中对对象安全有很好的解释, too.

基本上,创建一个特征对象需要为其自己的特征对象隐式定义该特征;在这种情况下,那就是impl<'a, T> Trait<T> for Trait<T> + 'a。如果可以为所有方法编写有意义的定义,那么特征就是对象安全的。静态方法在这种情况下没有意义——其主体是什么?fn equality() -> bool是,没有Self键入周围来调用equality方法上?它需要凭空提取一个布尔值,但它恭敬地拒绝这样做。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用静态函数实现特征对特征 的相关文章

随机推荐

  • 正则表达式星号用法

    根据MDN x Matches the preceding item x 0 or more times 本质上 前面的字符应该是完全可选的 无论字符串存在与否 都会进行匹配 那么为什么会这样呢 1 var text foobar var
  • JDBC ResultSet 获取带有表别名的列

    想象一下我有一个像这样的查询 SELECT from table1 a table2 b where WHATEVER 也许两个表具有相同的列名 所以我认为通过访问数据会很好 resultSet getString a columnName
  • 改变角度后继续前进。 pygame

    我一直在致力于这个关于坦克的项目 基于游戏 Tank Trouble 我想知道在改变精灵的角度后我如何才能前进 另外如果你知道我如何让我的子弹从墙上弹跳的话 我将非常感谢所提供的任何帮助 谢谢你 这是我的坦克和子弹 这是游戏的代码 impo
  • 发送邮件而不阻止“执行”

    我在 Zend Framework 应用程序中使用 Zend Mail 来发送包含基于 Web 的联系表单内容的电子邮件 邮件本身工作正常 我使用 Google Apps 帐户 但处理时间可能相当长 从几秒钟到近一分钟不等 我的控制器操作通
  • System.out.print() 是如何工作的?

    我使用Java已经很长时间了 我想知道这个函数是如何实现的System out print works 这是我的疑问 作为一个函数 它在某处有一个声明io包裹 但是 Java 开发人员是如何做到这一点的呢 因为这个函数可以接受任意数量的参数
  • 如何让 pthreads 在 PHP 中工作?

    我正在使用 wampserver 在本地计算机上测试和运行 WordPress 代码 为了运行 pthread 我遵循了以下步骤 1 我从以下位置获取了 pthread zip 文件http windows php net download
  • 将输出保存到变量中

    我已经尝试了大约30分钟 这段代码有什么问题吗 输入 var cat marktplatz html grep m 1 post grep o E b jobs htm 输出 var command not found var BLABLA
  • Html Agility Pack - <选项> 内部文本

    我对这个 html 有问题
  • Windows 7 - 无法更新 C:\Program Files 中的程序文​​件

    我有一个与 MS Word 2007 版 一起使用的插件程序 它位于 C Program Files 位置 我安装了 Windows 7 然后对这个位置的文件进行了例行更改 但它只会显示一个只读文件 我怎样才能授予自己写入我自己的程序的权限
  • 如何从 Wappalyzer 中隐藏 Yii Web 框架名称?

    我试图从 Chrome Firefox 的 Wappalyzer 插件中隐藏框架名称 Yii 我需要隐藏框架名称作为安全审核的一部分 我已经在 Apache 配置中关闭了服务器签名 但框架名称 Yii 仍然显示 您可以了解 Wappalyz
  • Rails 4:在哪里放置 JavaScript/CSS 插件

    我有 Rails 4rc1 应用程序 我需要将一些 JavaScript CSS 插件 第三方库 集成到我的应用程序中 我知道 Rails 4 中不推荐使用供应商 插件目录 那么我可以在哪里放置 JavaScript CSS 插件呢 听起来
  • 如何解释此错误“UnicodeDecodeError:‘ascii’编解码器无法解码位置 164 中的字节 0xe2:序号不在范围(128)内”

    我正在尝试在 python 3 中运行以下代码 def func file for file in os listdir cwd if file endswith html f open file r text re sub r cat f
  • Firefox 的错误 - 刷新时输入的禁用属性未重置

    我发现了一个我认为是 Firefox 的错误 我想知道这是否真的是一个错误 以及解决这个问题的方法 如果您使用以下源创建一个基本网页 div div
  • 在 Ado.net C# 中动态构建Where子句

    我将在给定时间接收大约 1000 条记录 并且必须确定它们是现有记录还是新记录 如果它们存在 我必须更新记录 如果是新的 则只需插入它们 我不知道它们是否会存在 或者是否全部存在 我认为最好对数据库进行一次查询 并尝试查找数据库中是否存在其
  • IIS 7 URL 重写匹配 URL

    我正在尝试使用 URL 重写模块在 IIS 7 中设置规范的默认 URL 我认为我误解了 匹配 URL 字段的使用方式 以下似乎没有做任何事情
  • 使用事件调度程序自动备份

    我正在尝试使用 MySQL 中的事件调度程序创建自动备份 这是我的脚本 CREATE DEFINER root localhost EVENT Backup ON SCHEDULE EVERY 1 WEEK STARTS 2013 06 1
  • 事件触发之前的对象处置和垃圾收集

    与我交谈的某人提出了一段代码 private void DownloadInformation string id using WebClient wc new WebClient wc DownloadStringCompleted ne
  • 在java中实现抽象方法/类

    我可以在java中的抽象基类A中实现抽象方法吗 如果答案是肯定的 并且基类 A 中有一个已实现的抽象方法 并且有一个来自 A 的派生类 B B 不是抽象的 B 还必须实现那个基本抽象方法吗 如果我正确理解你的问题 是的 public abs
  • 在两个未在 twilio 中注册的号码之间拨打电话

    有什么方法可以在我的两个用户之间拨打电话吗 我的意思是 我有一个带有注册号码的 twilio 帐户 我必须给我的客户 Bill 打电话 所以当他接听电话时 电话应该重定向到 Bill 选择的另一个客户 让我们说 Joe 因此 比尔点击了一个
  • 使用静态函数实现特征对特征

    trait Trait