Skip to main content

ExtendMut

Trait ExtendMut 

Source
pub trait ExtendMut<'b>: Sized {
    type Extended;

    // Required method
    fn extend_mut<R, ER: IntoExtendMutReturn<Self::Extended, R>>(
        self,
        f: impl FnOnce(Self::Extended) -> ER,
    ) -> R;
}
Expand description

Trait designed to allow extending the lifetime of a mutable reference. It does not currently support async, contributions are welcome.

§Examples

use extend_mut::ExtendMut;

let (mut t1, mut t2) = (1, 2);
let () = (t1, t2).extend_mut(|it /*: &'static mut (u8, u8)*/| it);
let () = (&mut t1, &mut t2).extend_mut(|it /*: (&'static mut u8, &'static mut u8)*/| it);
let "hi" = (t1, t2).extend_mut(|it| (it, "hi")) else { panic!() };

Required Associated Types§

Required Methods§

Source

fn extend_mut<R, ER: IntoExtendMutReturn<Self::Extended, R>>( self, f: impl FnOnce(Self::Extended) -> ER, ) -> R

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl<'a, 'b, T1: ?Sized + 'b, T2: ?Sized + 'b, T3: ?Sized + 'b, T4: ?Sized + 'b, T5: ?Sized + 'b, T6: ?Sized + 'b, T7: ?Sized + 'b, T8: ?Sized + 'b, T9: ?Sized + 'b, T10: ?Sized + 'b, T11: ?Sized + 'b, T12: ?Sized + 'b, T13: ?Sized + 'b> ExtendMut<'b> for (&'a mut T1, &'a mut T2, &'a mut T3, &'a mut T4, &'a mut T5, &'a mut T6, &'a mut T7, &'a mut T8, &'a mut T9, &'a mut T10, &'a mut T11, &'a mut T12, &'a mut T13)

Source§

impl<'a, 'b, T2: ?Sized + 'b, T3: ?Sized + 'b, T4: ?Sized + 'b, T5: ?Sized + 'b, T6: ?Sized + 'b, T7: ?Sized + 'b, T8: ?Sized + 'b, T9: ?Sized + 'b, T10: ?Sized + 'b, T11: ?Sized + 'b, T12: ?Sized + 'b, T13: ?Sized + 'b> ExtendMut<'b> for (&'a mut T2, &'a mut T3, &'a mut T4, &'a mut T5, &'a mut T6, &'a mut T7, &'a mut T8, &'a mut T9, &'a mut T10, &'a mut T11, &'a mut T12, &'a mut T13)

Source§

impl<'a, 'b, T3: ?Sized + 'b, T4: ?Sized + 'b, T5: ?Sized + 'b, T6: ?Sized + 'b, T7: ?Sized + 'b, T8: ?Sized + 'b, T9: ?Sized + 'b, T10: ?Sized + 'b, T11: ?Sized + 'b, T12: ?Sized + 'b, T13: ?Sized + 'b> ExtendMut<'b> for (&'a mut T3, &'a mut T4, &'a mut T5, &'a mut T6, &'a mut T7, &'a mut T8, &'a mut T9, &'a mut T10, &'a mut T11, &'a mut T12, &'a mut T13)

Source§

impl<'a, 'b, T4: ?Sized + 'b, T5: ?Sized + 'b, T6: ?Sized + 'b, T7: ?Sized + 'b, T8: ?Sized + 'b, T9: ?Sized + 'b, T10: ?Sized + 'b, T11: ?Sized + 'b, T12: ?Sized + 'b, T13: ?Sized + 'b> ExtendMut<'b> for (&'a mut T4, &'a mut T5, &'a mut T6, &'a mut T7, &'a mut T8, &'a mut T9, &'a mut T10, &'a mut T11, &'a mut T12, &'a mut T13)

Source§

impl<'a, 'b, T5: ?Sized + 'b, T6: ?Sized + 'b, T7: ?Sized + 'b, T8: ?Sized + 'b, T9: ?Sized + 'b, T10: ?Sized + 'b, T11: ?Sized + 'b, T12: ?Sized + 'b, T13: ?Sized + 'b> ExtendMut<'b> for (&'a mut T5, &'a mut T6, &'a mut T7, &'a mut T8, &'a mut T9, &'a mut T10, &'a mut T11, &'a mut T12, &'a mut T13)

Source§

impl<'a, 'b, T6: ?Sized + 'b, T7: ?Sized + 'b, T8: ?Sized + 'b, T9: ?Sized + 'b, T10: ?Sized + 'b, T11: ?Sized + 'b, T12: ?Sized + 'b, T13: ?Sized + 'b> ExtendMut<'b> for (&'a mut T6, &'a mut T7, &'a mut T8, &'a mut T9, &'a mut T10, &'a mut T11, &'a mut T12, &'a mut T13)

Source§

impl<'a, 'b, T7: ?Sized + 'b, T8: ?Sized + 'b, T9: ?Sized + 'b, T10: ?Sized + 'b, T11: ?Sized + 'b, T12: ?Sized + 'b, T13: ?Sized + 'b> ExtendMut<'b> for (&'a mut T7, &'a mut T8, &'a mut T9, &'a mut T10, &'a mut T11, &'a mut T12, &'a mut T13)

Source§

impl<'a, 'b, T8: ?Sized + 'b, T9: ?Sized + 'b, T10: ?Sized + 'b, T11: ?Sized + 'b, T12: ?Sized + 'b, T13: ?Sized + 'b> ExtendMut<'b> for (&'a mut T8, &'a mut T9, &'a mut T10, &'a mut T11, &'a mut T12, &'a mut T13)

Source§

impl<'a, 'b, T9: ?Sized + 'b, T10: ?Sized + 'b, T11: ?Sized + 'b, T12: ?Sized + 'b, T13: ?Sized + 'b> ExtendMut<'b> for (&'a mut T9, &'a mut T10, &'a mut T11, &'a mut T12, &'a mut T13)

Source§

impl<'a, 'b, T10: ?Sized + 'b, T11: ?Sized + 'b, T12: ?Sized + 'b, T13: ?Sized + 'b> ExtendMut<'b> for (&'a mut T10, &'a mut T11, &'a mut T12, &'a mut T13)

Source§

impl<'a, 'b, T11: ?Sized + 'b, T12: ?Sized + 'b, T13: ?Sized + 'b> ExtendMut<'b> for (&'a mut T11, &'a mut T12, &'a mut T13)

Source§

type Extended = (&'b mut T11, &'b mut T12, &'b mut T13)

Source§

fn extend_mut<R, ER: IntoExtendMutReturn<Self::Extended, R>>( self, f: impl FnOnce(Self::Extended) -> ER, ) -> R

Source§

impl<'a, 'b, T12: ?Sized + 'b, T13: ?Sized + 'b> ExtendMut<'b> for (&'a mut T12, &'a mut T13)

Source§

type Extended = (&'b mut T12, &'b mut T13)

Source§

fn extend_mut<R, ER: IntoExtendMutReturn<Self::Extended, R>>( self, f: impl FnOnce(Self::Extended) -> ER, ) -> R

Source§

impl<'a, 'b, T13: ?Sized + 'b> ExtendMut<'b> for (&'a mut T13,)

Source§

type Extended = (&'b mut T13,)

Source§

fn extend_mut<R, ER: IntoExtendMutReturn<Self::Extended, R>>( self, f: impl FnOnce(Self::Extended) -> ER, ) -> R

Source§

impl<'a, 'b, T: ?Sized + 'b> ExtendMut<'b> for &'a mut T

Source§

type Extended = &'b mut T

Source§

fn extend_mut<R, ER: IntoExtendMutReturn<Self::Extended, R>>( self, f: impl FnOnce(Self::Extended) -> ER, ) -> R

Source§

impl<'b> ExtendMut<'b> for ()

Source§

type Extended = ()

Source§

fn extend_mut<R, ER: IntoExtendMutReturn<Self::Extended, R>>( self, f: impl FnOnce(Self::Extended) -> ER, ) -> R

Implementors§