traits相关内容

我如何命名一组类型边界?

如果我有一长串必须在许多地方重复的类型边界,我如何为它们命名? 例如,如果不是: fn foo(t: T) -> T where T: Copy, T: Debug { ... } 我想写: fn foo(t: T) -> T where T: CopyDebug { ... } 其中CopyDebug定义为Copy ..
发布时间:2022-08-16 18:05:49 其他开发

为包含可迭代字段的结构实现迭代器特征

我想为包含可迭代字段的结构实现Iterator特征。在结构上迭代应该会产生与在字段上迭代得到的结果相同的结果。这就是我想要的(显然不起作用): struct Foo { bar: Vec, } impl Iterator for Foo { type Item: &char; // Error: expected named lifetime parameter ..
发布时间:2022-07-20 19:27:59 其他开发

如何在不消耗价值的情况下实现添加特征

在实现Add特征时(以及其他一些特征,如Mul、Sub等)对于简单结构,必须完全使用结构值,因此不可能在以后使用它。 同时,内置原语(u8、usize等)实现Add,同时允许在调用add之后使用它。 如何实现Add以便我的结构在调用add后能够使用它? use std::ops::Add; struct I(usize); impl Add for I { type Out ..
发布时间:2022-05-25 20:10:33 其他开发

Rust特性是否与Java接口相同

在我看来,Rust的trait与Java的interface是一样的--一组需要在对象上实现的函数。 将其命名为trait而不是interface是出于技术原因还是出于某种偏好? 推荐答案 RUST特征和Java接口都解决了这样一个问题,即有多个可能的实现遵循某种约定/协议/接口来与值/对象交互,而不像Java超类那样约束实现细节。它们可以在许多相同的情况下使用。然而,它们在许多 ..
发布时间:2022-05-25 19:57:03 其他开发

函数指针与FN特征对象

fn do_twice(f: fn(i32) -> i32, arg: i32) -> i32 { // definition f(arg) + f(arg) } do_twice(|x| x + 1, 5) // call 此函数同时接受、闭包和函数指针。它以函数指针作为参数类型。 什么时候我应该更喜欢使用特征对象,如&dyn Fn(i32) -> i32或Box ..
发布时间:2022-05-25 19:42:35 其他开发

用类型和引用重载运算符

以下MWE尝试定义容器类型(包含抽象可乘类型)及其引用的所有可能的乘法运算,会导致Ruust编译器因求值溢出而受阻。根据消息,在第二个impl中,不知何故,它不能决定如果定义了第四个impl,则调用什么Impl。你知道怎么修吗?如何约束泛型impl不应用于引用类型? use std::ops::*; struct A { v : T } impl Mul f ..
发布时间:2022-05-25 19:31:00 其他开发

在Laravel雄辩模型中创建动态命名的变异器

我有一个日期字段列表,所有这些字段在它们的赋值符中都有相同的逻辑。我想将此功能提取到特征中,这样将来我所需要的就是在模型中创建日期字段数组并使用特征。 类似以下内容: foreach( $dates as $date ) { $dateCamelCase = $this->dashesToUpperCase($date); $setDateFunctionName =' ..
发布时间:2022-05-25 19:15:46 PHP

应为类型参数,但找到结构

我遇到了一个问题,我将其简化为以下代码: trait Logger {} struct DefaultLogger; impl Logger for DefaultLogger {} struct A where L: Logger { logger: Box, } impl A where L: Logger { fn new() -> Se ..
发布时间:2022-05-25 19:08:56 其他开发

未找到Laravel自定义特征

我对特征还不熟悉,但我想我应该试一试。但是,它似乎没有加载。 我已经在Laravel应用程序目录下的一个文件夹中创建了一个特征:appHelpers,名为CheckPermsAgainstObjectTrait.php 以下是特征代码: ..
发布时间:2022-05-25 19:00:34 PHP

在PHP中有条件地使用特征

只有在满足条件的情况下,我才想在类中使用特征。例如: trait T { } class A { if ($condition) { use T; } } 我知道我不能在课堂上直接使用if。所以,我正在寻找一种有条件地使用类似于上面的特征的方法。有可能吗? 推荐答案 您可以使用Use T创建一个类,它在不使用T的情况下扩展类,然后在使用该类的代 ..
发布时间:2022-05-25 18:53:09 PHP

C++的概念和Rust的特征有什么相似之处和不同之处?

在Rust中,抽象的主要工具是特征。在C++中,有两种抽象工具:抽象类和模板。为了摆脱使用模板的一些缺点(例如,难以读取错误消息),C++引入了概念,它们是"named sets of requirements"。 这两个功能似乎非常相似: 定义特征/概念是通过列出需求来完成的。 两者都可用于绑定/限制泛型/模板类型参数。 Rust特征和带有概念的C++模板都是单一化的(我知道Ru ..
发布时间:2022-05-25 18:47:06 C/C++开发

为什么T实现A+B而不实现特征C:A+B?

这个例子让我摸不着头脑。尽管i32实现了所有Num + One + Zero + PartialOrd + RemAssign + Ord,但当我将它们放入特征中以便可以指定别名时,它不起作用。 use num_traits::{Num, identities::One, identities::Zero}; use std::cmp::{Ord, PartialOrd}; use std: ..
发布时间:2022-05-25 18:37:36 其他开发

Symfony 容器特征

奇怪的问题,我有使用 \Symfony\Component\DependencyInjection\ContainerAwareTrait 的控制器 类 MainController{使用 \Symfony\Component\DependencyInjection\ContainerAwareTrait;/*** @Route("/", name="_index")* @模板()*/公共函数 ..
发布时间:2022-01-24 21:21:17 PHP