Struct hir::Module

source ·
pub struct Module { /* private fields */ }

Implementations§

source§

impl Module

NB: Module is !HasSource, because it has two source nodes at the same time: definition and declaration.

source

pub fn definition_source(self, db: &dyn HirDatabase) -> InFile<ModuleSource>

Returns a node which defines this module. That is, a file or a mod foo {} with items.

source

pub fn definition_source_range(self, db: &dyn HirDatabase) -> InFile<TextRange>

Returns a node which defines this module. That is, a file or a mod foo {} with items.

source

pub fn definition_source_file_id(self, db: &dyn HirDatabase) -> HirFileId

source

pub fn is_mod_rs(self, db: &dyn HirDatabase) -> bool

source

pub fn as_source_file_id(self, db: &dyn HirDatabase) -> Option<EditionedFileId>

source

pub fn is_inline(self, db: &dyn HirDatabase) -> bool

source

pub fn declaration_source(self, db: &dyn HirDatabase) -> Option<InFile<Module>>

Returns a node which declares this module, either a mod foo; or a mod foo {}. None for the crate root.

source

pub fn declaration_source_range( self, db: &dyn HirDatabase, ) -> Option<InFile<TextRange>>

Returns a text range which declares this module, either a mod foo; or a mod foo {}. None for the crate root.

source§

impl Module

source

pub fn name(self, db: &dyn HirDatabase) -> Option<Name>

Name of this module.

source

pub fn krate(self) -> Crate

Returns the crate this module is part of.

source

pub fn crate_root(self, db: &dyn HirDatabase) -> Module

Topmost parent of this module. Every module has a crate_root, but some might be missing krate. This can happen if a module’s file is not included in the module tree of any target in Cargo.toml.

source

pub fn is_crate_root(self) -> bool

source

pub fn children(self, db: &dyn HirDatabase) -> impl Iterator<Item = Module>

Iterates over all child modules.

source

pub fn parent(self, db: &dyn HirDatabase) -> Option<Module>

Finds a parent module.

source

pub fn nearest_non_block_module(self, db: &dyn HirDatabase) -> Module

Finds nearest non-block ancestor Module (self included).

source

pub fn path_to_root(self, db: &dyn HirDatabase) -> Vec<Module>

source

pub fn scope( self, db: &dyn HirDatabase, visible_from: Option<Module>, ) -> Vec<(Name, ScopeDef)>

Returns a ModuleScope: a set of items, visible in this module.

source

pub fn diagnostics( self, db: &dyn HirDatabase, acc: &mut Vec<AnyDiagnostic>, style_lints: bool, )

Fills acc with the module’s diagnostics.

source

pub fn declarations(self, db: &dyn HirDatabase) -> Vec<ModuleDef>

source

pub fn legacy_macros(self, db: &dyn HirDatabase) -> Vec<Macro>

source

pub fn impl_defs(self, db: &dyn HirDatabase) -> Vec<Impl>

source

pub fn find_path( self, db: &dyn DefDatabase, item: impl Into<ItemInNs>, cfg: ImportPathConfig, ) -> Option<ModPath>

Finds a path that can be used to refer to the given item from within this module, if possible.

source

pub fn find_use_path( self, db: &dyn DefDatabase, item: impl Into<ItemInNs>, prefix_kind: PrefixKind, cfg: ImportPathConfig, ) -> Option<ModPath>

Finds a path that can be used to refer to the given item from within this module, if possible. This is used for returning import paths for use-statements.

Trait Implementations§

source§

impl Clone for Module

source§

fn clone(&self) -> Module

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Module

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<Module> for ModuleDef

source§

fn from(it: Module) -> ModuleDef

Converts to this type from the input type.
source§

impl From<Module> for ModuleId

source§

fn from(ty: Module) -> ModuleId

Converts to this type from the input type.
source§

impl From<ModuleId> for Module

source§

fn from(id: ModuleId) -> Module

Converts to this type from the input type.
source§

