pub struct InFile<T> {
pub file_id: HirFileId,
pub value: T,
}
Expand description
InFile<T>
stores a value of T
inside a particular file/syntax tree.
Typical usages are:
InFile<SyntaxNode>
– syntax node in a fileInFile<ast::FnDef>
– ast node in a fileInFile<TextSize>
– offset in a file
Fields§
§file_id: HirFileId
§value: T
Implementations§
source§impl<N> InFile<FileAstId<N>>where
N: AstNode,
impl<N> InFile<FileAstId<N>>where
N: AstNode,
pub fn to_node(&self, db: &dyn AstDatabase) -> N
source§impl<T> InFile<T>
impl<T> InFile<T>
pub fn new(file_id: HirFileId, value: T) -> InFile<T>
pub fn with_value<U>(&self, value: U) -> InFile<U>
pub fn map<F, U>(self, f: F) -> InFile<U>where
F: FnOnce(T) -> U,
pub fn as_ref(&self) -> InFile<&T>
pub fn file_syntax(&self, db: &dyn AstDatabase) -> SyntaxNode<RustLanguage>
source§impl<'a> InFile<&'a SyntaxNode<RustLanguage>>
impl<'a> InFile<&'a SyntaxNode<RustLanguage>>
pub fn ancestors_with_macros(
self,
db: &dyn AstDatabase
) -> impl Iterator<Item = InFile<SyntaxNode<RustLanguage>>> + Clone
sourcepub fn ancestors_with_macros_skip_attr_item(
self,
db: &dyn AstDatabase
) -> impl Iterator<Item = InFile<SyntaxNode<RustLanguage>>>
pub fn ancestors_with_macros_skip_attr_item(
self,
db: &dyn AstDatabase
) -> impl Iterator<Item = InFile<SyntaxNode<RustLanguage>>>
Skips the attributed item that caused the macro invocation we are climbing up
sourcepub fn original_file_range(self, db: &dyn AstDatabase) -> FileRange
pub fn original_file_range(self, db: &dyn AstDatabase) -> FileRange
Falls back to the macro call range if the node cannot be mapped up fully.
For attributes and derives, this will point back to the attribute only.
For the entire item InFile::use original_file_range_full
.
sourcepub fn original_file_range_opt(self, db: &dyn AstDatabase) -> Option<FileRange>
pub fn original_file_range_opt(self, db: &dyn AstDatabase) -> Option<FileRange>
Attempts to map the syntax node back up its macro calls.
pub fn original_syntax_node(
self,
db: &dyn AstDatabase
) -> Option<InFile<SyntaxNode<RustLanguage>>>
source§impl InFile<SyntaxToken<RustLanguage>>
impl InFile<SyntaxToken<RustLanguage>>
pub fn upmap(
self,
db: &dyn AstDatabase
) -> Option<InFile<SyntaxToken<RustLanguage>>>
sourcepub fn original_file_range(self, db: &dyn AstDatabase) -> FileRange
pub fn original_file_range(self, db: &dyn AstDatabase) -> FileRange
Falls back to the macro call range if the node cannot be mapped up fully.
sourcepub fn original_file_range_opt(self, db: &dyn AstDatabase) -> Option<FileRange>
pub fn original_file_range_opt(self, db: &dyn AstDatabase) -> Option<FileRange>
Attempts to map the syntax node back up its macro calls.
pub fn ancestors_with_macros(
self,
db: &dyn AstDatabase
) -> impl Iterator<Item = InFile<SyntaxNode<RustLanguage>>>
source§impl<N> InFile<N>where
N: AstNode,
impl<N> InFile<N>where
N: AstNode,
pub fn descendants<T>(self) -> impl Iterator<Item = InFile<T>>where
T: AstNode,
pub fn original_ast_node(self, db: &dyn AstDatabase) -> Option<InFile<N>>
pub fn syntax(&self) -> InFile<&SyntaxNode<RustLanguage>>
Trait Implementations§
source§impl AsMacroCall for InFile<&MacroCall>
impl AsMacroCall for InFile<&MacroCall>
fn as_call_id_with_errors(
&self,
db: &dyn DefDatabase,
krate: CrateId,
resolver: impl Fn(ModPath) -> Option<MacroDefId>,
error_sink: &mut dyn FnMut(ExpandError)
) -> Result<Result<MacroCallId, ErrorEmitted>, UnresolvedMacro>
fn as_call_id(
&self,
db: &dyn DefDatabase,
krate: CrateId,
resolver: impl Fn(ModPath) -> Option<MacroDefId>
) -> Option<MacroCallId>
source§impl<T> PartialEq<InFile<T>> for InFile<T>where
T: PartialEq<T>,
impl<T> PartialEq<InFile<T>> for InFile<T>where
T: PartialEq<T>,
impl<T> Copy for InFile<T>where
T: Copy,
impl<T> Eq for InFile<T>where
T: Eq,
impl<T> StructuralEq for InFile<T>
impl<T> StructuralPartialEq for InFile<T>
Auto Trait Implementations§
impl<T> RefUnwindSafe for InFile<T>where
T: RefUnwindSafe,
impl<T> Send for InFile<T>where
T: Send,
impl<T> Sync for InFile<T>where
T: Sync,
impl<T> Unpin for InFile<T>where
T: Unpin,
impl<T> UnwindSafe for InFile<T>where
T: UnwindSafe,
Blanket Implementations§
§impl<T> Cast for T
impl<T> Cast for T
source§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key
and return true
if they are equal.