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;
+}