diff --git a/src/lifetime_expansion.rs b/src/lifetime_expansion.rs index 867b643..da34c3f 100644 --- a/src/lifetime_expansion.rs +++ b/src/lifetime_expansion.rs @@ -25,13 +25,16 @@ /// borrow data that's already been dropped. /// - Therefore, `val_b`, which has a lifetime of `'b`, is valid for `'a`. #[inline(never)] -pub const fn lifetime_translator<'a, 'b, T>(_val_a: &'a &'b (), val_b: &'b T) -> &'a T { +pub const fn lifetime_translator<'a, 'b, T: ?Sized>(_val_a: &'a &'b (), val_b: &'b T) -> &'a T { val_b } /// This does the same thing as [`lifetime_translator`], just for mutable refs. #[inline(never)] -pub fn lifetime_translator_mut<'a, 'b, T>(_val_a: &'a &'b (), val_b: &'b mut T) -> &'a mut T { +pub fn lifetime_translator_mut<'a, 'b, T: ?Sized>( + _val_a: &'a &'b (), + val_b: &'b mut T, +) -> &'a mut T { val_b } @@ -40,7 +43,7 @@ pub fn lifetime_translator_mut<'a, 'b, T>(_val_a: &'a &'b (), val_b: &'b mut T) /// # Safety /// /// Safety? What's that? -pub fn expand<'a, 'b, T>(x: &'a T) -> &'b T { +pub fn expand<'a, 'b, T: ?Sized>(x: &'a T) -> &'b T { let f: fn(_, &'a T) -> &'b T = lifetime_translator; f(STATIC_UNIT, x) } @@ -50,7 +53,7 @@ pub fn expand<'a, 'b, T>(x: &'a T) -> &'b T { /// # Safety /// /// Safety? What's that? -pub fn expand_mut<'a, 'b, T>(x: &'a mut T) -> &'b mut T { +pub fn expand_mut<'a, 'b, T: ?Sized>(x: &'a mut T) -> &'b mut T { let f: fn(_, &'a mut T) -> &'b mut T = lifetime_translator_mut; f(STATIC_UNIT, x) }