Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
625e518f
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,发现更多精彩内容 >>
提交
625e518f
编写于
5月 08, 2013
作者:
B
bors
浏览文件
操作
浏览文件
下载
差异文件
auto merge of #6305 : thestinger/rust/rc, r=nikomatsakis
上级
86500fbb
96eb1e50
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
8 addition
and
6 deletion
+8
-6
src/libstd/arc.rs
src/libstd/arc.rs
+1
-0
src/libstd/rc.rs
src/libstd/rc.rs
+7
-6
未找到文件。
src/libstd/arc.rs
浏览文件 @
625e518f
...
...
@@ -252,6 +252,7 @@ struct RWARCInner<T> { lock: RWlock, failed: bool, data: T }
*
* Unlike mutex_arcs, rw_arcs are safe, because they cannot be nested.
*/
#[mutable]
struct
RWARC
<
T
>
{
x
:
SharedMutableState
<
RWARCInner
<
T
>>
,
cant_nest
:
()
...
...
src/libstd/rc.rs
浏览文件 @
625e518f
...
...
@@ -24,9 +24,9 @@ struct RcBox<T> {
}
/// Immutable reference counted pointer type
#[non_owned]
pub
struct
Rc
<
T
>
{
priv
ptr
:
*
mut
RcBox
<
T
>
,
priv
non_owned
:
Option
<@
()
>
// FIXME: #5601: replace with `#[non_owned]`
}
pub
impl
<
'self
,
T
:
Owned
>
Rc
<
T
>
{
...
...
@@ -35,7 +35,7 @@ fn new(value: T) -> Rc<T> {
let
ptr
=
malloc
(
sys
::
size_of
::
<
RcBox
<
T
>>
()
as
size_t
)
as
*
mut
RcBox
<
T
>
;
assert
!
(
!
ptr
::
is_null
(
ptr
));
intrinsics
::
move_val_init
(
&
mut
*
ptr
,
RcBox
{
value
:
value
,
count
:
1
});
Rc
{
ptr
:
ptr
,
non_owned
:
None
}
Rc
{
ptr
:
ptr
}
}
}
...
...
@@ -64,7 +64,7 @@ impl<T: Owned> Clone for Rc<T> {
fn
clone
(
&
self
)
->
Rc
<
T
>
{
unsafe
{
(
*
self
.ptr
)
.count
+=
1
;
Rc
{
ptr
:
self
.ptr
,
non_owned
:
None
}
Rc
{
ptr
:
self
.ptr
}
}
}
}
...
...
@@ -113,9 +113,10 @@ struct RcMutBox<T> {
}
/// Mutable reference counted pointer type
#[non_owned]
#[mutable]
pub
struct
RcMut
<
T
>
{
priv
ptr
:
*
mut
RcMutBox
<
T
>
,
priv
non_owned
:
Option
<@
mut
()
>
// FIXME: #5601: replace with `#[non_owned]` and `#[non_const]`
}
pub
impl
<
'self
,
T
:
Owned
>
RcMut
<
T
>
{
...
...
@@ -124,7 +125,7 @@ fn new(value: T) -> RcMut<T> {
let
ptr
=
malloc
(
sys
::
size_of
::
<
RcMutBox
<
T
>>
()
as
size_t
)
as
*
mut
RcMutBox
<
T
>
;
assert
!
(
!
ptr
::
is_null
(
ptr
));
intrinsics
::
move_val_init
(
&
mut
*
ptr
,
RcMutBox
{
value
:
value
,
count
:
1
,
borrow
:
Nothing
});
RcMut
{
ptr
:
ptr
,
non_owned
:
None
}
RcMut
{
ptr
:
ptr
}
}
}
...
...
@@ -171,7 +172,7 @@ impl<T: Owned> Clone for RcMut<T> {
fn
clone
(
&
self
)
->
RcMut
<
T
>
{
unsafe
{
(
*
self
.ptr
)
.count
+=
1
;
RcMut
{
ptr
:
self
.ptr
,
non_owned
:
None
}
RcMut
{
ptr
:
self
.ptr
}
}
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录