use, super, self
یک ماژول میتواند نمادها را از ماژول دیگری با use وارد محدوده کند. شما معمولاً چیزی شبیه به این را در بالای هر ماژول خواهید دید:
use std::collections::HashSet; use std::process::abort;
مسیر
مسیرها (Paths) به شرح زیر حل میشوند:
-
به عنوان یک path نسبی:
- در واقع
fooیاself::fooبهfooدر ماژول فعلی اشاره دارد، super::foorefers tofooin the parent module.
- در واقع
-
به عنوان یک path مطلق:
crate::fooبهfooدر ریشه جعبه فعلی اشاره دارد,- یک
bar::fooبهfooدرbarcrate اشاره دارد.
-
این“re-export“ نمادها در مسیر کوتاهتری معمول است. برای مثال،
lib.rsسطح بالا در یک crate ممکن است داشته باشدmod storage; pub use storage::disk::DiskStorage; pub use storage::network::NetworkStorage;در دسترس قرار دادن
DiskStorageوNetworkStorageبرای سایر crateها با یک مسیر راحت و کوتاه. -
در بیشتر موارد، فقط مواردی که در یک ماژول ظاهر میشوند باید
useشوند. با اینحال، یک ویژگی (trait) باید در محدوده باشد تا بتوان هر method ای را روی آن ویژگی فراخوانی کرد، حتی اگر نوعی که آن ویژگی را اجرا می کند قبلاً در محدوده باشد. به عنوان مثال، برای استفاده از متدread_to_stringدر نوعی که ویژگیReadرا اجرا میکند، باید ازuse std::io::Readاستفاده کنید. -
عبارت
useمیتواند دارای علامت عام باشد:use std::io::*. از این کار منع شده است زیرا مشخص نیست کدام موارد import میشوند و ممکن است در طول زمان تغییر کنند.