All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.0.9 - 2024-12-02
InPlaceWrite
trait to re-initialize already existing allocations,assert_pinned!
macro to check if a field is marked with#[pin]
,- compatibility with stable Rust, thanks a lot to @bonzini! #24 and #23:
- the
alloc
feature enables support forallocator_api
and reflects the old behavior, if it is disabled, then infallible allocations are assumed (just like the standard library does).
- the
- guard hygiene wrt constants in
[try_][pin_]init!
0.0.8 - 2024-07-07
- return type of
zeroed()
fromimpl Init<T, E>
toimpl Init<T>
(also removing the generic parameterE
) - removed the default error of
try_[pin_]init!
, now you always have to specify an error using? Error
at the end - put
InPlaceInit
behind thealloc
feature flag, this allows stable usage of the#![no_std]
part of the crate
0.0.7 - 2024-04-09
Zeroable
derive macro..Zeroable::zeroed()
tail expression support in[try_][pin_]init!
macros: allowed to omit fields, omitted fields are initialized with0
[pin_]chain
functions to modify a value after an initializer has run[pin_]init_array_from_fn
to createimpl [Pin]Init<[T; N], E>
from a generator closurefn(usize) -> impl [Pin]Init<T, E>
impl Zeroable for UnsafeCell
PinInit
is now a supertrait ofInit
(before there was a blanket impl)
- coverage workflow and usage of
#[feature(no_coverage)]
impl Zeroable for Infallible
(see Security)
Self
in generic bounds on structs with#[pin_data]
- const generic default parameter values can now be used on structs with
#[pin_data]
impl Zeroable for Infallible
(#13) it was possible to trigger UB by creating a value of typeBox<Infallible>
viaBox::init(zeroed())