mirror of
https://git.intege.rs/xlib/anything
synced 2025-12-05 20:35:02 +00:00
fix Boxed types
This commit is contained in:
11
src/autotraits.rs
Normal file
11
src/autotraits.rs
Normal file
@@ -0,0 +1,11 @@
|
||||
#![allow(suspicious_auto_trait_impls)]
|
||||
|
||||
pub auto trait NotNothing {}
|
||||
impl !NotNothing for super::Nothing {}
|
||||
|
||||
pub auto trait NotAnything {}
|
||||
impl !NotAnything for super::Anything {}
|
||||
|
||||
impl <T> NotNothing for alloc::boxed::Box<T> {}
|
||||
impl <T> NotAnything for alloc::boxed::Box<T> {}
|
||||
|
||||
11
src/lib.rs
11
src/lib.rs
@@ -8,15 +8,14 @@ use alloc::format;
|
||||
use alloc::string::String;
|
||||
use core::fmt::{Debug, Display, Formatter};
|
||||
use core::any::Any;
|
||||
use crate::autotraits::{NotAnything, NotNothing};
|
||||
|
||||
mod autotraits;
|
||||
|
||||
// ==============================
|
||||
// Anything
|
||||
// ==============================
|
||||
|
||||
auto trait NotAnything {}
|
||||
impl !NotAnything for Anything {}
|
||||
|
||||
pub struct Anything {
|
||||
error: Box<dyn DynError>,
|
||||
|
||||
@@ -118,12 +117,11 @@ impl<T: Any + NotAnything + Debug > DynError for T {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ==============================
|
||||
// Anything
|
||||
// Nothing
|
||||
// ==============================
|
||||
|
||||
auto trait NotNothing {}
|
||||
impl !NotNothing for Nothing {}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Nothing;
|
||||
@@ -131,4 +129,3 @@ pub struct Nothing;
|
||||
impl<T: NotNothing> From<T> for Nothing {
|
||||
fn from(_: T) -> Self { Nothing }
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user