type File { fd: i32, } fn make(fd: i32) -> owned { return File { fd: fd } } fn pass(file: owned) -> owned { return file } fn close(file: owned) -> Void { } fn fd(file: owned) -> i32 { return file.fd } pub fn main(world: World) -> Void raises { var current: owned = make(1) let next: owned = pass(make(42)) current = next let value: i32 = fd(current) let cleanup: owned = make(7) defer close(cleanup) if value == 42 { check world.out.write("owned transfer ok\n") } else { check world.out.write("owned transfer failed\n") } }