Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
065caf34
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,发现更多精彩内容 >>
提交
065caf34
编写于
10月 31, 2014
作者:
B
bors
浏览文件
操作
浏览文件
下载
差异文件
auto merge of #18431 : japaric/rust/show, r=alexcrichton
r? @aturon cc #16918
上级
221fc1e3
eef7e970
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
46 addition
and
29 deletion
+46
-29
src/liballoc/boxed.rs
src/liballoc/boxed.rs
+2
-1
src/libcore/fmt/mod.rs
src/libcore/fmt/mod.rs
+28
-28
src/test/run-pass/show-boxed-slice.rs
src/test/run-pass/show-boxed-slice.rs
+16
-0
未找到文件。
src/liballoc/boxed.rs
浏览文件 @
065caf34
...
...
@@ -16,6 +16,7 @@
use
core
::
default
::
Default
;
use
core
::
fmt
;
use
core
::
intrinsics
;
use
core
::
kinds
::
Sized
;
use
core
::
mem
;
use
core
::
option
::
Option
;
use
core
::
raw
::
TraitObject
;
...
...
@@ -120,7 +121,7 @@ fn downcast<T: 'static>(self) -> Result<Box<T>, Box<Any+'static>> {
}
}
impl
<
T
:
fmt
::
Show
>
fmt
::
Show
for
Box
<
T
>
{
impl
<
Sized
?
T
:
fmt
::
Show
>
fmt
::
Show
for
Box
<
T
>
{
fn
fmt
(
&
self
,
f
:
&
mut
fmt
::
Formatter
)
->
fmt
::
Result
{
(
**
self
)
.fmt
(
f
)
}
...
...
src/libcore/fmt/mod.rs
浏览文件 @
065caf34
...
...
@@ -16,7 +16,7 @@
use
cell
::{
Cell
,
Ref
,
RefMut
};
use
collections
::
Collection
;
use
iter
::{
Iterator
,
range
};
use
kinds
::
Copy
;
use
kinds
::
{
Copy
,
Sized
}
;
use
mem
;
use
option
::{
Option
,
Some
,
None
};
use
ops
::
Deref
;
...
...
@@ -168,85 +168,85 @@ fn fmt(&self, fmt: &mut Formatter) -> Result {
/// When a format is not otherwise specified, types are formatted by ascribing
/// to this trait. There is not an explicit way of selecting this trait to be
/// used for formatting, it is only if no other format is specified.
pub
trait
Show
{
pub
trait
Show
for
Sized
?
{
/// Formats the value using the given formatter.
fn
fmt
(
&
self
,
&
mut
Formatter
)
->
Result
;
}
/// Format trait for the `b` character
pub
trait
Bool
{
pub
trait
Bool
for
Sized
?
{
/// Formats the value using the given formatter.
fn
fmt
(
&
self
,
&
mut
Formatter
)
->
Result
;
}
/// Format trait for the `c` character
pub
trait
Char
{
pub
trait
Char
for
Sized
?
{
/// Formats the value using the given formatter.
fn
fmt
(
&
self
,
&
mut
Formatter
)
->
Result
;
}
/// Format trait for the `i` and `d` characters
pub
trait
Signed
{
pub
trait
Signed
for
Sized
?
{
/// Formats the value using the given formatter.
fn
fmt
(
&
self
,
&
mut
Formatter
)
->
Result
;
}
/// Format trait for the `u` character
pub
trait
Unsigned
{
pub
trait
Unsigned
for
Sized
?
{
/// Formats the value using the given formatter.
fn
fmt
(
&
self
,
&
mut
Formatter
)
->
Result
;
}
/// Format trait for the `o` character
pub
trait
Octal
{
pub
trait
Octal
for
Sized
?
{
/// Formats the value using the given formatter.
fn
fmt
(
&
self
,
&
mut
Formatter
)
->
Result
;
}
/// Format trait for the `t` character
pub
trait
Binary
{
pub
trait
Binary
for
Sized
?
{
/// Formats the value using the given formatter.
fn
fmt
(
&
self
,
&
mut
Formatter
)
->
Result
;
}
/// Format trait for the `x` character
pub
trait
LowerHex
{
pub
trait
LowerHex
for
Sized
?
{
/// Formats the value using the given formatter.
fn
fmt
(
&
self
,
&
mut
Formatter
)
->
Result
;
}
/// Format trait for the `X` character
pub
trait
UpperHex
{
pub
trait
UpperHex
for
Sized
?
{
/// Formats the value using the given formatter.
fn
fmt
(
&
self
,
&
mut
Formatter
)
->
Result
;
}
/// Format trait for the `s` character
pub
trait
String
{
pub
trait
String
for
Sized
?
{
/// Formats the value using the given formatter.
fn
fmt
(
&
self
,
&
mut
Formatter
)
->
Result
;
}
/// Format trait for the `p` character
pub
trait
Pointer
{
pub
trait
Pointer
for
Sized
?
{
/// Formats the value using the given formatter.
fn
fmt
(
&
self
,
&
mut
Formatter
)
->
Result
;
}
/// Format trait for the `f` character
pub
trait
Float
{
pub
trait
Float
for
Sized
?
{
/// Formats the value using the given formatter.
fn
fmt
(
&
self
,
&
mut
Formatter
)
->
Result
;
}
/// Format trait for the `e` character
pub
trait
LowerExp
{
pub
trait
LowerExp
for
Sized
?
{
/// Formats the value using the given formatter.
fn
fmt
(
&
self
,
&
mut
Formatter
)
->
Result
;
}
/// Format trait for the `E` character
pub
trait
UpperExp
{
pub
trait
UpperExp
for
Sized
?
{
/// Formats the value using the given formatter.
fn
fmt
(
&
self
,
&
mut
Formatter
)
->
Result
;
}
...
...
@@ -257,7 +257,7 @@ pub trait UpperExp {
(
$
(
$name
:
ident
,
$trait_
:
ident
;
)
*
)
=>
{
$
(
#[doc(hidden)]
pub
fn
$name
<
T
:
$trait_
>
(
x
:
&
T
,
fmt
:
&
mut
Formatter
)
->
Result
{
pub
fn
$name
<
Sized
?
T
:
$trait_
>
(
x
:
&
T
,
fmt
:
&
mut
Formatter
)
->
Result
{
x
.fmt
(
fmt
)
}
)
*
...
...
@@ -583,10 +583,10 @@ pub fn argumentuint<'a>(s: &'a uint) -> Argument<'a> {
// Implementations of the core formatting traits
impl
<
'a
,
T
:
Show
>
Show
for
&
'a
T
{
impl
<
'a
,
Sized
?
T
:
Show
>
Show
for
&
'a
T
{
fn
fmt
(
&
self
,
f
:
&
mut
Formatter
)
->
Result
{
secret_show
(
*
self
,
f
)
}
}
impl
<
'a
,
T
:
Show
>
Show
for
&
'a
mut
T
{
impl
<
'a
,
Sized
?
T
:
Show
>
Show
for
&
'a
mut
T
{
fn
fmt
(
&
self
,
f
:
&
mut
Formatter
)
->
Result
{
secret_show
(
&**
self
,
f
)
}
}
impl
<
'a
>
Show
for
&
'a
Show
+
'a
{
...
...
@@ -599,12 +599,18 @@ fn fmt(&self, f: &mut Formatter) -> Result {
}
}
impl
<
'a
,
T
:
str
::
Str
>
String
for
T
{
impl
<
T
:
str
::
Str
>
String
for
T
{
fn
fmt
(
&
self
,
f
:
&
mut
Formatter
)
->
Result
{
f
.pad
(
self
.as_slice
())
}
}
impl
String
for
str
{
fn
fmt
(
&
self
,
f
:
&
mut
Formatter
)
->
Result
{
f
.pad
(
self
)
}
}
impl
Char
for
char
{
fn
fmt
(
&
self
,
f
:
&
mut
Formatter
)
->
Result
{
use
char
::
Char
;
...
...
@@ -708,13 +714,13 @@ fn fmt(&self, fmt: &mut Formatter) -> Result {
// Implementation of Show for various core types
macro_rules!
delegate
((
$ty:ty
to
$other:ident
)
=>
{
impl
<
'a
>
Show
for
$ty
{
impl
Show
for
$ty
{
fn
fmt
(
&
self
,
f
:
&
mut
Formatter
)
->
Result
{
(
concat_idents!
(
secret_
,
$other
)(
self
,
f
))
}
}
})
delegate!
(
&
'a
str
to
string
)
delegate!
(
str
to
string
)
delegate!
(
bool
to
bool
)
delegate!
(
char
to
char
)
delegate!
(
f32
to
float
)
...
...
@@ -761,7 +767,7 @@ impl<'a> Show for &'a any::Any+'a {
fn
fmt
(
&
self
,
f
:
&
mut
Formatter
)
->
Result
{
f
.pad
(
"&Any"
)
}
}
impl
<
'a
,
T
:
Show
>
Show
for
&
'a
[
T
]
{
impl
<
T
:
Show
>
Show
for
[
T
]
{
fn
fmt
(
&
self
,
f
:
&
mut
Formatter
)
->
Result
{
if
f
.flags
&
(
1
<<
(
rt
::
FlagAlternate
as
uint
))
==
0
{
try!
(
write!
(
f
,
"["
));
...
...
@@ -782,12 +788,6 @@ fn fmt(&self, f: &mut Formatter) -> Result {
}
}
impl
<
'a
,
T
:
Show
>
Show
for
&
'a
mut
[
T
]
{
fn
fmt
(
&
self
,
f
:
&
mut
Formatter
)
->
Result
{
secret_show
(
&
self
.as_slice
(),
f
)
}
}
impl
Show
for
()
{
fn
fmt
(
&
self
,
f
:
&
mut
Formatter
)
->
Result
{
f
.pad
(
"()"
)
...
...
src/test/run-pass/show-boxed-slice.rs
0 → 100644
浏览文件 @
065caf34
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
#[deriving(Show)]
struct
Foo
(
Box
<
[
u8
]
>
);
pub
fn
main
()
{
println!
(
"{}"
,
Foo
(
box
[
0
,
1
,
2
]));
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录