makepad/libs/relax/compiler/tests/relaxed/disjoint_pair.rs

25 lines
618 B
Rust

// Relaxed Rust `disjoint-index`: two consecutive `let`s borrowing elements of one container. The
// write-back is `get_disjoint_mut`, which rustc accepts.
fn add_next(v: &mut Vec<u32>, i: usize) {
let a = &mut v[i];
let b = &mut v[i + 1];
*a += *b;
}
fn swap_any(s: &mut [u32], i: usize, j: usize) {
let x = &mut s[i];
let mut y = &mut s[j];
std::mem::swap(x, y);
y = &mut s[0];
*y += 0;
}
fn main() {
let mut v = vec![1, 2, 3];
add_next(&mut v, 1);
assert_eq!(v, [1, 5, 3]);
swap_any(&mut v, 0, 2);
assert_eq!(v, [3, 5, 1]);
println!("disjoint_pair ok");
}