Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
4c3b4227
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,发现更多精彩内容 >>
提交
4c3b4227
编写于
10月 30, 2014
作者:
J
Jorge Aparicio
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
DSTify Box<T> implementation of PartialEq, PartialOrd, Eq, Ord
上级
1e5f311d
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
64 addition
and
0 deletion
+64
-0
src/liballoc/boxed.rs
src/liballoc/boxed.rs
+40
-0
src/test/run-pass/deriving-eq-ord-boxed-slice.rs
src/test/run-pass/deriving-eq-ord-boxed-slice.rs
+24
-0
未找到文件。
src/liballoc/boxed.rs
浏览文件 @
4c3b4227
...
...
@@ -61,12 +61,16 @@ fn clone_from(&mut self, source: &Box<T>) {
}
}
// NOTE(stage0): remove impl after a snapshot
#[cfg(stage0)]
impl
<
T
:
PartialEq
>
PartialEq
for
Box
<
T
>
{
#[inline]
fn
eq
(
&
self
,
other
:
&
Box
<
T
>
)
->
bool
{
*
(
*
self
)
==
*
(
*
other
)
}
#[inline]
fn
ne
(
&
self
,
other
:
&
Box
<
T
>
)
->
bool
{
*
(
*
self
)
!=
*
(
*
other
)
}
}
// NOTE(stage0): remove impl after a snapshot
#[cfg(stage0)]
impl
<
T
:
PartialOrd
>
PartialOrd
for
Box
<
T
>
{
#[inline]
fn
partial_cmp
(
&
self
,
other
:
&
Box
<
T
>
)
->
Option
<
Ordering
>
{
...
...
@@ -81,14 +85,50 @@ fn ge(&self, other: &Box<T>) -> bool { *(*self) >= *(*other) }
#[inline]
fn
gt
(
&
self
,
other
:
&
Box
<
T
>
)
->
bool
{
*
(
*
self
)
>
*
(
*
other
)
}
}
// NOTE(stage0): remove impl after a snapshot
#[cfg(stage0)]
impl
<
T
:
Ord
>
Ord
for
Box
<
T
>
{
#[inline]
fn
cmp
(
&
self
,
other
:
&
Box
<
T
>
)
->
Ordering
{
(
**
self
)
.cmp
(
&**
other
)
}
}
// NOTE(stage0): remove impl after a snapshot
#[cfg(stage0)]
impl
<
T
:
Eq
>
Eq
for
Box
<
T
>
{}
#[cfg(not(stage0))]
// NOTE(stage0): remove cfg after a snapshot
impl
<
Sized
?
T
:
PartialEq
>
PartialEq
for
Box
<
T
>
{
#[inline]
fn
eq
(
&
self
,
other
:
&
Box
<
T
>
)
->
bool
{
PartialEq
::
eq
(
&**
self
,
&**
other
)
}
#[inline]
fn
ne
(
&
self
,
other
:
&
Box
<
T
>
)
->
bool
{
PartialEq
::
ne
(
&**
self
,
&**
other
)
}
}
#[cfg(not(stage0))]
// NOTE(stage0): remove cfg after a snapshot
impl
<
Sized
?
T
:
PartialOrd
>
PartialOrd
for
Box
<
T
>
{
#[inline]
fn
partial_cmp
(
&
self
,
other
:
&
Box
<
T
>
)
->
Option
<
Ordering
>
{
PartialOrd
::
partial_cmp
(
&**
self
,
&**
other
)
}
#[inline]
fn
lt
(
&
self
,
other
:
&
Box
<
T
>
)
->
bool
{
PartialOrd
::
lt
(
&**
self
,
&**
other
)
}
#[inline]
fn
le
(
&
self
,
other
:
&
Box
<
T
>
)
->
bool
{
PartialOrd
::
le
(
&**
self
,
&**
other
)
}
#[inline]
fn
ge
(
&
self
,
other
:
&
Box
<
T
>
)
->
bool
{
PartialOrd
::
ge
(
&**
self
,
&**
other
)
}
#[inline]
fn
gt
(
&
self
,
other
:
&
Box
<
T
>
)
->
bool
{
PartialOrd
::
gt
(
&**
self
,
&**
other
)
}
}
#[cfg(not(stage0))]
// NOTE(stage0): remove cfg after a snapshot
impl
<
Sized
?
T
:
Ord
>
Ord
for
Box
<
T
>
{
#[inline]
fn
cmp
(
&
self
,
other
:
&
Box
<
T
>
)
->
Ordering
{
Ord
::
cmp
(
&**
self
,
&**
other
)
}
}
#[cfg(not(stage0))]
// NOTE(stage0): remove cfg after a snapshot
impl
<
Sized
?
T
:
Eq
>
Eq
for
Box
<
T
>
{}
/// Extension methods for an owning `Any` trait object.
#[unstable
=
"post-DST and coherence changes, this will not be a trait but
\
rather a direct `impl` on `Box<Any>`"
]
...
...
src/test/run-pass/deriving-eq-ord-boxed-slice.rs
0 → 100644
浏览文件 @
4c3b4227
// Copyright 2012 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(PartialEq,
PartialOrd,
Eq,
Ord)]
struct
Foo
(
Box
<
[
u8
]
>
);
pub
fn
main
()
{
let
a
=
Foo
(
box
[
0
,
1
,
2
]);
let
b
=
Foo
(
box
[
0
,
1
,
2
]);
assert
!
(
a
==
b
);
println!
(
"{}"
,
a
!=
b
);
println!
(
"{}"
,
a
<
b
);
println!
(
"{}"
,
a
<=
b
);
println!
(
"{}"
,
a
==
b
);
println!
(
"{}"
,
a
>
b
);
println!
(
"{}"
,
a
>=
b
);
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录