Browse Source

Add Display trait for Vector

master
Georg Hopp 6 years ago
parent
commit
18b0a54202
Signed by: ghopp GPG Key ID: 4C5D226768784538
  1. 32
      fractional/src/main.rs
  2. 7
      fractional/src/vector.rs

32
fractional/src/main.rs

@ -130,22 +130,22 @@ fn _vector() {
let v2 = Vector(2.into(), 2.into(), 3.into()); let v2 = Vector(2.into(), 2.into(), 3.into());
let s :Fractional = 3.into(); let s :Fractional = 3.into();
println!("{:>14} : {:?}", "Vector v1", v1);
println!("{:>14} : {:?}", "Vector v2", v2);
println!("{:>14} : {}" , "abs v1", v1.abs());
println!("{:>14} : {:?}", "-v1", -v1);
println!("{:>14} : {:?}", "v1 + v1", v1 + v1);
println!("{:>14} : {:?}", "v1 - v1", v1 - v1);
println!("{:>14} : {:?}", "v2 - v1", v2 - v1);
println!("{:>14} : {:?}", format!("v1 * {}", s), v1.mul(&s));
println!("{:>14} : {:?}", "norm v1", v1.norm());
println!("{:>14} : {}" , "abs norm v1", v1.norm().abs());
println!("{:>14} : {}" , "distance v1 v2", v1.distance(v2));
println!("{:>14} : {}" , "distance v2 v1", v2.distance(v1));
println!("{:>14} : {}" , "v1 dot v2", v1.dot(v2));
println!("{:>14} : {}" , "v2 dot v1", v2.dot(v1));
println!("{:>14} : {:?}", "v1 * v2", v1 * v2);
println!("{:>14} : {:?}", "v2 * v1", v2 * v1);
println!("{:>14} : {}", "Vector v1", v1);
println!("{:>14} : {}", "Vector v2", v2);
println!("{:>14} : {}", "abs v1", v1.abs());
println!("{:>14} : {}", "-v1", -v1);
println!("{:>14} : {}", "v1 + v1", v1 + v1);
println!("{:>14} : {}", "v1 - v1", v1 - v1);
println!("{:>14} : {}", "v2 - v1", v2 - v1);
println!("{:>14} : {}", format!("v1 * {}", s), v1.mul(&s));
println!("{:>14} : {}", "norm v1", v1.norm());
println!("{:>14} : {}", "abs norm v1", v1.norm().abs());
println!("{:>14} : {}", "distance v1 v2", v1.distance(v2));
println!("{:>14} : {}", "distance v2 v1", v2.distance(v1));
println!("{:>14} : {}", "v1 dot v2", v1.dot(v2));
println!("{:>14} : {}", "v2 dot v1", v2.dot(v1));
println!("{:>14} : {}", "v1 * v2", v1 * v2);
println!("{:>14} : {}", "v2 * v1", v2 * v1);
} }
fn main() { fn main() {

7
fractional/src/vector.rs

@ -19,6 +19,7 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
// //
use std::ops::{Add, Sub, Neg, Mul}; use std::ops::{Add, Sub, Neg, Mul};
use std::fmt;
use crate::{Fractional}; use crate::{Fractional};
#[derive(Debug, Eq, Clone, Copy)] #[derive(Debug, Eq, Clone, Copy)]
@ -58,6 +59,12 @@ impl Vector {
} }
} }
impl fmt::Display for Vector {
fn fmt(&self, f :&mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "({}, {}, {})", self.0, self.1, self.2)
}
}
impl PartialEq for Vector { impl PartialEq for Vector {
fn eq(&self, other :&Self) -> bool { fn eq(&self, other :&Self) -> bool {
let Vector(x1, y1, z1) = self; let Vector(x1, y1, z1) = self;

Loading…
Cancel
Save