Expand description
ยงmut-str
A toolkit for working with mutable string slices (&mut str
), and immutable ones too!
Pretty much all you can do safely in the standard library with mutable string slices is make them lower or upper case. This package allows for splitting and slicing by character index (rather than byte index), replacing strings and using references to characters.
All functions on string slices are available either at the package root or as methods on the StrExt
trait.
use mut_str::StrExt;
let mut welcome = Box::<str>::from("Hello, World!");
// Split by character index
let (l, r) = welcome.char_split_at_mut(7).unwrap();
assert_eq!(l, "Hello, ");
assert_eq!(r, "World!");
// Replace string slices
l.replace_with("mut-str").unwrap();
assert_eq!(l, "mut-str");
// Replace with padding
let sub = r.replace_with_pad_left_char("๐!", ' ').unwrap();
assert_eq!(sub, "๐!");
assert_eq!(r, " ๐!");
assert_eq!(&*welcome, "mut-str ๐!");
// Get character references
let crown = welcome.get_char_mut(8).unwrap();
assert_eq!(crown, '๐');
// Mutate characters
crown.replace('๐').unwrap();
assert_eq!(crown, '๐');
// Slice by character index
let l = welcome.char_slice_mut(..7).unwrap();
l.replace_with_pad_left_space("๐").unwrap();
assert_eq!(&*welcome, " ๐ ๐!");
ยงLinks
Latest version of mut-str
on crates.io
This version of mut-str
on crates.io
mut-str
on GitHub
ยงFeatures
alloc
(enabled by default) adds implementations that require thealloc
library.std
(enabled by default, requiresalloc
) adds implementations specific to the standard library.
To make this package no-std
compatible, disable the std
feature.
cargo add mut-str --no-default-features
cargo add mut-str --no-default-features --features=alloc
ยงLicense
mut-str
is dual-licensed under either the Apache License Version 2.0 or MIT license at your option.
Modulesยง
Structsยง
Traitsยง
- StrExt
- The
StrExt
trait adds some methods to string types, many of which operate on character indexes and with character references.
Functionsยง
- char_
slice - Slice a
str
in units of UTF-8 characters. - char_
slice_ mut - Slice a mutable
str
in units of UTF-8 characters. - char_
split_ at - Split a
str
in units of UTF-8 characters. - char_
split_ at_ mut - Split a mutable
str
in units of UTF-8 characters. - copy_to
- Copy the
str
to a byte buffer and get the newstr
containing the inserted character. ReturnsNone
ifbuffer
is shorter than the string slice. - get_
char - Get a character reference from a
str
and an index. - get_
char_ mut - Get a mutable character reference from a mutable
str
and an index. - replace
- Replace the
str
with another of the same length. - replace_
with_ pad - Replace the
str
with another of the same length or shorter. The remaining bytes will be filled withpad
. - replace_
with_ pad_ char - Replace the
str
with another of the same length or shorter. The remaining bytes will be filled withpad
, which must be one byte long. - replace_
with_ pad_ left - Replace the
str
with another of the same length or shorter, right aligned. The remaining bytes before the characterstr
will be filled withpad
. - replace_
with_ pad_ left_ char - Replace the
str
with another of the same length or shorter, right aligned. The remaining bytes before thestr
will be filled withchar
, which must be one byte long. - replace_
with_ pad_ left_ space - Replace the
str
with another of the same length or shorter, right aligned. The remaining bytes before thestr
will be filled with spaces. - replace_
with_ pad_ space - Replace the
str
with another of the same length or shorter. The remaining bytes will be filled with spaces.