From 57c757d770bb206d1bb2be9f3aae4a3b50734f25 Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Sat, 2 May 2020 12:58:22 +0800 Subject: [PATCH] add split_kv --- src/util_str.rs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/util_str.rs diff --git a/src/util_str.rs b/src/util_str.rs new file mode 100644 index 0000000..28ac26e --- /dev/null +++ b/src/util_str.rs @@ -0,0 +1,30 @@ + + +pub fn split_kv(s: &str, split: char) -> (String, String) { + let mut k = String::new(); + let mut v = String::new(); + + let mut is_splited = false; + let cs = s.chars(); + for c in cs { + if is_splited { + v.push(c); + } else if c == split { + is_splited = true; + } else { + k.push(c); + } + } + + (k, v) +} + + +#[test] +fn test_split_kv() { + assert_eq!(("".to_owned(), "".to_owned()), split_kv("", '=')); + assert_eq!(("aaaa".to_owned(), "".to_owned()), split_kv("aaaa", '=')); + assert_eq!(("".to_owned(), "aaaa".to_owned()), split_kv("=aaaa", '=')); + assert_eq!(("aa".to_owned(), "bb".to_owned()), split_kv("aa=bb", '=')); + assert_eq!(("aa".to_owned(), "bb".to_owned()), split_kv("aa:bb", ':')); +}