struct MyObject {
    text: String,
}
fn do_something_owned(_o: MyObject) {}
fn main() {
    let mut my_object = MyObject { text: String::from("sometest") };
    do_something_owned(my_object);
    my_object.text = String::from("we're done");
}
I would expect it to be a compile time error.