ア゛ーーーー AsRef が lifetime 付きの &'a str を返せない問題!!!
Into<&'a str> とかで……いや厳しいか……
pub struct Foo<S>(S);
impl<S: AsRef<S>> Foo<S> {
fn as_str(&self) -> &str { s.as_ref() }
}
なんだけど、これ Foo<&'a str> からでも &'b str (where Foo: 'b, 'a: 'b) しか返せなくて、そこは &'a str を返してあげたいよねというのが問題の本質
Foo<'a, S> とかにすると、今度は S が所有権付きの型で内部の値についての参照を AsRef で返すような場合にちゃんと lifetime の指定できないよね (何故なら Foo::as_str(&'self self) における 'self が参照の lifetime であるような str を返せるが、これは Foo<'a, S> の 'a の位置に記述できないため)
@lo48576 コンテキスト分かってないですが AsRef<str> + 'a とかでしょうか?