[−][src]Crate stdext
Additional features for the Rust standard library.
Description
This crate contains enhancements to the Rust standard library types, useful for
broad audience, but not yet implemented (or stabilized) in std.
Crate is designed to be lightweight (no external dependencies!) and provide essential
functionality which possible can get to the std some day.
Extension traits
All the new functionality the stanard library is added using extension traits.
Below you can find the table of all the extension traits introduced by this crate:
std structure | extension traits |
|---|---|
Vec | VecExt and VecExtClone |
&str | StrExt |
Option | OptionExt |
Result | ResultExt |
Duration | DurationExt |
RwLock | RwLockExt |
Mutex | MutexExt |
Highlights
-
Convenient builder methods for
Duration:use std::time::Duration; use stdext::prelude::*; let duration = Duration::from_minutes(1).add_secs(5).add_micros(100); assert_eq!(duration, Duration::new(65, 100_000));
-
Panicking version for
RwLock::read,RwLock::writeandMutex::lock(for fellows who don't really handle the lock poisoning):use std::sync::{Arc, RwLock}; use stdext::prelude::*; let lock = Arc::new(RwLock::new(1)); { let mut n = lock.force_write(); // Instead of `.write().unwrap()`. *n = 2; } let n = lock.force_read(); assert_eq!(*n, 2);
-
Result::combineandOption::combineto zip pairs of objects:use stdext::prelude::*; let x = Some(1); let y = Some("hi"); let z = None::<u8>; assert_eq!(x.combine(y), Some((1, "hi"))); assert_eq!(x.combine(z), None); let x = Ok(1); let y = Ok("hi"); let z: Result<i32, &str> = Err("error"); let z2: Result<i32, &str> = Err("other_error"); assert_eq!(x.combine(y), Ok((1, "hi"))); assert_eq!(x.combine(z), Err("error")); assert_eq!(z.combine(z2), Err("error"));
Modules
| duration | Extension traits for |
| option | Extension traits for |
| prelude | A "prelude" module which re-exports all the extension traits for the simple library usage. |
| result | Extension traits for |
| str | Extension traits for |
| sync | Extension traits for the standard synchronization primitives. |
| vec | Extension traits for |