traits相关内容

如何在类型已经实现 Display 的 trait 对象上实现 Display

我有一些代码返回 MyTrait 类型的特征对象,以便它可以返回几个不同的结构之一.我想为 trait 对象实现 Display trait,以便我可以打印对象,并将详细信息委托给各种结构,因为它们每个都需要自己的自定义格式化程序. 我可以通过在 MyTrait 定义中包含格式化方法来实现这一点,然后为 MyTrait 实现 Display 并委托 - 就像这个: trait MyTrai ..
发布时间:2021-09-09 19:06:42 其他开发

“缓存代理"的正确所有权在锈?

我想使用 Factory 从 String 构建一个对象并有多个实现:1) 实际构建和 2) 缓存(存储在内存中HashMap).问题是,在#1 的情况下,它必须传递所有权,而在#2 HashMap 拥有该值的情况下,只能返回一个引用. 使用 std::collections::HashMap;//产品界面酒吧特质 TProduct {fn get_title(&self) ->&字符串;}// ..
发布时间:2021-09-09 19:06:36 其他开发

如何为我自己的结构在 Vector 上实现 PartialEq?

我有以下定义: pub struct List{存储器:Vec T ,} 对于这种类型,我将获得与 #[derive(PartialEq)] 等效的内容,例如 如何实现 PartialEq? 我使用匹配表达式,例如: implList 的 PartialEq{fn eq(&self, other: &List) ->布尔{self.memory == other.memory}} ..
发布时间:2021-09-09 19:06:34 其他开发

为什么 len() 和 is_empty() 没有在特征中定义?

Rust 中的大多数模式都被特征捕获(Iterator、From、Borrow 等). 为什么像 len/is_empty 这样普遍的模式在标准库中没有关联的特征?这会导致我无法预见的问题吗?被认为是无用的吗?或者只是没有人想到它(这似乎不太可能)? 解决方案 它是否被认为无用? 我猜这就是原因. 如果知道某物是空的或长度为 15,你能做什么?几乎什么都没有,除非你也 ..
发布时间:2021-09-09 19:06:31 其他开发

如何在yii2中编写特征?

特征比行为更有效,因为行为是需要时间和内存的对象.所以谁能解释我如何在 yii2 中编写特征? 解决方案 一般: Trait 类似于类,但仅用于以细粒度和一致的方式对功能进行分组.无法单独实例化 Trait. sayHello();$o->sayWorld();$o->sayExclamationMark();?> 使用行为然后特征主要用于 YII. 看看这个: http ..
发布时间:2021-09-09 19:06:28 PHP

Json 主体转换为密封特征

