equal
deleted
inserted
replaced
140 if let Some(pos) = find_slice_in_slice(self, separator) { |
140 if let Some(pos) = find_slice_in_slice(self, separator) { |
141 Some((&self[..pos], &self[pos + separator.len()..])) |
141 Some((&self[..pos], &self[pos + separator.len()..])) |
142 } else { |
142 } else { |
143 None |
143 None |
144 } |
144 } |
145 } |
|
146 } |
|
147 |
|
148 pub trait StrExt { |
|
149 // TODO: Use https://doc.rust-lang.org/nightly/std/primitive.str.html#method.split_once |
|
150 // once we require Rust 1.52+ |
|
151 fn split_2(&self, separator: char) -> Option<(&str, &str)>; |
|
152 } |
|
153 |
|
154 impl StrExt for str { |
|
155 fn split_2(&self, separator: char) -> Option<(&str, &str)> { |
|
156 let mut iter = self.splitn(2, separator); |
|
157 let a = iter.next()?; |
|
158 let b = iter.next()?; |
|
159 Some((a, b)) |
|
160 } |
145 } |
161 } |
146 } |
162 |
147 |
163 pub trait Escaped { |
148 pub trait Escaped { |
164 /// Return bytes escaped for display to the user |
149 /// Return bytes escaped for display to the user |