// compiles:
// fn power_level(pos @ (_, _): (u16, u16)) -> i64 { pos.0 as _ }
// fails to compile: "error[E0303]: pattern bindings are not allowed after an `@`":
fn power_level(pos @ (x, _): (u16, u16)) -> i64 { pos.0 as _ }
fn main() {
let x = power_level((1, 2));
println!("{}", x)
}
Вообще не понимаю почему такое ограничение есть. Вроде бы это Copy типы, должно бы просто скопироваться и все.
https://doc.rust-lang.org/error-index.html#E0303 - тут объяснение ошибки по коду левое какое-то, пример выше ни к какому нарушению работы с памятью не должен бы приводить.