rust/tests/ui/generic-associated-types/issue-90729.rs

37 lines
471 B
Rust

//@ check-pass
use std::marker::PhantomData;
pub trait Type {
type Ref<'a>;
}
pub trait AsBytes {}
impl AsBytes for &str {}
pub struct Utf8;
impl Type for Utf8 {
type Ref<'a> = &'a str;
}
pub struct Bytes<T: Type> {
_marker: PhantomData<T>,
}
impl<T: Type> Bytes<T>
where
for<'a> T::Ref<'a>: AsBytes,
{
pub fn new() -> Self {
Self {
_marker: PhantomData,
}
}
}
fn main() {
let _b = Bytes::<Utf8>::new();
}