If rust code like below
struct LifeTimeRequired<'a> {
    src : &'a str
}
impl <'a> LifeTimeRequired<'a> {
    fn new(src:&'a str) -> Self {
        Self { src }
    }
    fn print(&self) {
        println!("{}", self.src);
    }
}
struct Wrapper<'a> {
    origin : LifeTimeRequired<'a>
}
impl <'a> Wrapper<'a> {
    fn print(&self) {
        println!("Wrapped");
        self.origin.print();
    }
}
fn main() {
    let wrapper = Wrapper { origin : LifeTimeRequired::new("abcd") };
    wrapper.print();
}
But i want to remove lifetime elision. (Above code is just example)
Like this :
struct LifeTimeRequired<'a> {
    src : &'a str
}
impl <'a> LifeTimeRequired<'a> {
    fn new(src:&'a str) -> Self {
        Self { src }
    }
    fn print(&self) {
        println!("{}", self.src);
    }
}
struct Wrapper {
    value : String,
    origin : LifeTimeRequired<'struct>
}
impl Wrapper {
    fn new(value:String) -> Self {
        Self {
            value,
            origin : LifeTimeRequired::new( value.as_str() )
        }
    }
    fn print(&self) {
        println!("Wrapped");
        self.origin.print();
    }
}
fn main() {
    let wrapper = Wrapper::new( "abcd".to_string() );
    wrapper.print();
}
Because the reference value is inner structure value.
I know this raise the error.
And changing the structure can solve the above problem, but the LifeTimeRequired structure is an extern crate and my case is a bit more complicated.
So what I'm curious about is how to solve it while maintaining the above structure(missing keyword?), or if there is a similar RFC going on.
