Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
6b4ceff6
R
Rust
项目概览
int
/
Rust
大约 1 年 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
Rust
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
6b4ceff6
编写于
8月 23, 2013
作者:
K
Kevin Ballard
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add new function str.truncate()
上级
c96b1d89
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
42 addition
and
0 deletion
+42
-0
src/libstd/str.rs
src/libstd/str.rs
+42
-0
未找到文件。
src/libstd/str.rs
浏览文件 @
6b4ceff6
...
...
@@ -2107,6 +2107,7 @@ pub trait OwnedStr {
fn
reserve
(
&
mut
self
,
n
:
uint
);
fn
reserve_at_least
(
&
mut
self
,
n
:
uint
);
fn
capacity
(
&
self
)
->
uint
;
fn
truncate
(
&
mut
self
,
len
:
uint
);
/// Work with the mutable byte buffer and length of a slice.
///
...
...
@@ -2264,6 +2265,15 @@ fn capacity(&self) -> uint {
}
}
/// Shorten a string to the specified length (which must be <= the current length)
#[inline]
fn
truncate
(
&
mut
self
,
len
:
uint
)
{
assert
!
(
len
<=
self
.len
());
assert
!
(
self
.is_char_boundary
(
len
));
unsafe
{
raw
::
set_len
(
self
,
len
);
}
}
#[inline]
fn
as_mut_buf
<
T
>
(
&
mut
self
,
f
:
&
fn
(
*
mut
u8
,
uint
)
->
T
)
->
T
{
let
v
:
&
mut
~
[
u8
]
=
unsafe
{
cast
::
transmute
(
self
)
};
...
...
@@ -3482,6 +3492,38 @@ fn sum_len<S: Container>(v: &[S]) -> uint {
assert_eq!
(
5
,
sum_len
([
~
"01"
,
~
"2"
,
~
"34"
,
~
""
]));
assert_eq!
(
5
,
sum_len
([
s
.as_slice
()]));
}
#[test]
fn
test_str_truncate
()
{
let
mut
s
=
~
"12345"
;
s
.truncate
(
5
);
assert_eq!
(
s
.as_slice
(),
"12345"
);
s
.truncate
(
3
);
assert_eq!
(
s
.as_slice
(),
"123"
);
s
.truncate
(
0
);
assert_eq!
(
s
.as_slice
(),
""
);
let
mut
s
=
~
"12345"
;
let
p
=
s
.as_imm_buf
(|
p
,
_
|
p
);
s
.truncate
(
3
);
s
.push_str
(
"6"
);
let
p_
=
s
.as_imm_buf
(|
p
,
_
|
p
);
assert_eq!
(
p_
,
p
);
}
#[test]
#[should_fail]
fn
test_str_truncate_invalid_len
()
{
let
mut
s
=
~
"12345"
;
s
.truncate
(
6
);
}
#[test]
#[should_fail]
fn
test_str_truncate_split_codepoint
()
{
let
mut
s
=
~
"
\u00FC
"
;
// ü
s
.truncate
(
1
);
}
}
#[cfg(test)]
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录