当前位置: 首页 > 知识库问答 >
问题:

如何在Rust中的内部特性上实现外部特性?

公羊曜灿
2023-03-14

我想在main函数中打印Tweet数据类型的实例,但摘要特征不实现调试特征。有没有办法在特征或任何工作上实现特征。取消注释第二行并注释第一行将工作,因为字符串类型实现了显示特征。

#[derive(Debug)]
struct Tweet {
    name: String,
}

pub trait Summary {
    fn summarize(&self) -> String;
}

impl Summary for Tweet {
    fn summarize(&self) -> String {
        format!("@{}", &self.name)
    }
}

fn summarizeable(x: String) -> impl Summary {
    Tweet { name: x }
}

fn main() {
    //1.
    println!("{:#?}", summarizeable(String::from("Alex")));
    //2.println!("{}",summarizeable(String::from("Alex")).summarize());
}

error[E0277]: impl Summary 未实现 std::fmt::D ebug --

错误:由于以前的错误而中止

有关此错误的更多信息,请尝试rustc--explain E0277。错误:无法编译p1

要了解更多信息,请使用--verbose再次运行该命令。

共有1个答案

蒋航
2023-03-14

您可以要求implsSummary的任何内容也必须implstd::fmt::Debug,如下所示:

pub trait Summary : std::fmt::Debug { // Summary requires Debug
    fn summarize(&self) -> String;
}

如果您不想将调试绑定到摘要,则始终可以引入另一个特征,其中包含其他两个特征:

pub trait DebuggableSummary : Summary + std::fmt::Display {}
 类似资料:
  • 问题内容: Java中的以下代码可正确编译: 而Scala中的此代码不: Java代码清单到Scala的正确翻译(如果存在)是什么? 欢迎对语言设计进行理论解释。 问题答案: 内部类型仅针对特征的特定实例实现定义。由于scala具有 依赖于路径的 类型,因此的每个实例将具有自己的子特性。 如果您需要一个接口来实现客户端的一般行为,并且不依赖于特定实例,则应在

  • 我一直在尝试通过葡萄糖服务从一个可编程设备读取葡萄糖测量记录。我能够成功地连接到设备并读取新记录,但当我请求以前记录的列表时,我会收到状态为129的回调(“GATT_INTERNAL_ERROR”)。之后不会发生其他回调,最终传输超时。 据我所知,要检索记录,我需要向记录访问控制点特性写入请求。收到请求后,设备应通过吐出请求的记录来响应。 我的请求代码如下: 其中{0x01,0x01}枚举对应于{

  • 突变性可以是性状中的一个通用参数吗?我想为一个类型的可变和不可变变体实现一个特性,而不必复制 一厢情愿的伪代码:

  • 序列化框架 客户端FailMode 客户端路由选择 统计与限流

  • 有内在的 科特林拥有的: Java如何解决这个问题:

  • 我只是想知道如何手动设置库伯内特斯Web仪表板使用的外部endpoint。 创建名称空间kube系统后,我运行了以下操作: 是否有一个标志可以用来指定外部访问使用哪个tcp端口?据我所知,这只是随机分配一个。我已经查看了留档,但我很难找到解决方案。如果有任何帮助,将不胜感激。