54 lines
1009 B
Rust
54 lines
1009 B
Rust
// run-pass
|
|
|
|
#![allow(dead_code)]
|
|
// Check that functions can modify local state.
|
|
|
|
// pretty-expanded FIXME #23616
|
|
|
|
#![feature(box_syntax)]
|
|
|
|
fn sums_to(v: Vec<isize> , sum: isize) -> bool {
|
|
let mut i = 0;
|
|
let mut sum0 = 0;
|
|
while i < v.len() {
|
|
sum0 += v[i];
|
|
i += 1;
|
|
}
|
|
return sum0 == sum;
|
|
}
|
|
|
|
fn sums_to_using_uniq(v: Vec<isize> , sum: isize) -> bool {
|
|
let mut i = 0;
|
|
let mut sum0: Box<_> = box 0;
|
|
while i < v.len() {
|
|
*sum0 += v[i];
|
|
i += 1;
|
|
}
|
|
return *sum0 == sum;
|
|
}
|
|
|
|
fn sums_to_using_rec(v: Vec<isize> , sum: isize) -> bool {
|
|
let mut i = 0;
|
|
let mut sum0 = F {f: 0};
|
|
while i < v.len() {
|
|
sum0.f += v[i];
|
|
i += 1;
|
|
}
|
|
return sum0.f == sum;
|
|
}
|
|
|
|
struct F<T> { f: T }
|
|
|
|
fn sums_to_using_uniq_rec(v: Vec<isize> , sum: isize) -> bool {
|
|
let mut i = 0;
|
|
let mut sum0 = F::<Box<_>> {f: box 0};
|
|
while i < v.len() {
|
|
*sum0.f += v[i];
|
|
i += 1;
|
|
}
|
|
return *sum0.f == sum;
|
|
}
|
|
|
|
pub fn main() {
|
|
}
|