• Stars
    star
    1
  • Language
    Zig
  • License
    European Union Pu...
  • Created over 4 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

MaybeUninit in Zig.

maybeuninit

License:EUPL Zig

This is a userlevel implementation of the undefined keyword in Zig.
It is inspired by MaybeUninit in Rust.

Minimum supported Zig

master

Each day will be tested in CI whether this project still builds on Zig master.

Recent changes

  • 0.6.1
    • Add withByte as initializer function.
    • Remove all use of inline, as the usage of inline was considered wrong.
  • 0.6
    • Rename assume_init to assumeInit.
    • rename as_ptr and as_mut_ptr to asPtr and asMutPtr.
    • rename first_ptr and first_ptr_mut to firstPtr and firstPtrMut.
  • 0.5.2
    • Only support Zig's Master branch.
  • 0.5.1
  • 0.5
    • Do not call @memset in MaybeUninit(T).zeroed() if T has a size of 0.
  • 0.4
  • 0.3
    • Change the return type of first_ptr_mut from *Self to *T.
    • Adds a test that calls first_ptr_mut on an empty slice.
  • 0.2
    • Change the definition of MaybeUninit from packed union to extern union, due to packed union's setting the alignment always to 1.
  • 0.1
    • Initial library setup.

Issues

At the point of writing, it is impossible to create an uninitialized MaybeUninit(T), and later initialize it at compiletime.
This is an issue of the compiler, which tracks the current active field of packed and extern unions when used at compiletime, while it shouldn't.
The issue is reported to the Zig compiler, and can be followed here.