我有戏!可以接收 json 主体作为 3 或 4 种形式的端点(我尝试使用泛型类型,但不起作用). 控制器: def getChartData = Action.async(parse.json) { request =>//错误:无法将 JsValue 转换为 ChartDataRequest 类型(这是密封特征)service.getChartData(request.body.asI ..
发布时间:2021-09-09 19:06:25 其他开发

&[u8] 不能被 RangeFull 索引?

我正在尝试创建一个结构体,该结构体可以包含可切片到 [u8] 的任何内容. 使用 std::ops::{Index, RangeFull};struct Wrapper在哪里DataT:?大小+索引,{数据:DataT,}impl包装器在哪里DataT:?大小+索引,{fn subwrapper(&self) ->包装器{让 mut buffer = ..
发布时间:2021-09-09 19:06:23 其他开发

是否有“Index"的子特性指定了“len"方法?

std::ops::Index trait 由支持数组下标表示法的类型实现.似乎大多数实现 Index 的类型也有一个 len 方法,但它不是特征的一部分,所以你不能假设它存在.因此,我发现自己编写了专门用于切片的代码(其中确实有一个 len 方法),但我更愿意更通用. 是否有 Index 的子特性指定了 len 方法或以其他方式显示允许的索引范围? 解决方案 是否有 Index ..
发布时间:2021-09-09 19:06:20 其他开发

对于这个 UFCS 调用,Rust 想要什么类型的注释?

抱歉,我可能遗漏了一些超级明显的内容.我想知道为什么我不能像这样调用我的 trait 方法.这不应该是标准的UFCS吗. trait FooPrinter {fn 打印 () {println!("你好");}}fn 主 () {FooPrinter::print();} 婴儿围栏:http://is.gd/ZPu9iP 我收到以下错误 error: type annotations ..
发布时间:2021-09-09 19:06:17 其他开发

我可以在 Rust 中定义具有自身类型参数的特征吗?

我是 Rust 的新手,在处理特征和泛型时遇到了麻烦.我首先定义了一个 trait 来为我做一些工作,然后定义了一个通用结构,将它用作类型参数.现在我意识到在原始特征中,我实际上想使用我定义的结构体,所以我处于一种循环中.我不确定如何摆脱它,并想知道我想要的东西是否可以通过泛型实现,或者我可能需要使用拳击或其他方法?下面的最小示例. 这就是我最初的做法: trait Worker {fn ..
发布时间:2021-09-09 19:06:14 其他开发

对字符串的内置支持 ->特征?

鉴于以下内容: scala>性状 Foo定义特征 Foo标度>case 对象 Bip 扩展了 Foo定义模块 Bip标度>case 对象 Bar 扩展了 Foo定义的模块栏 Scala 中是否有任何功能可以从 String 生成 Foo? 示例: f("Bip") === Bip f("Bar") === Bar f("...") === 异常(或者可能返回 None) ..
发布时间:2021-09-09 19:06:11 其他开发

数组不能被 RangeFull 索引?

考虑以下示例: 使用 std::ops::Index;使用 std::ops::RangeFull;fn f>(x:T){}fn 主(){让 x: [i32;4] = [0, 1, 2, 3];f(x);} 调用 f(x) 时,出现错误: error[E0277]:类型`[i32;4]` 不能被 `std::ops::RangeFull` 索引-->src/main.rs:8:5|8 |f( ..
发布时间:2021-09-09 19:06:05 其他开发

使用 impl Trait 时如何获得 Deref 强制

此函数返回类列表集合的第一个元素.它适用于各种不同的类似列表的类型: fn first(x: impl Deref) ->T{x[0]} 例如,这将编译并运行: let data: Vec= vec![3, 4];assert_eq!(first(data), 3);让数据:&[usize] = &[3, 4];assert_eq!(first(data), 3);让数据:Rc[使用]>= ..
发布时间:2021-09-09 19:06:03 其他开发

rust 生命周期参数必须比静态生命周期长

所以我正在关注 本教程 来构建一个类似 rogue 的游戏,我已经决定开始使用规范调度器来简化系统的注册和执行. 为此,我添加了一个 Dispatcher 到我的 State 结构: 使用 rltk::{GameState, Rltk};使用规格::世界::世界;使用规范::调度程序;pub struct State ..
发布时间:2021-09-09 19:05:57 其他开发

模板初始化期间会发生什么?

在 Scala 官方文档,它说: 如果这是一个 trait 的模板,那么它的 mixin-evaluation 包括对语句序列 statsstats 的评估. 如果这不是特征的模板,则其评估包括以下步骤. 首先,计算超类构造函数 sc. 然后,模板线性化中的所有基类直到模板的由 sc 表示的超类是混合评估的.混合评估在线性化中以相反的顺序发生. 最后,对语句序列 st ..
发布时间:2021-09-09 19:05:54 其他开发

特征对象的静态数组

是否可以定义特征对象的静态数组: #[macro_use]extern crate lazy_static;性状 Tr {}结构体{}impl Tr for A {}结构 B {}B {} 的 impl Tr懒惰的静态!{静态参考 ARR: [Box;2] = [Box::new(A {}), Box::new(B {})];//错误[E0277]: `(dyn Tr + 'static)` 不 ..
发布时间:2021-09-09 19:05:51 其他开发

无法在 Rust 中向上转换为 supertrait

我正在尝试在 Rust 中制作一个程序,其中我有一个返回特征对象引用(&T)的函数,其中 T 有 std::any::Any 作为超特征(T 定义为 trait T: std::any::Any).由于每个实现 T 的值也必须实现 std::any::Any,我希望能够做到: fn give_T_ref() ->&'静态T{...}让 y: &std::any::Any = give_T_ref ..
发布时间:2021-09-09 19:05:48 其他开发