rustc_utils/mir/
mutability.rsuse rustc_middle::mir::Mutability;
pub trait MutabilityExt {
#[allow(clippy::wrong_self_convention)]
fn is_permissive_as(self, other: Self) -> bool;
}
impl MutabilityExt for Mutability {
fn is_permissive_as(self, other: Self) -> bool {
!matches!((self, other), (Mutability::Mut, Mutability::Not))
}
}
#[test]
fn test_mutability() {
use Mutability::*;
let truth_table = [
(Not, Not, true),
(Not, Mut, true),
(Mut, Not, false),
(Mut, Mut, true),
];
for (l, r, v) in truth_table {
assert_eq!(l.is_permissive_as(r), v);
}
}