amethyst / rustrogueliketutorial

Roguelike Tutorial in Rust - using RLTK
MIT License
900 stars 157 forks source link

deserialize_individually macro fails clippy due to unnecessary mut #149

Open chamons opened 4 years ago

chamons commented 4 years ago

Here https://bfnightly.bracketproductions.com/rustbook/chapter_11.html#actually-loading-the-game

This code:


macro_rules! deserialize_individually {
    ($ecs:expr, $de:expr, $data:expr, $( $type:ty),*) => {
        $(
        DeserializeComponents::<NoError, _>::deserialize(
            &mut ( &mut $ecs.write_storage::<$type>(), ),
            &mut $data.0, // entities

can be


macro_rules! deserialize_individually {
    ($ecs:expr, $de:expr, $data:expr, $( $type:ty),*) => {
        $(
        DeserializeComponents::<NoError, _>::deserialize(
            &mut ( &mut $ecs.write_storage::<$type>(), ),
            &$data.0, // entities

to prevent this clippy warning:

warning: The function/method `DeserializeComponents<NoError, _>::deserialize` doesn't need a mutable reference
   --> src/arena/saveload.rs:35:13
    |
35  |               &mut $data.0, // entities
    |               ^^^^^^^^^^^^
...
115 | /         deserialize_individually!(
116 | |             ecs,
117 | |             de,
118 | |             d,
...   |
135 | |             SerializationHelper
136 | |         );
    | |__________- in this macro invocation
    |
    = note: `#[warn(clippy::unnecessary_mut_passed)]` on by default
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed
    = note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

warning: The function/method `DeserializeComponents<NoError, _>::deserialize` doesn't need a mutable reference
   --> src/arena/saveload.rs:35:13
    |
35  |               &mut $data.0, // entities
    |               ^^^^^^^^^^^^
...
115 | /         deserialize_individually!(
116 | |             ecs,
117 | |             de,
118 | |             d,
...   |
135 | |             SerializationHelper
136 | |         );
    | |__________- in this macro invocation
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed
    = note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
chamons commented 4 years ago

This documentation was a complete godsend by the way.

I could not figure out Specs serialization from the documentation for the life of me.