Skip to content

Commit

Permalink
make lifetime_expansion unsized
Browse files Browse the repository at this point in the history
  • Loading branch information
Creative0708 committed Mar 3, 2024
1 parent 3d364e7 commit ab0d48f
Showing 1 changed file with 7 additions and 4 deletions.
11 changes: 7 additions & 4 deletions src/lifetime_expansion.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

Expand All @@ -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)
}
Expand All @@ -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)
}
Expand Down

0 comments on commit ab0d48f

Please sign in to comment.