How to work with strings and graphemes similar to SQL? How to avoid crate proliferation?

My concrete question is:
How can I do similar things in Rust (on UTF8-Rust-Strings)? Without having to worry about how many bytes a grapheme (in my understanding this is the equivalent to a character) occupies?

SUBSTRING ( expression , start , length ) 
LEFT ( character_expression , integer_expression ) 
LEN ( string_expression )
RIGHT ( character_expression , integer_expression ) 
STUFF ( character_expression , start , length , replaceWith_expression )