jordan_bonecut
Joined 3 years ago
Karma
117
Submissions
38
Member since
Feb 20
Joined 3 years ago
fn foo(x: usize) -> NonZero where x != 5 { NonZero::new(x - 5) }
I do not believe this is achievable in Rust.
let x = vec![1, 2, 3]; let a = &mut x[0]; let b = &mut x[1]; swap(a, b);
Because Rust doesn't really know the difference between the whole Vec an element within the vec. Therefore it treats any mutation as one that could potentially invalidate anything with the same lifetime and doesn't compile. So I believe the plane model to be strictly better because it allows for this and still prevents the real scary thing:
let x = vec![1, 2]; let a = &mut x[0]; x.push(3); a = a + 1;
Your hardware does this OR You implement it in software