@@ -42,7 +42,8 @@ struct RcBox<T> {
42
42
#[ unsafe_no_drop_flag]
43
43
pub struct Rc < T > {
44
44
priv ptr: * mut RcBox < T > ,
45
- priv marker : marker:: NoSend
45
+ priv nosend : marker:: NoSend ,
46
+ priv noshare : marker:: NoShare
46
47
}
47
48
48
49
impl < T > Rc < T > {
@@ -56,7 +57,8 @@ impl<T> Rc<T> {
56
57
// strong destructor is running, even if the weak
57
58
// pointer is stored inside the strong one.
58
59
ptr : transmute ( ~RcBox { value : value, strong : 1 , weak : 1 } ) ,
59
- marker : marker:: NoSend ,
60
+ nosend : marker:: NoSend ,
61
+ noshare : marker:: NoShare
60
62
}
61
63
}
62
64
}
@@ -67,7 +69,11 @@ impl<T> Rc<T> {
67
69
pub fn downgrade ( & self ) -> Weak < T > {
68
70
unsafe {
69
71
( * self . ptr ) . weak += 1 ;
70
- Weak { ptr : self . ptr , marker : marker:: NoSend }
72
+ Weak {
73
+ ptr : self . ptr ,
74
+ nosend : marker:: NoSend ,
75
+ noshare : marker:: NoShare
76
+ }
71
77
}
72
78
}
73
79
}
@@ -107,7 +113,7 @@ impl<T> Clone for Rc<T> {
107
113
fn clone ( & self ) -> Rc < T > {
108
114
unsafe {
109
115
( * self . ptr ) . strong += 1 ;
110
- Rc { ptr : self . ptr , marker : marker:: NoSend }
116
+ Rc { ptr : self . ptr , nosend : marker:: NoSend , noshare : marker :: NoShare }
111
117
}
112
118
}
113
119
}
@@ -138,7 +144,8 @@ impl<T: Ord> Ord for Rc<T> {
138
144
#[ unsafe_no_drop_flag]
139
145
pub struct Weak < T > {
140
146
priv ptr: * mut RcBox < T > ,
141
- priv marker : marker:: NoSend
147
+ priv nosend : marker:: NoSend ,
148
+ priv noshare : marker:: NoShare
142
149
}
143
150
144
151
impl < T > Weak < T > {
@@ -149,7 +156,7 @@ impl<T> Weak<T> {
149
156
None
150
157
} else {
151
158
( * self . ptr ) . strong += 1 ;
152
- Some ( Rc { ptr : self . ptr , marker : marker:: NoSend } )
159
+ Some ( Rc { ptr : self . ptr , nosend : marker:: NoSend , noshare : marker :: NoShare } )
153
160
}
154
161
}
155
162
}
@@ -176,7 +183,7 @@ impl<T> Clone for Weak<T> {
176
183
fn clone ( & self ) -> Weak < T > {
177
184
unsafe {
178
185
( * self . ptr ) . weak += 1 ;
179
- Weak { ptr : self . ptr , marker : marker:: NoSend }
186
+ Weak { ptr : self . ptr , nosend : marker:: NoSend , noshare : marker :: NoShare }
180
187
}
181
188
}
182
189
}
0 commit comments