1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
// Rust's `&[T]` is a borrow, not a copy. Nim's view types model that,
// including returning one: writing through the view reaches the original.
fn head(xs: &[i32], n: usize) -> &[i32] {
&xs[..n]
}
fn middle(xs: &[i32]) -> &[i32] {
&xs[1..3]
}
fn sum(xs: &[i32]) -> i32 {
let mut t: i32 = 0;
for x in xs.iter() {
t += x;
}
t
}
fn main() {
let v: Vec<i32> = vec![1, 2, 3, 4, 5];
println!("{}", sum(head(&v, 3)));
println!("{}", sum(middle(&v)));
println!("{}", head(&v, 2).len());
println!("{}", head(&v, 5)[4]);
}
|