#[ allow( unused_imports ) ]
use strs_tools :: *;
fn main()
{
println!( "=== strs_tools Basic Examples ===" );
basic_string_splitting();
delimiter_preservation();
}
fn basic_string_splitting()
{
println!( "\n--- Basic String Splitting ---" );
#[ cfg( all( feature = "string_split", not( feature = "no_std" ) ) ) ]
{
let src = "abc def ghi";
let iter = string ::split()
.src( src ) .delimeter( " " ) .perform();
let result: Vec< String > = iter
.map( String ::from ) .collect();
println!( "Input: '{src}' -> {result:?}" );
assert_eq!( result, vec![ "abc", " ", "def", " ", "ghi" ] );
let iter = string ::split()
.src( src )
.delimeter( "x" ) .perform();
let result: Vec< String > = iter.map( String ::from ).collect();
println!( "No delimiter found: '{src}' -> {result:?}" );
assert_eq!( result, vec![ "abc def ghi" ] ); }
}
fn delimiter_preservation()
{
println!( "\n--- Delimiter Preservation ---" );
#[ cfg( all( feature = "string_split", not( feature = "no_std" ) ) ) ]
{
let src = "word1 word2 word3";
let iter = string ::split()
.src( src )
.delimeter( " " )
.stripping( false ) .perform();
let result: Vec< String > = iter.map( String ::from ).collect();
println!( "With delimiters preserved: " );
println!( " Input: '{src}' -> {result:?}" );
assert_eq!( result, vec![ "word1", " ", "word2", " ", "word3" ] );
let reconstructed = result.join( "" );
assert_eq!( reconstructed, src );
println!( " Reconstructed: '{reconstructed}'" );
}
}