• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // SPDX-License-Identifier: Apache-2.0 OR MIT
2 
3 // Only named projected types can be imported.
4 // See import_unnamed.rs for unnamed projected types.
5 
6 #![allow(unused_imports)]
7 
8 mod pub_ {
9     use pin_project::pin_project;
10 
11     #[pin_project(project = DProj, project_ref = DProjRef)]
12     pub struct Default(());
13 
14     #[pin_project(project = RProj, project_ref = RProjRef, project_replace = RProjOwn)]
15     pub struct Replace(());
16 }
17 pub mod pub_use {
18     #[rustfmt::skip]
19     pub use crate::pub_::DProj; //~ ERROR E0365
20     #[rustfmt::skip]
21     pub use crate::pub_::DProjRef; //~ ERROR E0365
22     #[rustfmt::skip]
23     pub use crate::pub_::RProj; //~ ERROR E0365
24     #[rustfmt::skip]
25     pub use crate::pub_::RProjOwn; //~ ERROR E0365
26     #[rustfmt::skip]
27     pub use crate::pub_::RProjRef; //~ ERROR E0365
28 
29     // Confirm that the visibility of the original type is not changed.
30     pub use crate::pub_::{Default, Replace};
31 }
32 pub mod pub_use2 {
33     // Ok
34     pub(crate) use crate::pub_::{DProj, DProjRef, RProj, RProjOwn, RProjRef};
35 }
36 
37 mod pub_crate {
38     use pin_project::pin_project;
39 
40     #[pin_project(project = DProj, project_ref = DProjRef)]
41     pub(crate) struct Default(());
42 
43     #[pin_project(project = RProj, project_ref = RProjRef, project_replace = RProjOwn)]
44     pub(crate) struct Replace(());
45 }
46 pub mod pub_crate_use {
47     // Ok
48     pub(crate) use crate::pub_crate::{DProj, DProjRef, RProj, RProjOwn, RProjRef};
49 }
50 
main()51 fn main() {}
52