Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
0294098d
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,发现更多精彩内容 >>
提交
0294098d
编写于
9月 30, 2015
作者:
S
Simon Mazur
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Implement `size_hint` for `EscapeUnicode`
上级
d2d08721
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
20 addition
and
4 deletion
+20
-4
src/libcore/char.rs
src/libcore/char.rs
+19
-3
src/libcore/fmt/mod.rs
src/libcore/fmt/mod.rs
+1
-1
未找到文件。
src/libcore/char.rs
浏览文件 @
0294098d
...
...
@@ -342,6 +342,22 @@ fn next(&mut self) -> Option<char> {
EscapeUnicodeState
::
Done
=>
None
,
}
}
fn
size_hint
(
&
self
)
->
(
usize
,
Option
<
usize
>
)
{
let
mut
n
=
0
;
while
(
self
.c
as
usize
)
>>
(
4
*
(
n
+
1
))
!=
0
{
n
+=
1
;
}
let
n
=
match
self
.state
{
EscapeUnicodeState
::
Backslash
=>
n
+
5
,
EscapeUnicodeState
::
Type
=>
n
+
4
,
EscapeUnicodeState
::
LeftBrace
=>
n
+
3
,
EscapeUnicodeState
::
Value
(
offset
)
=>
offset
+
2
,
EscapeUnicodeState
::
RightBrace
=>
1
,
EscapeUnicodeState
::
Done
=>
0
,
};
(
n
,
Some
(
n
))
}
}
/// An iterator over the characters that represent a `char`, escaped
...
...
@@ -375,7 +391,7 @@ fn next(&mut self) -> Option<char> {
Some
(
c
)
}
EscapeDefaultState
::
Done
=>
None
,
EscapeDefaultState
::
Unicode
(
ref
mut
iter
)
=>
iter
.next
()
EscapeDefaultState
::
Unicode
(
ref
mut
iter
)
=>
iter
.next
()
,
}
}
...
...
@@ -383,8 +399,8 @@ fn size_hint(&self) -> (usize, Option<usize>) {
match
self
.state
{
EscapeDefaultState
::
Char
(
_
)
=>
(
1
,
Some
(
1
)),
EscapeDefaultState
::
Backslash
(
_
)
=>
(
2
,
Some
(
2
)),
EscapeDefaultState
::
Unicode
(
_
)
=>
(
0
,
Some
(
10
)
),
_
=>
(
0
,
Some
(
0
))
EscapeDefaultState
::
Unicode
(
ref
iter
)
=>
iter
.size_hint
(
),
EscapeDefaultState
::
Done
=>
(
0
,
Some
(
0
)),
}
}
}
src/libcore/fmt/mod.rs
浏览文件 @
0294098d
...
...
@@ -1315,7 +1315,7 @@ fn fmt(&self, f: &mut Formatter) -> Result {
for
(
i
,
c
)
in
self
.char_indices
()
{
let
esc
=
c
.escape_default
();
// If char needs escaping, flush backlog so far and write, else skip
if
esc
.size_hint
()
.0
!=
1
{
if
esc
.size_hint
()
!=
(
1
,
Some
(
1
))
{
try!
(
f
.write_str
(
&
self
[
from
..
i
]));
for
c
in
esc
{
try!
(
f
.write_char
(
c
));
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录