]> git.lizzy.rs Git - rust.git/blob - src/test/ui/argument-passing.rs
Rollup merge of #61207 - taiki-e:arbitrary_self_types-lifetime-elision-2, r=Centril
[rust.git] / src / test / ui / argument-passing.rs
1 // run-pass
2
3 struct X {
4     x: isize
5 }
6
7 fn f1(a: &mut X, b: &mut isize, c: isize) -> isize {
8     let r = a.x + *b + c;
9     a.x = 0;
10     *b = 10;
11     return r;
12 }
13
14 fn f2<F>(a: isize, f: F) -> isize where F: FnOnce(isize) { f(1); return a; }
15
16 pub fn main() {
17     let mut a = X {x: 1};
18     let mut b = 2;
19     let c = 3;
20     assert_eq!(f1(&mut a, &mut b, c), 6);
21     assert_eq!(a.x, 0);
22     assert_eq!(b, 10);
23     assert_eq!(f2(a.x, |_| a.x = 50), 0);
24     assert_eq!(a.x, 50);
25 }