pub struct CrateInterfaceItem<T>where
T: GenerateSignature,{ /* private fields */ }Expand description
A single top-level item (fn, struct, etc.), with docs, attributes, and an optional body.
T must implement GenerateSignature so we can produce something like fn name() or
struct Name for display.
Important: We store two ranges:
raw_syntax_range: the full range from RA’s syntax node (this exactly matchesnode.syntax().text_range()).effective_item_range: a trimmed range that excludes leading/trailing normal comments and whitespace (but keeps doc comments). We use this for computing interstitial segments.
Many tests (like test_text_range in your suite) compare raw_syntax_range to the node’s actual
text_range() to confirm no mismatch. Meanwhile, the interstitial logic uses effective_item_range
to ensure normal line/block comments on the edges appear in interstitial segments instead of
being “inside” the item.
Implementations§
Source§impl<T> CrateInterfaceItem<T>where
T: GenerateSignature,
impl<T> CrateInterfaceItem<T>where
T: GenerateSignature,
pub fn set_item(&mut self, val: Arc<T>) -> &mut CrateInterfaceItem<T>
pub fn set_docs(&mut self, val: Option<String>) -> &mut CrateInterfaceItem<T>
pub fn set_attributes( &mut self, val: Option<String>, ) -> &mut CrateInterfaceItem<T>
pub fn set_body_source( &mut self, val: Option<String>, ) -> &mut CrateInterfaceItem<T>
pub fn set_consolidation_options( &mut self, val: Option<ConsolidationOptions>, ) -> &mut CrateInterfaceItem<T>
Sourcepub fn set_file_path(&mut self, val: PathBuf) -> &mut CrateInterfaceItem<T>
pub fn set_file_path(&mut self, val: PathBuf) -> &mut CrateInterfaceItem<T>
The file path from which this item was parsed
Sourcepub fn set_crate_path(&mut self, val: PathBuf) -> &mut CrateInterfaceItem<T>
pub fn set_crate_path(&mut self, val: PathBuf) -> &mut CrateInterfaceItem<T>
The crate root path for the crate that owns this item
Sourcepub fn set_raw_syntax_range(
&mut self,
val: TextRange,
) -> &mut CrateInterfaceItem<T>
pub fn set_raw_syntax_range( &mut self, val: TextRange, ) -> &mut CrateInterfaceItem<T>
The full syntax node range, exactly matching RA’s node range.
Many tests expect this to match node.text_range().
Sourcepub fn set_effective_item_range(
&mut self,
val: TextRange,
) -> &mut CrateInterfaceItem<T>
pub fn set_effective_item_range( &mut self, val: TextRange, ) -> &mut CrateInterfaceItem<T>
A trimmed range that excludes leading/trailing normal line comments, block comments, and whitespace—but keeps doc comments. We use this for interstitial segment calculations, so “normal” comments appear in the leftover text.
Source§impl<T> CrateInterfaceItem<T>where
T: GenerateSignature,
impl<T> CrateInterfaceItem<T>where
T: GenerateSignature,
pub fn item(&self) -> &Arc<T>
pub fn docs(&self) -> &Option<String>
pub fn attributes(&self) -> &Option<String>
pub fn body_source(&self) -> &Option<String>
pub fn consolidation_options(&self) -> &Option<ConsolidationOptions>
Sourcepub fn crate_path(&self) -> &PathBuf
pub fn crate_path(&self) -> &PathBuf
The crate root path for the crate that owns this item
Sourcepub fn raw_syntax_range(&self) -> &TextRange
pub fn raw_syntax_range(&self) -> &TextRange
The full syntax node range, exactly matching RA’s node range.
Many tests expect this to match node.text_range().
Sourcepub fn effective_item_range(&self) -> &TextRange
pub fn effective_item_range(&self) -> &TextRange
A trimmed range that excludes leading/trailing normal line comments, block comments, and whitespace—but keeps doc comments. We use this for interstitial segment calculations, so “normal” comments appear in the leftover text.
Source§impl<T> CrateInterfaceItem<T>where
T: GenerateSignature,
impl<T> CrateInterfaceItem<T>where
T: GenerateSignature,
Sourcepub fn new_with_paths_and_ranges(
item: T,
docs: Option<String>,
attributes: Option<String>,
body_source: Option<String>,
consolidation_options: Option<ConsolidationOptions>,
file_path: PathBuf,
crate_path: PathBuf,
raw_syntax_range: TextRange,
effective_item_range: TextRange,
) -> CrateInterfaceItem<T>
pub fn new_with_paths_and_ranges( item: T, docs: Option<String>, attributes: Option<String>, body_source: Option<String>, consolidation_options: Option<ConsolidationOptions>, file_path: PathBuf, crate_path: PathBuf, raw_syntax_range: TextRange, effective_item_range: TextRange, ) -> CrateInterfaceItem<T>
Creates a new CrateInterfaceItem with both a raw_syntax_range and
an effective_item_range. Usually:
raw_syntax_range= exactly the RA node’stext_range().effective_item_range= maybe the same asraw_syntax_rangeor a “trimmed” version that excludes normal (non-doc) line/block comments from edges.
Source§impl<T> CrateInterfaceItem<T>where
T: GenerateSignature,
impl<T> CrateInterfaceItem<T>where
T: GenerateSignature,
Sourcepub fn text_range(&self) -> &TextRange
pub fn text_range(&self) -> &TextRange
This is the “official” accessor for the RA node range,
used by test_text_range etc. We do not trim comments here.
So if you need the untrimmed range to compare with RA,
call ci.raw_syntax_range().
If you want the trimmed range for interstitial logic,
call ci.effective_item_range().
Sourcepub fn effective_range(&self) -> &TextRange
pub fn effective_range(&self) -> &TextRange
This is the accessor for the “trimmed” range that excludes normal line comments at the edges. Interstitial logic uses this one to unify coverage.
Trait Implementations§
Source§impl<T> Clone for CrateInterfaceItem<T>where
T: Clone + GenerateSignature,
impl<T> Clone for CrateInterfaceItem<T>where
T: Clone + GenerateSignature,
Source§fn clone(&self) -> CrateInterfaceItem<T>
fn clone(&self) -> CrateInterfaceItem<T>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<T> Debug for CrateInterfaceItem<T>where
T: Debug + GenerateSignature,
impl<T> Debug for CrateInterfaceItem<T>where
T: Debug + GenerateSignature,
Source§impl<'de, T> Deserialize<'de> for CrateInterfaceItem<T>where
T: RehydrateFromSignature,
impl<'de, T> Deserialize<'de> for CrateInterfaceItem<T>where
T: RehydrateFromSignature,
Source§fn deserialize<D>(
deserializer: D,
) -> Result<CrateInterfaceItem<T>, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
fn deserialize<D>(
deserializer: D,
) -> Result<CrateInterfaceItem<T>, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
Source§impl<T> Display for CrateInterfaceItem<T>where
T: GenerateSignature + MaybeHasSyntaxKind,
impl<T> Display for CrateInterfaceItem<T>where
T: GenerateSignature + MaybeHasSyntaxKind,
Source§impl<T> Serialize for CrateInterfaceItem<T>where
T: RehydrateFromSignature,
impl<T> Serialize for CrateInterfaceItem<T>where
T: RehydrateFromSignature,
Source§fn serialize<S>(
&self,
serializer: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
fn serialize<S>(
&self,
serializer: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
impl<T> Send for CrateInterfaceItem<T>where
T: GenerateSignature,
impl<T> Sync for CrateInterfaceItem<T>where
T: GenerateSignature,
Auto Trait Implementations§
impl<T> Freeze for CrateInterfaceItem<T>
impl<T> RefUnwindSafe for CrateInterfaceItem<T>where
T: RefUnwindSafe,
impl<T> Unpin for CrateInterfaceItem<T>
impl<T> UnwindSafe for CrateInterfaceItem<T>where
T: RefUnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoCollection<T> for T
impl<T> IntoCollection<T> for T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
Source§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.