you_can::turn_off_the_borrow_checker

(docs.rs)

45 points | by striking 2 days ago

10 comments

  • tempesttempo86 43 minutes ago
    Arbitrary mention: Crust[0]

    [0] https://github.com/tsoding/crust

  • extraduder_ire 1 hour ago
    Cool idea. I was expecting more than just turn_off_the_borrow_checker in you_can though.

    Maybe with time, as more counterexamples are needed for things "you can't just..." in rust.

  • Pesthuf 41 minutes ago
    I wonder if this has any measurable impact on compile times.
  • himata4113 1 hour ago
    I usually just box it and then Box::into_raw when I need multiple mutable references in a singlethreaded application where there's no deallocation or cleanup has to occur post shutdown.
  • EFLKumo 1 hour ago
    though said for education purpose, keep finding these boundary-pushings playful. I can recall early days arrested by "several ways to access private members in C++" lol
    • himata4113 1 hour ago
      I personally hate access controls in general since it always made be release a big sigh as a I was typing .getClass().getMethod()/getField() knowing that it hurts performance.
      • estebank 1 hour ago
        That kind of code doesn't have to hurt performance, as long as monomorphic action, inlining or JITting are available to the toolchain. If every single method access is a virtual-table call, then yes, there's an "unnecessary" cost. But you shouldn't be writing high-level looking code in such a language if you care about that level of performance.
        • himata4113 59 minutes ago
          it's more about the fact that the servers are java and invoking a reflection method does have a non-zero cost that isn't substantial but still makes you sigh as you either eat the performance cost or spend 10 minutes creating a patch and recompiling the server.
  • rurban 58 minutes ago
    Even more unsafe rust, great!
  • space_ghost 1 hour ago
    This reminds me of Perl's ACME modules and I'm here for that.
  • codedokode 1 hour ago
    Macros can secretly add "unsafe" blocks into the code?
    • kibwen 1 hour ago
      If you're paranoid, you can use the `forbid(unsafe_code)` attribute, which will produce a compiler error when any code in its scope attempts to use `unsafe`, which includes macro expansions.
    • EFLKumo 1 hour ago
      Yes. It assumes author of the macro guarantees the safety. Common cases are not adding unsafe{} and leaving this to user, relying on audit tools or [highlighters](https://lukaswirth.dev/posts/semantic-unsafe/), etc. However, it's indeed allowed to silently add unsafe blocks in macros. I'm not working on rust frequently btw, mistakes may exist.
    • mplanchard 1 hour ago
      Macros are just text in, text out, so yep
      • estebank 1 hour ago
        Rust macros are Token Trees and provide namespace hygiene, so not quite "text in, text out".
  • orphea 2 hours ago
    Disgusting. I love it.