summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2011-10-06 16:08:44 -0700
committerBrian Anderson <banderson@mozilla.com>2011-10-06 16:08:44 -0700
commit04e89af6dbf0e99c8cec6763a81b41dcf51e52c3 (patch)
treeb2822ab0e72708ffa966863e2b83274c35ec80c0 /src
parent4b58071f96821f43e5124d46b65f4e777992415f (diff)
downloadrust-04e89af6dbf0e99c8cec6763a81b41dcf51e52c3.tar.gz
rust-04e89af6dbf0e99c8cec6763a81b41dcf51e52c3.zip
Add std::str::contains
Diffstat (limited to 'src')
-rw-r--r--src/lib/str.rs7
-rw-r--r--src/test/stdtest/str.rs11
2 files changed, 17 insertions, 1 deletions
diff --git a/src/lib/str.rs b/src/lib/str.rs
index 39e905f8c96..9efb24b6e51 100644
--- a/src/lib/str.rs
+++ b/src/lib/str.rs
@@ -4,7 +4,8 @@ export eq, lteq, hash, is_empty, is_not_empty, is_whitespace, byte_len, index,
        unshift_char, shift_char, pop_char, push_char, is_utf8, from_chars,
        to_chars, char_len, char_at, bytes, is_ascii, shift_byte, pop_byte,
        unsafe_from_byte, unsafe_from_bytes, from_char, char_range_at,
-       str_from_cstr, sbuf, as_buf, push_byte, utf8_char_width, safe_slice;
+       str_from_cstr, sbuf, as_buf, push_byte, utf8_char_width, safe_slice,
+       contains;
 
 native "rust" mod rustrt {
     fn rust_str_push(&s: str, ch: u8);
@@ -254,6 +255,10 @@ fn find(haystack: str, needle: str) -> int {
     ret -1;
 }
 
+fn contains(haystack: str, needle: str) -> bool {
+    0 <= find(haystack, needle)
+}
+
 fn starts_with(haystack: str, needle: str) -> bool {
     let haystack_len: uint = byte_len(haystack);
     let needle_len: uint = byte_len(needle);
diff --git a/src/test/stdtest/str.rs b/src/test/stdtest/str.rs
index 5e79bb6fc20..f1839a0aa91 100644
--- a/src/test/stdtest/str.rs
+++ b/src/test/stdtest/str.rs
@@ -304,3 +304,14 @@ fn vec_str_conversions() {
         i += 1u;
     }
 }
+
+#[test]
+fn contains() {
+    assert str::contains("abcde", "bcd");
+    assert str::contains("abcde", "abcd");
+    assert str::contains("abcde", "bcde");
+    assert str::contains("abcde", "");
+    assert str::contains("", "");
+    assert !str::contains("abcde", "def");
+    assert !str::contains("", "a");
+}