Struct core_extensions::slices::SliceBias
source · pub struct SliceBias {
pub start: BiasDirection,
pub end: BiasDirection,
}
Expand description
What directions SliceExt
::{
slice_lossy
,
slice_lossy_mut
}
are biased towards.
For str
this has the effect of going in those directions if
the start
and/or end
bound is between char boundaries.
For [T]
this has no effect and
it is recommended to use ()
as a parameter instead
(()
is converted to SliceBias::OUT
).
§Example
§String
use core_extensions::SliceExt;
use core_extensions::slices::SliceBias;
let word = "niño";
assert_eq!(
word.char_indices().collect::<Vec<_>>(),
&[(0, 'n'), (1, 'i'), (2, 'ñ'), (4, 'o')]
);
assert_eq!(word.slice_lossy(0..1000, ()), word);
assert_eq!(word.slice_lossy(10..10000, ()), "");
assert_eq!(word.slice_lossy(0..4, ()), "niñ");
assert_eq!(word.slice_lossy(0..3, ()), "niñ");
assert_eq!(word.slice_lossy(0..2, ()), "ni");
assert_eq!(word.slice_lossy(3..3, ()), "ñ");
assert_eq!(word.slice_lossy(3..4, ()), "ñ");
assert_eq!(word.slice_lossy(2..3, ()), "ñ");
assert_eq!(word.slice_lossy(0..1000, SliceBias::OUT), word);
assert_eq!(word.slice_lossy(10..10000, SliceBias::OUT), "");
assert_eq!(word.slice_lossy(0..4, SliceBias::OUT), "niñ");
assert_eq!(word.slice_lossy(0..3, SliceBias::OUT), "niñ");
assert_eq!(word.slice_lossy(0..2, SliceBias::OUT), "ni");
assert_eq!(word.slice_lossy(3..3, SliceBias::OUT), "ñ");
assert_eq!(word.slice_lossy(3..4, SliceBias::OUT), "ñ");
assert_eq!(word.slice_lossy(2..3, SliceBias::OUT), "ñ");
assert_eq!(word.slice_lossy(0..10000, SliceBias::IN), word);
assert_eq!(word.slice_lossy(10..10000, SliceBias::IN), "");
assert_eq!(word.slice_lossy(0..4, SliceBias::IN), "niñ");
assert_eq!(word.slice_lossy(0..3, SliceBias::IN), "ni");
assert_eq!(word.slice_lossy(0..2, SliceBias::IN), "ni");
assert_eq!(word.slice_lossy(3..3, SliceBias::IN), "");
assert_eq!(word.slice_lossy(3..4, SliceBias::IN), "");
assert_eq!(word.slice_lossy(2..3, SliceBias::IN), "");
assert_eq!(word.slice_lossy(0..1000, SliceBias::LEFT), word);
assert_eq!(word.slice_lossy(10..10000, SliceBias::LEFT), "");
assert_eq!(word.slice_lossy(0..4, SliceBias::LEFT), "niñ");
assert_eq!(word.slice_lossy(0..3, SliceBias::LEFT), "ni");
assert_eq!(word.slice_lossy(0..2, SliceBias::LEFT), "ni");
assert_eq!(word.slice_lossy(3..3, SliceBias::LEFT), "");
assert_eq!(word.slice_lossy(3..4, SliceBias::LEFT), "ñ");
assert_eq!(word.slice_lossy(2..3, SliceBias::LEFT), "");
assert_eq!(word.slice_lossy(0..1000, SliceBias::RIGHT), word);
assert_eq!(word.slice_lossy(10..10000, SliceBias::RIGHT), "");
assert_eq!(word.slice_lossy(0..4, SliceBias::RIGHT), "niñ");
assert_eq!(word.slice_lossy(0..3, SliceBias::RIGHT), "niñ");
assert_eq!(word.slice_lossy(0..2, SliceBias::RIGHT), "ni");
assert_eq!(word.slice_lossy(3..3, SliceBias::RIGHT), "");
assert_eq!(word.slice_lossy(3..4, SliceBias::RIGHT), "");
assert_eq!(word.slice_lossy(2..3, SliceBias::RIGHT), "ñ");
Fields§
§start: BiasDirection
bias of the start bound
end: BiasDirection
bias of the end bound
Implementations§
Trait Implementations§
source§impl From<(BiasDirection,)> for SliceBias
impl From<(BiasDirection,)> for SliceBias
source§fn from((dir): (BiasDirection,)) -> Self
fn from((dir): (BiasDirection,)) -> Self
Converts to this type from the input type.
source§impl From<(BiasDirection, BiasDirection)> for SliceBias
impl From<(BiasDirection, BiasDirection)> for SliceBias
source§fn from((start, end): (BiasDirection, BiasDirection)) -> Self
fn from((start, end): (BiasDirection, BiasDirection)) -> Self
Converts to this type from the input type.
source§impl From<BiasDirection> for SliceBias
impl From<BiasDirection> for SliceBias
source§fn from(dir: BiasDirection) -> Self
fn from(dir: BiasDirection) -> Self
Converts to this type from the input type.
impl Copy for SliceBias
impl Eq for SliceBias
impl StructuralPartialEq for SliceBias
Auto Trait Implementations§
impl Freeze for SliceBias
impl RefUnwindSafe for SliceBias
impl Send for SliceBias
impl Sync for SliceBias
impl Unpin for SliceBias
impl UnwindSafe for SliceBias
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
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)source§impl<T> SelfOps for Twhere
T: ?Sized,
impl<T> SelfOps for Twhere
T: ?Sized,
source§fn piped<F, U>(self, f: F) -> U
fn piped<F, U>(self, f: F) -> U
Emulates the pipeline operator, allowing method syntax in more places. Read more
source§fn piped_ref<'a, F, U>(&'a self, f: F) -> Uwhere
F: FnOnce(&'a Self) -> U,
fn piped_ref<'a, F, U>(&'a self, f: F) -> Uwhere
F: FnOnce(&'a Self) -> U,
The same as
piped
except that the function takes &Self
Useful for functions that take &Self
instead of Self
. Read moresource§fn piped_mut<'a, F, U>(&'a mut self, f: F) -> Uwhere
F: FnOnce(&'a mut Self) -> U,
fn piped_mut<'a, F, U>(&'a mut self, f: F) -> Uwhere
F: FnOnce(&'a mut Self) -> U,
The same as
piped
, except that the function takes &mut Self
.
Useful for functions that take &mut Self
instead of Self
.source§fn mutated<F>(self, f: F) -> Self
fn mutated<F>(self, f: F) -> Self
Mutates self using a closure taking self by mutable reference,
passing it along the method chain. Read more
source§fn observe<F>(self, f: F) -> Self
fn observe<F>(self, f: F) -> Self
Observes the value of self, passing it along unmodified.
Useful in long method chains. Read more
source§fn as_ref_<T: ?Sized>(&self) -> &Twhere
Self: AsRef<T>,
fn as_ref_<T: ?Sized>(&self) -> &Twhere
Self: AsRef<T>,
Performs a reference to reference conversion with
AsRef
,
using the turbofish .as_ref_::<_>()
syntax. Read moresource§impl<T> TypeIdentity for Twhere
T: ?Sized,
impl<T> TypeIdentity for Twhere
T: ?Sized,
source§fn as_type_mut(&mut self) -> &mut Self::Type
fn as_type_mut(&mut self) -> &mut Self::Type
Converts a mutable reference back to the original type.
source§fn into_type_box(self: Box<Self>) -> Box<Self::Type>
fn into_type_box(self: Box<Self>) -> Box<Self::Type>
Converts a box back to the original type.
source§fn into_type_arc(this: Arc<Self>) -> Arc<Self::Type>
fn into_type_arc(this: Arc<Self>) -> Arc<Self::Type>
Converts an Arc back to the original type. Read more
source§fn into_type_rc(this: Rc<Self>) -> Rc<Self::Type>
fn into_type_rc(this: Rc<Self>) -> Rc<Self::Type>
Converts an Rc back to the original type. Read more
source§fn from_type_ref(this: &Self::Type) -> &Self
fn from_type_ref(this: &Self::Type) -> &Self
Converts a reference back to the original type.
source§fn from_type_mut(this: &mut Self::Type) -> &mut Self
fn from_type_mut(this: &mut Self::Type) -> &mut Self
Converts a mutable reference back to the original type.
source§fn from_type_box(this: Box<Self::Type>) -> Box<Self>
fn from_type_box(this: Box<Self::Type>) -> Box<Self>
Converts a box back to the original type.