C# doesn't have Send and Sync that is true. It frequently does not need either because it uses GC instead of affine types for automatic memory management. Synchronization is indeed "just don't write bugs", where Rust offers a
massive upgrade, but .NET CoreCLR's memory model is more strict than C one, like object reference assignment having release semantics, so quite a few footguns are luckily avoided:
https://github.com/dotnet/runtime/blob/main/docs/design/spec...'&' and '&mut', however, are your 'ref readonly' and 'ref' respectively.