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.



  • 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


  • Take a max capacity a try allocating a string with it.



  • trait for trying to clone an elem, return an error instead of panic if allocation failed