Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
8d06efb8
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,发现更多精彩内容 >>
提交
8d06efb8
编写于
7月 10, 2013
作者:
B
blake2-ppc
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
dlist: Collect a common pattern into link_with_prev()
上级
7b1c5771
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
15 addition
and
17 deletion
+15
-17
src/libextra/dlist.rs
src/libextra/dlist.rs
+15
-17
未找到文件。
src/libextra/dlist.rs
浏览文件 @
8d06efb8
...
...
@@ -98,6 +98,12 @@ fn resolve(&mut self) -> Option<&mut T> {
}
}
/// Set the .prev field on `next`, then return `Some(next)`
fn
link_with_prev
<
T
>
(
mut
next
:
~
Node
<
T
>
,
prev
:
Rawlink
<
Node
<
T
>>
)
->
Link
<
T
>
{
next
.prev
=
prev
;
Some
(
next
)
}
impl
<
T
>
Container
for
List
<
T
>
{
/// O(1)
fn
is_empty
(
&
self
)
->
bool
{
...
...
@@ -216,20 +222,17 @@ pub fn push_front(&mut self, elt: T) {
///
/// O(1)
pub
fn
pop_front
(
&
mut
self
)
->
Option
<
T
>
{
match
self
.list_head
{
match
util
::
replace
(
&
mut
self
.list_head
,
None
)
{
None
=>
None
,
ref
mut
head
@
Some
(
*
)
=>
{
Some
(
old_head
)
=>
{
self
.length
-=
1
;
match
*
head
.swap_unwrap
()
{
match
*
old_head
{
Node
{
value
:
value
,
next
:
Some
(
next
),
prev
:
_
}
=>
{
let
mut
mnext
=
next
;
mnext
.prev
=
Rawlink
::
none
();
*
head
=
Some
(
mnext
);
self
.list_head
=
link_with_prev
(
next
,
Rawlink
::
none
());
Some
(
value
)
}
Node
{
value
:
value
,
next
:
None
,
prev
:
_
}
=>
{
self
.list_tail
=
Rawlink
::
none
();
*
head
=
None
;
Some
(
value
)
}
}
...
...
@@ -247,9 +250,7 @@ pub fn append(&mut self, other: List<T>) {
match
other
{
List
{
list_head
:
None
,
list_tail
:
_
,
length
:
_
}
=>
return
,
List
{
list_head
:
Some
(
node
),
list_tail
:
o_tail
,
length
:
o_length
}
=>
{
let
mut
lnk_node
=
node
;
lnk_node
.prev
=
self
.list_tail
;
tail
.next
=
Some
(
lnk_node
);
tail
.next
=
link_with_prev
(
node
,
self
.list_tail
);
self
.list_tail
=
o_tail
;
self
.length
+=
o_length
;
}
...
...
@@ -447,13 +448,10 @@ fn insert_before(&mut self, elt: A) {
None
=>
return
self
.list
.push_front
(
elt
),
// at head
Some
(
prev
)
=>
prev
,
};
let
mut
node_own
=
prev_node
.next
.swap_unwrap
();
let
mut
ins_node
=
~
Node
{
value
:
elt
,
next
:
None
,
prev
:
Rawlink
::
some
(
prev_node
)};
node_own
.prev
=
Rawlink
::
some
(
ins_node
);
ins_node
.next
=
Some
(
node_own
);
prev_node
.next
=
Some
(
ins_node
);
let
mut
ins_node
=
~
Node
{
value
:
elt
,
next
:
None
,
prev
:
Rawlink
::
none
()};
let
node_own
=
prev_node
.next
.swap_unwrap
();
ins_node
.next
=
link_with_prev
(
node_own
,
Rawlink
::
some
(
ins_node
));
prev_node
.next
=
link_with_prev
(
ins_node
,
Rawlink
::
some
(
prev_node
));
self
.list.length
+=
1
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录