mut-str

Crates.iomut-str
lib.rsmut-str
version1.1.0-alpha.2
sourcesrc
created_at2023-09-26 22:37:35.188681
updated_at2024-07-27 13:33:49.05691
descriptionA toolkit for working with mutable string slices (&mut str).
homepagehttps://github.com/tomBoddaert/mut-str
repositoryhttps://github.com/tomBoddaert/mut-str
max_upload_size
id984116
size133,817
(tomBoddaert)

documentation

README

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.

cargo add mut-str

Example

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 documentation
Examples

mut-str on crates.io
mut-str on GitHub

Features

  • alloc (enabled by default) adds implementations that require the alloc library.
  • std (enabled by default, requires alloc) adds implementations specific to the standard library.
  • nightly (requires rust nightly) see below.

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

Nightly Changes

  • Uses the extern_types feature to fix pointer provenance issues.
  • Implements Error for errors without std being enabled.

License

mut-str is dual-licensed under either the Apache License Version 2.0 or MIT license at your option.

Commit count: 9

cargo fmt