25
25
/// borrow data that's already been dropped.
26
26
/// - Therefore, `val_b`, which has a lifetime of `'b`, is valid for `'a`.
27
27
#[ 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 {
29
29
val_b
30
30
}
31
31
32
32
/// This does the same thing as [`lifetime_translator`], just for mutable refs.
33
33
#[ 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 {
35
38
val_b
36
39
}
37
40
@@ -40,7 +43,7 @@ pub fn lifetime_translator_mut<'a, 'b, T>(_val_a: &'a &'b (), val_b: &'b mut T)
40
43
/// # Safety
41
44
///
42
45
/// 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 {
44
47
let f: fn ( _, & ' a T ) -> & ' b T = lifetime_translator;
45
48
f ( STATIC_UNIT , x)
46
49
}
@@ -50,7 +53,7 @@ pub fn expand<'a, 'b, T>(x: &'a T) -> &'b T {
50
53
/// # Safety
51
54
///
52
55
/// 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 {
54
57
let f: fn ( _, & ' a mut T ) -> & ' b mut T = lifetime_translator_mut;
55
58
f ( STATIC_UNIT , x)
56
59
}
0 commit comments