2525/// borrow data that's already been dropped.
2626/// - Therefore, `val_b`, which has a lifetime of `'b`, is valid for `'a`.
2727#[ inline( never) ]
28- pub const fn lifetime_translator < ' a , ' b , T > ( _val_a : & ' a & ' b ( ) , val_b : & ' b T ) -> & ' a T {
28+ pub const fn lifetime_translator < ' a , ' b , T : ? Sized > ( _val_a : & ' a & ' b ( ) , val_b : & ' b T ) -> & ' a T {
2929 val_b
3030}
3131
3232/// This does the same thing as [`lifetime_translator`], just for mutable refs.
3333#[ inline( never) ]
34- pub fn lifetime_translator_mut < ' a , ' b , T > ( _val_a : & ' a & ' b ( ) , val_b : & ' b mut T ) -> & ' a mut T {
34+ pub fn lifetime_translator_mut < ' a , ' b , T : ?Sized > (
35+ _val_a : & ' a & ' b ( ) ,
36+ val_b : & ' b mut T ,
37+ ) -> & ' a mut T {
3538 val_b
3639}
3740
@@ -40,7 +43,7 @@ pub fn lifetime_translator_mut<'a, 'b, T>(_val_a: &'a &'b (), val_b: &'b mut T)
4043/// # Safety
4144///
4245/// Safety? What's that?
43- pub fn expand < ' a , ' b , T > ( x : & ' a T ) -> & ' b T {
46+ pub fn expand < ' a , ' b , T : ? Sized > ( x : & ' a T ) -> & ' b T {
4447 let f: fn ( _, & ' a T ) -> & ' b T = lifetime_translator;
4548 f ( STATIC_UNIT , x)
4649}
@@ -50,7 +53,7 @@ pub fn expand<'a, 'b, T>(x: &'a T) -> &'b T {
5053/// # Safety
5154///
5255/// Safety? What's that?
53- pub fn expand_mut < ' a , ' b , T > ( x : & ' a mut T ) -> & ' b mut T {
56+ pub fn expand_mut < ' a , ' b , T : ? Sized > ( x : & ' a mut T ) -> & ' b mut T {
5457 let f: fn ( _, & ' a mut T ) -> & ' b mut T = lifetime_translator_mut;
5558 f ( STATIC_UNIT , x)
5659}
0 commit comments