#### Note: this error code is no longer emitted by the compiler. Sub-bindings, e.g. `ref x @ Some(ref y)` are now allowed under `#![feature(bindings_after_at)]` and checked to make sure that memory safety is upheld. -------------- In certain cases it is possible for sub-bindings to violate memory safety. Updates to the borrow checker in a future version of Rust may remove this restriction, but for now patterns must be rewritten without sub-bindings. Before: ```compile_fail match Some("hi".to_string()) { ref op_string_ref @ Some(s) => {}, None => {}, } ``` After: ``` match Some("hi".to_string()) { Some(ref s) => { let op_string_ref = &Some(s); // ... }, None => {}, } ``` The `op_string_ref` binding has type `&Option<&String>` in both cases. See also [Issue 14587][issue-14587]. [issue-14587]: https://github.com/rust-lang/rust/issues/14587