~jordanreger/fold.rs

b1329856aadf3aac300b334ecd65568be7256d02 — Jordan Reger 3 months ago
initial commit
3 files changed, 42 insertions(+), 0 deletions(-)

A .gitignore
A Cargo.toml
A src/lib.rs
A  => .gitignore +2 -0
@@ 1,2 @@
/target
/Cargo.lock

A  => Cargo.toml +8 -0
@@ 1,8 @@
[package]
name = "fold"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]

A  => src/lib.rs +32 -0
@@ 1,32 @@
pub fn fold(str: &'static str, len: Option<usize>) -> String {
    let length = match len {
        Some(length) => length,
        None => 79,
    };

    let mut strarr: Vec<String> = vec![];
    let mut strlen = 0;

    for word in str.split(" ") {
        let wlen = word.len() + 1;

        if strlen + wlen > length {
            strarr.push("\n".to_string());
            strarr.push(word.to_string());
            strarr.push(" ".to_string());
            strlen = wlen;
        } else if strlen + wlen == length {
            strarr.push(word.to_string());
            strarr.push("\n".to_string());
            strarr.push(" ".to_string());
            strlen = wlen;
        } else {
            strarr.push(word.to_string());
            strarr.push(" ".to_string());
            strlen += wlen;
        }
    }

    let res: String = strarr.join("");
    return res;
}