traits相关内容
..
我有一个名为 Frame 的基本结构,它对大量计算很有用:. pub struct Frame;{grid_val: Vec,grid_space: Vec Frame 可以用来描述最基本的计算,但有时会出现更复杂的问题,我需要添加更多的几何信息.所以我对每个几何图形都使用了合成: pub struct Sphere{网格:框架,半径:T}pub struct 双曲线{to
..
我无法理解盒装特征的值是如何产生的.考虑以下代码: trait Fooer {fn foo(&self);}i32 的 impl Fooer {fn foo(&self) { println!("Fooer on i32!");}}fn 主要() {让 a = Box::new(32);//工作,创建一个 Box让 b = Box::::new(32);//工作,创建一个 B
..
这是为了简化我提出的问题的一部分 这里: 我想编写一些代码,保证在满足特定条件的类型上工作.假设今天我写了一些代码: 不可变示例随便::ASCIIString结尾函数 step_one(x::Example)长度(x.whatever)结尾函数 step_two(x::Int64)(x * 2.5)::Float64结尾函数 combine_two_steps{X}(x::X)中间 = s
..
假设我有一个 特质快乐{} 我可以为我想要的任何结构实现 Happy,例如: 结构狗;结构猫;结构鳄鱼;impl Happy for Dog {}impl Happy for Cat {}impl Happy for Alligator {} 现在,我想自动 impl 我的 Happy 特征,用于由所有实现 Happy 特征的类型组成的任何元组.直观地说,所有快乐的元组也是快乐的.
..
我有一个按钮,我想根据所使用的 iPhone 设置不同的宽度.显然 7 Plus 的宽度更大,而线下的宽度更小.我单击按钮,单击 Vary for Traits,选择 Height,更改每个 iPhone 的约束,然后单击 Done Varying 并构建,但无论我在哪个设备上运行它,它始终保留我最后编辑的约束. 解决方案 Vary For Traits 与不同的 iPhone 尺寸无关.
..
有人能解释一下我什么时候想使用 Groovy Traits vs. Mixins (@Mixin) vs. Delegates (@Delegate)?也许一些权衡和设计问题会有所帮助. 它们似乎都允许重用多个“类"行为.谢谢.:-) 这个 SO 线程也很有帮助:@Delegate 之间的区别和 Groovy 中的 @Mixin AST 转换 解决方案 我同意,它们似乎都允许重
..
我正在构建一个实现字符串连接的库;也就是说,打印由分隔符分隔的容器的所有元素.我的基本设计如下所示: 使用 std::fmt;#[派生(调试,克隆,PartialEq,Eq)]pub struct Join{容器:容器,九月:九月,}implfmt::显示加入在哪里对于&'a Container
..
我想使用 Peekable 作为新 cautious_take_while 操作的基础,该操作类似于 IteratorExt 中的 take_whilecode> 但不消耗第一个失败的项目.(还有一个问题是这是否是一个好主意,以及是否有更好的方法来在 Rust 中实现这个目标——我很乐意得到这个方向的提示,但主要是我试图理解我的代码在哪里打破). 我尝试启用的 API 基本上是: 让 mu
..
我是 C++ 新手,所以请多多包涵.我试图理解 STL iterator_traits.在《C++ 标准库》一书中,iterator_traits 结构体定义如下: 模板结构迭代器特征{typedef typename T::value_type value_type;typedef typename T::difference_type 差异类型;typedef typena
..
我试图用一堆字段实现一个通用结构,其中每个字段类型都应该知道整个结构的确切类型.这是一种策略模式. pub struct Example>, D>{酒吧:S,pub a: S::Associated,发布数据:D,}酒吧特质战略{类型关联;fn 运行(&self, &T);}酒吧特质 HasData {类型数据;fn 数据(&self) ->&自我::数据;}impl,D
..
我最近一直在努力学习 PHP,但我发现自己沉迷于 trait.我理解水平代码重用的概念,并且不想一定要从抽象类继承.我不明白的是:使用特性和接口之间的关键区别是什么? 我曾尝试寻找解释何时使用一种或另一种的不错的博客文章或文章,但到目前为止我发现的示例看起来非常相似以至于完全相同. 解决方案 一个接口定义了一组实现类必须实现的方法. 当特征被use使用时,方法的实现也会随之而来
..
我通读了 trait 文档 并找到了一个简洁的在结构上使用特征的定义.是否可以在 enum 类型上使用特征?我看到过否定的答案,但他们已经 3 岁了,并没有完全按照我的意愿去做. 我尝试这样做: #[derive(Debug, Copy, Clone)]酒吧枚举场景类型{过场动画,游戏,菜单,暂停,学分,出口,}//我们要保证每个SceneType都可以静态播放特质可玩{fn 播放();}
..
我正在 Rust 中使用 WinAPI,并且有一些功能(例如 EnumWindows()) 需要回调.回调通常接受一个额外的参数(LPARAM 类型,它是 i64 的别名),您可以使用它向回调传递一些自定义数据. 我已将 Vec 对象作为 LPARAM 发送到 WinAPI 回调,并且运行良好.例如,在我的情况下,将 lparam 值“解包"到 Vec 看起来像这样: unsafe ext
..
我想为引用和非引用类型实现一个特征.我是否必须两次实现这些功能,或者这样做不习惯? 这是演示代码: struct Bar {}特征 Foo {fn hi(&self);}impl'a>Foo for &'a Bar {fn hi(&self) {打印!(“嗨")}}impl Foo for Bar {fn hi(&self) {打印!(“嗨")}}fn 主(){让栏 = 栏 {};(&ba
..
我有一个包含函数对象的结构: struct Foo{功能:F,} 我想添加一个绑定到结构定义的 Fn 特征.问题是:我确实关心第一个参数(它必须是 i32),而不是第二个.我真正想写的是这样的: struct Foo在哪里∃ P 使得 F: Fn(i32, P),{功能:F,} 所以在英语中:类型 F 必须是一个接受两个参数的函数,第一个是 i32 (第二个可以是任何参数).上面的语法显然
..
考虑这两个特征: pub trait Foo {fn new(arg: u32) ->自己;}酒吧特质 Bar
: Foo {fn with_parameter(arg: u32, 参数: P) ->自己;} 我想添加一揽子实现: impl, P: Default>Foo 为 T {fn new(arg: u32) ->自己 {Self::with_parameter(arg, P::d
..
我创建了一个用于教育目的的简单项目,所以我有一个主要功能和 3 个特征 Battery、Display 和 GSM 以及实现他们.我希望 main 函数位于文件 main.rs 中,而 3 个特征位于另一个名为 phone.rs 的文件中: phone.rs 修改电话{酒吧结构电池{型号:字符串,hours_idle : i16,hours_talk : i16}酒吧结构显示{尺寸:i16
..
我正在努力学习对象安全的基础知识.如果我有这个代码 struct S {x: i32,}特质特质:大小{fn f(&self) ->i32在哪里自我:尺码;}fn object_safety_dynamic(x: Trait) {} 我收到 error[E0038]: trait `Trait` 不能变成一个对象-->src/lib.rs:11:29|5 |特质特质:大小{|----- --
..
我无法理解盒装特征的价值是如何产生的.考虑以下代码: trait Fooer {fn foo(&self);}i32 的 impl Fooer {fn foo(&self) { println!("Fooer on i32!");}}fn 主(){让 a = Box::new(32);//工作,创建一个 Box让 b = Box::::new(32);//工作,创建一个 Box
..