Lines Matching refs:E

133 //! To declare an init macro/function you just return an [`impl PinInit<T, E>`]:
161 //! [`impl PinInit<T, E>`] directly from a closure. Of course you have to ensure that the closure
263 //! [`impl PinInit<T, E>`]: crate::PinInit
264 //! [`impl Init<T, E>`]: crate::Init
1055 pub unsafe trait PinInit<T: ?Sized, E = Infallible>: Sized {
1064 unsafe fn __pinned_init(self, slot: *mut T) -> Result<(), E>;
1084 fn pin_chain<F>(self, f: F) -> ChainPinInit<Self, F, T, E>
1086 F: FnOnce(Pin<&mut T>) -> Result<(), E>,
1093 pub struct ChainPinInit<I, F, T: ?Sized, E>(I, F, __internal::Invariant<(E, T)>);
1099 unsafe impl<T: ?Sized, E, I, F> PinInit<T, E> for ChainPinInit<I, F, T, E>
1101 I: PinInit<T, E>,
1102 F: FnOnce(Pin<&mut T>) -> Result<(), E>,
1104 unsafe fn __pinned_init(self, slot: *mut T) -> Result<(), E> {
1120 /// [`PinInit<T, E>`] is a super trait, you can use every function that takes it as well.
1140 /// Contrary to its supertype [`PinInit<T, E>`] the caller is allowed to
1154 pub unsafe trait Init<T: ?Sized, E = Infallible>: PinInit<T, E> {
1162 unsafe fn __init(self, slot: *mut T) -> Result<(), E>;
1192 fn chain<F>(self, f: F) -> ChainInit<Self, F, T, E>
1194 F: FnOnce(&mut T) -> Result<(), E>,
1201 pub struct ChainInit<I, F, T: ?Sized, E>(I, F, __internal::Invariant<(E, T)>);
1206 unsafe impl<T: ?Sized, E, I, F> Init<T, E> for ChainInit<I, F, T, E>
1208 I: Init<T, E>,
1209 F: FnOnce(&mut T) -> Result<(), E>,
1211 unsafe fn __init(self, slot: *mut T) -> Result<(), E> {
1222 unsafe impl<T: ?Sized, E, I, F> PinInit<T, E> for ChainInit<I, F, T, E>
1224 I: Init<T, E>,
1225 F: FnOnce(&mut T) -> Result<(), E>,
1227 unsafe fn __pinned_init(self, slot: *mut T) -> Result<(), E> {
1233 /// Creates a new [`PinInit<T, E>`] from the given closure.
1246 pub const unsafe fn pin_init_from_closure<T: ?Sized, E>(
1247 f: impl FnOnce(*mut T) -> Result<(), E>,
1248 ) -> impl PinInit<T, E> {
1252 /// Creates a new [`Init<T, E>`] from the given closure.
1265 pub const unsafe fn init_from_closure<T: ?Sized, E>(
1266 f: impl FnOnce(*mut T) -> Result<(), E>,
1267 ) -> impl Init<T, E> {
1278 pub const unsafe fn cast_pin_init<T, U, E>(init: impl PinInit<T, E>) -> impl PinInit<U, E> {
1294 pub const unsafe fn cast_init<T, U, E>(init: impl Init<T, E>) -> impl Init<U, E> {
1307 pub fn uninit<T, E>() -> impl Init<MaybeUninit<T>, E> {
1322 pub fn init_array_from_fn<I, const N: usize, T, E>(
1324 ) -> impl Init<[T; N], E>
1326 I: Init<T, E>,
1365 pub fn pin_init_array_from_fn<I, const N: usize, T, E>(
1367 ) -> impl PinInit<[T; N], E>
1369 I: PinInit<T, E>,
1415 unsafe impl<T, E> Init<T, E> for Result<T, E> {
1416 unsafe fn __init(self, slot: *mut T) -> Result<(), E> {
1426 unsafe impl<T, E> PinInit<T, E> for Result<T, E> {
1427 unsafe fn __pinned_init(self, slot: *mut T) -> Result<(), E> {
1442 fn write_init<E>(self, init: impl Init<T, E>) -> Result<Self::Initialized, E>;
1447 fn write_pin_init<E>(self, init: impl PinInit<T, E>) -> Result<Pin<Self::Initialized>, E>;
1663 impl_tuple_zeroable!(A, B, C, D, E, F, G, H, I, J);
1679 impl_fn_zeroable_option!(["Rust", "C"] { A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U });
1708 fn pin_init<E>(value_init: impl PinInit<T, E>) -> impl PinInit<Self, E>;
1712 fn pin_init<E>(value_init: impl PinInit<T, E>) -> impl PinInit<Self, E> {
1719 fn pin_init<E>(value_init: impl PinInit<T, E>) -> impl PinInit<Self, E> {
1727 fn pin_init<E>(init: impl PinInit<T, E>) -> impl PinInit<Self, E> {