提交 8b398ed8 编写于 作者: D diwic

Fix off-by-one in String::remove

Obviously we can't remove the character one past the end of the String. And we can't today either - we'll just panic at char_at() instead - but if we're going to keep that assertion, we should at least have a correct assertion.
上级 4744472f
......@@ -1029,8 +1029,8 @@ pub fn pop(&mut self) -> Option<char> {
///
/// # Panics
///
/// Panics if `idx` is larger than the `String`'s length, or if it does not
/// lie on a [`char`] boundary.
/// Panics if `idx` is larger than or equal to the `String`'s length,
/// or if it does not lie on a [`char`] boundary.
///
/// [`char`]: ../primitive.char.html
///
......@@ -1049,7 +1049,7 @@ pub fn pop(&mut self) -> Option<char> {
#[stable(feature = "rust1", since = "1.0.0")]
pub fn remove(&mut self, idx: usize) -> char {
let len = self.len();
assert!(idx <= len);
assert!(idx < len);
let ch = self.char_at(idx);
let next = idx + ch.len_utf8();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册