pub mod a {
pub mod series {
pub mod of {
pub fn nested_modules() {}
}
}
}
fn main() {
a::series::of::nested_modules();
}
위와 같이 완전하게 경로를 지정한 이름을 참조하는 것은 너무 길어질 수 있습니다. Rust에서는 이러한 호출을 더욱 간결하게 만들어주는 키워드를 가지고 있습니다.
use
를 이용한 간결한 가져오기Rust의 use
키워드는 스코프 내에서 호출하고 싶어하는 함수의 모듈을 가져옴으로써 간결한 호출을 사용할 수 있도록 해줍니다.
pub mod a {
pub mod series {
pub mod of {
pub fn nested_modules() {}
}
}
}
use a::series::of;
fn main() {
of::nested_modules();
}
pub mod a {
pub mod series {
pub mod of {
pub fn nested_modules() {}
}
}
}
use a::series::of::nested_modules;
fn main() {
nested_modules();
}
열거형 또한 모듈과 비슷한 일종의 이름공간을 형성하고 있으므로, 열거형의 variant 또한 use
를 이용할 수 있습니다.
enum TrafficLight {
Red,
Yellow,
Green,
}
use TrafficLight::{Red, Yellow};
fn main() {
let red = Red;
let yellow = Yellow;
let green = TrafficLight::Green;
}
*
를 이용한 모두(glob) 가져오기*
는 이름공간 내에 공개된 모든 아이템을 가져옵니다. glob은 편리하지만 많은 아이템을 가져오기 때문에 이름 간 충돌의 원인이 될 수 있습니다.
enum TrafficLight {
Red,
Yellow,
Green,
}
use TrafficLight::*;
fn main() {
let red = Red;
let yellow = Yellow;
let green = Green;
}
super
를 사용하여 부모 모듈에 접근하기#[cfg(test)]
mod tests {
#[test]
fn it_works() {
super::client::connect();
}
}
위의 코드를 아래처럼 변경할 수도 있습니다.
#[cfg(test)]
mod tests {
use super::client;
#[test]
fn it_works() {
client::connect();
}
}