you_can::turn_off_the_borrow_checker

(docs.rs)

45 points | by striking 2 days ago

10 comments

  • tempesttempo86 22 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 21 minutes ago
    I wonder if this has any measurable impact on compile times.
  • 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 43 minutes 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 38 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.
  • 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.
  • rurban 37 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 40 minutes 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.