Rust中where子句中可能的特征运算符是什么?

Rust中where子句中可能的特征运算符是什么?,rust,traits,method-signature,type-signature,Rust,Traits,Method Signature,Type Signature,我正在学习生锈,并进入了关于特质界限的一章。在那一章中,他们给出了一个例子,使用+(plus)操作符枚举where子句中所有必需的特征 在锈病特征上允许哪些其他操作员?我搜索了一下,但找不到任何关于这个的文档。Rust是否支持“或”符号、括号、否定 '或'符号 不。这样的事情对我来说没有意义-如果某个东西可能是a或B,代码会怎么做 括号 否,除非您将括号计算在Fn(…)和friends中,否则使用尖括号作为泛型(Vec)或在切片中使用方括号([u8]),但这些都是类型的一部分 再说一次,这样的请

我正在学习生锈,并进入了关于特质界限的一章。在那一章中,他们给出了一个例子,使用
+
(plus)操作符枚举
where
子句中所有必需的特征

在锈病特征上允许哪些其他操作员?我搜索了一下,但找不到任何关于这个的文档。Rust是否支持“或”符号、括号、否定

'或'符号

不。这样的事情对我来说没有意义-如果某个东西可能是
a
B
,代码会怎么做

括号

否,除非您将括号计算在
Fn(…)
和friends中,否则使用尖括号作为泛型(
Vec
)或在切片中使用方括号(
[u8]
),但这些都是类型的一部分

再说一次,这样的请求对我来说没有意义,为什么你需要任何类型的分组

否定

不,我认为这是因为处理消极逻辑会使事情变得复杂

其他操作员



资料来源:我写过。虽然我可能错过了一些东西,但它解析了我抛出的所有~37500个Rust文件,因此它非常适合。

比您更适合。我认为,如果Rust支持可选特征,可以将“or”操作符创建为?Trait1+?Trait2。还是不?@GeorgeShuklin Rust不支持可选特征。
(问号)仅适用于特定的特征
尺寸
。对于人体工程学,每个通用类型都有一个隐式的
T:Sized
绑定,除非您使用
?Sized
删除默认绑定。它不可用,但确实有意义。假设您有一个类似于
fn print_相关的东西(a:a,b:b){print(a.to_string(),b.to_string())}
。如果您希望编译器不允许函数中只包含任何
Stringable
类型,那么像
where这样的where子句(A:Stringable,B:Stringable,(A==B或(A:ISomething和B:ISomethingElse))
对我来说很有意义,而是只允许在几种可能的类型中的任何一种中相关的类型relationships@user986730这个具体的例子可以通过只使用一个泛型类型来实现,这将确保两个值具有相同的类型。我仍然认为我今天需要那种
的东西。想拥有一种与超级特质比特有关的特质。T可以是任何整数(u8、u32、i32等)。这可以通过在trait本身上指定trait边界来实现,但是trait可以被实现多次,并且接收mytrait作为arg的func将具有不必要的泛型边界。由于trait是用任何整数实现的
BitOr
,因此可以对用整数表达式实现我的trait的类型执行bit或(其类型i32、i64等将被自动推断)。续。。