rust/tests/ui/swap.rs

96 lines
1.3 KiB
Rust
Raw Normal View History

2019-12-03 13:42:05 +01:00
// run-rustfix
2018-07-28 17:34:52 +02:00
#![warn(clippy::all)]
2019-09-16 17:50:36 +02:00
#![allow(
clippy::blacklisted_name,
clippy::no_effect,
clippy::redundant_clone,
redundant_semicolon,
unused_assignments
)]
struct Foo(u32);
#[derive(Clone)]
struct Bar {
a: u32,
b: u32,
}
fn field() {
let mut bar = Bar { a: 1, b: 2 };
let temp = bar.a;
bar.a = bar.b;
bar.b = temp;
let mut baz = vec![bar.clone(), bar.clone()];
let temp = baz[0].a;
baz[0].a = baz[1].a;
baz[1].a = temp;
}
fn array() {
let mut foo = [1, 2];
2017-02-08 14:58:07 +01:00
let temp = foo[0];
foo[0] = foo[1];
foo[1] = temp;
2017-02-08 14:58:07 +01:00
foo.swap(0, 1);
}
fn slice() {
let foo = &mut [1, 2];
2017-02-08 14:58:07 +01:00
let temp = foo[0];
foo[0] = foo[1];
foo[1] = temp;
2017-02-08 14:58:07 +01:00
foo.swap(0, 1);
}
2019-12-03 13:18:45 +01:00
fn unswappable_slice() {
let foo = &mut [vec![1, 2], vec![3, 4]];
let temp = foo[0][1];
foo[0][1] = foo[1][0];
foo[1][0] = temp;
// swap(foo[0][1], foo[1][0]) would fail
}
fn vec() {
let mut foo = vec![1, 2];
2017-02-08 14:58:07 +01:00
let temp = foo[0];
foo[0] = foo[1];
foo[1] = temp;
2017-02-08 14:58:07 +01:00
foo.swap(0, 1);
}
#[rustfmt::skip]
fn main() {
field();
array();
slice();
2019-12-03 13:42:05 +01:00
unswappable_slice();
vec();
let mut a = 42;
let mut b = 1337;
2017-02-08 14:58:07 +01:00
a = b;
b = a;
; let t = a;
a = b;
b = t;
2017-02-08 14:58:07 +01:00
let mut c = Foo(42);
2017-02-08 14:58:07 +01:00
c.0 = a;
a = c.0;
; let t = c.0;
c.0 = a;
a = t;
}