Accessing a slice is straightforward using slice syntax: `slice = vector[i..j]`

In the case where the range is stored however, from what I can tell you can't do:

```
struct StructWithRange {
    range: std::ops::Range<usize>,
}

fn test_slice(s: &StructWithRange, vector: &Vec<i32>) {
    let slice = &vector[s.range];
    println!("{:?}", slice); // prints [2, 3]
}

fn main() {
    let vector = vec![1,2,3,4,5];
    let s = StructWithRange {
        range: 1..3
    };

    test_slice(&s, &vector);
}

```

This gives the error: 

```
error[E0507]: cannot move out of borrowed content
 --> src/main.rs:6:25
  |
6 |     let slice = &vector[s.range];
  |                         ^ cannot move out of borrowed content

```

Is there a way to get the slice from a range without expanding it?  
eg: `vector[s.range.start..s.range.end]`

If a `usize` in a struct can be used for an index lookup, why can't a `Range<usize>` be used in the same way?