diff --git a/chain/src/store.rs b/chain/src/store.rs index 6cb1c12f7..bc87b311c 100644 --- a/chain/src/store.rs +++ b/chain/src/store.rs @@ -20,12 +20,12 @@ use lru_cache::LruCache; use util::secp::pedersen::Commitment; -use types::*; -use core::core::hash::{Hash, Hashed}; -use core::core::{Block, BlockHeader}; use core::consensus::TargetError; +use core::core::hash::{Hash, Hashed}; use core::core::target::Difficulty; +use core::core::{Block, BlockHeader}; use grin_store::{self, option_to_not_found, to_key, Error, u64_to_key}; +use types::*; const STORE_SUBPATH: &'static str = "chain"; @@ -63,7 +63,7 @@ impl ChainStore for ChainKVStore { } fn head_header(&self) -> Result { - self.get_block_header(&try!(self.head()).last_block_h) + self.get_block_header(&self.head()?.last_block_h) } fn save_head(&self, t: &Tip) -> Result<(), Error> { diff --git a/chain/src/types.rs b/chain/src/types.rs index 6fc862bed..95e274719 100644 --- a/chain/src/types.rs +++ b/chain/src/types.rs @@ -228,19 +228,19 @@ impl Tip { /// Serialization of a tip, required to save to datastore. impl ser::Writeable for Tip { fn write(&self, writer: &mut W) -> Result<(), ser::Error> { - try!(writer.write_u64(self.height)); - try!(writer.write_fixed_bytes(&self.last_block_h)); - try!(writer.write_fixed_bytes(&self.prev_block_h)); + writer.write_u64(self.height)?; + writer.write_fixed_bytes(&self.last_block_h)?; + writer.write_fixed_bytes(&self.prev_block_h)?; self.total_difficulty.write(writer) } } impl ser::Readable for Tip { fn read(reader: &mut ser::Reader) -> Result { - let height = try!(reader.read_u64()); - let last = try!(Hash::read(reader)); - let prev = try!(Hash::read(reader)); - let diff = try!(Difficulty::read(reader)); + let height = reader.read_u64()?; + let last = Hash::read(reader)?; + let prev = Hash::read(reader)?; + let diff = Difficulty::read(reader)?; Ok(Tip { height: height, last_block_h: last, diff --git a/core/src/core/pmmr.rs b/core/src/core/pmmr.rs index c85beea41..95b0419a1 100644 --- a/core/src/core/pmmr.rs +++ b/core/src/core/pmmr.rs @@ -1330,9 +1330,9 @@ mod test { impl Writeable for TestElem { fn write(&self, writer: &mut W) -> Result<(), Error> { - try!(writer.write_u32(self.0[0])); - try!(writer.write_u32(self.0[1])); - try!(writer.write_u32(self.0[2])); + writer.write_u32(self.0[0])?; + writer.write_u32(self.0[1])?; + writer.write_u32(self.0[2])?; writer.write_u32(self.0[3]) } } diff --git a/core/src/macros.rs b/core/src/macros.rs index 0bc1a84cb..4a5fb5dd1 100644 --- a/core/src/macros.rs +++ b/core/src/macros.rs @@ -19,33 +19,27 @@ /// around every map call. #[macro_export] macro_rules! map_vec { - ($thing:expr, $mapfn:expr ) => { - $thing.iter() - .map($mapfn) - .collect::>(); - } + ($thing:expr, $mapfn:expr) => { + $thing.iter().map($mapfn).collect::>(); + }; } /// Same as map_vec when the map closure returns Results. Makes sure the /// results are "pushed up" and wraps with a try. #[macro_export] macro_rules! try_map_vec { - ($thing:expr, $mapfn:expr ) => { - try!($thing.iter() - .map($mapfn) - .collect::, _>>()); - } + ($thing:expr, $mapfn:expr) => { + $thing.iter().map($mapfn).collect::, _>>()?; + }; } /// Eliminates some of the verbosity in having iter and collect /// around every filter_map call. #[macro_export] macro_rules! filter_map_vec { - ($thing:expr, $mapfn:expr ) => { - $thing.iter() - .filter_map($mapfn) - .collect::>(); - } + ($thing:expr, $mapfn:expr) => { + $thing.iter().filter_map($mapfn).collect::>(); + }; } /// Allows the conversion of an expression that doesn't return anything to one @@ -55,12 +49,10 @@ macro_rules! filter_map_vec { /// println!(tee!(foo, foo.append(vec![3,4,5])) #[macro_export] macro_rules! tee { - ($thing:ident, $thing_expr:expr) => { - { - $thing_expr; - $thing - } - } + ($thing:ident, $thing_expr:expr) => {{ + $thing_expr; + $thing + }}; } /// Eliminate some of the boilerplate of deserialization (package ser) by @@ -70,8 +62,8 @@ macro_rules! tee { /// let bar = try!(reader.read_u32()); /// let fixed_byte_var = try!(reader.read_fixed_bytes(64)); /// Example after: -/// let (foo, bar, fixed_byte_var) = ser_multiread!(reader, read_u64, read_u32, -/// read_fixed_bytes(64)); +/// let (foo, bar, fixed_byte_var) = ser_multiread!(reader, read_u64, +/// read_u32, read_fixed_bytes(64)); #[macro_export] macro_rules! ser_multiread { ($rdr:ident, $($read_call:ident $(($val:expr)),*),*) => { @@ -96,7 +88,7 @@ macro_rules! ser_multiwrite { // don't seem to be able to define an Ord implementation for Hash due to // Ord being defined on all pointers, resorting to a macro instead macro_rules! hashable_ord { - ($hashable: ident) => { + ($hashable:ident) => { impl Ord for $hashable { fn cmp(&self, other: &$hashable) -> Ordering { self.hash().cmp(&other.hash()) @@ -113,5 +105,5 @@ macro_rules! hashable_ord { } } impl Eq for $hashable {} - } + }; } diff --git a/core/src/pow/cuckoo.rs b/core/src/pow/cuckoo.rs index b821a1cc2..91b86c64c 100644 --- a/core/src/pow/cuckoo.rs +++ b/core/src/pow/cuckoo.rs @@ -188,8 +188,8 @@ impl Miner { if us[0] == 0 { continue; // ignore duplicate edges } - let nu = try!(self.path(u, &mut us)) as usize; - let nv = try!(self.path(v, &mut vs)) as usize; + let nu = self.path(u, &mut us)? as usize; + let nv = self.path(v, &mut vs)? as usize; let sol = self.find_sol(nu, &us, nv, &vs); match sol { diff --git a/core/src/ser.rs b/core/src/ser.rs index 9b4869c22..f246c3107 100644 --- a/core/src/ser.rs +++ b/core/src/ser.rs @@ -163,7 +163,7 @@ pub trait Writer { /// Writes a variable number of bytes. The length is encoded as a 64-bit /// prefix. fn write_bytes(&mut self, bytes: &T) -> Result<(), Error> { - try!(self.write_u64(bytes.as_ref().len() as u64)); + self.write_u64(bytes.as_ref().len() as u64)?; self.write_fixed_bytes(bytes) } @@ -258,7 +258,7 @@ pub fn serialize(sink: &mut Write, thing: &W) -> Result<(), Error> /// Vec. pub fn ser_vec(thing: &W) -> Result, Error> { let mut vec = Vec::new(); - try!(serialize(&mut vec, thing)); + serialize(&mut vec, thing)?; Ok(vec) } @@ -290,13 +290,13 @@ impl<'a> Reader for BinReader<'a> { } /// Read a variable size vector from the underlying Read. Expects a usize fn read_vec(&mut self) -> Result, Error> { - let len = try!(self.read_u64()); + let len = self.read_u64()?; self.read_fixed_bytes(len as usize) } /// Read limited variable size vector from the underlying Read. Expects a /// usize fn read_limited_vec(&mut self, max: usize) -> Result, Error> { - let len = cmp::min(max, try!(self.read_u64()) as usize); + let len = cmp::min(max, self.read_u64()? as usize); self.read_fixed_bytes(len as usize) } fn read_fixed_bytes(&mut self, length: usize) -> Result, Error> { @@ -312,7 +312,7 @@ impl<'a> Reader for BinReader<'a> { } fn expect_u8(&mut self, val: u8) -> Result { - let b = try!(self.read_u8()); + let b = self.read_u8()?; if b == val { Ok(b) } else { @@ -326,7 +326,7 @@ impl<'a> Reader for BinReader<'a> { impl Readable for Commitment { fn read(reader: &mut Reader) -> Result { - let a = try!(reader.read_fixed_bytes(PEDERSEN_COMMITMENT_SIZE)); + let a = reader.read_fixed_bytes(PEDERSEN_COMMITMENT_SIZE)?; let mut c = [0; PEDERSEN_COMMITMENT_SIZE]; for i in 0..PEDERSEN_COMMITMENT_SIZE { c[i] = a[i]; @@ -395,7 +395,7 @@ impl PMMRable for RangeProof { impl Readable for Signature { fn read(reader: &mut Reader) -> Result { - let a = try!(reader.read_fixed_bytes(AGG_SIGNATURE_SIZE)); + let a = reader.read_fixed_bytes(AGG_SIGNATURE_SIZE)?; let mut c = [0; AGG_SIGNATURE_SIZE]; for i in 0..AGG_SIGNATURE_SIZE { c[i] = a[i]; @@ -423,7 +423,7 @@ impl<'a> Writer for BinWriter<'a> { fn write_fixed_bytes(&mut self, fixed: &T) -> Result<(), Error> { let bs = fixed.as_ref(); - try!(self.sink.write_all(bs)); + self.sink.write_all(bs)?; Ok(()) } } @@ -504,30 +504,30 @@ impl<'a, A: Writeable> Writeable for &'a A { impl Writeable for (A, B) { fn write(&self, writer: &mut W) -> Result<(), Error> { - try!(Writeable::write(&self.0, writer)); + Writeable::write(&self.0, writer)?; Writeable::write(&self.1, writer) } } impl Readable for (A, B) { fn read(reader: &mut Reader) -> Result<(A, B), Error> { - Ok((try!(Readable::read(reader)), try!(Readable::read(reader)))) + Ok((Readable::read(reader)?, Readable::read(reader)?)) } } impl Writeable for (A, B, C) { fn write(&self, writer: &mut W) -> Result<(), Error> { - try!(Writeable::write(&self.0, writer)); - try!(Writeable::write(&self.1, writer)); + Writeable::write(&self.0, writer)?; + Writeable::write(&self.1, writer)?; Writeable::write(&self.2, writer) } } impl Writeable for (A, B, C, D) { fn write(&self, writer: &mut W) -> Result<(), Error> { - try!(Writeable::write(&self.0, writer)); - try!(Writeable::write(&self.1, writer)); - try!(Writeable::write(&self.2, writer)); + Writeable::write(&self.0, writer)?; + Writeable::write(&self.1, writer)?; + Writeable::write(&self.2, writer)?; Writeable::write(&self.3, writer) } } @@ -535,9 +535,9 @@ impl Writeable for (A, B impl Readable for (A, B, C) { fn read(reader: &mut Reader) -> Result<(A, B, C), Error> { Ok(( - try!(Readable::read(reader)), - try!(Readable::read(reader)), - try!(Readable::read(reader)), + Readable::read(reader)?, + Readable::read(reader)?, + Readable::read(reader)?, )) } } @@ -545,10 +545,10 @@ impl Readable for (A, B, C) { impl Readable for (A, B, C, D) { fn read(reader: &mut Reader) -> Result<(A, B, C, D), Error> { Ok(( - try!(Readable::read(reader)), - try!(Readable::read(reader)), - try!(Readable::read(reader)), - try!(Readable::read(reader)), + Readable::read(reader)?, + Readable::read(reader)?, + Readable::read(reader)?, + Readable::read(reader)?, )) } } diff --git a/keychain/src/extkey.rs b/keychain/src/extkey.rs index 5bf0a3668..1d2d5b709 100644 --- a/keychain/src/extkey.rs +++ b/keychain/src/extkey.rs @@ -12,17 +12,17 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::{error, fmt, num}; use std::cmp::min; +use std::{error, fmt, num}; use serde::{de, ser}; -use byteorder::{BigEndian, ByteOrder}; use blake2::blake2b::blake2b; +use byteorder::{BigEndian, ByteOrder}; +use util; use util::secp; use util::secp::Secp256k1; use util::secp::key::{PublicKey, SecretKey}; -use util; // Size of an identifier in bytes pub const IDENTIFIER_SIZE: usize = 10; @@ -162,8 +162,8 @@ impl AsRef<[u8]> for Identifier { impl ::std::fmt::Debug for Identifier { fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { - try!(write!(f, "{}(", stringify!(Identifier))); - try!(write!(f, "{}", self.to_hex())); + write!(f, "{}(", stringify!(Identifier))?; + write!(f, "{}", self.to_hex())?; write!(f, ")") } } @@ -269,10 +269,10 @@ impl ExtendedKey { mod test { use serde_json; - use util::secp::Secp256k1; - use util::secp::key::SecretKey; use super::{ExtendedKey, Identifier}; use util; + use util::secp::Secp256k1; + use util::secp::key::SecretKey; fn from_hex(hex_str: &str) -> Vec { util::from_hex(hex_str.to_string()).unwrap() diff --git a/p2p/src/msg.rs b/p2p/src/msg.rs index 8a5a44da0..e07a7daf6 100644 --- a/p2p/src/msg.rs +++ b/p2p/src/msg.rs @@ -21,9 +21,9 @@ use std::thread; use std::time; use core::consensus::{MAX_MSG_LEN, MAX_TX_INPUTS, MAX_TX_KERNELS, MAX_TX_OUTPUTS}; +use core::core::BlockHeader; use core::core::hash::Hash; use core::core::target::Difficulty; -use core::core::BlockHeader; use core::ser::{self, Readable, Reader, Writeable, Writer}; use types::*; @@ -291,8 +291,8 @@ impl Writeable for MsgHeader { impl Readable for MsgHeader { fn read(reader: &mut Reader) -> Result { - try!(reader.expect_u8(MAGIC[0])); - try!(reader.expect_u8(MAGIC[1])); + reader.expect_u8(MAGIC[0])?; + reader.expect_u8(MAGIC[1])?; let (t, len) = ser_multiread!(reader, read_u8, read_u64); match Type::from_u8(t) { Some(ty) => Ok(MsgHeader { @@ -347,13 +347,13 @@ impl Writeable for Hand { impl Readable for Hand { fn read(reader: &mut Reader) -> Result { let (version, capab, nonce) = ser_multiread!(reader, read_u32, read_u32, read_u64); - let capabilities = try!(Capabilities::from_bits(capab).ok_or(ser::Error::CorruptedData,)); - let total_diff = try!(Difficulty::read(reader)); - let sender_addr = try!(SockAddr::read(reader)); - let receiver_addr = try!(SockAddr::read(reader)); - let ua = try!(reader.read_vec()); - let user_agent = try!(String::from_utf8(ua).map_err(|_| ser::Error::CorruptedData)); - let genesis = try!(Hash::read(reader)); + let capabilities = Capabilities::from_bits(capab).ok_or(ser::Error::CorruptedData)?; + let total_diff = Difficulty::read(reader)?; + let sender_addr = SockAddr::read(reader)?; + let receiver_addr = SockAddr::read(reader)?; + let ua = reader.read_vec()?; + let user_agent = String::from_utf8(ua).map_err(|_| ser::Error::CorruptedData)?; + let genesis = Hash::read(reader)?; Ok(Hand { version: version, capabilities: capabilities, @@ -400,11 +400,11 @@ impl Writeable for Shake { impl Readable for Shake { fn read(reader: &mut Reader) -> Result { let (version, capab) = ser_multiread!(reader, read_u32, read_u32); - let capabilities = try!(Capabilities::from_bits(capab).ok_or(ser::Error::CorruptedData,)); - let total_diff = try!(Difficulty::read(reader)); - let ua = try!(reader.read_vec()); - let user_agent = try!(String::from_utf8(ua).map_err(|_| ser::Error::CorruptedData)); - let genesis = try!(Hash::read(reader)); + let capabilities = Capabilities::from_bits(capab).ok_or(ser::Error::CorruptedData)?; + let total_diff = Difficulty::read(reader)?; + let ua = reader.read_vec()?; + let user_agent = String::from_utf8(ua).map_err(|_| ser::Error::CorruptedData)?; + let genesis = Hash::read(reader)?; Ok(Shake { version: version, capabilities: capabilities, @@ -429,8 +429,8 @@ impl Writeable for GetPeerAddrs { impl Readable for GetPeerAddrs { fn read(reader: &mut Reader) -> Result { - let capab = try!(reader.read_u32()); - let capabilities = try!(Capabilities::from_bits(capab).ok_or(ser::Error::CorruptedData,)); + let capab = reader.read_u32()?; + let capabilities = Capabilities::from_bits(capab).ok_or(ser::Error::CorruptedData)?; Ok(GetPeerAddrs { capabilities: capabilities, }) @@ -446,7 +446,7 @@ pub struct PeerAddrs { impl Writeable for PeerAddrs { fn write(&self, writer: &mut W) -> Result<(), ser::Error> { - try!(writer.write_u32(self.peers.len() as u32)); + writer.write_u32(self.peers.len() as u32)?; for p in &self.peers { p.write(writer).unwrap(); } @@ -456,7 +456,7 @@ impl Writeable for PeerAddrs { impl Readable for PeerAddrs { fn read(reader: &mut Reader) -> Result { - let peer_count = try!(reader.read_u32()); + let peer_count = reader.read_u32()?; if peer_count > MAX_PEER_ADDRS { return Err(ser::Error::TooLargeReadErr); } else if peer_count == 0 { @@ -490,7 +490,7 @@ impl Writeable for PeerError { impl Readable for PeerError { fn read(reader: &mut Reader) -> Result { let (code, msg) = ser_multiread!(reader, read_u32, read_vec); - let message = try!(String::from_utf8(msg).map_err(|_| ser::Error::CorruptedData,)); + let message = String::from_utf8(msg).map_err(|_| ser::Error::CorruptedData)?; Ok(PeerError { code: code, message: message, @@ -516,11 +516,11 @@ impl Writeable for SockAddr { ); } SocketAddr::V6(sav6) => { - try!(writer.write_u8(1)); + writer.write_u8(1)?; for seg in &sav6.ip().segments() { - try!(writer.write_u16(*seg)); + writer.write_u16(*seg)?; } - try!(writer.write_u16(sav6.port())); + writer.write_u16(sav6.port())?; } } Ok(()) @@ -529,17 +529,17 @@ impl Writeable for SockAddr { impl Readable for SockAddr { fn read(reader: &mut Reader) -> Result { - let v4_or_v6 = try!(reader.read_u8()); + let v4_or_v6 = reader.read_u8()?; if v4_or_v6 == 0 { - let ip = try!(reader.read_fixed_bytes(4)); - let port = try!(reader.read_u16()); + let ip = reader.read_fixed_bytes(4)?; + let port = reader.read_u16()?; Ok(SockAddr(SocketAddr::V4(SocketAddrV4::new( Ipv4Addr::new(ip[0], ip[1], ip[2], ip[3]), port, )))) } else { let ip = try_map_vec!([0..8], |_| reader.read_u16()); - let port = try!(reader.read_u16()); + let port = reader.read_u16()?; Ok(SockAddr(SocketAddr::V6(SocketAddrV6::new( Ipv6Addr::new(ip[0], ip[1], ip[2], ip[3], ip[4], ip[5], ip[6], ip[7]), port, diff --git a/store/src/lib.rs b/store/src/lib.rs index 1f4f74339..1a6109205 100644 --- a/store/src/lib.rs +++ b/store/src/lib.rs @@ -91,7 +91,7 @@ impl Store { opts.set_compaction_style(DBCompactionStyle::Universal); opts.set_max_open_files(256); opts.set_use_fsync(false); - let db = try!(DB::open(&opts, &path)); + let db = DB::open(&opts, &path)?; Ok(Store { rdb: RwLock::new(db), }) @@ -135,11 +135,11 @@ impl Store { key: &[u8], len: usize, ) -> Result, Error> { - let data = try!(self.get(key)); + let data = self.get(key)?; match data { Some(val) => { let mut lval = if len > 0 { &val[..len] } else { &val[..] }; - let r = try!(ser::deserialize(&mut lval).map_err(Error::SerErr)); + let r = ser::deserialize(&mut lval).map_err(Error::SerErr)?; Ok(Some(r)) } None => Ok(None),