Skip to content

Commit 830ac37

Browse files
author
blake2-ppc
committed
std::logging: Use a more specific enum than Either
1 parent b4eff79 commit 830ac37

File tree

3 files changed

+18
-18
lines changed

3 files changed

+18
-18
lines changed

src/libstd/logging.rs

+3-4
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,8 @@
1212
1313
use option::*;
1414
use os;
15-
use either::*;
1615
use rt;
17-
use rt::logging::{Logger, StdErrLogger};
16+
use rt::logging::{Logger, StdErrLogger, OwnedString};
1817

1918
/// Turns on logging to stdout globally
2019
pub fn console_on() {
@@ -57,12 +56,12 @@ fn newsched_log_str(msg: ~str) {
5756
match optional_task {
5857
Some(local) => {
5958
// Use the available logger
60-
(*local).logger.log(Left(msg));
59+
(*local).logger.log(OwnedString(msg));
6160
}
6261
None => {
6362
// There is no logger anywhere, just write to stderr
6463
let mut logger = StdErrLogger;
65-
logger.log(Left(msg));
64+
logger.log(OwnedString(msg));
6665
}
6766
}
6867
}

src/libstd/rt/logging.rs

+13-11
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
88
// option. This file may not be copied, modified, or distributed
99
// except according to those terms.
10-
use either::*;
1110
use libc::{uintptr_t, exit, STDERR_FILENO};
1211
use option::{Some, None, Option};
1312
use rt::util::dumb_println;
@@ -168,29 +167,32 @@ fn update_log_settings(crate_map: *u8, settings: ~str) {
168167
}
169168
}
170169

170+
/// Represent a string with `Send` bound.
171+
pub enum SendableString {
172+
OwnedString(~str),
173+
StaticString(&'static str)
174+
}
175+
171176
pub trait Logger {
172-
fn log(&mut self, msg: Either<~str, &'static str>);
177+
fn log(&mut self, msg: SendableString);
173178
}
174179

175180
pub struct StdErrLogger;
176181

177182
impl Logger for StdErrLogger {
178-
fn log(&mut self, msg: Either<~str, &'static str>) {
183+
fn log(&mut self, msg: SendableString) {
179184
use io::{Writer, WriterUtil};
180185

181186
if !should_log_console() {
182187
return;
183188
}
184189

185190
let s: &str = match msg {
186-
Left(ref s) => {
187-
let s: &str = *s;
188-
s
189-
}
190-
Right(ref s) => {
191-
let s: &str = *s;
192-
s
193-
}
191+
OwnedString(ref s) => {
192+
let slc: &str = *s;
193+
slc
194+
},
195+
StaticString(s) => s,
194196
};
195197

196198
// Truncate the string

src/libstd/sys.rs

+2-3
Original file line numberDiff line numberDiff line change
@@ -136,12 +136,11 @@ impl FailWithCause for &'static str {
136136

137137
// FIXME #4427: Temporary until rt::rt_fail_ goes away
138138
pub fn begin_unwind_(msg: *c_char, file: *c_char, line: size_t) -> ! {
139-
use either::Left;
140139
use option::{Some, None};
141140
use rt::in_green_task_context;
142141
use rt::task::Task;
143142
use rt::local::Local;
144-
use rt::logging::Logger;
143+
use rt::logging::{Logger, OwnedString};
145144
use str::Str;
146145

147146
unsafe {
@@ -164,7 +163,7 @@ pub fn begin_unwind_(msg: *c_char, file: *c_char, line: size_t) -> ! {
164163
msg, file, line as int)
165164
};
166165

167-
task.logger.log(Left(msg));
166+
task.logger.log(OwnedString(msg));
168167
}
169168
} else {
170169
rterrln!("failed in non-task context at '%s', %s:%i",

0 commit comments

Comments
 (0)