nalgebra/src/base/scalar.rs

18 lines
555 B
Rust
Raw Normal View History

use std::any::TypeId;
use std::fmt::Debug;
use std::any::Any;
2017-04-06 22:46:54 +08:00
/// The basic scalar type for all structures of `nalgebra`.
///
/// This does not make any assumption on the algebraic properties of `Self`.
pub trait Scalar: Copy + PartialEq + Debug + Any {
#[inline]
2018-09-24 12:48:42 +08:00
/// Tests if `Self` the same as the type `T`
2017-08-14 01:52:57 +08:00
///
/// Typically used to test of `Self` is a f32 or a f64 with `N::is::<f32>()`.
fn is<T: Scalar>() -> bool {
TypeId::of::<Self>() == TypeId::of::<T>()
}
}
2018-02-02 19:26:35 +08:00
impl<T: Copy + PartialEq + Debug + Any> Scalar for T {}