| Crates.io | shpat |
| lib.rs | shpat |
| version | 0.1.0 |
| created_at | 2020-05-12 09:22:23.86868+00 |
| updated_at | 2020-05-12 09:22:23.86868+00 |
| description | sasha's solution to common patterns |
| homepage | |
| repository | https://github.com/scileo/shpat |
| max_upload_size | |
| id | 240619 |
| size | 12,408 |
A bunch of patterns that I often met while programming in Rust. I put them in a single crate, so other Rustaceans may also enjoy them.
This crate has the following goals:
applySome methods in Rust don't take ownership, and just take reference of an
object. This may be nice in some situations, but this does not allow to
chain methods. The Apply trait allows to bring back method chaining for
methods which take mutable references.
For example, HashMap can be created easily:
use std::collections::HashMap;
use shpat::prelude::*;
let map = HashMap::new()
.apply(|m| m.insert("manatee", 42))
.apply(|m| m.insert("horse", 101));
The Apply trait is implemented for every Sized type. It also provides
apply_keep, which returns the value returned by the inner method and the
object itself (which may be usefull when one wants to insert a value in a
hash map, but want to keep returned value), and apply_unwrap, which will
call unwrap on every Unwrapable returned value.
UnwrappableThe Unwrappable trait is an attempt to unify the behavior of types which
represent a success or failure dichotomy, such as Result and Option.
These type implement a method which returns the success value, and panics
if it was a failure. These behaviours are unified with the unwrap
function.
This trait is implemented for both Result and Option. It is closely
related to the Try trait from the standard library.
Contributions and suggestions are welcome! If you have any comment about the features, the code or its documentation, feel free to open an issue so we can discuss it.
shpat is distributed under the MIT license. Any contribution to
the codebase is assumed to signal agreement with such license.