Skip to content

Releases: Rust-for-Linux/pinned-init

v0.0.8

07 Jul 14:03
Compare
Choose a tag to compare

Changed

  • return type of zeroed() from impl Init<T, E> to impl Init<T> (also removing the generic
    parameter E)
  • removed the default error of try_[pin_]init!, now you always have to specify an error using
    ? Error at the end
  • put InPlaceInit behind the alloc feature flag, this allows stable usage of the #![no_std]
    part of the crate

Full changes: v0.0.7...v0.0.8

v0.0.7

10 Apr 08:26
Compare
Choose a tag to compare

Added

  • Zeroable derive macro
  • ..Zeroable::zeroed() tail expression support in [try_][pin_]init! macros: allowed to omit
    fields, omitted fields are initialized with 0
  • [pin_]chain functions to modify a value after an initializer has run
  • [pin_]init_array_from_fn to create impl [Pin]Init<[T; N], E> from a generator closure
    fn(usize) -> impl [Pin]Init<T, E>
  • impl Zeroable for UnsafeCell

Changed

  • PinInit is now a supertrait of Init (before there was a blanket impl)

Removed

  • coverage workflow and usage of #[feature(no_coverage)]
  • impl Zeroable for Infallible (see Security)

Fixed

  • Self in generic bounds on structs with #[pin_data]
  • const generic default parameter values can now be used on structs with #[pin_data]

Security

  • impl Zeroable for Infallible (#13) it was possible to trigger UB by creating a value of type
    Box<Infallible> via Box::init(zeroed())

Full Changes: v0.0.6...v0.0.7