From c59a441be5d89837b234b44c8889b97c72290d10 Mon Sep 17 00:00:00 2001 From: pradeep Date: Wed, 23 Jan 2019 14:14:04 +0530 Subject: [PATCH 1/2] Publicize internal traits to let users write generic fns --- src/lib.rs | 3 +++ src/util.rs | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 720097f4c..023233277 100755 --- a/src/lib.rs +++ b/src/lib.rs @@ -136,7 +136,10 @@ pub use crate::statistics::*; mod statistics; #[cfg(feature = "core")] +pub use crate::util::{ComplexFloating, RealFloating, RealNumber}; pub use crate::util::{get_size, HasAfEnum, ImplicitPromote}; +pub use crate::util::{GrayRGBConvertible, ImageFilterType, ImageNativeType, Scanable}; +pub use crate::util::{CovarianceComputable, EdgeComputable, MedianComputable, MomentsComputable}; #[cfg(feature = "core")] mod util; diff --git a/src/util.rs b/src/util.rs index d527847b4..68ebe7060 100644 --- a/src/util.rs +++ b/src/util.rs @@ -608,6 +608,7 @@ impl Zero for Complex32 { } } +///Trait qualifier to accept either real or complex typed data pub trait FloatingPoint { fn is_real() -> bool { false @@ -638,16 +639,19 @@ impl FloatingPoint for f32 { } } +///Trait qualifier to accept real data(numbers) pub trait RealFloating {} impl RealFloating for f64 {} impl RealFloating for f32 {} +///Trait qualifier to accept complex data(numbers) pub trait ComplexFloating {} impl ComplexFloating for Complex64 {} impl ComplexFloating for Complex32 {} +///Trait qualifier indicating it can hold real numbers only pub trait RealNumber {} impl RealNumber for f64 {} @@ -661,6 +665,7 @@ impl RealNumber for bool {} impl RealNumber for u64 {} impl RealNumber for i64 {} +///Trait qualifier for the type of Arrays accepted by scan operations pub trait Scanable {} impl Scanable for i32 {} @@ -668,12 +673,16 @@ impl Scanable for u32 {} impl Scanable for u64 {} impl Scanable for i64 {} +/// Trait qualifier for type of Array's that are accepted +/// by native image load/save functions. pub trait ImageNativeType {} impl ImageNativeType for f32 {} impl ImageNativeType for u16 {} impl ImageNativeType for u8 {} +/// Trait qualifier for type of Array's that are accepted +/// by image processing functions especially filtering algorithms pub trait ImageFilterType {} impl ImageFilterType for f64 {} @@ -686,6 +695,8 @@ impl ImageFilterType for u8 {} impl ImageFilterType for bool {} // TODO Rust haven't stabilized trait aliases yet +/// Trait qualifier for given type indicating conversion capability between +/// grayscale and RGB triplets of data pub trait GrayRGBConvertible {} impl GrayRGBConvertible for f64 {} @@ -697,6 +708,7 @@ impl GrayRGBConvertible for u16 {} impl GrayRGBConvertible for u8 {} // TODO Rust haven't stabilized trait aliases yet +/// Trait qualifier for given type indicating computability of Moments pub trait MomentsComputable {} impl MomentsComputable for f64 {} @@ -708,6 +720,7 @@ impl MomentsComputable for u16 {} impl MomentsComputable for u8 {} // TODO Rust haven't stabilized trait aliases yet +/// Trait qualifier for given type indicating computability of Median pub trait MedianComputable {} impl MedianComputable for f64 {} @@ -719,6 +732,8 @@ impl MedianComputable for u16 {} impl MedianComputable for u8 {} // TODO Rust haven't stabilized trait aliases yet +/// Trait qualifier for given type indicating if edge calculations such as +/// derivates etc. can be performed pub trait EdgeComputable {} impl EdgeComputable for f64 {} @@ -729,6 +744,7 @@ impl EdgeComputable for i16 {} impl EdgeComputable for u16 {} impl EdgeComputable for u8 {} +/// Trait qualifier for given type indicating computability of covariance pub trait CovarianceComputable {} impl CovarianceComputable for f64 {} From 5c514ad38ca3bf0fb6b3f6e0d127984a5484d027 Mon Sep 17 00:00:00 2001 From: Dillon Hammond Date: Thu, 24 Jan 2019 23:10:43 +0530 Subject: [PATCH 2/2] expose FloatingPoint trait It wasn't made public by mistake earlier. Co-Authored-By: 9prady9 --- src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index 023233277..044228778 100755 --- a/src/lib.rs +++ b/src/lib.rs @@ -136,7 +136,7 @@ pub use crate::statistics::*; mod statistics; #[cfg(feature = "core")] -pub use crate::util::{ComplexFloating, RealFloating, RealNumber}; +pub use crate::util::{FloatingPoint, ComplexFloating, RealFloating, RealNumber}; pub use crate::util::{get_size, HasAfEnum, ImplicitPromote}; pub use crate::util::{GrayRGBConvertible, ImageFilterType, ImageNativeType, Scanable}; pub use crate::util::{CovarianceComputable, EdgeComputable, MedianComputable, MomentsComputable};