我有这个错误
错误:无法将二进制运算符
|
应用于类型为&mut u16
的参数
使用以下代码:
fn f_op(op: &mut u16) {
let mut addr: u16 = (op | 0xFFF);
..//
}
将其更改为&
而不是&mut
即可解决该问题。
fn f_op(op: & u16) {
但我想知道为什么我不能在
&mut
中使用 |
,肯定存在一个很好的原因,但有人能解释一下吗?
Play-Rust
我有这个错误
错误:无法将二进制运算符
|
应用于类型为&mut u16
的参数
使用以下代码:
fn f_op(op: &mut u16) {
let mut addr: u16 = (op | 0xFFF);
..//
}
将其更改为&
而不是&mut
即可解决该问题。
fn f_op(op: & u16) {
&mut
中使用 |
,肯定存在一个很好的原因,但有人能解释一下吗?
Play-Rust
由于BitOr特性未实现适用于&mut u16
,但适用于&u16
。
*op | 0xFFF;
.. 这将使其成为 u16
.. 如您在上方所见,它还实现了 BitOr
特性。
&mut
实现它。还有 Box
。和 Rc
。和 Arc
。和 P
(在 rustc
中使用)。和 Cell
。和 *const
。和 *mut
。可能还有更多,但你必须在某个点上 停止;最好是最小集合。 - DK.&mut
进行实现,BitOr
将为所有安全的基本类型实现。 - Lukas Kalbertodtlet mut addr: u16 = *op | 0xFFF;