The coerced type does not outlive the value being coerced to.
Example of erroneous code:
#![allow(unused)]
#![feature(coerce_unsized)]
#![feature(unsize)]
fn main() {
use std::marker::Unsize;
use std::ops::CoerceUnsized;
// error: lifetime of the source pointer does not outlive lifetime bound of the
// object type
impl<'a, 'b, T, S> CoerceUnsized<&'a T> for &'b S where S: Unsize<T> {}
} During a coercion, the "source pointer" (the coerced type) did not outlive the "object type" (value being coerced to). In the above example, 'b is not a subtype of 'a. This error can currently only be encountered with the unstable CoerceUnsized trait which allows custom coercions of unsized types behind a smart pointer to be implemented.
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/error_codes/E0476.html