¿Cómo devuelvo una matriz de propiedad de una función?

Soy un novato de Rust que trata de entender el idioma jugando con él. He encontrado algunos problemas al intentar devolver una matriz desde una función:

struct Widget {
  thingies: ~[int]
}

impl Widget {
    fn new() -> Widget {
        Widget { thingies: ~[4, 8, 15, 16, 23, 42] }
    }

    fn somethings(&self) -> ~[int] {
        self.thingies
    }
}

fn main() {
   let widget = Widget::new();
   let wotsits = widget.somethings();
}

Esto, por supuesto, falla la compilación con este error:

pointers.rs:11:8: 11:21 error: cannot move out of dereference of & pointer
pointers.rs:11         self.thingies

En caso de que este ejemplo de código parezca fuera de lugar, todo lo que estoy tratando de hacer es sacar una matriz de una estructura implementada. El puntero prestado no es importante, es solo la forma en que intento almacenar los datos.

¿Algún consejo sobre cómo extraer mi matriz correctamente?

Por cierto, estoy usando Rust 0.8

Respuestas a la pregunta(3)

Su respuesta a la pregunta