]> git.lizzy.rs Git - rust.git/commitdiff
Rollup merge of #23869 - tshepang:more-complete-builder-pattern-example, r=alexcrichton
authorManish Goregaokar <manishsmail@gmail.com>
Tue, 31 Mar 2015 03:34:39 +0000 (09:04 +0530)
committerManish Goregaokar <manishsmail@gmail.com>
Tue, 31 Mar 2015 03:34:39 +0000 (09:04 +0530)
This makes some use of `x` and `y`, instead of setting them to the same value.

src/doc/trpl/method-syntax.md

index 85114b40a90f4425e0010bb59d3eb77953a66b69..18542e58bbfd2b878f06d982f8f801f3a6882922 100644 (file)
@@ -181,17 +181,23 @@ impl Circle {
 }
 
 struct CircleBuilder {
-    coordinate: f64,
+    x: f64,
+    y: f64,
     radius: f64,
 }
 
 impl CircleBuilder {
     fn new() -> CircleBuilder {
-        CircleBuilder { coordinate: 0.0, radius: 0.0, }
+        CircleBuilder { x: 0.0, y: 0.0, radius: 0.0, }
+    }
+
+    fn x(&mut self, coordinate: f64) -> &mut CircleBuilder {
+        self.x = coordinate;
+        self
     }
 
-    fn coordinate(&mut self, coordinate: f64) -> &mut CircleBuilder {
-        self.coordinate = coordinate;
+    fn y(&mut self, coordinate: f64) -> &mut CircleBuilder {
+        self.x = coordinate;
         self
     }
 
@@ -201,18 +207,20 @@ impl CircleBuilder {
     }
 
     fn finalize(&self) -> Circle {
-        Circle { x: self.coordinate, y: self.coordinate, radius: self.radius }
+        Circle { x: self.x, y: self.y, radius: self.radius }
     }
 }
 
 fn main() {
     let c = CircleBuilder::new()
-                .coordinate(10.0)
-                .radius(5.0)
+                .x(1.0)
+                .y(2.0)
+                .radius(2.0)
                 .finalize();
 
-
     println!("area: {}", c.area());
+    println!("x: {}", c.x);
+    println!("y: {}", c.y);
 }
 ```