//@ run-pass | |
#![allow(unused_imports)] | |
// Regression test for issue #22246 -- we should be able to deduce | |
// that `&'a B::Owned` implies that `B::Owned : 'a`. | |
//@ pretty-expanded FIXME #23616 | |
#![allow(dead_code)] | |
use std::ops::Deref; | |
pub trait ToOwned: Sized { | |
type Owned: Borrow<Self>; | |
fn to_owned(&self) -> Self::Owned; | |
} | |
pub trait Borrow<Borrowed> { | |
fn borrow(&self) -> &Borrowed; | |
} | |
pub struct Foo<B:ToOwned> { | |
owned: B::Owned | |
} | |
fn foo<B:ToOwned>(this: &Foo<B>) -> &B { | |
this.owned.borrow() | |
} | |
fn main() { } |