mirror of https://github.com/rust-lang/rust
47 lines
737 B
Rust
47 lines
737 B
Rust
mod b {
|
|
#[derive(Default)]
|
|
pub struct A(u32);
|
|
}
|
|
|
|
impl b::A {
|
|
fn inherent_bypass(&self) {
|
|
let Self(x) = self;
|
|
//~^ ERROR: tuple struct constructor `A` is private
|
|
println!("{x}");
|
|
}
|
|
}
|
|
|
|
pub trait B {
|
|
fn f(&self);
|
|
}
|
|
|
|
impl B for b::A {
|
|
fn f(&self) {
|
|
let Self(a) = self;
|
|
//~^ ERROR: tuple struct constructor `A` is private
|
|
println!("{}", a);
|
|
}
|
|
}
|
|
|
|
pub trait Projector {
|
|
type P;
|
|
}
|
|
|
|
impl Projector for () {
|
|
type P = b::A;
|
|
}
|
|
|
|
pub trait Bypass2 {
|
|
fn f2(&self);
|
|
}
|
|
|
|
impl Bypass2 for <() as Projector>::P {
|
|
fn f2(&self) {
|
|
let Self(a) = self;
|
|
//~^ ERROR: tuple struct constructor `A` is private
|
|
println!("{}", a);
|
|
}
|
|
}
|
|
|
|
fn main() {}
|