Lines Matching full:immutable
60 //! - [`Immutable`] indicates that a type is free from interior mutability,
76 //! mutable or immutable reference of one type to an immutable reference of
1195 type Tag: Immutable;
1366 /// # use zerocopy_derive::{FromZeros, Immutable};
1383 /// #[derive(FromZeros, Immutable)]
1451 /// Analyzes whether a type is [`Immutable`].
1454 /// the [safety conditions] of `Immutable` and implements `Immutable` if it is
1459 /// # use zerocopy_derive::Immutable;
1460 /// #[derive(Immutable)]
1467 /// #[derive(Immutable)]
1475 /// #[derive(Immutable)]
1487 /// determine whether it is sound to implement `Immutable` for a given type.
1492 /// `Immutable` for that type:
1494 /// - All fields must be `Immutable`.
1497 /// documented [safety conditions] of `Immutable`, and must *not* rely on the
1500 /// [safety conditions]: trait@Immutable#safety
1503 pub use zerocopy_derive::Immutable;
1507 /// `T: Immutable` indicates that `T` does not permit interior mutation, except
1513 /// [`#[derive(Immutable)]`][derive] (requires the `derive` Cargo feature);
1517 /// # use zerocopy_derive::Immutable;
1518 /// #[derive(Immutable)]
1525 /// #[derive(Immutable)]
1532 /// #[derive(Immutable)]
1542 /// determine whether a type is `Immutable`.
1547 /// based on `T: Immutable`. We reserve the right to relax the requirements for
1548 /// `Immutable` in the future, and if unsafe code outside of this crate makes
1549 /// assumptions based on `T: Immutable`, future relaxations may cause that code
1554 // If `T: Immutable`, unsafe code *inside of this crate* may assume that, given
1563 doc = "[derive]: zerocopy_derive::Immutable",
1564 doc = "[derive-analysis]: zerocopy_derive::Immutable#analysis"
1568 …derive]: https://docs.rs/zerocopy/", env!("CARGO_PKG_VERSION"), "/zerocopy/derive.Immutable.html"),
1569 …https://docs.rs/zerocopy/", env!("CARGO_PKG_VERSION"), "/zerocopy/derive.Immutable.html#analysis"),
1573 diagnostic::on_unimplemented(note = "Consider adding `#[derive(Immutable)]` to `{Self}`")
1575 pub unsafe trait Immutable { interface
1576 // The `Self: Sized` bound makes it so that `Immutable` is still object
1591 /// # use zerocopy_derive::{TryFromBytes, Immutable};
1608 /// #[derive(TryFromBytes, Immutable)]
1657 /// # use zerocopy_derive::{TryFromBytes, Immutable};
1674 /// #[derive(TryFromBytes, Immutable)]
1770 /// aliasing when `Self: !Immutable`.
1805 /// #[derive(TryFromBytes, Immutable, KnownLayout)]
1822 /// #[derive(TryFromBytes, KnownLayout, Immutable)]
1827 /// #[derive(TryFromBytes, KnownLayout, Immutable)]
1831 /// #[derive(TryFromBytes, KnownLayout, Immutable)]
1880 Self: KnownLayout + Immutable, in try_ref_from_bytes() argument
1926 /// #[derive(TryFromBytes, Immutable, KnownLayout)]
1943 /// #[derive(TryFromBytes, KnownLayout, Immutable)]
1948 /// #[derive(TryFromBytes, KnownLayout, Immutable)]
1952 /// #[derive(TryFromBytes, KnownLayout, Immutable)]
2003 Self: KnownLayout + Immutable, in try_ref_from_prefix() argument
2036 /// #[derive(TryFromBytes, Immutable, KnownLayout)]
2053 /// #[derive(TryFromBytes, KnownLayout, Immutable)]
2058 /// #[derive(TryFromBytes, KnownLayout, Immutable)]
2062 /// #[derive(TryFromBytes, KnownLayout, Immutable)]
2113 Self: KnownLayout + Immutable, in try_ref_from_suffix() argument
2445 /// #[derive(TryFromBytes, KnownLayout, Immutable)]
2450 /// #[derive(TryFromBytes, KnownLayout, Immutable)]
2454 /// #[derive(TryFromBytes, KnownLayout, Immutable)]
2485 /// #[derive(TryFromBytes, Immutable, KnownLayout)]
2524 Self: KnownLayout<PointerMetadata = usize> + Immutable, in try_ref_from_bytes_with_elems()
2565 /// #[derive(TryFromBytes, KnownLayout, Immutable)]
2570 /// #[derive(TryFromBytes, KnownLayout, Immutable)]
2574 /// #[derive(TryFromBytes, KnownLayout, Immutable)]
2606 /// #[derive(TryFromBytes, Immutable, KnownLayout)]
2645 Self: KnownLayout<PointerMetadata = usize> + Immutable, in try_ref_from_prefix_with_elems()
2673 /// #[derive(TryFromBytes, KnownLayout, Immutable)]
2678 /// #[derive(TryFromBytes, KnownLayout, Immutable)]
2682 /// #[derive(TryFromBytes, KnownLayout, Immutable)]
2714 /// #[derive(TryFromBytes, Immutable, KnownLayout)]
2753 Self: KnownLayout<PointerMetadata = usize> + Immutable, in try_ref_from_suffix_with_elems()
3298 fn try_ref_from_prefix_suffix<T: TryFromBytes + KnownLayout + Immutable + ?Sized>( in try_ref_from_prefix_suffix()
3351 // to add a `T: Immutable` bound. in try_read_from()
3410 /// # use zerocopy_derive::{FromZeros, Immutable};
3427 /// #[derive(FromZeros, Immutable)]
3840 /// # use zerocopy_derive::{FromBytes, FromZeros, Immutable};
3874 /// #[derive(FromBytes, Immutable)]
3978 /// # use zerocopy_derive::{FromBytes, Immutable};
4012 /// #[derive(FromBytes, Immutable)]
4086 /// #[derive(FromBytes, Immutable, KnownLayout)]
4102 /// #[derive(FromBytes, KnownLayout, Immutable)]
4111 /// #[derive(FromBytes, KnownLayout, Immutable)]
4157 Self: KnownLayout + Immutable, in ref_from_bytes() argument
4195 /// #[derive(FromBytes, Immutable, KnownLayout)]
4213 /// #[derive(FromBytes, KnownLayout, Immutable)]
4222 /// #[derive(FromBytes, KnownLayout, Immutable)]
4269 Self: KnownLayout + Immutable, in ref_from_prefix() argument
4303 /// #[derive(FromBytes, Immutable, KnownLayout)]
4321 /// #[derive(FromBytes, Immutable, KnownLayout)]
4363 Self: Immutable + KnownLayout, in ref_from_suffix()
4395 /// #[derive(FromBytes, Immutable, IntoBytes, KnownLayout)]
4414 /// #[derive(FromBytes, IntoBytes, KnownLayout, Immutable)]
4485 /// #[derive(FromBytes, Immutable, IntoBytes, KnownLayout)]
4504 /// #[derive(FromBytes, IntoBytes, KnownLayout, Immutable)]
4574 /// #[derive(FromBytes, Immutable, IntoBytes, KnownLayout)]
4591 /// #[derive(FromBytes, IntoBytes, KnownLayout, Immutable)]
4647 /// #[derive(FromBytes, Immutable)]
4675 /// #[derive(FromBytes, Immutable, KnownLayout)]
4714 Self: KnownLayout<PointerMetadata = usize> + Immutable, in ref_from_bytes_with_elems()
4744 /// #[derive(FromBytes, Immutable)]
4774 /// #[derive(FromBytes, Immutable, KnownLayout)]
4813 Self: KnownLayout<PointerMetadata = usize> + Immutable, in ref_from_prefix_with_elems()
4838 /// #[derive(FromBytes, Immutable)]
4868 /// #[derive(FromBytes, Immutable, KnownLayout)]
4907 Self: KnownLayout<PointerMetadata = usize> + Immutable, in ref_from_suffix_with_elems()
4932 /// #[derive(KnownLayout, FromBytes, IntoBytes, Immutable)]
4963 /// #[derive(FromBytes, IntoBytes, Immutable, KnownLayout)]
4988 Self: IntoBytes + KnownLayout<PointerMetadata = usize> + Immutable, in mut_from_bytes_with_elems()
5018 /// #[derive(KnownLayout, FromBytes, IntoBytes, Immutable)]
5053 /// #[derive(FromBytes, IntoBytes, Immutable, KnownLayout)]
5103 /// #[derive(FromBytes, IntoBytes, Immutable)]
5138 /// #[derive(FromBytes, IntoBytes, Immutable, KnownLayout)]
5395 Self: KnownLayout + Immutable, in ref_from() argument
5417 Self: Sized + Immutable, in slice_from_prefix() argument
5428 Self: Sized + Immutable, in slice_from_suffix() argument
5475 fn ref_from_prefix_suffix<T: FromBytes + KnownLayout + Immutable + ?Sized>( in ref_from_prefix_suffix()
5621 /// Types that can be converted to an immutable slice of initialized bytes.
5665 /// `t: T` as an immutable `[u8]` of length `size_of_val(t)`. If a type is
5706 /// #[derive(IntoBytes, Immutable)]
5748 Self: Immutable, in as_bytes() argument
5766 // - Since `slf` is derived from `self`, and `self` is an immutable in as_bytes()
5768 // could exist are other immutable references, which by `Self: in as_bytes()
5769 // Immutable` don't permit mutation. in as_bytes()
5787 /// #[derive(FromBytes, IntoBytes, Immutable)]
5864 /// #[derive(IntoBytes, Immutable)]
5924 Self: Immutable, in write_to() argument
5950 /// #[derive(IntoBytes, Immutable)]
6010 Self: Immutable, in write_to_prefix() argument
6038 /// #[derive(IntoBytes, Immutable)]
6105 Self: Immutable, in write_to_suffix() argument
6144 /// #[derive(FromBytes, IntoBytes, Immutable, KnownLayout)]
6176 Self: Immutable, in write_to_io()
6338 /// [`Immutable`] and [`IntoBytes`]; e.g.:
6341 /// # use zerocopy_derive::{ByteEq, Immutable, IntoBytes};
6342 /// #[derive(ByteEq, Immutable, IntoBytes)]
6350 /// #[derive(ByteEq, Immutable, IntoBytes)]
6371 /// [`Immutable`] and [`IntoBytes`]; e.g.:
6374 /// # use zerocopy_derive::{ByteHash, Immutable, IntoBytes};
6375 /// #[derive(ByteHash, Immutable, IntoBytes)]
6383 /// #[derive(ByteHash, Immutable, IntoBytes)]
6411 /// # use zerocopy_derive::{ByteEq, Immutable, IntoBytes};
6412 /// #[derive(ByteEq, Immutable, IntoBytes)]
6479 #[derive(Debug, Eq, PartialEq, FromBytes, IntoBytes, Unaligned, Immutable)]
6941 fn _takes_immutable(_: &dyn Immutable) {} in test_object_safety() argument
7240 fn test<T: FromBytes + IntoBytes + Immutable + Debug + Eq + ?Sized, const N: usize>( in test_to_methods()
7297 #[derive(Debug, Eq, PartialEq, FromBytes, IntoBytes, Immutable)] in test_to_methods()
7326 #[derive(FromBytes, IntoBytes, Immutable)] in test_array()