pub struct SrcRef(pub Option<Box<SrcRefInner>>);Expand description
Reference into a source file.
Hint: Source file is not part of SrcRef and must be provided from outside
Tuple Fields§
§0: Option<Box<SrcRefInner>>Implementations§
Source§impl SrcRef
impl SrcRef
Sourcepub fn source_hash(&self) -> u64
pub fn source_hash(&self) -> u64
return source file hash
0if notSrcRefInneris noneu64ifSrcRefInneris some
This is used to map SrcRef -> SourceFile
Sourcepub fn source_slice<'a>(&self, src: &'a str) -> &'a str
pub fn source_slice<'a>(&self, src: &'a str) -> &'a str
Return slice to code base.
Sourcepub fn merge(lhs: &impl SrcReferrer, rhs: &impl SrcReferrer) -> SrcRef
pub fn merge(lhs: &impl SrcReferrer, rhs: &impl SrcReferrer) -> SrcRef
Merge two SrcRef into a single one.
SrcRef(None) is returned if:
- ranges not in correct order (warning in log),
- references are not in the same file (warning in log),
- or
lhsandrhsare bothNone.
Sourcepub fn merge_all<S: SrcReferrer>(referrers: impl Iterator<Item = S>) -> SrcRef
pub fn merge_all<S: SrcReferrer>(referrers: impl Iterator<Item = S>) -> SrcRef
Merge all given source references to one
All given source references must have the same hash otherwise panics!
Sourcepub fn at(&self) -> Option<LineCol>
pub fn at(&self) -> Option<LineCol>
Return line and column in source code or None if not available.
Sourcepub fn is_overlapping(&self, other: &Self) -> bool
pub fn is_overlapping(&self, other: &Self) -> bool
Returns true two source code references overlap.
This means they must have the same non-zero source file hash and its ranges must overlap.
Methods from Deref<Target = Option<Box<SrcRefInner>>>§
1.0.0 · Sourcepub fn as_ref(&self) -> Option<&T>
pub fn as_ref(&self) -> Option<&T>
Converts from &Option<T> to Option<&T>.
§Examples
Calculates the length of an Option<String> as an Option<usize>
without moving the String. The map method takes the self argument by value,
consuming the original, so this technique uses as_ref to first take an Option to a
reference to the value inside the original.
let text: Option<String> = Some("Hello, world!".to_string());
// First, cast `Option<String>` to `Option<&String>` with `as_ref`,
// then consume *that* with `map`, leaving `text` on the stack.
let text_length: Option<usize> = text.as_ref().map(|s| s.len());
println!("still can print text: {text:?}");1.75.0 · Sourcepub fn as_slice(&self) -> &[T]
pub fn as_slice(&self) -> &[T]
Returns a slice of the contained value, if any. If this is None, an
empty slice is returned. This can be useful to have a single type of
iterator over an Option or slice.
Note: Should you have an Option<&T> and wish to get a slice of T,
you can unpack it via opt.map_or(&[], std::slice::from_ref).
§Examples
assert_eq!(
[Some(1234).as_slice(), None.as_slice()],
[&[1234][..], &[][..]],
);The inverse of this function is (discounting
borrowing) [_]::first:
for i in [Some(1234_u16), None] {
assert_eq!(i.as_ref(), i.as_slice().first());
}1.40.0 · Sourcepub fn as_deref(&self) -> Option<&<T as Deref>::Target>where
T: Deref,
pub fn as_deref(&self) -> Option<&<T as Deref>::Target>where
T: Deref,
Converts from Option<T> (or &Option<T>) to Option<&T::Target>.
Leaves the original Option in-place, creating a new one with a reference
to the original one, additionally coercing the contents via Deref.
§Examples
let x: Option<String> = Some("hey".to_owned());
assert_eq!(x.as_deref(), Some("hey"));
let x: Option<String> = None;
assert_eq!(x.as_deref(), None);Trait Implementations§
Source§impl Ord for SrcRef
impl Ord for SrcRef
Source§impl PartialOrd for SrcRef
impl PartialOrd for SrcRef
Source§impl SrcReferrer for SrcRef
We want to be able to use SrcRef directly in functions with impl SrcReferrer argument
impl SrcReferrer for SrcRef
We want to be able to use SrcRef directly in functions with impl SrcReferrer argument
impl Eq for SrcRef
Auto Trait Implementations§
impl Freeze for SrcRef
impl RefUnwindSafe for SrcRef
impl Send for SrcRef
impl Sync for SrcRef
impl Unpin for SrcRef
impl UnwindSafe for SrcRef
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<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.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> Pointable for T
impl<T> Pointable for T
Source§impl<T> ToCompactString for Twhere
T: Display,
impl<T> ToCompactString for Twhere
T: Display,
Source§fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
ToCompactString::to_compact_string() Read moreSource§fn to_compact_string(&self) -> CompactString
fn to_compact_string(&self) -> CompactString
CompactString. Read more