• anton@lemmy.blahaj.zone
    link
    fedilink
    arrow-up
    7
    ·
    14 hours ago

    With newtypes you can also emulate named args with a single struct. This also allows them to be passed on together.

    struct RectArgs{
        x:i32,
        y:32,
        w:32,
        h:32,
    }
    impl Default for RectArgs{...}
    

    Then the call site looks like this:

    rect(RectArgs{
        x:0,
        y:0,
        w:30,
        h:20,
    }
    // with default arguments
    rect(RectArgs{
        w:30,
        h:20,
        .. RectArgs::default ()
    }
    
    • esa@discuss.tchncs.de
      link
      fedilink
      arrow-up
      1
      ·
      edit-2
      13 hours ago

      Yeah, though in those cases you might get an extra question about why rect is a function and not a method, e.g.

      Rect {
           w: 30,
           h: 20,
           .. RectArgs::default()
      }.do_the_thing()