[−][src]Crate core_extensions
This crate provides:
-
Extension traits for many standard/core library types/traits.
-
SelfOps:to extend all types with generic operations.
-
Type-level representations of bool and unsafe .
-
Marker traits to encode invariants about types.
-
etc.
no-std support
To use this crate in no_std contexts disable the default-feature.
Supported Rust versions
This crate support Rust back to 1.20, using a build script to automatically enable features from newer versions.
Cargo Features
"std":Enables standard library support.Enabled by default.
"serde_":Enables serde support.Disabled by default.
"typenum":Enables trait impls for typenum types.Disabled by default.
Contents
Extension trait:SelfOps
This is implemented for all types.
The most importand methods in this are:
-
piped: Allows emulating the pipeline operator.
-
mutated: Allows mutating
self
with a closure passing it along the method chain -
observe: Observes the value of
self
with a closure passing it along the method chain unmodified. -
into_, as_ref_, as_mut_: Alternative syntax for the standard conversion methods.
Other extension traits
ResultExt::Extension trait for Result.
OptionExt::Extension trait for Option.
BoolExt:Extension trait for bool.
IntegerExt:Extension trait for integers.
ToTime:Extension trait for integers, to create Durations of a certain unit.
StringExtExtension trait for str
.
Marker traits
MarkerType: Represents a zero-sized marker type.
Other traits
ResultLike: Trait for types with item/error values,like Option and Result.
TransparentNewtype Represents a newtype that is safe to transmute to and/from its only non-zero-sized field.
Iteration
IteratorExt Extension trait for Iterator implementors.
Factories
IterCloner: Constructs Iterators by cloning the one it references,only possible if it is Clone.
IterConstructor: Constructs Iterators using a closure,this can be done multiple times if the closure it Copy.
Iterators
Loop: Iterator that infinitely produces a value by calling an impl FnMut()->T
LazyOnce: Lazy version of ::std::iter::Once,only evaluating the item when Iterator::next is called.
Type-level stuff
Type-Level bool
This crate contains
types and operations using type-level bool
s.
Boolean:
Trait representing bool
.
True/
False:
Types representing true
/false
.
Type equality
TypeIdentity Allows converting a type back to itself.Useful in generic contexts.
Empty type
Void: Uninstantiable Type for statically impossible situations. Useful as a type parameter/associated type.
(Un)safety represented as type
maybe_unsafe emulates a safe/unsafe effect using types.
Allows having traits whose implementations can choose whether their methods/functions are safe to call or not.
Re-exports
pub use self::callable::CallInto; |
pub use self::callable::CallMut; |
pub use self::callable::CallRef; |
pub use self::strings::StringExt; |
pub use self::bool_extensions::BoolExt; |
pub use self::integer_extensions::IntegerExt; |
pub use self::integer_extensions::ToTime; |
pub use self::iterators::IterCloner; |
pub use self::iterators::IterConstructor; |
pub use self::iterators::IteratorExt; |
pub use self::iterators::LazyOnce; |
pub use self::phantom_variances::InvariantPhantom; |
pub use self::phantom_variances::InvariantRefPhantom; |
pub use self::phantom_variances::VariantDropPhantom; |
pub use self::phantom_variances::VariantPhantom; |
pub use self::transparent_newtype::TransparentNewtype; |
pub use self::try_from::TryFrom; |
pub use self::try_from::TryInto; |
pub use self::void::Void; |
Modules
bool_extensions | Extension traits for |
callable | Contains implementable alternatives of the standard Fn/FnMut/FnOnce traits. |
integer_extensions | Extension traits for integers and types used in the traits. |
iterators | Iterator adaptors and constructors. |
macros | A variety of macros. |
marker_traits | Contains marker traits representing a variety of guarantees provided by the implementors. |
maybe_unsafe | Allows defining traits whose functions/methods can be safe/unsafe to call depending on the implementor. |
measure_time | Time measurement,including functions and types. |
option_result_ext | Contains [extension] traits for Option and Result |
phantom_variances | Contains many type aliases for PhantomData with different lifetime variances. |
prelude | The items from this crate which are almost always used. |
slices | Slice extensions. |
strings | Extension trait for string types. |
transparent_newtype | Contains the TransparentNewtype trait to enable safer transmutation between types. |
try_from | A version of TryFrom/TryInto in stable Rust before they are stabilized. These traits are used for fallible conversions. |
type_level_bool | Module containing definitions and operations for type level booleans |
utils | Miscelaneous utility functions |
void | Contains types and functions for impossible situations. |
Macros
callable_impl | This macro allows more ergonomically implementing the Call(Ref|Mut|Into) traits . |
iter_cloner | Use this macro to create an IterCloner from an Iterator value. |
matches | Macro that evaluates to true if the expression matches any of the patterns (this macro can have multiple patterns). |
unsafe_ | Macro for correctly using unsafe{} blocks inside functions that take IsUnsafe references. |
Traits
MarkerType | Represents a zero-sized marker type . |
OptionExt | Extension trait for Option. |
ResultExt | Extension trait for Result. |
ResultLike | Trait for types with error and item values. |
SelfOps | Extension trait for every type. |
SliceExt | Extension trait for |
TypeIdentity | Allows converting |
TypePanic | A trait used to cause a compile-time error mentioning the types constrained by it. |
ValSliceExt | Extension trait for |
Type Definitions
TIdentity | A type-level identity function |