Crate fallible_collections
source ·Expand description
impl Fallible collections on allocation errors, quite as describe in RFC 2116 This was used in the turbofish OS hobby project to mitigate the the lack of faillible allocation in rust.
The Try*
types in this module are thin wrappers around the stdlib types to add
support for fallible allocation. The API differences from the stdlib types ensure
that all operations which allocate return a Result
. For the most part, this simply
means adding a Result
return value to functions which return nothing or a
non-Result
value. However, these types implement some traits whose API cannot
communicate failure, but which do require allocation, so it is important that these
wrapper types do not implement these traits.
Specifically, these types must not implement any of the following traits:
- Clone
- Extend
- From
- FromIterator
This list may not be exhaustive. Exercise caution when implementing any new traits to ensure they won’t potentially allocate in a way that can’t return a Result to indicate allocation failure.
Re-exports
Modules
- Implement a Fallible Arc
- Implement Fallible Box
- A try_format! macro replacing format!
- Implement Fallible HashMap
- Implement a Fallible Rc
- this module implements try clone for primitive rust types
- Implement Fallible Vec
Macros
- Take a max capacity a try allocating a string with it.
Enums
- The error type for
try_reserve
methods.
Traits
- trait for trying to clone an elem, return an error instead of panic if allocation failed