use ::boxen::memory::pool::with_pooled_string;
use std::fmt::Write;
fn main() {
println!("=== StringPool Demonstration ===\n");
println!("Example 1: Basic string pooling");
let result1 = with_pooled_string(|buffer| {
write!(buffer, "Hello, ").unwrap();
write!(buffer, "World!").unwrap();
buffer.as_str().to_string()
});
println!("Result: {result1}\n");
println!("Example 2: Buffer reuse across calls");
for i in 1..=5 {
let result = with_pooled_string(|buffer| {
write!(buffer, "Iteration {i}: ").unwrap();
write!(buffer, "Buffer reused!").unwrap();
buffer.as_str().to_string()
});
println!("{result}");
}
println!();
println!("Example 3: Building complex strings");
let result3 = with_pooled_string(|buffer| {
write!(buffer, "┌").unwrap();
for _ in 0..20 {
write!(buffer, "─").unwrap();
}
writeln!(buffer, "┐").unwrap();
writeln!(buffer, "│ Pooled String Demo │").unwrap();
write!(buffer, "└").unwrap();
for _ in 0..20 {
write!(buffer, "─").unwrap();
}
write!(buffer, "┘").unwrap();
buffer.as_str().to_string()
});
println!("{result3}\n");
println!("=== Benefits ===");
println!("✓ Reduced memory allocations");
println!("✓ Thread-local storage (zero contention)");
println!("✓ Automatic buffer return via RAII");
println!("✓ Transparent to users");
}