Add static constructors for Vectors (commented out)
See https://github.com/mozilla/rust/issues/3427
This commit is contained in:
parent
9f3a6325d7
commit
22189867d4
1 changed files with 23 additions and 5 deletions
28
src/vec.rs
28
src/vec.rs
|
@ -48,22 +48,24 @@ trait Vector<T> {
|
|||
|
||||
|
||||
trait Vector2<T> {
|
||||
// static pure fn _new(x:float, y:float) -> self;
|
||||
|
||||
// This is where I wish rust had properties ;)
|
||||
pure fn x() -> T;
|
||||
pure fn y() -> T;
|
||||
|
||||
// static pure fn make(x:float, y:float) -> self;
|
||||
// static pure fn unit_x() -> self;
|
||||
// static pure fn unit_y() -> self;
|
||||
}
|
||||
|
||||
trait Vector3<T> {
|
||||
// error: duplicate function definition
|
||||
// static pure fn _new(x:float, y:float, z:float) -> self;
|
||||
|
||||
pure fn x() -> T;
|
||||
pure fn y() -> T;
|
||||
pure fn z() -> T;
|
||||
|
||||
// static pure fn make(x:float, y:float, z:float) -> self;
|
||||
|
||||
// static pure fn unit_x() -> self;
|
||||
// static pure fn unit_y() -> self;
|
||||
// static pure fn unit_z() -> self;
|
||||
|
@ -72,13 +74,14 @@ trait Vector3<T> {
|
|||
}
|
||||
|
||||
trait Vector4<T> {
|
||||
// error: duplicate function definition
|
||||
// static pure fn _new(x:float, y:float, z:float, w:float) -> self;
|
||||
|
||||
pure fn x() -> T;
|
||||
pure fn y() -> T;
|
||||
pure fn z() -> T;
|
||||
pure fn w() -> T;
|
||||
|
||||
// static pure fn make(x:float, y:float, z:float, w:float) -> self;
|
||||
|
||||
// static pure fn unit_x() -> self;
|
||||
// static pure fn unit_y() -> self;
|
||||
// static pure fn unit_z() -> self;
|
||||
|
@ -109,6 +112,11 @@ pure fn vec2(x:float, y:float) -> vec2 {
|
|||
}
|
||||
|
||||
impl vec2: Vector2<float> {
|
||||
// #[inline(always)]
|
||||
// static pure fn _new(x:float, y:float) -> vec2 {
|
||||
// vec2 { data: [ x, y ] }
|
||||
// }
|
||||
|
||||
#[inline(always)] pure fn x() -> float { self.data[0] }
|
||||
#[inline(always)] pure fn y() -> float { self.data[1] }
|
||||
}
|
||||
|
@ -261,6 +269,11 @@ pure fn vec3(x:float, y:float, z:float) -> vec3 {
|
|||
}
|
||||
|
||||
impl vec3: Vector3<float> {
|
||||
// #[inline(always)]
|
||||
// static pure fn _new(x:float, y:float, z:float) -> vec3 {
|
||||
// vec2 { data: [ x, y, z ] }
|
||||
// }
|
||||
|
||||
#[inline(always)] pure fn x() -> float { self.data[0] }
|
||||
#[inline(always)] pure fn y() -> float { self.data[1] }
|
||||
#[inline(always)] pure fn z() -> float { self.data[2] }
|
||||
|
@ -435,6 +448,11 @@ pure fn vec4(x:float, y:float, z:float, w:float) -> vec4 {
|
|||
}
|
||||
|
||||
impl vec4: Vector4<float> {
|
||||
// #[inline(always)]
|
||||
// static pure fn _new(x:float, y:float, z:float, w:float) -> vec3 {
|
||||
// vec2 { data: [ x, y, z, w ] }
|
||||
// }
|
||||
|
||||
#[inline(always)] pure fn x() -> float { self.data[0] }
|
||||
#[inline(always)] pure fn y() -> float { self.data[1] }
|
||||
#[inline(always)] pure fn z() -> float { self.data[2] }
|
||||
|
|
Loading…
Reference in a new issue