我有这个错误
错误:二进制操作
类型|
无法应用于&mut u16
使用此代码,
fn f_op(op: &mut u16) {
let mut addr: u16 = (op | 0xFFF);
..//
}
解决此问题,将&mut
更改为&
fn f_op(op: & u16) {
但我想知道为什么我不能|
使用&mut
,确定有充分的理由,但有人可以向我解释。
答案 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;