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
0
if notSrcRefInner
is noneu64
ifSrcRefInner
is 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
lhs
andrhs
are 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!
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<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