traits 相关问题

在计算机编程中,特征是一组方法,用作“构建面向对象程序的简单概念模型”

为什么我不能指定特征的子类?

scala> A 类 定义A类 scala> 特征 T 扩展 A { val t = 1 } 定义性状T //为什么我可以这样做? scala> 类 B 扩展 T 定义B类 scala> 新 B res0: B = B@2e9c76 是...

回答 4 投票 0

使用 from_fn_with_state 中间件时如何修复服务特征错误?

我正在创建一个中间件函数来验证传入的请求。我已经阅读了 Axum 的文档和其他一些示例。我陷入了编译器特征错误。 这是精简后的代码: #[

回答 1 投票 0

如何修复中间件 Axum 特征错误

我正在创建一个中间件函数来验证传入的请求。我已经阅读了 Axum 的文档和其他一些示例。我已经被编译器特征错误困扰了几天了。 我在这里...

回答 1 投票 0

为什么我的 `-> impl Future<...> + 'static` 特征方法上的 `+ 'static` 不受尊重?

我有一个特征函数,它引用 self 并返回一个“静态未来”。但我似乎无法使用它。编译器仍然坚持认为我的未来捕获了自我的生命周期,即使它

回答 1 投票 0

C++中如何检查模板函数是否存在?

有没有办法检查函数是否存在,无论它是否是模板化的? 例如: 模板 A级 { 民众: 模板 ...

回答 1 投票 0

如何从作为泛型参数的类型转换为作为泛型参数的特征(也显示限制)

我想要一个列表: 包含一些实现通用参数特征的值, 允许推送 T 类型的值并返回 IdOf, 并使用 IdOf 获取值, 该...

回答 1 投票 0

如何在 Trait 中配置 Laravel 模型属性?

我有一个名为 Multilingual 的特征,它使用模型的 lang 和 Translation_of 属性(另请参阅 https://stackoverflow.com/a/7299777/1453912)来提供实体的多种翻译。 ...

回答 1 投票 0

为 Option<T> 实现通用 TryFrom<T> 不起作用

我使用 TryFrom 将我的类型转换为一些具体类型。 我尝试将 Option 的 TryFrom 实现为一揽子实现,其中 T 指代那些具体类型,但我不能...

回答 1 投票 0

Java 接口中的静态方法由实现接口的类实现

我知道可以在Java接口中定义绑定到接口本身的静态方法。但是,我想定义要由...实现的静态方法的签名

回答 1 投票 0

Fn 特征中的特征界限

我可能错过了一些简单的东西,但我很难说服 Rust 编译器,这个 writer 让 mut writer = BufWriter::new(file);可以在 F:Fn(Write) -> Result 中使用<(...

回答 1 投票 0

Vec 实现中的 Rust<T>

给出代码 结构体NodeFragment{ 字符:字符串, 名称: 字符串, 成本:i32, r#类型:字符串 } pub 结构节点 { pub char_name:字符串, 酒吧节点名称:字符串, 酒吧 cp_cost...

回答 1 投票 0

使用常规和“负”边界全面实现特征

我想使用特征向量“隐藏”向量类型。 我还希望此特征提供一种通过字符串引用将值推送给实现者的方法。 理想情况下,我想使用 FromStr...

回答 1 投票 0

如何确保我的类型实现自动特征?

假设我有一个如下结构: 结构体 Foo { foo:盒子, } 与 Copy 等可选择加入的自动特征不同,我无法将 #[derive(Send) 添加到我的结构中以要求编译器选择加入...

回答 2 投票 0

如何确保我的类型实现自动特征?

假设我有一个如下结构: 结构体 Foo { foo:盒子, } 与像 Copy 这样选择加入的自动特征不同,我无法将 #[derive(Send) 添加到我的结构中以要求编译器选择加入,并且

回答 1 投票 0

是否可以创建一个设置元属性的属性特征?

我尝试创建一个属性特征。用例是在对象到文档映射的上下文中将类的某些属性标记为“可修改”,而其他属性则不是。 角色粗略{ 有布尔$。

回答 1 投票 0

javascript 中的特征 [已关闭]

如何在 javascript 中实现特征?

回答 3 投票 0

将空列表传递给采用特征迭代器的函数

我有一些代码需要接受数据结构列表,这些数据结构可以是多种不同类型中的任何一种,但都实现了 Into。所以,我说参数是 impl

回答 1 投票 0

如果类型满足条件,我可以创建默认特征实现吗?

是否可以为特征 TraitB 的函数/方法 fun_b 定义默认实现,以防特征 TraitA 也被实现? 下面我定义了一个额外的特征 TraitBDerived 与

回答 1 投票 0

在带有泛型参数的函数中使用具体类型时如何处理“预期类型参数,找到结构”错误?

我一直在使用 Rust 搞乱特征,并且遇到了一个问题。这是一些代码: 结构 Foo; 特质栏{} 为 Foo {} 实现 Bar fn 条(条:B){} fn 巴尔 我一直在使用 Rust 搞乱特征,并且遇到了一个问题。这是一些代码: struct Foo; trait Bar {} impl Bar for Foo {} fn bar<B: Bar>(bar: B) {} fn barr<B: Bar>() { bar(Foo); // 1. THIS WILL WORK let foo: B = Foo; // 2. THIS WILL NOT WORK let foo_vec: Vec<B> = vec![Foo]; // 3. THIS WILL NOT WORK } 这会产生错误: error[E0308]: mismatched types --> src/main.rs:11:18 | 11 | let foo: B = Foo; // 2. THIS WILL NOT WORK | ^^^ expected type parameter, found struct `Foo` | = note: expected type `B` found type `Foo` error[E0308]: mismatched types --> src/main.rs:12:32 | 12 | let foo_vec: Vec<B> = vec![Foo]; // 3. THIS WILL NOT WORK | ^^^ expected type parameter, found struct `Foo` | = note: expected type `_` found type `Foo` 为什么#2 和#3 不起作用?我怎样才能让编译器知道 Foo 实际上有 Bar impl? 另一个例子: struct Foo<B: Bar> { bar: Option<B>, } struct Foo2; trait Bar {} impl<B: Bar> Bar for Foo<B> {} impl Bar for Foo2 {} fn bar<B: Bar>(bar: B) {} fn circle_vec<B: Bar>() { bar(Foo2); // 1. WORKS Foo { bar: Some(Foo { bar: None }) }; // 2. WILL NOT WORK } 这会给我这个错误: error[E0282]: type annotations needed --> src/main.rs:17:21 | 17 | Foo { bar: Some(Foo { bar: None }) }; // 2. WILL NOT WORK | ^^^ cannot infer type for `B` 你有两个不同的问题,所以我想我会写两个不同的答案。 在您的第一个代码示例中,2 和 3 不起作用,因为 B 是一个 input 类型参数; barr 的调用者决定 B 是什么。然而,你试图强迫它成为Foo。 假设我们有另一个 Bar 的实现: struct Quux; impl Bar for Quux {} 假设我们这样调用 barr: barr::<Quux>() barr 本质上会被编译为: fn barr() { bar(Foo); let foo: Quux = Foo; let foo_vec: Vec<Quux> = vec![Foo]; } Foo 和 Quux 不兼容,Vec<Foo> 和 Vec<Quux> 也不兼容。 如果您尝试创建任意 Bar 对象的向量,则需要以非通用方式使用 Bar。由于特征类型未调整大小,因此您无法将它们直接存储在 Vec 中,因此您必须使用 Vec<Box<Bar>>、Vec<&Bar> 或包装指针的其他类型。 fn barr() { bar(Foo); let foo: Box<Bar> = Box::new(Foo); let foo_vec: Vec<Box<Bar>> = vec![Box::new(Foo) as Box<Bar>]; } 在您的第二个代码示例中,错误是 None 具有类型 Option<T>,并且编译器无法推断 T 的适当类型。我们可以像这样显式指定 T: fn circle_vec<B: Bar>() { bar(Foo2); Foo { bar: Some(Foo { bar: None::<Foo2> }), }; }

回答 1 投票 0

SQLx 中的 `&mut *transaction` 和 `&mut transaction` 有什么区别?

我很好奇在我的示例中 &mut *transaction 和 &mut transaction 之间有什么区别,因为我不认为该 transaction 是一个开始的指针,但出于某种原因 &mut *

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.