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