• 0 Posts
  • 1 Comment
Joined 11 months ago
cake
Cake day: February 20th, 2025

help-circle
  • Skill issue

    - sincerely, someone making a DST crate

    EDIT: To clarify…

    There are some things that are only doable on nightly Rust (like specialization, const fn in traits, etc.) and the reason for that is to avoid future issues. In that regard, Rust will not be as good as C++… at least until those get stabilized.

    Some of the nightly functionality (like ptr_metadata) can be achieved with unsafe code and it’s fine to do that, as long as it’s only done when necessary and it’s properly documented.

    It’s okay to want to use C++, but that language has it’s own issues and footguns (virtual destructors, “move semantics”, C-style casts, header files and more) that Rust wants to avoid.

    EDIT 2: Specialization is also kinda doable with deref coercion, but that’s another can of worms I don’t wanna open here.

    EDIT 3: And if I had to mention some of Rust’s footguns:

    • unwrap panics, which isn’t bad in and of itself, but it’s short so you’ll probably want to use it instead of other error handling methods (see recent Cloudflare outages)
    • unsafe functions implicitly allows using unsafe operations (fixable by adding #! [deny(unsafe_op_in_unsafe_fn)])