Skip to content

JonathanBrouwer/map_box

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Map Box

githubcrates-iodocs-rs

Map the value in a Box, re-using the allocation when possible.

For example, this code will not re-allocate.

use map_box::Map;

let b = Box::new(42u64);
let b = b.map_box(|v| v as i64);

The signature of map is:

impl<T1> Box<T1> {
    fn map_box<T2>(self, f: impl FnMut(T1) -> T2) -> Box<T2>;
}

Limitations

If the alignment requirements of the type changes, even if the alignment becomes lower, the Box needs to be reallocated. This is because:

  1. alloc::dealloc requires the layout to be identical to the layout that the allocation was made with
  2. alloc::realloc only takes a new size, it cannot change the layout of the allocation downwards

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages