Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

40,003 questions

51,950 answers

573 users

How to format an array of strings in lines with maxWidth without breaking the words in Rust

1 Answer

0 votes
fn format_lines(words: &[&str], max_width: usize) -> Vec<String> {
    let mut result: Vec<String> = Vec::new();
    let mut current_line = String::new();
    let mut current_length = 0;

    for word in words {
        let word_len = word.len();

        // If adding this word exceeds max_width, push current line
        if current_length + if current_line.is_empty() { 0 } else { 1 } + word_len > max_width {
            if !current_line.is_empty() {
                result.push(current_line.clone());
            }
            current_line.clear();
            current_line.push_str(word);
            current_length = word_len;
        } else {
            if !current_line.is_empty() {
                current_line.push(' ');
                current_length += 1;
            }
            current_line.push_str(word);
            current_length += word_len;
        }
    }

    // Push the last line if not empty
    if !current_line.is_empty() {
        result.push(current_line);
    }

    result
}

fn main() {
    let words = vec![
        "This", "is", "a", "programming", "example", "of", "text", "wrapping",
    ];
    let max_width = 12;

    let lines = format_lines(&words, max_width);

    for line in lines {
        println!("\"{}\"", line);
    }
}




/*
run:

"This is a"
"programming"
"example of"
"text"
"wrapping"

*/

 



answered Dec 2, 2025 by avibootz

Related questions

...