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

时间:2016-04-14 05:44:12

标签: rust

我有这个错误

  

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

类型

使用此代码,

fn f_op(op: &mut u16) {

    let mut addr: u16 = (op | 0xFFF);
    ..//
}

解决此问题,将&mut更改为&

fn f_op(op: & u16) {

但我想知道为什么我不能|使用&mut,确定有充分的理由,但有人可以向我解释。

Play-Rust

2 个答案:

答案 0 :(得分:7)

因为&mut u16的{​​{3}} ..但是,它适用于&u16

BitOr trait is not implemented

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

*op | 0xFFF;

..这将使u16 ..也实现BitOr特征,如上所示。

答案 1 :(得分:3)

您可能想要or值,而不是参考。

let mut addr: u16 = *op | 0xFFF;