pub trait StringExt: StrExt {
// Required methods
fn set(&mut self, s: &str);
fn trim_start_in_place(&mut self);
fn trim_end_in_place(&mut self);
fn trim_in_place(&mut self);
fn fill_start_in_place(&mut self, fill: impl EncodeUtf8, times: usize);
fn fill_end_in_place(&mut self, fill: impl EncodeUtf8, times: usize);
fn center_in_place(&mut self, fill: impl EncodeUtf8, times: usize);
fn enclose_in_place(
&mut self,
fill_start: impl EncodeUtf8,
fill_end: impl EncodeUtf8,
);
fn expand_tabs_in_place(&mut self, tabsize: usize);
fn shift_in_place(
&mut self,
index: usize,
count: usize,
fill: impl EncodeUtf8,
);
fn replace_in_place(&mut self, from: impl EncodeUtf8, to: impl EncodeUtf8);
}Expand description
The StringExt trait extends String with advanced in-place manipulation methods,
enabling modifications without creating new String instances.
This trait provides methods for in-place transformations that are useful
for managing and formatting string content in a more efficient way. These methods
are counterparts to the immutable methods in StrExt, adapted for use with mutable String values.
Each method provides direct, in-place modification, optimizing performance by avoiding additional allocations
for tasks such as padding, trimming, and shifting characters within the String.
§Examples
use string_more::StringExt;
let mut example = String::from(" example ");
example.trim_in_place();
assert_eq!(example, "example");
example.fill_end_in_place("-", 3);
assert_eq!(example, "example---");Required Methods§
Sourcefn set(&mut self, s: &str)
fn set(&mut self, s: &str)
Replaces the contents of the String with the provided string slice s, clearing any previous content.
Sourcefn trim_start_in_place(&mut self)
fn trim_start_in_place(&mut self)
Removes any leading whitespace from the String in-place, modifying the existing instance.
Sourcefn trim_end_in_place(&mut self)
fn trim_end_in_place(&mut self)
Removes any trailing whitespace from the String in-place, modifying the existing instance.
Sourcefn trim_in_place(&mut self)
fn trim_in_place(&mut self)
Removes both leading and trailing whitespace from the String in-place.
Sourcefn fill_start_in_place(&mut self, fill: impl EncodeUtf8, times: usize)
fn fill_start_in_place(&mut self, fill: impl EncodeUtf8, times: usize)
Prepends the specified fill to the String, repeating it times times, modifying the existing instance.
Sourcefn fill_end_in_place(&mut self, fill: impl EncodeUtf8, times: usize)
fn fill_end_in_place(&mut self, fill: impl EncodeUtf8, times: usize)
Appends the specified fill to the String, repeating it times times, modifying the existing instance.
Sourcefn center_in_place(&mut self, fill: impl EncodeUtf8, times: usize)
fn center_in_place(&mut self, fill: impl EncodeUtf8, times: usize)
Centers the String by padding both the beginning and end with fill, repeating times times for balanced padding,
modifying the existing instance.
Sourcefn enclose_in_place(
&mut self,
fill_start: impl EncodeUtf8,
fill_end: impl EncodeUtf8,
)
fn enclose_in_place( &mut self, fill_start: impl EncodeUtf8, fill_end: impl EncodeUtf8, )
Adds fill_start to the beginning and fill_end to the end of the String, modifying the existing instance.
Sourcefn expand_tabs_in_place(&mut self, tabsize: usize)
fn expand_tabs_in_place(&mut self, tabsize: usize)
Expands all tab characters (\t) within the String, replacing each tab with tabsize spaces in-place.
Sourcefn shift_in_place(&mut self, index: usize, count: usize, fill: impl EncodeUtf8)
fn shift_in_place(&mut self, index: usize, count: usize, fill: impl EncodeUtf8)
Shifts the characters starting at the specified index by count positions, filling the resulting gap with fill,
modifying the existing instance.
§Panics
Panics if the index do not lie on a char boundary, or if it is out of bounds.
Sourcefn replace_in_place(&mut self, from: impl EncodeUtf8, to: impl EncodeUtf8)
fn replace_in_place(&mut self, from: impl EncodeUtf8, to: impl EncodeUtf8)
Replaces all occurrences of a specified substring with another substring in the String, modifying it in place.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.