Should I use unsafe?

It's not uncommon to hear some variant of the following position—I won't use any library that has an unsafe block in it. The reasoning behind this position is that unsafe, well, advertises that the crate is potentially unsafe and might crash your otherwise carefully crafted program. That's true—kind of. As we've seen in this book, it's entirely possible to put together a project using unsafe that is totally safe at runtime. We've also seen that it's entirely possible to put together a project without unsafe blocks that flame out at runtime. The existence or absence of unsafe blocks shouldn't reduce the original programmer's responsibilities for due diligence—writing tests, probing the implementation with fuzzing tools, ...

Get Hands-On Concurrency with Rust now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.