no_std support
[anymap] / src / any.rs
index 453d7dd9fca5604f602a4426e147e32e0429b626..15b535b343433fb5ce83cc97e15d2f9838406833 100644 (file)
@@ -1,10 +1,7 @@
-//! The different types of `Any` for use in a map.
-//!
-//! This stuff is all based on `std::any`, but goes a little further, with `CloneAny` being a
-//! cloneable `Any` and with the `Send` and `Sync` bounds possible on both `Any` and `CloneAny`.
-
-use std::fmt;
-use std::any::Any;
+use core::fmt;
+use core::any::Any;
+#[cfg(not(feature = "std"))]
+use alloc::boxed::Box;
 
 #[doc(hidden)]
 pub trait CloneToAny {
@@ -31,7 +28,7 @@ macro_rules! impl_clone {
                 // your bin crate needs a corresponding allow!). Although I explained my plight¹
                 // and it was all explained and agreed upon, no action has been taken. So I finally
                 // caved and worked around it by doing it this way, which matches what’s done for
-                // std::any², so it’s probably not *too* bad.
+                // core::any², so it’s probably not *too* bad.
                 //
                 // ¹ https://github.com/rust-lang/rust/issues/51443#issuecomment-421988013
                 // ² https://github.com/rust-lang/rust/blob/e7825f2b690c9a0d21b6f6d84c404bb53b151b38/library/alloc/src/boxed.rs#L1613-L1616
@@ -99,7 +96,7 @@ implement!(Any, + Send + Sync);
 /// [`Any`], but with cloning.
 ///
 /// Every type with no non-`'static` references that implements `Clone` implements `CloneAny`.
-/// See [`std::any`] for more details on `Any` in general.
+/// See [`core::any`] for more details on `Any` in general.
 pub trait CloneAny: Any + CloneToAny { }
 impl<T: Any + Clone> CloneAny for T { }
 implement!(CloneAny,);