arena |
|
|
back |
|
|
block.rs |
|
3501 |
compact |
|
|
error.rs |
|
2492 |
front |
|
|
keywords |
|
|
lib.rs |
|
83090 |
non_max_u32.rs |
[`NonMaxU32`], a 32-bit type that can represent any value except [`u32::MAX`].
Naga would like `Option<Handle<T>>` to be a 32-bit value, which means we
need to exclude some index value for use in representing [`None`]. We could
have [`Handle`] store a [`NonZeroU32`], but zero is a very useful value for
indexing. We could have a [`Handle`] store a value one greater than its index,
but it turns out that it's not uncommon to want to work with [`Handle`]s'
indices, so that bias of 1 becomes more visible than one would like.
This module defines the type [`NonMaxU32`], for which `Option<NonMaxU32>` is
still a 32-bit value, but which is directly usable as a [`Handle`] index
type. It still uses a bias of 1 under the hood, but that fact is isolated
within the implementation.
[`Handle`]: crate::arena::Handle
[`NonZeroU32`]: std::num::NonZeroU32 |
5514 |
proc |
|
|
span.rs |
|
14579 |
valid |
|
|