2014-11-24 108 views
1

所以...我在我的「trial.rs」文件中有以下非常簡單的代碼。奇怪的鏽編譯錯誤

use std::num::Float; 

pub struct Vector3< T: Float > { 
    pub x: T, 
    pub y: T, 
    pub z: T 
} 

impl< T: Float > Vector3<T> { 

    pub fn zero() -> Vector3<T> { 
     Vector3 { x: Float::zero(), y: Float::zero(), z: Float::zero() } 
    } 

} 

但我得到以下編譯錯誤:

trial.rs:12:22: 12:33 error: unresolved name `Float::zero`. Did you mean to call `Vector3::Float::zero`? 
trial.rs:12   Vector3 { x: Float::zero(), y: Float::zero(), z: Float::zero() } 
          ^~~~~~~~~~~ 
trial.rs:12:40: 12:51 error: unresolved name `Float::zero`. Did you mean to call `Vector3::Float::zero`? 
trial.rs:12   Vector3 { x: Float::zero(), y: Float::zero(), z: Float::zero() } 
               ^~~~~~~~~~~ 
trial.rs:12:58: 12:69 error: unresolved name `Float::zero`. Did you mean to call `Vector3::Float::zero`? 
trial.rs:12   Vector3 { x: Float::zero(), y: Float::zero(), z: Float::zero() } 

任何想法......爲什麼?

編輯-1 ::我想一般定義,這樣我可以定義的東西,如:

pub type Vector3f32 = Vector3<f32>; 
pub type Vector3f64 = Vector3<f64>; 
+0

然後你想'T :: zero()'。 – 2014-11-24 14:42:43

+0

trial.rs:14:22:14:29錯誤:未能解決。使用未聲明的模塊'T' – 2014-11-24 14:43:45

回答

2

你的代碼編譯在我的本地版本鏽病(這是我今天早上更新從GitHub的庫)。

特徵Zero最近已棄用,Float::zero()同時創建。確保你的防鏽版本是最新的。

+0

rustc 0.13.0-nightly(395901393 2014-11-24 00:46:30 +0000) – 2014-11-24 19:14:04

+0

現在它編譯成功... – 2014-11-24 19:16:14