我希望能够在Rust中的泛型结构上放置类型约束。
下面是一些伪代码,解释了它的外观:
struct OrderedFloat<T>
where T is f64 or f32
{
value: T
}
字符串
预期目的是为该结构提供impl Ord
。
我不想直接将impl Ord
用于f32
和f64
,这可能会破坏其他行为。
上面的语法无效,它是伪代码。它无法编译。
以下代码也无法编译:
struct OrderedFloat<T>
where T = f64
{
value: T
}
型
如果我理解正确的话,这永远不会起作用,因为where
约束适用于 traits not types,而f64
是一种类型。
我建议如果有一个特质的概念说“X是f64样的”和“X是f32样的”,这种行为可能是可以实现的。
这样的性状可以是所谓的“标记性状”。
我对Rust编程的这个领域不是特别熟悉,所以我不知道这些想法是否朝着正确的方向发展,或者这是否不是一个可实现的解决方案。
1条答案
按热度按时间n9vozmp41#
你可以这样做:
字符串
以上利用了所谓的“标记”性状。