Replace rustc-serialize with serde

rustc-serialize is deprecated.

Fixes #84.
This commit is contained in:
Torbjörn Lönnemark 2017-06-14 22:20:31 +02:00
parent 310c85f336
commit e33248f043
3 changed files with 16 additions and 8 deletions

View file

@ -18,8 +18,14 @@ encode = ["encoding"]
ssl = ["openssl"] ssl = ["openssl"]
nochanlists = [] nochanlists = []
[dependencies.rustc-serialize] [dependencies.serde]
version = "0.3" version = "1.0.8"
[dependencies.serde_json]
version = "1.0.2"
[dependencies.serde_derive]
version = "1.0.8"
[dependencies.time] [dependencies.time]
version = "0.1" version = "0.1"

View file

@ -1,14 +1,14 @@
//! JSON configuration files using libserialize. //! JSON configuration files using serde
use std::borrow::ToOwned; use std::borrow::ToOwned;
use std::collections::HashMap; use std::collections::HashMap;
use std::fs::File; use std::fs::File;
use std::io::prelude::*; use std::io::prelude::*;
use std::io::{Error, ErrorKind, Result}; use std::io::{Error, ErrorKind, Result};
use std::path::Path; use std::path::Path;
use rustc_serialize::json::{decode, encode}; use serde_json;
/// Configuration data. /// Configuration data.
#[derive(Clone, RustcDecodable, RustcEncodable, Default, PartialEq, Debug)] #[derive(Clone, Deserialize, Serialize, Default, PartialEq, Debug)]
pub struct Config { pub struct Config {
/// A list of the owners of the client by nickname (for bots). /// A list of the owners of the client by nickname (for bots).
pub owners: Option<Vec<String>>, pub owners: Option<Vec<String>>,
@ -66,7 +66,7 @@ impl Config {
let mut file = try!(File::open(path)); let mut file = try!(File::open(path));
let mut data = String::new(); let mut data = String::new();
try!(file.read_to_string(&mut data)); try!(file.read_to_string(&mut data));
decode(&data[..]).map_err(|_| serde_json::from_str(&data[..]).map_err(|_|
Error::new(ErrorKind::InvalidInput, "Failed to decode configuration file.") Error::new(ErrorKind::InvalidInput, "Failed to decode configuration file.")
) )
} }
@ -74,7 +74,7 @@ impl Config {
/// Saves a JSON configuration to the desired path. /// Saves a JSON configuration to the desired path.
pub fn save<P: AsRef<Path>>(&self, path: P) -> Result<()> { pub fn save<P: AsRef<Path>>(&self, path: P) -> Result<()> {
let mut file = try!(File::create(path)); let mut file = try!(File::create(path));
file.write_all(try!(encode(self).map_err(|_| file.write_all(try!(serde_json::to_string(self).map_err(|_|
Error::new(ErrorKind::InvalidInput, "Failed to encode configuration file.") Error::new(ErrorKind::InvalidInput, "Failed to encode configuration file.")
)).as_bytes()) )).as_bytes())
} }

View file

@ -4,7 +4,9 @@
extern crate time; extern crate time;
#[cfg(feature = "encode")] extern crate encoding; #[cfg(feature = "encode")] extern crate encoding;
extern crate rustc_serialize; extern crate serde;
#[macro_use] extern crate serde_derive;
extern crate serde_json;
#[cfg(feature = "ssl")] extern crate openssl; #[cfg(feature = "ssl")] extern crate openssl;
pub mod client; pub mod client;