pub trait Scaled {
    // Required method
    fn scale(&mut self, scale_factor: f32);
    // Provided methods
    fn scale_if_needed(&mut self, scale_factor: f32) { ... }
    fn with_scale(&self, scale_factor: f32) -> Cow<'_, Self>
       where Self: Clone { ... }
}