• pivot_root@lemmy.world
    link
    fedilink
    arrow-up
    49
    arrow-down
    1
    ·
    edit-2
    2 days ago

    Look, I’m not saying the wheel is wrong. It rotates, but what if two people try to turn the wheel at the same time, in opposite directions?

    What if—instead of risking misuse of the wheel—we have a my_wheel::Wheel, which only one person can rotate at any given time? The multiverse could enforce this safety at compile time by making it impossible for there to exist a universe where two people both think they own the right to rotate the wheel. In fact, it could even make it impossible for me to lend out the wheel to more than one person at a time.

    And, maybe… we could make the wheel even better. Cars rest on top of wheels, sure. But what if I wanted to make a car that rests on top of other cars? If we rotate the super-car’s wheels, we don’t want to make the sub-cars flap around—we want the sub-car wheels to rotate. It would be more future-proof to make a Wheel trait, then to make RubberTyre implement Wheel. Then, if we ever needed to make cars into wheels, we could have them also implement Wheel—but delegate the responsibility of rotating to their own wheels.

    In fact, we should make it into a whole library. Our other projects could need wheels. Mr. Mittens might need them eventually!