bitcoin_signature
});
-impl<W: Writer> Writeable<W> for ChannelReestablish {
- fn write(&self, w: &mut W) -> Result<(), ::std::io::Error> {
+impl Writeable for ChannelReestablish {
+ fn write<W: Writer>(&self, w: &mut W) -> Result<(), ::std::io::Error> {
w.size_hint(if self.data_loss_protect.is_some() { 32+2*8+33+32 } else { 32+2*8 });
self.channel_id.write(w)?;
self.next_local_commitment_number.write(w)?;
data
});
-impl<W: Writer> Writeable<W> for OnionPacket {
- fn write(&self, w: &mut W) -> Result<(), ::std::io::Error> {
+impl Writeable for OnionPacket {
+ fn write<W: Writer>(&self, w: &mut W) -> Result<(), ::std::io::Error> {
w.size_hint(1 + 33 + 20*65 + 32);
self.version.write(w)?;
match self.public_key {
onion_routing_packet
});
-impl<W: Writer> Writeable<W> for OnionRealm0HopData {
- fn write(&self, w: &mut W) -> Result<(), ::std::io::Error> {
+impl Writeable for OnionRealm0HopData {
+ fn write<W: Writer>(&self, w: &mut W) -> Result<(), ::std::io::Error> {
w.size_hint(32);
self.short_channel_id.write(w)?;
self.amt_to_forward.write(w)?;
}
}
-impl<W: Writer> Writeable<W> for OnionHopData {
- fn write(&self, w: &mut W) -> Result<(), ::std::io::Error> {
+impl Writeable for OnionHopData {
+ fn write<W: Writer>(&self, w: &mut W) -> Result<(), ::std::io::Error> {
w.size_hint(65);
self.realm.write(w)?;
self.data.write(w)?;
}
}
-impl<W: Writer> Writeable<W> for Ping {
- fn write(&self, w: &mut W) -> Result<(), ::std::io::Error> {
+impl Writeable for Ping {
+ fn write<W: Writer>(&self, w: &mut W) -> Result<(), ::std::io::Error> {
w.size_hint(self.byteslen as usize + 4);
self.ponglen.write(w)?;
vec![0u8; self.byteslen as usize].write(w)?; // size-unchecked write
}
}
-impl<W: Writer> Writeable<W> for Pong {
- fn write(&self, w: &mut W) -> Result<(), ::std::io::Error> {
+impl Writeable for Pong {
+ fn write<W: Writer>(&self, w: &mut W) -> Result<(), ::std::io::Error> {
w.size_hint(self.byteslen as usize + 2);
vec![0u8; self.byteslen as usize].write(w)?; // size-unchecked write
Ok(())
}
}
-impl<W: Writer> Writeable<W> for UnsignedChannelAnnouncement {
- fn write(&self, w: &mut W) -> Result<(), ::std::io::Error> {
+impl Writeable for UnsignedChannelAnnouncement {
+ fn write<W: Writer>(&self, w: &mut W) -> Result<(), ::std::io::Error> {
w.size_hint(2 + 2*32 + 4*33 + self.features.flags.len() + self.excess_data.len());
self.features.write(w)?;
self.chain_hash.write(w)?;
contents
});
-impl<W: Writer> Writeable<W> for UnsignedChannelUpdate {
- fn write(&self, w: &mut W) -> Result<(), ::std::io::Error> {
+impl Writeable for UnsignedChannelUpdate {
+ fn write<W: Writer>(&self, w: &mut W) -> Result<(), ::std::io::Error> {
w.size_hint(64 + self.excess_data.len());
self.chain_hash.write(w)?;
self.short_channel_id.write(w)?;
contents
});
-impl<W: Writer> Writeable<W> for ErrorMessage {
- fn write(&self, w: &mut W) -> Result<(), ::std::io::Error> {
+impl Writeable for ErrorMessage {
+ fn write<W: Writer>(&self, w: &mut W) -> Result<(), ::std::io::Error> {
w.size_hint(32 + 2 + self.data.len());
self.channel_id.write(w)?;
(self.data.len() as u16).write(w)?;
}
}
-impl<W: Writer> Writeable<W> for UnsignedNodeAnnouncement {
- fn write(&self, w: &mut W) -> Result<(), ::std::io::Error> {
+impl Writeable for UnsignedNodeAnnouncement {
+ fn write<W: Writer>(&self, w: &mut W) -> Result<(), ::std::io::Error> {
w.size_hint(64 + 76 + self.features.flags.len() + self.addresses.len()*38 + self.excess_address_data.len() + self.excess_data.len());
self.features.write(w)?;
self.timestamp.write(w)?;
}
/// A trait that various rust-lightning types implement allowing them to be written out to a Writer
-pub trait Writeable<W: Writer> {
+pub trait Writeable {
/// Writes self out to the given Writer
- fn write(&self, writer: &mut W) -> Result<(), ::std::io::Error>;
+ fn write<W: Writer>(&self, writer: &mut W) -> Result<(), ::std::io::Error>;
}
/// A trait that various rust-lightning types implement allowing them to be read in from a Read
macro_rules! impl_writeable_primitive {
($val_type:ty, $meth_write:ident, $len: expr, $meth_read:ident) => {
- impl<W: Writer> Writeable<W> for $val_type {
+ impl Writeable for $val_type {
#[inline]
- fn write(&self, writer: &mut W) -> Result<(), ::std::io::Error> {
+ fn write<W: Writer>(&self, writer: &mut W) -> Result<(), ::std::io::Error> {
writer.write_all(&$meth_write(*self))
}
}
impl_writeable_primitive!(u32, be32_to_array, 4, slice_to_be32);
impl_writeable_primitive!(u16, be16_to_array, 2, slice_to_be16);
-impl<W: Writer> Writeable<W> for u8 {
+impl Writeable for u8 {
#[inline]
- fn write(&self, writer: &mut W) -> Result<(), ::std::io::Error> {
+ fn write<W: Writer>(&self, writer: &mut W) -> Result<(), ::std::io::Error> {
writer.write_all(&[*self])
}
}
}
}
-impl<W: Writer> Writeable<W> for bool {
+impl Writeable for bool {
#[inline]
- fn write(&self, writer: &mut W) -> Result<(), ::std::io::Error> {
+ fn write<W: Writer>(&self, writer: &mut W) -> Result<(), ::std::io::Error> {
writer.write_all(&[if *self {1} else {0}])
}
}
// u8 arrays
macro_rules! impl_array {
( $size:expr ) => (
- impl<W: Writer> Writeable<W> for [u8; $size]
+ impl Writeable for [u8; $size]
{
#[inline]
- fn write(&self, w: &mut W) -> Result<(), ::std::io::Error> {
+ fn write<W: Writer>(&self, w: &mut W) -> Result<(), ::std::io::Error> {
w.write_all(self)
}
}
impl_array!(1300); // for OnionPacket.hop_data
// HashMap
-impl<W, K, V> Writeable<W> for HashMap<K, V>
- where W: Writer,
- K: Writeable<W> + Eq + Hash,
- V: Writeable<W>
+impl<K, V> Writeable for HashMap<K, V>
+ where K: Writeable + Eq + Hash,
+ V: Writeable
{
#[inline]
- fn write(&self, w: &mut W) -> Result<(), ::std::io::Error> {
+ fn write<W: Writer>(&self, w: &mut W) -> Result<(), ::std::io::Error> {
(self.len() as u16).write(w)?;
for (key, value) in self.iter() {
key.write(w)?;
}
// Vectors
-impl<W: Writer> Writeable<W> for Vec<u8> {
+impl Writeable for Vec<u8> {
#[inline]
- fn write(&self, w: &mut W) -> Result<(), ::std::io::Error> {
+ fn write<W: Writer>(&self, w: &mut W) -> Result<(), ::std::io::Error> {
(self.len() as u16).write(w)?;
w.write_all(&self)
}
Ok(ret)
}
}
-impl<W: Writer> Writeable<W> for Vec<Signature> {
+impl Writeable for Vec<Signature> {
#[inline]
- fn write(&self, w: &mut W) -> Result<(), ::std::io::Error> {
+ fn write<W: Writer>(&self, w: &mut W) -> Result<(), ::std::io::Error> {
(self.len() as u16).write(w)?;
for e in self.iter() {
e.write(w)?;
}
}
-impl<W: Writer> Writeable<W> for Script {
- fn write(&self, w: &mut W) -> Result<(), ::std::io::Error> {
+impl Writeable for Script {
+ fn write<W: Writer>(&self, w: &mut W) -> Result<(), ::std::io::Error> {
(self.len() as u16).write(w)?;
w.write_all(self.as_bytes())
}
}
}
-impl<W: Writer> Writeable<W> for Option<Script> {
- fn write(&self, w: &mut W) -> Result<(), ::std::io::Error> {
+impl Writeable for Option<Script> {
+ fn write<W: Writer>(&self, w: &mut W) -> Result<(), ::std::io::Error> {
if let &Some(ref script) = self {
script.write(w)?;
}
}
}
-impl<W: Writer> Writeable<W> for PublicKey {
- fn write(&self, w: &mut W) -> Result<(), ::std::io::Error> {
+impl Writeable for PublicKey {
+ fn write<W: Writer>(&self, w: &mut W) -> Result<(), ::std::io::Error> {
self.serialize().write(w)
}
}
}
}
-impl<W: Writer> Writeable<W> for Sha256dHash {
- fn write(&self, w: &mut W) -> Result<(), ::std::io::Error> {
+impl Writeable for Sha256dHash {
+ fn write<W: Writer>(&self, w: &mut W) -> Result<(), ::std::io::Error> {
self.as_bytes().write(w)
}
}
}
}
-impl<W: Writer> Writeable<W> for Signature {
- fn write(&self, w: &mut W) -> Result<(), ::std::io::Error> {
+impl Writeable for Signature {
+ fn write<W: Writer>(&self, w: &mut W) -> Result<(), ::std::io::Error> {
self.serialize_compact(&Secp256k1::without_caps()).write(w)
}
}
macro_rules! impl_writeable {
($st:ident, $len: expr, {$($field:ident),*}) => {
- impl<W: Writer> Writeable<W> for $st {
- fn write(&self, w: &mut W) -> Result<(), ::std::io::Error> {
+ impl Writeable for $st {
+ fn write<W: Writer>(&self, w: &mut W) -> Result<(), ::std::io::Error> {
w.size_hint($len);
$( self.$field.write(w)?; )*
Ok(())
}
macro_rules! impl_writeable_len_match {
($st:ident, {$({$m: pat, $l: expr}),*}, {$($field:ident),*}) => {
- impl<W: Writer> Writeable<W> for $st {
- fn write(&self, w: &mut W) -> Result<(), ::std::io::Error> {
+ impl Writeable for $st {
+ fn write<W: Writer>(&self, w: &mut W) -> Result<(), ::std::io::Error> {
w.size_hint(match *self {
$($m => $l,)*
});