about summary refs log tree commit diff
path: root/src/lib
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2011-07-12 16:36:47 -0700
committerPatrick Walton <pcwalton@mimiga.net>2011-07-12 16:36:47 -0700
commitccd0fffcce5a0f47747bc30b31f8c2c37b3ef746 (patch)
treef93b357e4ce43383c97065f653bf649e3111bd96 /src/lib
parente038e8e52bebe33ca2d949122bf876bbb2d97936 (diff)
downloadrust-ccd0fffcce5a0f47747bc30b31f8c2c37b3ef746.tar.gz
rust-ccd0fffcce5a0f47747bc30b31f8c2c37b3ef746.zip
stdlib: Implement str::split_ivec()
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/str.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/lib/str.rs b/src/lib/str.rs
index 079c502b85f..8591ec6aecb 100644
--- a/src/lib/str.rs
+++ b/src/lib/str.rs
@@ -442,6 +442,21 @@ fn split(str s, u8 sep) -> vec[str] {
     ret v;
 }
 
+fn split_ivec(str s, u8 sep) -> str[] {
+    let str[] v = ~[];
+    let str accum = "";
+    let bool ends_with_sep = false;
+    for (u8 c in s) {
+        if (c == sep) {
+            v += ~[accum];
+            accum = "";
+            ends_with_sep = true;
+        } else { accum += unsafe_from_byte(c); ends_with_sep = false; }
+    }
+    if (str::byte_len(accum) != 0u || ends_with_sep) { v += ~[accum]; }
+    ret v;
+}
+
 fn concat(vec[str] v) -> str {
     let str s = "";
     for (str ss in v) { s += ss; }