consume x
_ = consume y
doStuffUniquely(with: consume x)
copy x
_ = copy x
doStuff(with: copy x)
struct MoveOnly: ~Copyable {}
struct B: P {
func foo(x: borrowing Foo, y: consuming Foo)
}
func foo(_: borrowing Foo)
func foo(_: consuming Foo)
func foo(_: inout Foo)
let f: (borrowing Foo) -> Void = { a in a.foo() }
let f: (consuming Foo) -> Void = { a in a.foo() }
let f: (inout Foo) -> Void = { a in a.foo() }
struct Foo {
consuming func foo()
borrowing func foo()
mutating func foo()
}