diff --git a/internal/core/model.rs b/internal/core/model.rs index 0a60840764c..a714b56e898 100644 --- a/internal/core/model.rs +++ b/internal/core/model.rs @@ -315,12 +315,17 @@ impl Model for Rc { } /// A [`Model`] backed by a `Vec`, using interior mutability. -#[derive(Default)] pub struct VecModel { array: RefCell>, notify: ModelNotify, } +impl Default for VecModel { + fn default() -> Self { + Self { array: Default::default(), notify: Default::default() } + } +} + impl VecModel { /// Allocate a new model from a slice pub fn from_slice(slice: &[T]) -> ModelRc @@ -1540,4 +1545,15 @@ mod tests { assert_eq!(model.iter().max().unwrap(), 9); assert_eq!(model.max_requested_row.get(), 9); } + + #[test] + fn vecmodel_doesnt_require_default() { + #[derive(Clone)] + struct MyNoDefaultType { + _foo: bool, + } + let model = VecModel::::default(); + assert_eq!(model.row_count(), 0); + model.push(MyNoDefaultType { _foo: true }); + } }