Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
71927615
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,发现更多精彩内容 >>
提交
71927615
编写于
8月 01, 2012
作者:
E
Erick Tryzelaar
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
core: change vec's ref_set to set_ref, move get_ref to unsafe::get.
上级
357920a0
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
26 addition
and
20 deletion
+26
-20
src/libcore/vec.rs
src/libcore/vec.rs
+26
-20
未找到文件。
src/libcore/vec.rs
浏览文件 @
71927615
...
...
@@ -189,7 +189,7 @@ fn reserve_at_least<T>(&v: ~[const T], n: uint) {
let
mut
v
=
~
[];
unchecked
{
reserve
(
v
,
n_elts
);}
let
mut
i
:
uint
=
0u
;
while
i
<
n_elts
unsafe
{
ref_
set
(
v
,
i
,
op
(
i
));
i
+=
1u
;
}
while
i
<
n_elts
unsafe
{
unsafe
::
set
(
v
,
i
,
op
(
i
));
i
+=
1u
;
}
unsafe
{
unsafe
::
set_len
(
v
,
n_elts
);
}
ret
v
;
}
...
...
@@ -204,8 +204,8 @@ fn reserve_at_least<T>(&v: ~[const T], n: uint) {
let
mut
v
=
~
[];
unchecked
{
reserve
(
v
,
n_elts
)}
let
mut
i
:
uint
=
0u
;
unsafe
{
// because
ref_
set is unsafe
while
i
<
n_elts
{
ref_
set
(
v
,
i
,
t
);
i
+=
1u
;
}
unsafe
{
// because
unsafe::
set is unsafe
while
i
<
n_elts
{
unsafe
::
set
(
v
,
i
,
t
);
i
+=
1u
;
}
unsafe
{
unsafe
::
set_len
(
v
,
n_elts
);
}
}
ret
v
;
...
...
@@ -534,28 +534,12 @@ fn push_slow<T>(&v: ~[const T], +initval: T) {
unsafe
{
push_fast
(
v
,
initval
)
}
}
// Unchecked vector indexing
#[inline(always)]
unsafe
fn
get_ref
<
T
:
copy
>
(
v
:
&
[
const
T
],
i
:
uint
)
->
T
{
as_buf
(
v
,
|
p
,
_
len
|
*
ptr
::
offset
(
p
,
i
))
}
#[inline(always)]
unsafe
fn
ref_set
<
T
>
(
v
:
&
[
mut
T
],
i
:
uint
,
+
val
:
T
)
{
let
mut
box
=
some
(
val
);
do
as_mut_buf
(
v
)
|
p
,
_
len
|
{
let
mut
box2
=
none
;
box2
<->
box
;
rusti
::
move_val_init
(
*
ptr
::
mut_offset
(
p
,
i
),
option
::
unwrap
(
box2
));
}
}
#[inline(always)]
fn
push_all
<
T
:
copy
>
(
&
v
:
~
[
const
T
],
rhs
:
&
[
const
T
])
{
reserve
(
v
,
v
.len
()
+
rhs
.len
());
for
uint
::
range
(
0u
,
rhs
.len
())
|
i
|
{
push
(
v
,
unsafe
{
get_ref
(
rhs
,
i
)
})
push
(
v
,
unsafe
{
unsafe
::
get
(
rhs
,
i
)
})
}
}
...
...
@@ -1611,6 +1595,28 @@ unsafe fn form_slice<T,U>(p: *T, len: uint, f: fn(&& &[T]) -> U) -> U {
f
(
*
v
)
}
/**
* Unchecked vector indexing.
*/
#[inline(always)]
unsafe
fn
get
<
T
:
copy
>
(
v
:
&
[
const
T
],
i
:
uint
)
->
T
{
as_buf
(
v
,
|
p
,
_
len
|
*
ptr
::
offset
(
p
,
i
))
}
/**
* Unchecked vector index assignment.
*/
#[inline(always)]
unsafe
fn
set
<
T
>
(
v
:
&
[
mut
T
],
i
:
uint
,
+
val
:
T
)
{
let
mut
box
=
some
(
val
);
do
as_mut_buf
(
v
)
|
p
,
_
len
|
{
let
mut
box2
=
none
;
box2
<->
box
;
rusti
::
move_val_init
(
*
ptr
::
mut_offset
(
p
,
i
),
option
::
unwrap
(
box2
));
}
}
/**
* Copies data from one vector to another.
*
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录