Torturing Rustc by Emulating HKTs

(harudagondi.space)

69 points | by g0xA52A2A 4 days ago

3 comments

  • mmastrac 13 hours ago
    I've been playing around with type mapping like this in a highly experimental crate. The ability to map, filter and reduce types is insanely powerful but it's tough to get ergonomic syntax.

    https://docs.rs/tuplemagic/latest/tuplemagic/index.html

  • j-krieger 15 hours ago
    I also hit a funny compiler end-of-the road last month when I wanted to try out generic_const_exprs for my RFC8366 implementation:

      pub struct VoucherDetails<C>
        where
          C: CapacityConfig,
          [(); C::SERIAL_NUMBER_MAX]:,
          [(); C::MANUFACTURER_PRIVATE_MAX]:,
          [(); C::IDEVID_ISSUER_MAX]:,
          // <imagine a dozen more properties here>
          [(); C::NONCE_B64_MAX]:,
      { ... }
    
    The heavy const eval + trait resolution was too much even for my M2 Pro.
    • amluto 13 hours ago
      Nice.

      You inspired me to look up RFC8366. That's a remarkable document, apparently written in English, where at least the abstract and introduction look like they might be the result of a particularly nerdy game of Mad-Libs. :)

      I, personally, have never observed a pledge doing anything other than being heard, although I observed Lemon Pledge smelling unpleasant. But, in RFC8366, pledges can join domains!

      (I assume that a manufacturer makes a device and the device somehow contains a "pledge" from the manufacturer that the device is what it says it is...)

  • cptroot 16 hours ago
    This was incredible, even as it rapidly outpaced my PL and mathematics knowledge.
    • PeterWhittaker 15 hours ago
      Like I said to a friend, I know just enough category theory to know that I do not understand. Perhaps upon Nth reading.
    • spartanatreyu 13 hours ago
      I think I'll just point to this post the next time some asks me what getting nerdsniped means.