@@ -42,7 +42,8 @@ struct RcBox<T> {
4242#[ unsafe_no_drop_flag]
4343pub struct Rc < T > {
4444 priv ptr: * mut RcBox < T > ,
45- priv marker : marker:: NoSend
45+ priv nosend : marker:: NoSend ,
46+ priv noshare : marker:: NoShare
4647}
4748
4849impl < T > Rc < T > {
@@ -56,7 +57,8 @@ impl<T> Rc<T> {
5657 // strong destructor is running, even if the weak
5758 // pointer is stored inside the strong one.
5859 ptr : transmute ( ~RcBox { value : value, strong : 1 , weak : 1 } ) ,
59- marker : marker:: NoSend ,
60+ nosend : marker:: NoSend ,
61+ noshare : marker:: NoShare
6062 }
6163 }
6264 }
@@ -67,7 +69,11 @@ impl<T> Rc<T> {
6769 pub fn downgrade ( & self ) -> Weak < T > {
6870 unsafe {
6971 ( * 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+ }
7177 }
7278 }
7379}
@@ -107,7 +113,7 @@ impl<T> Clone for Rc<T> {
107113 fn clone ( & self ) -> Rc < T > {
108114 unsafe {
109115 ( * self . ptr ) . strong += 1 ;
110- Rc { ptr : self . ptr , marker : marker:: NoSend }
116+ Rc { ptr : self . ptr , nosend : marker:: NoSend , noshare : marker :: NoShare }
111117 }
112118 }
113119}
@@ -138,7 +144,8 @@ impl<T: Ord> Ord for Rc<T> {
138144#[ unsafe_no_drop_flag]
139145pub struct Weak < T > {
140146 priv ptr: * mut RcBox < T > ,
141- priv marker : marker:: NoSend
147+ priv nosend : marker:: NoSend ,
148+ priv noshare : marker:: NoShare
142149}
143150
144151impl < T > Weak < T > {
@@ -149,7 +156,7 @@ impl<T> Weak<T> {
149156 None
150157 } else {
151158 ( * 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 } )
153160 }
154161 }
155162 }
@@ -176,7 +183,7 @@ impl<T> Clone for Weak<T> {
176183 fn clone ( & self ) -> Weak < T > {
177184 unsafe {
178185 ( * self . ptr ) . weak += 1 ;
179- Weak { ptr : self . ptr , marker : marker:: NoSend }
186+ Weak { ptr : self . ptr , nosend : marker:: NoSend , noshare : marker :: NoShare }
180187 }
181188 }
182189}
0 commit comments