String Builder - reusable char buffer

Basic usage: rust use rustring_builder::StringBuilder; fn add_strings_example() { let mut sb = StringBuilder::new(); sb.append("Hello"); sb.append(" "); sb.append("World"); sb.append("!"); let s = sb.to_string(); assert_eq!(s, "Hello World!"); } * The StringBuilder object allows you to add any object (including custom types) as long as they implement the ToString trait: rust use rustring_builder::StringBuilder; fn add_types_example() { let mut sb = StringBuilder::new(); sb.append(1); sb.append(" "); sb.append(2.0); sb.append(" "); sb.append("three"); sb.append(" "); sb.append(true); let s = sb.to_string(); assert_eq!(s, "1 2 three true"); } * StringBuilder doesn't consume the object appended * StringBuilder is not consumed by calling the to_string() method. rust use rustring_builder::StringBuilder; fn append_string_builder_example() { let mut sb = StringBuilder::new(); sb.append("Hello"); sb.append(" "); sb.append("World"); sb.append("!"); let s = sb.to_string(); assert_eq!(s, "Hello World!"); sb.append(" Goodbye!"); let s = sb.to_string(); assert_eq!(s, "Hello World! Goodbye!"); } * StringBuilder can be appended to another StringBuilder, using simple += operator rust use rustring_builder::StringBuilder; fn add_another_string_builder_example() { let mut sb = StringBuilder::new(); sb.append("Hello"); sb.append(" "); sb.append("World"); sb.append("!"); let s = sb.to_string(); assert_eq!(s, "Hello World!"); let mut sb2 = StringBuilder::new(); sb2.append(" Goodbye!"); sb += sb2; let s = sb.to_string(); assert_eq!(s, "Hello World! Goodbye!"); } in this example, sb2 is consumed by the += operator, and can no longer be used.

Consuming methods: