Skip to content

Instantly share code, notes, and snippets.

@HopperMCS
Forked from anonymous/playground.rs
Created June 3, 2017 01:23
Show Gist options
  • Save HopperMCS/33ca8260d4c1c0849c3c05b74c83dd87 to your computer and use it in GitHub Desktop.
Save HopperMCS/33ca8260d4c1c0849c3c05b74c83dd87 to your computer and use it in GitHub Desktop.
Shared via Rust Playground
struct Triangle {
base: f32,
height: f32
}
trait Area {
fn triangle(&self) -> f32;
}
impl Area for Triangle {
fn triangle(&self) -> f32 {
0.33 * self.base * self.height
}
}
struct TriangleBuilder {
base: f32,
height: f32
}
impl TriangleBuilder {
fn new() -> TriangleBuilder {
TriangleBuilder { base: 0.0, height: 0.0 }
}
fn base(&mut self, b: f32) -> &mut TriangleBuilder {
self.base = b;
self
}
fn height(&mut self, h: f32) -> &mut TriangleBuilder {
self.height = h;
self
}
fn cleanup(&self) -> Triangle {
Triangle { base: self.base, height: self.height }
}
}
fn main() {
let tri = Triangle { base: 3.0, height: 5.0 };
println!("{}", tri.triangle());
let triangle = TriangleBuilder::new()
.base(4.5)
.height(6.7)
.cleanup();
println!("{} - Area", triangle.triangle());
println!("{} - Base", triangle.base);
println!("{} - Height", triangle.height);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment