I find it hard to reason about Rust safe and unsafe interactions, especially when concurrency is involved. It's just not as straightforward to implement algorithms and take their correctness proof as granted.<p>Linked and skip lists are a good example. In C or Zig you can create concurrent data structures with wait-free and linearizable operations, including wait-free memory reclamation, with bounded memory usage too. You would need a hell of a grasp on Rust to pull that off, if it's even possible.