feat(core): add an AnySignal trait for trait objects and downcasting of signals
This commit is contained in:
parent
aa952c3151
commit
a3d406f2b3
2 changed files with 16 additions and 0 deletions
|
|
@ -25,6 +25,7 @@ pub use cmp_ops::*;
|
|||
use itertools::Itertools;
|
||||
pub use num_ops::*;
|
||||
use num_traits::NumCast;
|
||||
pub use traits::*;
|
||||
use utils::intersect_bounds;
|
||||
|
||||
use self::traits::LinearInterpolatable;
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
use std::any::Any;
|
||||
use std::cmp::Ordering;
|
||||
use std::time::Duration;
|
||||
|
||||
|
|
@ -74,6 +75,20 @@ interpolate_for_num!(u64);
|
|||
interpolate_for_num!(f32);
|
||||
interpolate_for_num!(f64);
|
||||
|
||||
/// Simple trait to be used as a trait object for [`Signal<T>`] types.
|
||||
///
|
||||
/// This is mainly for external libraries to use for trait objects and downcasting to
|
||||
/// concrete [`Signal`] types.
|
||||
pub trait AnySignal {
|
||||
fn as_any(&self) -> &dyn Any;
|
||||
}
|
||||
|
||||
impl<T: 'static> AnySignal for Signal<T> {
|
||||
fn as_any(&self) -> &dyn Any {
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
macro_rules! impl_signal_cmp {
|
||||
($cmp:ident) => {
|
||||
paste! {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue