我正在研究一個庫,它將提供軸對齊邊界框(AABB)操作的特徵。這種特點就是聲明如下:如何爲通用數值類型創建特定值?
trait Aabb {
type Precision : Zero + One + Num + PartialOrd + Copy;
// [...]
}
我不在乎用戶選擇什麼樣的精度,只要這些限制得到尊重(但我真的不希望被選爲整數類型)。
我無法使用文字。有些操作需要恆定的值,作爲一個例子:
let extension = 0.1;
aabb.extend(extension);
這不起作用,因爲Aabb::extend
預計Aabb::Precision
而不是浮動。我的解決辦法是這樣的:
let mut ten = Aabb::Precision::zero();
for _ in 0..10 {
ten = ten + Aabb::Precision::one();
}
aabb_extension = Aabb::Precision::one()/ten;
這工作,但我需要每一個我需要一個具體的數字時訴諸這一點,它是越來越繁瑣。這真的是唯一的方法嗎?
您可以要求'Precision'實現'從'。 –
starblue
@starblue我也試過,但f32沒有實現從這就是我期望使用最多的類型 –
那麼,你可以使用'From'呢? –
starblue