Does Rust automatically dereference primitive type references?

后端 未结 1 955
小蘑菇
小蘑菇 2021-02-14 09:14

I\'m new to Rust and trying to learn how references work. In the following code when I want to do a calculation on a1 which is i32 I don\'t have to der

相关标签:
1条回答
  • 2021-02-14 09:42

    All of the arithmetic operators in Rust are implemented for both primitive values and references to primitives on either side of the operator. For example, see the Implementors section of std::ops::Mul, the trait that controls the overriding of the * operator.

    You'll see something like:

    impl Mul<i32> for i32
    impl<'a> Mul<i32> for &'a i32
    impl<'a> Mul<&'a i32> for i32
    impl<'a, 'b> Mul<&'a i32> for &'b i32
    

    and so on and so on.

    In your example, b1 has a type of &Box<i32> (the default integer type), and while Box implements many traits as a passthrough for its contained type (e.g. impl<T: Read> Read for Box<T>), the arithmetic operators are not among them. That is why you have to dereference the box.

    0 讨论(0)
提交回复
热议问题