From d57b256041ed9f3943fb52da05236a470c2523b0 Mon Sep 17 00:00:00 2001 From: Matthew Maurer Date: Mon, 2 Feb 2015 18:24:21 -0500 Subject: [PATCH 1/2] Update for new rustc * Switch FromStr to Result * Remove "collections" feature from test switch --- src/lib.rs | 59 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 31 insertions(+), 28 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 07271307b..0109c5c24 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -143,7 +143,6 @@ html_root_url = "http://doc.rust-lang.org/log/")] #![warn(missing_docs)] #![feature(core, std_misc)] -#![cfg_attr(test, feature(collections))] use std::ascii::AsciiExt; use std::cmp; @@ -257,13 +256,15 @@ impl Ord for LogLevel { } impl FromStr for LogLevel { - fn from_str(level: &str) -> Option { + type Err = (); + fn from_str(level: &str) -> Result { LOG_LEVEL_NAMES.iter() .position(|&name| name.eq_ignore_ascii_case(level)) .into_iter() .filter(|&idx| idx != 0) .map(|idx| LogLevel::from_usize(idx).unwrap()) .next() + .ok_or(()) } } @@ -364,10 +365,12 @@ impl Ord for LogLevelFilter { } impl FromStr for LogLevelFilter { - fn from_str(level: &str) -> Option { + type Err = (); + fn from_str(level: &str) -> Result { LOG_LEVEL_NAMES.iter() .position(|&name| name.eq_ignore_ascii_case(level)) .map(|p| LogLevelFilter::from_usize(p).unwrap()) + .ok_or(()) } } @@ -610,19 +613,19 @@ mod tests { #[test] fn test_loglevelfilter_from_str() { let tests = [ - ("off", Some(LogLevelFilter::Off)), - ("error", Some(LogLevelFilter::Error)), - ("warn", Some(LogLevelFilter::Warn)), - ("info", Some(LogLevelFilter::Info)), - ("debug", Some(LogLevelFilter::Debug)), - ("trace", Some(LogLevelFilter::Trace)), - ("OFF", Some(LogLevelFilter::Off)), - ("ERROR", Some(LogLevelFilter::Error)), - ("WARN", Some(LogLevelFilter::Warn)), - ("INFO", Some(LogLevelFilter::Info)), - ("DEBUG", Some(LogLevelFilter::Debug)), - ("TRACE", Some(LogLevelFilter::Trace)), - ("asdf", None), + ("off", Ok(LogLevelFilter::Off)), + ("error", Ok(LogLevelFilter::Error)), + ("warn", Ok(LogLevelFilter::Warn)), + ("info", Ok(LogLevelFilter::Info)), + ("debug", Ok(LogLevelFilter::Debug)), + ("trace", Ok(LogLevelFilter::Trace)), + ("OFF", Ok(LogLevelFilter::Off)), + ("ERROR", Ok(LogLevelFilter::Error)), + ("WARN", Ok(LogLevelFilter::Warn)), + ("INFO", Ok(LogLevelFilter::Info)), + ("DEBUG", Ok(LogLevelFilter::Debug)), + ("TRACE", Ok(LogLevelFilter::Trace)), + ("asdf", Err(())), ]; for &(s, ref expected) in tests.iter() { assert_eq!(expected, &s.parse()); @@ -632,18 +635,18 @@ mod tests { #[test] fn test_loglevel_from_str() { let tests = [ - ("OFF", None), - ("error", Some(LogLevel::Error)), - ("warn", Some(LogLevel::Warn)), - ("info", Some(LogLevel::Info)), - ("debug", Some(LogLevel::Debug)), - ("trace", Some(LogLevel::Trace)), - ("ERROR", Some(LogLevel::Error)), - ("WARN", Some(LogLevel::Warn)), - ("INFO", Some(LogLevel::Info)), - ("DEBUG", Some(LogLevel::Debug)), - ("TRACE", Some(LogLevel::Trace)), - ("asdf", None), + ("OFF", Err(())), + ("error", Ok(LogLevel::Error)), + ("warn", Ok(LogLevel::Warn)), + ("info", Ok(LogLevel::Info)), + ("debug", Ok(LogLevel::Debug)), + ("trace", Ok(LogLevel::Trace)), + ("ERROR", Ok(LogLevel::Error)), + ("WARN", Ok(LogLevel::Warn)), + ("INFO", Ok(LogLevel::Info)), + ("DEBUG", Ok(LogLevel::Debug)), + ("TRACE", Ok(LogLevel::Trace)), + ("asdf", Err(())), ]; for &(s, ref expected) in tests.iter() { assert_eq!(expected, &s.parse()); From 63d573cc2c4ddb1558fa2d2a4e29d51a638fd818 Mon Sep 17 00:00:00 2001 From: Matthew Maurer Date: Tue, 3 Feb 2015 10:15:25 -0500 Subject: [PATCH 2/2] Fix FromStr and attributes for env_logger --- env/src/lib.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/env/src/lib.rs b/env/src/lib.rs index 2e4b97eb7..8dd46bb12 100644 --- a/env/src/lib.rs +++ b/env/src/lib.rs @@ -127,7 +127,7 @@ #![doc(html_logo_url = "http://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png", html_favicon_url = "http://www.rust-lang.org/favicon.ico", html_root_url = "http://doc.rust-lang.org/env_logger/")] -#![allow(unstable)] +#![feature(core, os, io)] extern crate regex; extern crate log; @@ -239,14 +239,14 @@ fn parse_logging_spec(spec: &str) -> (Vec, Option) { // if the single argument is a log-level string or number, // treat that as a global fallback match part0.parse() { - Some(num) => (num, None), - None => (LogLevelFilter::max(), Some(part0)), + Ok(num) => (num, None), + Err(_) => (LogLevelFilter::max(), Some(part0)), } } (Some(part0), Some(""), None) => (LogLevelFilter::max(), Some(part0)), (Some(part0), Some(part1), None) => { match part1.parse() { - Some(num) => (num, Some(part0)), + Ok(num) => (num, Some(part0)), _ => { println!("warning: invalid logging spec '{}', \ ignoring it", part1);