mirror of
https://github.com/rust-lang/rust
synced 2024-11-05 20:45:15 +00:00
98 lines
1.8 KiB
Rust
98 lines
1.8 KiB
Rust
// run-pass
|
|
// edition:2018
|
|
|
|
pub const A: usize = 0;
|
|
|
|
pub mod foo {
|
|
pub const B: usize = 1;
|
|
|
|
pub mod bar {
|
|
pub const C: usize = 2;
|
|
|
|
pub enum E {
|
|
V1(usize),
|
|
V2(String),
|
|
}
|
|
|
|
pub fn test() -> String {
|
|
format!("{} {} {}", crate::A, crate::foo::B, C)
|
|
}
|
|
|
|
pub fn test_use() -> String {
|
|
use crate::A;
|
|
use crate::foo::B;
|
|
|
|
format!("{} {} {}", A, B, C)
|
|
}
|
|
|
|
pub fn test_enum() -> String {
|
|
use E::*;
|
|
match E::V1(10) {
|
|
V1(i) => { format!("V1: {}", i) }
|
|
V2(s) => { format!("V2: {}", s) }
|
|
}
|
|
}
|
|
}
|
|
|
|
pub fn test() -> String {
|
|
format!("{} {} {}", crate::A, B, bar::C)
|
|
}
|
|
|
|
pub fn test_use() -> String {
|
|
use crate::A;
|
|
use bar::C;
|
|
|
|
format!("{} {} {}", A, B, C)
|
|
}
|
|
|
|
pub fn test_enum() -> String {
|
|
use bar::E::*;
|
|
match bar::E::V1(10) {
|
|
V1(i) => { format!("V1: {}", i) }
|
|
V2(s) => { format!("V2: {}", s) }
|
|
}
|
|
}
|
|
}
|
|
|
|
pub fn test() -> String {
|
|
format!("{} {} {}", A, foo::B, foo::bar::C)
|
|
}
|
|
|
|
pub fn test_use() -> String {
|
|
use foo::B;
|
|
use foo::bar::C;
|
|
|
|
format!("{} {} {}", A, B, C)
|
|
}
|
|
|
|
pub fn test_enum() -> String {
|
|
use foo::bar::E::*;
|
|
match foo::bar::E::V1(10) {
|
|
V1(i) => { format!("V1: {}", i) }
|
|
V2(s) => { format!("V2: {}", s) }
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
let output = [
|
|
test(),
|
|
foo::test(),
|
|
foo::bar::test(),
|
|
test_use(),
|
|
foo::test_use(),
|
|
foo::bar::test_use(),
|
|
test_enum(),
|
|
foo::test_enum(),
|
|
foo::bar::test_enum(),
|
|
].join("\n");
|
|
assert_eq!(output, "\
|
|
0 1 2
|
|
0 1 2
|
|
0 1 2
|
|
0 1 2
|
|
0 1 2
|
|
0 1 2
|
|
V1: 10
|
|
V1: 10
|
|
V1: 10");
|
|
}
|