1 | pub(super) trait SpecFill<T> { |
---|---|
2 | fn spec_fill(&mut self, value: T); |
3 | } |
4 | |
5 | impl<T: Clone> SpecFill<T> for [T] { |
6 | default fn spec_fill(&mut self, value: T) { |
7 | if let Some((last: &mut T, elems: &mut [T])) = self.split_last_mut() { |
8 | for el: &mut T in elems { |
9 | el.clone_from(&value); |
10 | } |
11 | |
12 | *last = value |
13 | } |
14 | } |
15 | } |
16 | |
17 | impl<T: Copy> SpecFill<T> for [T] { |
18 | fn spec_fill(&mut self, value: T) { |
19 | for item: &mut T in self.iter_mut() { |
20 | *item = value; |
21 | } |
22 | } |
23 | } |
24 |