二进制操作`|`不能应用于类型

Ang*_*gel 4 rust

我有这个错误

错误:二进制操作|无法应用于类型&mut u16

有了这段代码,

fn f_op(op: &mut u16) {

    let mut addr: u16 = (op | 0xFFF);
    ..//
}
Run Code Online (Sandbox Code Playgroud)

解决它&mut改为&

fn f_op(op: & u16) {
Run Code Online (Sandbox Code Playgroud)

但我不知道为什么我不能用|&mut,肯定存在一个很好的理由,但有人能向我解释.

Play-Rust

Sim*_*ead 7

因为BITOR特质未实现&mut u16.但是,它是&u16.

BitOr特质

正如viraptor指出的那样,你也可以用以下方法取消引用它:

*op | 0xFFF;
Run Code Online (Sandbox Code Playgroud)

..这将使它成为u16..也可以实现BitOr上面所见的特征.