1use std::borrow::Cow;
2
3pub trait Scaled {
4 fn scale(&mut self, scale_factor: f32);
5
6 fn scale_if_needed(&mut self, scale_factor: f32) {
7 #[allow(clippy::float_cmp)]
8 if scale_factor != 1.0 {
9 self.scale(scale_factor);
10 }
11 }
12
13 fn with_scale(&'_ self, scale_factor: f32) -> Cow<'_, Self>
14 where
15 Self: Clone,
16 {
17 #[allow(clippy::float_cmp)]
18 if scale_factor == 1.0 {
19 Cow::Borrowed(self)
20 } else {
21 let mut copy = self.clone();
22 copy.scale(scale_factor);
23 Cow::Owned(copy)
24 }
25 }
26}