impl HasAttrs for Module

source§

impl HasContainer for Module

source§

impl HasCrate for Module

source§

fn krate(&self, _: &dyn HirDatabase) -> Crate

source§

impl HasVisibility for Module

source§

fn visibility(&self, db: &dyn HirDatabase) -> Visibility

source§

fn is_visible_from(&self, db: &dyn HirDatabase, module: Module) -> bool

source§

impl Hash for Module

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl HirDisplay for Module

source§

fn hir_fmt(&self, f: &mut HirFormatter<'_>) -> Result<(), HirDisplayError>

§

fn into_displayable<'a>( &'a self, db: &'a dyn HirDatabase, max_size: Option<usize>, limited_size: Option<usize>, omit_verbose_types: bool, display_target: DisplayTarget, closure_style: ClosureStyle, show_container_bounds: bool, ) -> HirDisplayWrapper<'a, Self>
where Self: Sized,

Returns a Displayable type that is human-readable.
§

fn display<'a>( &'a self, db: &'a dyn HirDatabase, edition: Edition, ) -> HirDisplayWrapper<'a, Self>
where Self: Sized,

Returns a Displayable type that is human-readable. Use this for showing types to the user (e.g. diagnostics)
§

fn display_truncated<'a>( &'a self, db: &'a dyn HirDatabase, max_size: Option<usize>, edition: Edition, ) -> HirDisplayWrapper<'a, Self>
where Self: Sized,

Returns a Displayable type that is human-readable and tries to be succinct. Use this for showing types to the user where space is constrained (e.g. doc popups)
§

fn display_limited<'a>( &'a self, db: &'a dyn HirDatabase, limited_size: Option<usize>, edition: Edition, ) -> HirDisplayWrapper<'a, Self>
where Self: Sized,

Returns a Displayable type that is human-readable and tries to limit the number of items inside. Use this for showing definitions which may contain too many items, like trait, struct, enum
§

fn display_source_code<'a>( &'a self, db: &'a dyn HirDatabase, module_id: ModuleId, allow_opaque: bool, ) -> Result<String, DisplaySourceCodeError>

Returns a String representation of self that can be inserted into the given module. Use this when generating code (e.g. assists)
§

fn display_test<'a>( &'a self, db: &'a dyn HirDatabase, ) -> HirDisplayWrapper<'a, Self>
where Self: Sized,

Returns a String representation of self for test purposes
§

fn display_with_container_bounds<'a>( &'a self, db: &'a dyn HirDatabase, show_container_bounds: bool, edition: Edition, ) -> HirDisplayWrapper<'a, Self>
where Self: Sized,

Returns a String representation of self that shows the constraint from the container for functions
source§

impl PartialEq for Module

source§

fn eq(&self, other: &Module) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for Module

source§

impl Eq for Module

source§

impl StructuralPartialEq for Module

Auto Trait Implementations§

§

impl Freeze for Module

§

impl RefUnwindSafe for Module

§

impl Send for Module

§

impl Sync for Module

§

impl Unpin for Module

§

impl UnwindSafe for Module

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Cast for T

§

fn cast<U>(self, interner: <U as HasInterner>::Interner) -> U
where Self: CastTo<U>, U: HasInterner,

Cast a value to type U using CastTo.
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> IntoBox<dyn Any> for T
where T: Any,

§

fn into_box(self) -> Box<dyn Any>

Convert self into the appropriate boxed form.
§

impl<T> IntoBox<dyn Any + Send> for T
where T: Any + Send,

§

fn into_box(self) -> Box<dyn Any + Send>

Convert self into the appropriate boxed form.
§

impl<T> IntoBox<dyn Any + Sync + Send> for T
where T: Any + Send + Sync,

§

fn into_box(self) -> Box<dyn Any + Sync + Send>

Convert self into the appropriate boxed form.
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

impl<T> ToOwned for T
where T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<'a, T> Captures<'a> for T
where T: ?Sized,