Casting ZST to non-ZST will result in a slice length of 0.
Casting non-ZST to ZST will only work if the input slice has length 0, and results in a slice length of 0; if the input slice is not of length 0, PodCastError::OutputSliceWouldHaveSlop is returned.
Updates the docs of the PodCastError variants to reflect when they can occur.
Updates the docs of try_cast_slice (and checked::) to remove note about ZST <-> non-ZST not being allowed.
Update bytes_of(_mut) to remove ZST check, since casting [ZST] -> [u8] is now allowed directly using cast_slice(_mut).
Update must_cast_slice checks and doctests to allow [ZST] -> [non-ZST], but disallow [non-ZST] -> [ZST].
* Fix panics in try_cast_slice_{box,rc,arc},cast_vec.
Casting from non-empty non-ZST slices to ZST slices now returns Err(SizeMismatch) (instead of panicking).
Casting from empty non-ZST slices to ZST slices is allowed and returns an empty slice (instead of panicking).
Casting from ZST slices to non-ZST slices is allowed and returns an empty slice (status quo).
* Add tests for cast_slice_box,rc,arc.
* update rustfmt.toml
replace `merge_imports = true` (deprecated) with `imports_granularity = "Crate"`
* run `cargo +nightly fmt`
* rewrite docs and rename `Wrapped` to `Inner`
rewriting some docs for conciseness
rename `Wrapped` to `Inner`, because it's hard to visually differentiate between
`Wrapper` and `Wrapped`
* impl missing `TransparentWrapper::wrap_{}` fns
Implement 3 new wrapping functions on `TransparentWrapper` providing new
conversions.
- `TransparentWrapper::wrap(s: Inner) -> Self`
- `TransparentWrapper::wrap_slice(s: &[Inner]) -> &[Self]`
- `TransparentWrapper::wrap_slice_mut(s: &mut [Inner]) -> &mut [Self]`
* impl `TransparentWrapper::unwrap_{}` fns
Implement counterparts to `TransparentWrapper::wrap_{}` functions
providing reverse conversions.
- `TransparentWrapper::unwrap(self) -> Inner`
- `TransparentWrapper::unwrap_ref(&self) -> &Inner`
- `TransparentWrapper::unwrap_mut(&mut self) -> &mut Inner`
- `TransparentWrapper::unwrap_slice(s: &[Self]) -> &[Inner]`
- `TransparentWrapper::unwrap_slice_mut(s: &mut [Self]) -> &mut [Inner]`
* add `TransparentWrapper` UB test
This test is only for MIRI to check all trait functions on
`TransparentWrapper` if they cause any UB.
The output of the functions is not checked.
* small `TransparentWrapper` doc adjustments
* change fn signature on `TransparentWrapper`
Methods on `TransparentWrapper` trait are now associated functions.
They now take `Self` instead of `self` as argument)
- `TransparentWrapper::unwrap(s: Self)`
- `TransparentWrapper::unwrap_ref(s: &Self)`
- `TransparentWrapper::unwrap_mut(s: &mut Self)`
* Ensure functions that take generic <A, B> don't call them <T, U>
* Plug soundness hole in offset_of with safe_packed_borrows lint
* Add some more tests I noticed were missing (still many missing)
* Make CI way more thorough
* Fix running MSRV tests with unsupported `--feature`s
* Disable derive tests in sanitizers, and fix miri ci