How to default-initialize a struct containing an array in Rust?

前端 未结 4 628
难免孤独
难免孤独 2021-01-11 10:31

What is the recommended way to declare a struct that contains an array, and then create a zero-initialized instance?

Here is the struct:

#[derive(De         


        
4条回答
  •  余生分开走
    2021-01-11 11:29

    Rust does not implement Default for all arrays because it does not have non-type polymorphism. As such, Default is only implemented for a handful of sizes.

    You can, however, implement a default for your type:

    impl Default for Histogram {
        fn default() -> Histogram {
            Histogram {
                sum: 0,
                bins: [0; 256],
            }
        }
    }
    

    Note: I would contend that implementing Default for u32 is fishy to start with; why 0 and not 1? or 42? There is no good answer, so no obvious default really.

提交回复
热议问题