[librsvg: 18/19] Remove PathBuilder::new and just derive(Default) for it




commit a2abaea448ea5211d0b5107f0773244170acd13b
Author: Federico Mena Quintero <federico gnome org>
Date:   Fri Aug 21 13:12:50 2020 -0500

    Remove PathBuilder::new and just derive(Default) for it

 rsvg_internals/benches/path_parser.rs |  2 +-
 rsvg_internals/src/marker.rs          | 16 ++++++++--------
 rsvg_internals/src/path_builder.rs    | 20 ++++----------------
 rsvg_internals/src/path_parser.rs     |  2 +-
 rsvg_internals/src/shapes.rs          | 10 +++++-----
 5 files changed, 19 insertions(+), 31 deletions(-)
---
diff --git a/rsvg_internals/benches/path_parser.rs b/rsvg_internals/benches/path_parser.rs
index e0d0f6c12..d368e5b6b 100644
--- a/rsvg_internals/benches/path_parser.rs
+++ b/rsvg_internals/benches/path_parser.rs
@@ -37,7 +37,7 @@ fn lex_path(input: &str) {
 fn path_parser(c: &mut Criterion) {
     c.bench_function("parse path into builder", |b| {
         let input = black_box(INPUT);
-        let mut builder = PathBuilder::new();
+        let mut builder = PathBuilder::default();
 
         b.iter(|| {
             let _ = parse_path_into_builder(&input, &mut builder);
diff --git a/rsvg_internals/src/marker.rs b/rsvg_internals/src/marker.rs
index eec6316f0..19f05f761 100644
--- a/rsvg_internals/src/marker.rs
+++ b/rsvg_internals/src/marker.rs
@@ -862,7 +862,7 @@ mod directionality_tests {
 
     // Single open path; the easy case
     fn setup_open_path() -> Segments {
-        let mut builder = PathBuilder::new();
+        let mut builder = PathBuilder::default();
 
         builder.move_to(10.0, 10.0);
         builder.line_to(20.0, 10.0);
@@ -882,7 +882,7 @@ mod directionality_tests {
     }
 
     fn setup_multiple_open_subpaths() -> Segments {
-        let mut builder = PathBuilder::new();
+        let mut builder = PathBuilder::default();
 
         builder.move_to(10.0, 10.0);
         builder.line_to(20.0, 10.0);
@@ -911,7 +911,7 @@ mod directionality_tests {
 
     // Closed subpath; must have a line segment back to the first point
     fn setup_closed_subpath() -> Segments {
-        let mut builder = PathBuilder::new();
+        let mut builder = PathBuilder::default();
 
         builder.move_to(10.0, 10.0);
         builder.line_to(20.0, 10.0);
@@ -935,7 +935,7 @@ mod directionality_tests {
     // Multiple closed subpaths; each must have a line segment back to their
     // initial points, with no degenerate segments between subpaths.
     fn setup_multiple_closed_subpaths() -> Segments {
-        let mut builder = PathBuilder::new();
+        let mut builder = PathBuilder::default();
 
         builder.move_to(10.0, 10.0);
         builder.line_to(20.0, 10.0);
@@ -969,7 +969,7 @@ mod directionality_tests {
     // A lineto follows the first closed subpath, with no moveto to start the second subpath.
     // The lineto must start at the first point of the first subpath.
     fn setup_no_moveto_after_closepath() -> Segments {
-        let mut builder = PathBuilder::new();
+        let mut builder = PathBuilder::default();
 
         builder.move_to(10.0, 10.0);
         builder.line_to(20.0, 10.0);
@@ -1005,7 +1005,7 @@ mod directionality_tests {
     // only build a cairo_path_t for the final rendering step.
     //
     // fn setup_sequence_of_moveto () -> Segments {
-    // let mut builder = PathBuilder::new ();
+    // let mut builder = PathBuilder::default ();
     //
     // builder.move_to (10.0, 10.0);
     // builder.move_to (20.0, 20.0);
@@ -1111,7 +1111,7 @@ mod marker_tests {
 
     #[test]
     fn emits_for_open_subpath() {
-        let mut builder = PathBuilder::new();
+        let mut builder = PathBuilder::default();
         builder.move_to(0.0, 0.0);
         builder.line_to(1.0, 0.0);
         builder.line_to(1.0, 1.0);
@@ -1146,7 +1146,7 @@ mod marker_tests {
 
     #[test]
     fn emits_for_closed_subpath() {
-        let mut builder = PathBuilder::new();
+        let mut builder = PathBuilder::default();
         builder.move_to(0.0, 0.0);
         builder.line_to(1.0, 0.0);
         builder.line_to(1.0, 1.0);
diff --git a/rsvg_internals/src/path_builder.rs b/rsvg_internals/src/path_builder.rs
index 8c7dce992..e15baaff8 100644
--- a/rsvg_internals/src/path_builder.rs
+++ b/rsvg_internals/src/path_builder.rs
@@ -435,7 +435,7 @@ impl PathCommand {
 ///
 /// When you are finished constructing a path builder, turn it into
 /// a `Path` with `into_path`.
-#[derive(Clone)]
+#[derive(Clone, Default)]
 pub struct PathBuilder {
     path_commands: TinyVec<[PathCommand; 32]>,
 }
@@ -473,12 +473,6 @@ enum PackedCommand {
 }
 
 impl PathBuilder {
-    pub fn new() -> PathBuilder {
-        PathBuilder {
-            path_commands: TinyVec::new(),
-        }
-    }
-
     pub fn into_path(self) -> Path {
         let num_coords = self
             .path_commands
@@ -544,12 +538,6 @@ impl PathBuilder {
     }
 }
 
-impl Default for PathBuilder {
-    fn default() -> Self {
-        Self::new()
-    }
-}
-
 /// An iterator over `SubPath` from a Path.
 struct SubPathIter<'a> {
     path: &'a Path,
@@ -714,7 +702,7 @@ mod tests {
 
     #[test]
     fn empty_builder() {
-        let builder = PathBuilder::new();
+        let builder = PathBuilder::default();
         let path = builder.into_path();
         assert!(path.is_empty());
         assert_eq!(path.iter().count(), 0);
@@ -722,7 +710,7 @@ mod tests {
 
     #[test]
     fn all_commands() {
-        let mut builder = PathBuilder::new();
+        let mut builder = PathBuilder::default();
         builder.move_to(42.0, 43.0);
         builder.line_to(42.0, 43.0);
         builder.curve_to(42.0, 43.0, 44.0, 45.0, 46.0, 47.0);
@@ -761,7 +749,7 @@ mod tests {
 
     #[test]
     fn subpath_iter() {
-        let mut builder = PathBuilder::new();
+        let mut builder = PathBuilder::default();
         builder.move_to(42.0, 43.0);
         builder.line_to(42.0, 43.0);
         builder.close_path();
diff --git a/rsvg_internals/src/path_parser.rs b/rsvg_internals/src/path_parser.rs
index 3b491bd01..df0f43085 100644
--- a/rsvg_internals/src/path_parser.rs
+++ b/rsvg_internals/src/path_parser.rs
@@ -919,7 +919,7 @@ mod tests {
     ) {
         let expected_result = make_parse_result(error_pos_str, expected_error_kind);
 
-        let mut builder = PathBuilder::new();
+        let mut builder = PathBuilder::default();
         let result = parse_path_into_builder(path_str, &mut builder);
 
         let path = builder.into_path();
diff --git a/rsvg_internals/src/shapes.rs b/rsvg_internals/src/shapes.rs
index ec3c18077..4bf57fc34 100644
--- a/rsvg_internals/src/shapes.rs
+++ b/rsvg_internals/src/shapes.rs
@@ -55,7 +55,7 @@ impl Shape {
 }
 
 fn make_ellipse(cx: f64, cy: f64, rx: f64, ry: f64) -> SvgPath {
-    let mut builder = PathBuilder::new();
+    let mut builder = PathBuilder::default();
 
     // Per the spec, rx and ry must be nonnegative
     if rx <= 0.0 || ry <= 0.0 {
@@ -119,7 +119,7 @@ impl SetAttributes for Path {
     fn set_attributes(&mut self, pbag: &PropertyBag<'_>) -> ElementResult {
         for (attr, value) in pbag.iter() {
             if attr.expanded() == expanded_name!("", "d") {
-                let mut builder = PathBuilder::new();
+                let mut builder = PathBuilder::default();
                 if let Err(e) = path_parser::parse_path_into_builder(value, &mut builder) {
                     // FIXME: we don't propagate errors upstream, but creating a partial
                     // path is OK per the spec
@@ -197,7 +197,7 @@ impl Parse for Points {
 }
 
 fn make_poly(points: Option<&Points>, closed: bool) -> SvgPath {
-    let mut builder = PathBuilder::new();
+    let mut builder = PathBuilder::default();
 
     if let Some(points) = points {
         for (i, &(x, y)) in points.iter().enumerate() {
@@ -334,7 +334,7 @@ impl Draw for Line {
 
 impl Line {
     fn make_path(&self, values: &ComputedValues, draw_ctx: &mut DrawingCtx) -> SvgPath {
-        let mut builder = PathBuilder::new();
+        let mut builder = PathBuilder::default();
 
         let params = draw_ctx.get_view_params();
 
@@ -448,7 +448,7 @@ impl Rect {
             }
         }
 
-        let mut builder = PathBuilder::new();
+        let mut builder = PathBuilder::default();
 
         // Per the spec, w,h must be >= 0
         if w <= 0.0 || h <= 0.0 {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]