2323
2424use unstable:: intrinsics;
2525use cast;
26+ use std:: kinds:: marker;
2627use option:: { Option , Some , None } ;
2728use ops:: Drop ;
28- use util:: NonCopyable ;
2929
3030/**
3131 * A simple atomic flag, that can be set and cleared. The most basic atomic type.
3232 */
3333pub struct AtomicFlag {
3434 priv v: int ,
35- priv nocopy : NonCopyable
35+ priv nopod : marker :: NoPod
3636}
3737
3838/**
3939 * An atomic boolean type.
4040 */
4141pub struct AtomicBool {
4242 priv v: uint ,
43- priv nocopy : NonCopyable
43+ priv nopod : marker :: NoPod
4444}
4545
4646/**
4747 * A signed atomic integer type, supporting basic atomic arithmetic operations
4848 */
4949pub struct AtomicInt {
5050 priv v: int ,
51- priv nocopy : NonCopyable
51+ priv nopod : marker :: NoPod
5252}
5353
5454/**
5555 * An unsigned atomic integer type, supporting basic atomic arithmetic operations
5656 */
5757pub struct AtomicUint {
5858 priv v: uint ,
59- priv nocopy : NonCopyable
59+ priv nopod : marker :: NoPod
6060}
6161
6262/**
@@ -66,7 +66,7 @@ pub struct AtomicUint {
6666#[ cfg( not( stage0) ) ]
6767pub struct AtomicU64 {
6868 priv v: u64 ,
69- priv nocopy : NonCopyable
69+ priv nopod : marker :: NoPod
7070}
7171
7272/**
@@ -75,12 +75,12 @@ pub struct AtomicU64 {
7575#[ cfg( not( stage0) ) ]
7676pub struct AtomicPtr < T > {
7777 priv p: uint ,
78- priv nocopy : NonCopyable
78+ priv nopod : marker :: NoPod
7979}
8080#[ cfg( stage0) ]
8181pub struct AtomicPtr < T > {
8282 priv p: * mut T ,
83- priv nocopy : NonCopyable
83+ priv nopod : marker :: NoPod
8484}
8585
8686/**
@@ -105,17 +105,17 @@ pub enum Ordering {
105105 SeqCst
106106}
107107
108- pub static INIT_ATOMIC_FLAG : AtomicFlag = AtomicFlag { v : 0 , nocopy : NonCopyable } ;
109- pub static INIT_ATOMIC_BOOL : AtomicBool = AtomicBool { v : 0 , nocopy : NonCopyable } ;
110- pub static INIT_ATOMIC_INT : AtomicInt = AtomicInt { v : 0 , nocopy : NonCopyable } ;
111- pub static INIT_ATOMIC_UINT : AtomicUint = AtomicUint { v : 0 , nocopy : NonCopyable } ;
108+ pub static INIT_ATOMIC_FLAG : AtomicFlag = AtomicFlag { v : 0 , nopod : marker :: NoPod } ;
109+ pub static INIT_ATOMIC_BOOL : AtomicBool = AtomicBool { v : 0 , nopod : marker :: NoPod } ;
110+ pub static INIT_ATOMIC_INT : AtomicInt = AtomicInt { v : 0 , nopod : marker :: NoPod } ;
111+ pub static INIT_ATOMIC_UINT : AtomicUint = AtomicUint { v : 0 , nopod : marker :: NoPod } ;
112112#[ cfg( not( stage0) ) ]
113- pub static INIT_ATOMIC_U64 : AtomicU64 = AtomicU64 { v : 0 , nocopy : NonCopyable } ;
113+ pub static INIT_ATOMIC_U64 : AtomicU64 = AtomicU64 { v : 0 , nopod : marker :: NoPod } ;
114114
115115impl AtomicFlag {
116116
117117 pub fn new ( ) -> AtomicFlag {
118- AtomicFlag { v : 0 , nocopy : NonCopyable }
118+ AtomicFlag { v : 0 , nopod : marker :: NoPod }
119119 }
120120
121121 /**
@@ -138,7 +138,7 @@ impl AtomicFlag {
138138
139139impl AtomicBool {
140140 pub fn new ( v : bool ) -> AtomicBool {
141- AtomicBool { v : if v { 1 } else { 0 } , nocopy : NonCopyable }
141+ AtomicBool { v : if v { 1 } else { 0 } , nopod : marker :: NoPod }
142142 }
143143
144144 #[ inline]
@@ -203,7 +203,7 @@ impl AtomicBool {
203203
204204impl AtomicInt {
205205 pub fn new ( v : int ) -> AtomicInt {
206- AtomicInt { v : v, nocopy : NonCopyable }
206+ AtomicInt { v : v, nopod : marker :: NoPod }
207207 }
208208
209209 #[ inline]
@@ -242,7 +242,7 @@ impl AtomicInt {
242242#[ cfg( not( stage0) ) ]
243243impl AtomicU64 {
244244 pub fn new ( v : u64 ) -> AtomicU64 {
245- AtomicU64 { v : v, nocopy : NonCopyable }
245+ AtomicU64 { v : v, nopod : marker :: NoPod }
246246 }
247247
248248 #[ inline]
@@ -278,7 +278,7 @@ impl AtomicU64 {
278278
279279impl AtomicUint {
280280 pub fn new ( v : uint ) -> AtomicUint {
281- AtomicUint { v : v, nocopy : NonCopyable }
281+ AtomicUint { v : v, nopod : marker :: NoPod }
282282 }
283283
284284 #[ inline]
@@ -317,11 +317,11 @@ impl AtomicUint {
317317impl < T > AtomicPtr < T > {
318318 #[ cfg( stage0) ]
319319 pub fn new ( p : * mut T ) -> AtomicPtr < T > {
320- AtomicPtr { p : p, nocopy : NonCopyable }
320+ AtomicPtr { p : p, nopod : marker :: NoPod }
321321 }
322322 #[ cfg( not( stage0) ) ]
323323 pub fn new ( p : * mut T ) -> AtomicPtr < T > {
324- AtomicPtr { p : p as uint , nocopy : NonCopyable }
324+ AtomicPtr { p : p as uint , nopod : marker :: NoPod }
325325 }
326326
327327 #[ inline]
0 commit comments