Hi rustaceans! What are you working on this week? Did you discover something new, you want to share?
Trying to build Lemmy entirely from a flake for my rolling fork. I’m a big Nix fanboi so I figured the first project in my fork would be to get it running like I did with my Haskell/Purescript projects that use nix and flakes for EVERYTHING.
edit: anyone out there have any pointers?
Working on some form of inheritance in rust. It’s my first foray into procedural macros and so far it’s fun. The idea is quite simple: generate structs with common attributes (and eventually functions) instead writing them yourself.
use inheriters::specialisations; specialisations!( struct Parent { attr1: u8, } #[inherit(Child)] struct Child { attr2: u8, } );
becomes
struct Parent { attr1: u8, } struct Child { attr1: u8, attr2: u8, }
not
struct Parent { attr1: u8, } struct Child { attr1: u8, parent: Parent, }
The latter leads to indirection which I’m not a fan of.
Last week I squashed one bug on the order of attributes according to inheritance. In the example above
attr2
was coming beforeattr1
. A feature is nearly done to exclude theParent
from the output and only output the child. That’s useful for parents that just serve as holders for shared attributes.The goal for v1 was to also support basic inheritance of implementations:
Parent
has animpl
block, then that block is copied for theChild
. Not sure yet if I’ll implement overrides in v1 or v2. Overrides being ifParent
implementsdo_something()
andChild
does too, then the implementation ofParent
is not copied into theimpl
block.
That’s what I’ll try to tackle in the coming weeks.