diff --git a/sub/core/src/lib.rs b/sub/core/src/lib.rs index 8e7e311..0d48965 100644 --- a/sub/core/src/lib.rs +++ b/sub/core/src/lib.rs @@ -1,4 +1,6 @@ -#![no_std] #![feature(decl_macro)] #![allow(unused)] +#![no_std] #![feature(decl_macro)] +#![feature(inherent_associated_types)] +#![allow(unused, incomplete_features)] // @@ -22,6 +24,7 @@ pub mod fnv1; pub mod pstruct; pub mod align; +pub mod never; // // Export Preludes: // @@ -53,6 +56,7 @@ pub mod prelude { pub use crate::pstruct::struct_offset; pub use crate::pod::{Pod,Mut}; pub use crate::align::Align; + pub use crate::never::Never; } pub mod public { diff --git a/sub/core/src/never.rs b/sub/core/src/never.rs new file mode 100644 index 0000000..34e8e75 --- /dev/null +++ b/sub/core/src/never.rs @@ -0,0 +1,9 @@ + +pub type Never = ! as Ret>::Ret; + +trait Ret { type Ret; } +impl Ret for fn() -> R { + type Ret=R; +} + + diff --git a/x/tests/test_core.rs b/x/tests/test_core.rs deleted file mode 100644 index 57ea7ed..0000000 --- a/x/tests/test_core.rs +++ /dev/null @@ -1,21 +0,0 @@ - -#[test] -pub fn test_once() { - let mut i = 0; - for _ in 0..3 { - if x::once!() { i+= 1; } - if x::once!() { i+= 1; } - } - assert_eq!(i, 2); -} - - - -#[test] -pub fn test_chain() { - let a = 0x1337; - let b = [None,None,Some(&a)]; - let c = [None,Some(&b), None]; - assert_eq!(0x1337, x::ptr_chain!(&c as *const _, 0x8, 0x10, 0x0)); -} - diff --git a/x/tests/test_xpat.rs b/x/tests/test_xpat.rs deleted file mode 100644 index 2b6a1b4..0000000 --- a/x/tests/test_xpat.rs +++ /dev/null @@ -1,19 +0,0 @@ - - - -#[test] -pub fn test_pattern() { - - let pattern = x::pattern!("E8 ( AA | CC | DD ) E8 "); - use x::xpat::Atom::*; - let pattern = &[Save(0), Byte(0xE8), - Case(2), Byte(0xCC), Break(8), - Case(2), Byte(0xAA), Break(5), - Case(2), Byte(0xCC), Break(2), Nop, Byte(0xDD), Byte(0xE8)]; - let buffer: &[u8] = &[ 0xE8, 0xDD, 0xE8 ]; - - let mut scanner = x::Scanner::new(buffer, pattern, ..); - let mut saves = [0usize;8]; - - assert!(scanner.next(&mut saves)); -}