Skip to content

Commit eb0cf3a

Browse files
committed
std: Remove struct ctors
1 parent 268850f commit eb0cf3a

File tree

4 files changed

+64
-10
lines changed

4 files changed

+64
-10
lines changed

src/libstd/arc.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,13 +223,18 @@ fn check_poison(is_mutex: bool, failed: bool) {
223223
#[doc(hidden)]
224224
struct PoisonOnFail {
225225
failed: &mut bool;
226-
new(failed: &mut bool) { self.failed = failed; }
227226
drop {
228227
/* assert !*self.failed; -- might be false in case of cond.wait() */
229228
if task::failing() { *self.failed = true; }
230229
}
231230
}
232231
232+
fn PoisonOnFail(failed: &r/mut bool) -> PoisonOnFail/&r {
233+
PoisonOnFail {
234+
failed: failed
235+
}
236+
}
237+
233238
/****************************************************************************
234239
* R/W lock protected ARC
235240
****************************************************************************/

src/libstd/c_vec.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ enum CVec<T> {
4444

4545
struct DtorRes {
4646
let dtor: Option<fn@()>;
47-
new(dtor: Option<fn@()>) { self.dtor = dtor; }
4847
drop {
4948
match self.dtor {
5049
option::None => (),
@@ -53,6 +52,12 @@ struct DtorRes {
5352
}
5453
}
5554

55+
fn DtorRes(dtor: Option<fn@()>) -> DtorRes {
56+
DtorRes {
57+
dtor: dtor
58+
}
59+
}
60+
5661
/*
5762
Section: Introduction forms
5863
*/

src/libstd/net_tcp.rs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,19 @@ extern mod rustrt {
4040
*/
4141
struct TcpSocket {
4242
let socket_data: @TcpSocketData;
43-
new(socket_data: @TcpSocketData) { self.socket_data = socket_data; }
4443
drop {
4544
unsafe {
4645
tear_down_socket_data(self.socket_data)
4746
}
4847
}
4948
}
5049

50+
fn TcpSocket(socket_data: @TcpSocketData) -> TcpSocket {
51+
TcpSocket {
52+
socket_data: socket_data
53+
}
54+
}
55+
5156
/**
5257
* A buffered wrapper for `net::tcp::tcp_socket`
5358
*
@@ -56,7 +61,12 @@ struct TcpSocket {
5661
*/
5762
struct TcpSocketBuf {
5863
let data: @TcpBufferedSocketData;
59-
new(data: @TcpBufferedSocketData) { self.data = data; }
64+
}
65+
66+
fn TcpSocketBuf(data: @TcpBufferedSocketData) -> TcpSocketBuf {
67+
TcpSocketBuf {
68+
data: data
69+
}
6070
}
6171

6272
/// Contains raw, string-based, error information returned from libuv

src/libstd/sync.rs

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -154,16 +154,28 @@ impl &Sem<~[mut Waitqueue]> {
154154
#[doc(hidden)]
155155
struct SemRelease {
156156
sem: &Sem<()>;
157-
new(sem: &Sem<()>) { self.sem = sem; }
158157
drop { self.sem.release(); }
159158
}
159+
160+
fn SemRelease(sem: &r/Sem<()>) -> SemRelease/&r {
161+
SemRelease {
162+
sem: sem
163+
}
164+
}
165+
160166
#[doc(hidden)]
161167
struct SemAndSignalRelease {
162168
sem: &Sem<~[mut Waitqueue]>;
163-
new(sem: &Sem<~[mut Waitqueue]>) { self.sem = sem; }
164169
drop { self.sem.release(); }
165170
}
166171

172+
fn SemAndSignalRelease(sem: &r/Sem<~[mut Waitqueue]>)
173+
-> SemAndSignalRelease/&r {
174+
SemAndSignalRelease {
175+
sem: sem
176+
}
177+
}
178+
167179
/// A mechanism for atomic-unlock-and-deschedule blocking and signalling.
168180
struct Condvar { priv sem: &Sem<~[mut Waitqueue]>; drop { } }
169181

@@ -234,14 +246,21 @@ impl &Condvar {
234246
// bounded in when it gets released, this shouldn't hang forever.
235247
struct SemAndSignalReacquire {
236248
sem: &Sem<~[mut Waitqueue]>;
237-
new(sem: &Sem<~[mut Waitqueue]>) { self.sem = sem; }
238249
drop unsafe {
239250
// Needs to succeed, instead of itself dying.
240251
do task::unkillable {
241252
self.sem.acquire();
242253
}
243254
}
244255
}
256+
257+
fn SemAndSignalReacquire(sem: &r/Sem<~[mut Waitqueue]>)
258+
-> SemAndSignalReacquire/&r {
259+
SemAndSignalReacquire {
260+
sem: sem
261+
}
262+
}
263+
245264
}
246265

247266
/// Wake up a blocked task. Returns false if there was no blocked task.
@@ -567,7 +586,6 @@ impl &RWlock {
567586
#[doc(hidden)]
568587
struct RWlockReleaseRead {
569588
lock: &RWlock;
570-
new(lock: &RWlock) { self.lock = lock; }
571589
drop unsafe {
572590
do task::unkillable {
573591
let mut last_reader = false;
@@ -587,11 +605,16 @@ struct RWlockReleaseRead {
587605
}
588606
}
589607
608+
fn RWlockReleaseRead(lock: &r/RWlock) -> RWlockReleaseRead/&r {
609+
RWlockReleaseRead {
610+
lock: lock
611+
}
612+
}
613+
590614
// FIXME(#3136) should go inside of downgrade()
591615
#[doc(hidden)]
592616
struct RWlockReleaseDowngrade {
593617
lock: &RWlock;
594-
new(lock: &RWlock) { self.lock = lock; }
595618
drop unsafe {
596619
do task::unkillable {
597620
let mut writer_or_last_reader = false;
@@ -618,6 +641,12 @@ struct RWlockReleaseDowngrade {
618641
}
619642
}
620643
644+
fn RWlockReleaseDowngrade(lock: &r/RWlock) -> RWlockReleaseDowngrade/&r {
645+
RWlockReleaseDowngrade {
646+
lock: lock
647+
}
648+
}
649+
621650
/// The "write permission" token used for rwlock.write_downgrade().
622651
struct RWlockWriteMode { /* priv */ lock: &RWlock; drop { } }
623652
/// The "read permission" token used for rwlock.write_downgrade().
@@ -929,9 +958,14 @@ mod tests {
929958
}
930959
struct SendOnFailure {
931960
c: pipes::Chan<()>;
932-
new(+c: pipes::Chan<()>) { self.c = c; }
933961
drop { self.c.send(()); }
934962
}
963+
964+
fn SendOnFailure(+c: pipes::Chan<()>) -> SendOnFailure {
965+
SendOnFailure {
966+
c: c
967+
}
968+
}
935969
}
936970
#[test]
937971
fn test_mutex_cond_signal_on_0() {

0 commit comments

Comments
 (0)