bevy_tween 0.12.0

Flexible tweening plugin library for Bevy
Documentation
use crate::interpolate::{CurrentValue, Interpolator, PreviousValue};
use std::sync::Arc;

impl<I> Interpolator for Box<I>
where
    I: Interpolator + ?Sized,
{
    type Item = I::Item;

    fn interpolate(&self, item: &mut Self::Item, value: f32, previous_value: f32) {
        (**self).interpolate(item, value, previous_value)
    }
}

impl<I> Interpolator for &'static I
where
    I: Interpolator + ?Sized,
{
    type Item = I::Item;

    fn interpolate(&self, item: &mut Self::Item, value: f32, previous_value: f32) {
        (**self).interpolate(item, value, previous_value)
    }
}

impl<I> Interpolator for Arc<I>
where
    I: Interpolator + ?Sized,
{
    type Item = I::Item;

    fn interpolate(&self, item: &mut Self::Item, value: f32, previous_value: f32) {
        (**self).interpolate(item, value, previous_value)
    }
}

impl<I: 'static> Interpolator for dyn Fn(&mut I, CurrentValue, PreviousValue) + Send + Sync + 'static {
    type Item = I;

    fn interpolate(&self, item: &mut Self::Item, value: f32, previous_value: f32) {
        self(item, value, previous_value)
    }
}