---
-title: "Two Kinds of Invariants"
+title: "Two Kinds of Invariants: Safety and Validity"
categories: internship rust
forum: https://internals.rust-lang.org/t/two-kinds-of-invariants/8264
---
I have talked about two kinds of invariants that come with every type, the safety invariant and the validity invariant.
For unsafe code authors, the slogan summarizing this post is:
-> *You must always be valid, but you must not always be safe.*
+> *You must always be valid, but you must only be safe in safe code.*
I think we have enough experience writing unsafe code at this point that we can reasonably discuss which validity invariants make sense and which do not -- and I think that it is high time that we do so, because many unsafe code authors are wondering about these exact things all the time.