diff options
Diffstat (limited to '')
54 files changed, 242 insertions, 259 deletions
diff --git a/derive/src/from/mod.rs b/derive/src/from/mod.rs index ee92016..7fd81bf 100644 --- a/derive/src/from/mod.rs +++ b/derive/src/from/mod.rs @@ -1,5 +1,4 @@ use quote::quote; -use syn; use syn::parse_macro_input; use darling::{FromDeriveInput, FromVariant}; @@ -40,7 +39,7 @@ pub fn from(input: proc_macro::TokenStream) -> proc_macro::TokenStream { let derives = fields .iter() - .filter(|field| field.fields.fields.len() > 0 && !field.ignore) + .filter(|field| !field.fields.fields.is_empty() && !field.ignore) .map(|field| { let variant = &field.ident; let inner_type = &field.fields.fields[0]; diff --git a/derive/src/lib.rs b/derive/src/lib.rs index 11b3689..1af459f 100644 --- a/derive/src/lib.rs +++ b/derive/src/lib.rs @@ -1,5 +1,3 @@ -use syn; - mod from; mod network; mod setters; diff --git a/derive/src/network/list.rs b/derive/src/network/list.rs index 1fc8f7e..e0bbfa8 100644 --- a/derive/src/network/list.rs +++ b/derive/src/network/list.rs @@ -3,18 +3,18 @@ use quote::quote; use super::{get_field_variant_type, NetworkField}; -pub(crate) fn to(fields: &Vec<NetworkField>) -> Vec<TokenStream> { +pub(crate) fn to(fields: &[NetworkField]) -> Vec<TokenStream> { fields .iter() .map(|field| { if !field.skip { let field_rename = match &field.rename { Some(name) => name.clone(), - None => format!("{}", field.ident.as_ref().unwrap()).into(), + None => format!("{}", field.ident.as_ref().unwrap()), }; let field_name = field.ident.as_ref().unwrap(); - let field_type = get_field_variant_type(&field); + let field_type = get_field_variant_type(field); let field_inner = match field.network { crate::network::NetworkRepr::List => { @@ -37,7 +37,7 @@ pub(crate) fn to(fields: &Vec<NetworkField>) -> Vec<TokenStream> { .collect() } -pub(crate) fn from(fields: &Vec<NetworkField>) -> Vec<TokenStream> { +pub(crate) fn from(fields: &[NetworkField]) -> Vec<TokenStream> { fields .iter() .map(|field| { @@ -45,10 +45,10 @@ pub(crate) fn from(fields: &Vec<NetworkField>) -> Vec<TokenStream> { let field_rename = match &field.rename { Some(name) => name.clone(), - None => format!("{}", field.ident.as_ref().unwrap()).into(), + None => format!("{}", field.ident.as_ref().unwrap()), }; - let field_variant_type = get_field_variant_type(&field); + let field_variant_type = get_field_variant_type(field); let extract_inner = if field.default { quote! { diff --git a/derive/src/network/map.rs b/derive/src/network/map.rs index 4efc3bf..ead71c7 100644 --- a/derive/src/network/map.rs +++ b/derive/src/network/map.rs @@ -3,18 +3,18 @@ use quote::quote; use super::{get_field_variant_type, NetworkField}; -pub(crate) fn to(fields: &Vec<NetworkField>) -> Vec<TokenStream> { +pub(crate) fn to(fields: &[NetworkField]) -> Vec<TokenStream> { fields .iter() .map(|field| { if !field.skip { let field_rename = match &field.rename { Some(name) => name.clone(), - None => format!("{}", field.ident.as_ref().unwrap()).into(), + None => format!("{}", field.ident.as_ref().unwrap()), }; let field_name = field.ident.as_ref().unwrap(); - let field_variant_type = get_field_variant_type(&field); + let field_variant_type = get_field_variant_type(field); let field_inner = match field.network { crate::network::NetworkRepr::List => quote! { @@ -39,7 +39,7 @@ pub(crate) fn to(fields: &Vec<NetworkField>) -> Vec<TokenStream> { .collect() } -pub(crate) fn from(fields: &Vec<NetworkField>) -> Vec<TokenStream> { +pub(crate) fn from(fields: &[NetworkField]) -> Vec<TokenStream> { fields .iter() .map(|field| { @@ -53,7 +53,7 @@ pub(crate) fn from(fields: &Vec<NetworkField>) -> Vec<TokenStream> { let field_rename = match &field.rename { Some(name) => name.clone(), - None => format!("{}", field.ident.as_ref().unwrap()).into(), + None => format!("{}", field.ident.as_ref().unwrap()), }; match field.network { @@ -73,7 +73,7 @@ pub(crate) fn from(fields: &Vec<NetworkField>) -> Vec<TokenStream> { .collect() } -pub(crate) fn to_vec(_type_name: &Ident, _fields: &Vec<NetworkField>) -> TokenStream { +pub(crate) fn to_vec(_type_name: &Ident, _fields: &[NetworkField]) -> TokenStream { quote! { self.iter().map(|item| { item.to_network_map().into() @@ -81,7 +81,7 @@ pub(crate) fn to_vec(_type_name: &Ident, _fields: &Vec<NetworkField>) -> TokenSt } } -pub(crate) fn from_vec(type_name: &Ident, _fields: &Vec<NetworkField>) -> TokenStream { +pub(crate) fn from_vec(type_name: &Ident, _fields: &[NetworkField]) -> TokenStream { quote! { input.iter().map( |item| #type_name::from_network_map( diff --git a/derive/src/network/maplist.rs b/derive/src/network/maplist.rs index b5b4a86..21ea524 100644 --- a/derive/src/network/maplist.rs +++ b/derive/src/network/maplist.rs @@ -5,14 +5,14 @@ use crate::network::{gen_type, get_field_type}; use super::NetworkField; -pub(crate) fn to(fields: &Vec<NetworkField>) -> Vec<TokenStream> { +pub(crate) fn to(fields: &[NetworkField]) -> Vec<TokenStream> { fields .iter() .map(|field| { if !field.skip { let field_rename = match &field.rename { Some(name) => name.clone(), - None => format!("{}", field.ident.as_ref().unwrap()).into(), + None => format!("{}", field.ident.as_ref().unwrap()), }; let field_name = field.ident.as_ref().unwrap(); @@ -49,7 +49,7 @@ pub(crate) fn to(fields: &Vec<NetworkField>) -> Vec<TokenStream> { .collect() } -pub(crate) fn to_vec(_type_name: &Ident, fields: &Vec<NetworkField>) -> TokenStream { +pub(crate) fn to_vec(_type_name: &Ident, fields: &[NetworkField]) -> TokenStream { let (lists, for_each_inner, map_inserts): ( Vec<TokenStream>, Vec<TokenStream>, @@ -60,7 +60,7 @@ pub(crate) fn to_vec(_type_name: &Ident, fields: &Vec<NetworkField>) -> TokenStr if !field.skip { let field_rename = match &field.rename { Some(name) => name.clone(), - None => format!("{}", field.ident.as_ref().unwrap()).into(), + None => format!("{}", field.ident.as_ref().unwrap()), }; let field_name = field.ident.as_ref().unwrap(); @@ -68,7 +68,7 @@ pub(crate) fn to_vec(_type_name: &Ident, fields: &Vec<NetworkField>) -> TokenStr let field_type = match field.network { crate::network::NetworkRepr::List => gen_type("VariantList"), crate::network::NetworkRepr::Map => gen_type("VariantMap"), - crate::network::NetworkRepr::None => get_field_type(&field), + crate::network::NetworkRepr::None => get_field_type(field), }; let field_inner = match field.network { @@ -112,7 +112,7 @@ pub(crate) fn to_vec(_type_name: &Ident, fields: &Vec<NetworkField>) -> TokenStr } } - return (lists, for_each_inner, map_inserts); + (lists, for_each_inner, map_inserts) }, ); @@ -131,7 +131,7 @@ pub(crate) fn to_vec(_type_name: &Ident, fields: &Vec<NetworkField>) -> TokenStr } } -pub(crate) fn from(fields: &Vec<NetworkField>) -> Vec<TokenStream> { +pub(crate) fn from(fields: &[NetworkField]) -> Vec<TokenStream> { fields .iter() .map(|field| { @@ -145,7 +145,7 @@ pub(crate) fn from(fields: &Vec<NetworkField>) -> Vec<TokenStream> { let field_rename = match &field.rename { Some(name) => name.clone(), - None => format!("{}", field.ident.as_ref().unwrap()).into(), + None => format!("{}", field.ident.as_ref().unwrap()), }; let field_inner = match field.network { @@ -179,12 +179,12 @@ pub(crate) fn from(fields: &Vec<NetworkField>) -> Vec<TokenStream> { .collect() } -pub(crate) fn from_vec(type_name: &Ident, fields: &Vec<NetworkField>) -> TokenStream { +pub(crate) fn from_vec(type_name: &Ident, fields: &[NetworkField]) -> TokenStream { let field = &fields[0]; let field_rename = match &field.rename { Some(name) => name.clone(), - None => format!("{}", field.ident.as_ref().unwrap()).into(), + None => format!("{}", field.ident.as_ref().unwrap()), }; let field_variant = if field.stringlist { diff --git a/derive/src/network/mod.rs b/derive/src/network/mod.rs index 8214556..f2ead96 100644 --- a/derive/src/network/mod.rs +++ b/derive/src/network/mod.rs @@ -102,12 +102,12 @@ pub fn network_map(input: proc_macro::TokenStream) -> proc_macro::TokenStream { let to_network_map = match network.repr { Repr::Maplist => maplist::to(&fields), - Repr::Map | _ => map::to(&fields), + _ => map::to(&fields), }; let from_network_map = match network.repr { Repr::Maplist => maplist::from(&fields), - Repr::Map | _ => map::from(&fields), + _ => map::from(&fields), }; let mut gen = quote! { @@ -220,7 +220,7 @@ fn get_field_type(field: &NetworkField) -> syn::Type { fn get_field_variant_type(field: &NetworkField) -> syn::Type { match &field.variant { - Some(ty) => gen_type(&ty), + Some(ty) => gen_type(ty), None => get_field_type(field), } } diff --git a/derive/src/setters/mod.rs b/derive/src/setters/mod.rs index b3d2dd1..79fb011 100644 --- a/derive/src/setters/mod.rs +++ b/derive/src/setters/mod.rs @@ -70,7 +70,7 @@ pub fn setters(input: proc_macro::TokenStream) -> proc_macro::TokenStream { let mut res = String::new(); for c in raw_name.chars().rev() { - if c <= 'Z' && c >= 'A' { + if c.is_ascii_uppercase() { res.push(c.to_ascii_lowercase()); break; } else { @@ -119,5 +119,5 @@ pub fn setters(input: proc_macro::TokenStream) -> proc_macro::TokenStream { } }; - return gen.into(); + gen.into() } @@ -1,5 +1,6 @@ #![doc = include_str!("../README.md")] #![cfg_attr(all(test, feature = "bench"), feature(test))] +#![allow(clippy::too_many_arguments)] #[cfg(all(test, feature = "bench"))] extern crate test; diff --git a/src/message/handshake/clientinit.rs b/src/message/handshake/clientinit.rs index 94d52cf..9d35243 100644 --- a/src/message/handshake/clientinit.rs +++ b/src/message/handshake/clientinit.rs @@ -59,7 +59,7 @@ impl HandshakeSerialize for ClientInit { "FeatureList".to_string(), Variant::StringList(self.feature_list.clone()), ); - return HandshakeSerialize::serialize(&values); + HandshakeSerialize::serialize(&values) } } diff --git a/src/message/handshake/clientinitack.rs b/src/message/handshake/clientinitack.rs index 21e65de..f3f4640 100644 --- a/src/message/handshake/clientinitack.rs +++ b/src/message/handshake/clientinitack.rs @@ -41,7 +41,7 @@ impl HandshakeSerialize for ClientInitAck { "FeatureList".to_string(), Variant::StringList(self.feature_list.clone()), ); - return HandshakeSerialize::serialize(&values); + HandshakeSerialize::serialize(&values) } } diff --git a/src/message/handshake/clientinitreject.rs b/src/message/handshake/clientinitreject.rs index 7c4bb72..fca5388 100644 --- a/src/message/handshake/clientinitreject.rs +++ b/src/message/handshake/clientinitreject.rs @@ -17,7 +17,7 @@ impl HandshakeSerialize for ClientInitReject { Variant::String("ClientInitReject".to_string()), ); values.insert("ErrorString".to_string(), Variant::String(self.error.clone())); - return HandshakeSerialize::serialize(&values); + HandshakeSerialize::serialize(&values) } } diff --git a/src/message/handshake/clientlogin.rs b/src/message/handshake/clientlogin.rs index b619e48..4be4442 100644 --- a/src/message/handshake/clientlogin.rs +++ b/src/message/handshake/clientlogin.rs @@ -16,7 +16,7 @@ impl HandshakeSerialize for ClientLogin { values.insert("MsgType".to_string(), Variant::String("ClientLogin".to_string())); values.insert("User".to_string(), Variant::String(self.user.clone())); values.insert("Password".to_string(), Variant::String(self.password.clone())); - return HandshakeSerialize::serialize(&values); + HandshakeSerialize::serialize(&values) } } diff --git a/src/message/handshake/clientloginack.rs b/src/message/handshake/clientloginack.rs index 8a12f60..de26274 100644 --- a/src/message/handshake/clientloginack.rs +++ b/src/message/handshake/clientloginack.rs @@ -14,7 +14,7 @@ impl HandshakeSerialize for ClientLoginAck { "MsgType".to_string(), Variant::String("ClientLoginAck".to_string()), ); - return HandshakeSerialize::serialize(&values); + HandshakeSerialize::serialize(&values) } } diff --git a/src/message/handshake/connack.rs b/src/message/handshake/connack.rs index d325cb9..e3accdd 100644 --- a/src/message/handshake/connack.rs +++ b/src/message/handshake/connack.rs @@ -47,13 +47,13 @@ impl crate::serialize::Deserialize for ConnAck { let (elen, extra) = i16::parse(&b[flen..])?; let (vlen, version) = i8::parse(&b[(flen + elen)..])?; - return Ok(( + Ok(( flen + elen + vlen, Self { flags, extra, version, }, - )); + )) } } diff --git a/src/message/handshake/features.rs b/src/message/handshake/features.rs index e7557e9..af967d4 100644 --- a/src/message/handshake/features.rs +++ b/src/message/handshake/features.rs @@ -49,19 +49,18 @@ pub enum Feature { impl Feature { pub fn get() -> StringList { - let mut features = StringList::new(); - features.push("ExtendedFeatures".to_string()); - #[cfg(feature = "long-message-id")] - features.push("LongMessageId".to_string()); - #[cfg(feature = "long-time")] - features.push("LongTime".to_string()); - #[cfg(feature = "rich-messages")] - features.push("RichMessages".to_string()); - #[cfg(feature = "sender-prefixes")] - features.push("SenderPrefixes".to_string()); - #[cfg(feature = "authenticators")] - features.push("Authenticators".to_string()); - - return features; + vec![ + "ExtendedFeatures".to_string(), + #[cfg(feature = "long-message-id")] + "LongMessageId".to_string(), + #[cfg(feature = "long-time")] + "LongTime".to_string(), + #[cfg(feature = "rich-messages")] + "RichMessages".to_string(), + #[cfg(feature = "sender-prefixes")] + "SenderPrefixes".to_string(), + #[cfg(feature = "authenticators")] + "Authenticators".to_string(), + ] } } diff --git a/src/message/handshake/init.rs b/src/message/handshake/init.rs index 9f011ed..e303802 100644 --- a/src/message/handshake/init.rs +++ b/src/message/handshake/init.rs @@ -1,7 +1,7 @@ use crate::serialize::{Deserialize, Serialize}; /// The first few bytes sent to the core to initialize the connection and setup if we want to use tls and compression -#[derive(Clone, Debug)] +#[derive(Clone, Debug, Default)] pub struct Init { pub tls: bool, pub compression: bool, @@ -9,10 +9,7 @@ pub struct Init { impl Init { pub fn new() -> Self { - Self { - tls: false, - compression: false, - } + Self::default() } pub fn compression(mut self, v: bool) -> Self { @@ -47,7 +44,7 @@ impl Init { init.extend(handshake.serialize().unwrap()); init.extend(crate::message::Protocol::Datastream.serialize()); - return init; + init } pub fn parse(buf: &[u8]) -> Self { @@ -66,6 +63,6 @@ impl Init { init.tls = true } - return init; + init } } diff --git a/src/message/handshake/protocol.rs b/src/message/handshake/protocol.rs index 73a82b9..2a7d9ac 100644 --- a/src/message/handshake/protocol.rs +++ b/src/message/handshake/protocol.rs @@ -1,13 +1,15 @@ use crate::serialize::{Deserialize, Serialize}; +#[derive(Debug, Default)] pub enum Protocol { Legacy = 0x00000001, + #[default] Datastream = 0x00000002, } impl Protocol { pub fn new() -> Self { - Protocol::Datastream + Protocol::default() } pub fn serialize(self) -> Vec<u8> { diff --git a/src/message/handshake/sessioninit.rs b/src/message/handshake/sessioninit.rs index e2a29ad..b3a0932 100644 --- a/src/message/handshake/sessioninit.rs +++ b/src/message/handshake/sessioninit.rs @@ -37,7 +37,7 @@ impl From<VariantMap> for SessionInit { network_ids: network_ids .iter() .map(|network| match network { - Variant::NetworkId(network) => network.clone(), + Variant::NetworkId(network) => *network, _ => unimplemented!(), }) .collect(), @@ -72,10 +72,10 @@ impl HandshakeSerialize for SessionInit { Variant::VariantList( self.network_ids .iter() - .map(|id| Variant::NetworkId(id.clone())) + .map(|id| Variant::NetworkId(*id)) .collect(), ), ); - return HandshakeSerialize::serialize(&values); + HandshakeSerialize::serialize(&values) } } diff --git a/src/message/handshake/types.rs b/src/message/handshake/types.rs index bebeb4c..9bd8aec 100644 --- a/src/message/handshake/types.rs +++ b/src/message/handshake/types.rs @@ -10,7 +10,7 @@ use crate::message::handshake::{HandshakeDeserialize, HandshakeSerialize}; use crate::primitive::VariantMap; impl HandshakeSerialize for VariantMap { - fn serialize<'a>(&'a self) -> Result<Vec<u8>, ProtocolError> { + fn serialize(&self) -> Result<Vec<u8>, ProtocolError> { let mut res: Vec<u8> = Vec::new(); for (k, v) in self { @@ -22,7 +22,7 @@ impl HandshakeSerialize for VariantMap { let len: i32 = (self.len() * 2).try_into().unwrap(); util::insert_bytes(0, &mut res, &mut (len).to_be_bytes()); - return Ok(res); + Ok(res) } } @@ -47,7 +47,7 @@ impl HandshakeDeserialize for VariantMap { }; } - return Ok((pos, map)); + Ok((pos, map)) } } diff --git a/src/message/signalproxy/heartbeat.rs b/src/message/signalproxy/heartbeat.rs index 7bb5b19..e7d17f3 100644 --- a/src/message/signalproxy/heartbeat.rs +++ b/src/message/signalproxy/heartbeat.rs @@ -10,18 +10,17 @@ pub struct HeartBeat { impl Serialize for HeartBeat { fn serialize(&self) -> Result<Vec<std::primitive::u8>, ProtocolError> { - let mut res = VariantList::new(); - - res.push(Variant::i32(MessageType::HeartBeat as i32)); - res.push(Variant::DateTime(self.timestamp.clone())); - - res.serialize() + vec![ + Variant::i32(MessageType::HeartBeat as i32), + Variant::DateTime(self.timestamp), + ] + .serialize() } } impl Deserialize for HeartBeat { fn parse(b: &[std::primitive::u8]) -> Result<(std::primitive::usize, Self), ProtocolError> { - let (size, mut res) = VariantList::parse(&b)?; + let (size, mut res) = VariantList::parse(b)?; res.remove(0); @@ -41,18 +40,17 @@ pub struct HeartBeatReply { impl Serialize for HeartBeatReply { fn serialize(&self) -> Result<Vec<std::primitive::u8>, ProtocolError> { - let mut res = VariantList::new(); - - res.push(Variant::i32(MessageType::HeartBeatReply as i32)); - res.push(Variant::DateTime(self.timestamp.clone())); - - res.serialize() + vec![ + Variant::i32(MessageType::HeartBeatReply as i32), + Variant::DateTime(self.timestamp), + ] + .serialize() } } impl Deserialize for HeartBeatReply { fn parse(b: &[std::primitive::u8]) -> Result<(std::primitive::usize, Self), ProtocolError> { - let (size, mut res) = VariantList::parse(&b)?; + let (size, mut res) = VariantList::parse(b)?; res.remove(0); diff --git a/src/message/signalproxy/initdata.rs b/src/message/signalproxy/initdata.rs index f95e0b2..c2ca6c6 100644 --- a/src/message/signalproxy/initdata.rs +++ b/src/message/signalproxy/initdata.rs @@ -28,7 +28,7 @@ impl Serialize for InitData { impl Deserialize for InitData { fn parse(b: &[u8]) -> Result<(usize, Self), ProtocolError> { - let (size, mut res) = VariantList::parse(&b)?; + let (size, mut res) = VariantList::parse(b)?; res.remove(0); diff --git a/src/message/signalproxy/initrequest.rs b/src/message/signalproxy/initrequest.rs index bf2f200..592a703 100644 --- a/src/message/signalproxy/initrequest.rs +++ b/src/message/signalproxy/initrequest.rs @@ -11,19 +11,18 @@ pub struct InitRequest { impl Serialize for InitRequest { fn serialize(&self) -> Result<Vec<std::primitive::u8>, ProtocolError> { - let mut res = VariantList::new(); - - res.push(Variant::i32(MessageType::InitRequest as i32)); - res.push(Variant::ByteArray(self.class_name.clone())); - res.push(Variant::ByteArray(self.object_name.clone())); - - res.serialize() + vec![ + Variant::i32(MessageType::InitRequest as i32), + Variant::ByteArray(self.class_name.clone()), + Variant::ByteArray(self.object_name.clone()), + ] + .serialize() } } impl Deserialize for InitRequest { fn parse(b: &[std::primitive::u8]) -> Result<(std::primitive::usize, Self), ProtocolError> { - let (size, mut res) = VariantList::parse(&b)?; + let (size, mut res) = VariantList::parse(b)?; res.remove(0); diff --git a/src/message/signalproxy/mod.rs b/src/message/signalproxy/mod.rs index 5107e9b..90cf7e5 100644 --- a/src/message/signalproxy/mod.rs +++ b/src/message/signalproxy/mod.rs @@ -131,6 +131,7 @@ where where Self: Sized, { + #[allow(clippy::match_single_binding)] match msg.slot_name.as_str() { _ => (), } @@ -170,6 +171,7 @@ pub trait StatefulSyncableClient: Syncable + translation::NetworkMap { where Self: Sized, { + #[allow(clippy::match_single_binding)] match msg.slot_name.as_str() { _ => (), } @@ -199,7 +201,7 @@ pub enum Message { /// Bidirectional RpcCall(RpcCall), InitRequest(InitRequest), - InitData(InitData), + InitData(Box<InitData>), /// Bidirectional HeartBeat(HeartBeat), /// Bidirectional @@ -238,32 +240,32 @@ impl Deserialize for Message { match MessageType::from(message_type) { MessageType::SyncMessage => { - let (size, res) = SyncMessage::parse(&b)?; + let (size, res) = SyncMessage::parse(b)?; Ok((size, Message::SyncMessage(res))) } MessageType::RpcCall => { - let (size, res) = RpcCall::parse(&b)?; + let (size, res) = RpcCall::parse(b)?; Ok((size, Message::RpcCall(res))) } MessageType::InitRequest => { - let (size, res) = InitRequest::parse(&b)?; + let (size, res) = InitRequest::parse(b)?; Ok((size, Message::InitRequest(res))) } MessageType::InitData => { - let (size, res) = InitData::parse(&b)?; + let (size, res) = InitData::parse(b)?; - Ok((size, Message::InitData(res))) + Ok((size, Message::InitData(Box::new(res)))) } MessageType::HeartBeat => { - let (size, res) = HeartBeat::parse(&b)?; + let (size, res) = HeartBeat::parse(b)?; Ok((size, Message::HeartBeat(res))) } MessageType::HeartBeatReply => { - let (size, res) = HeartBeatReply::parse(&b)?; + let (size, res) = HeartBeatReply::parse(b)?; Ok((size, Message::HeartBeatReply(res))) } diff --git a/src/message/signalproxy/objects/bufferviewmanager.rs b/src/message/signalproxy/objects/bufferviewmanager.rs index 683d937..1097ade 100644 --- a/src/message/signalproxy/objects/bufferviewmanager.rs +++ b/src/message/signalproxy/objects/bufferviewmanager.rs @@ -133,23 +133,16 @@ impl Syncable for BufferViewManager { impl super::NetworkList for BufferViewManager { fn to_network_list(&self) -> VariantList { - let mut res = Vec::with_capacity(2); - - res.push(Variant::ByteArray(s!("bufferViewIds"))); - res.push(Variant::VariantList( - self.buffer_view_configs - .iter() - .map(|(k, _)| i32::try_into(*k).unwrap()) - .collect(), - )); - - return res; + vec![ + Variant::ByteArray(s!("bufferViewIds")), + Variant::VariantList(self.buffer_view_configs.keys().map(|k| i32::into(*k)).collect()), + ] } fn from_network_list(input: &mut VariantList) -> Self { let mut i = input.iter(); i.position(|x| *x == Variant::ByteArray(String::from("BufferViewIds"))) - .expect(format!("failed to get field BufferViewIds").as_str()); + .expect("failed to get field BufferViewIds"); let ids = match i.next().expect("failed to get next field") { libquassel::primitive::Variant::VariantList(var) => var.clone(), @@ -174,15 +167,10 @@ impl super::NetworkMap for BufferViewManager { res.insert( s!("bufferViewIds"), - Variant::VariantList( - self.buffer_view_configs - .iter() - .map(|(k, _)| i32::try_into(*k).unwrap()) - .collect(), - ), + Variant::VariantList(self.buffer_view_configs.keys().map(|k| i32::into(*k)).collect()), ); - return res; + res } fn from_network_map(_input: &mut Self::Item) -> Self { diff --git a/src/message/signalproxy/objects/coreinfo.rs b/src/message/signalproxy/objects/coreinfo.rs index 4567762..5036abd 100644 --- a/src/message/signalproxy/objects/coreinfo.rs +++ b/src/message/signalproxy/objects/coreinfo.rs @@ -26,6 +26,7 @@ impl crate::message::StatefulSyncableClient for CoreInfo { where Self: Sized, { + #[allow(clippy::single_match)] match msg.slot_name.as_str() { "setCoreData" => self.set_core_data(CoreData::from_network_map(&mut get_param!(msg))), _ => (), diff --git a/src/message/signalproxy/objects/highlightrulemanager.rs b/src/message/signalproxy/objects/highlightrulemanager.rs index 0f1569a..7accb17 100644 --- a/src/message/signalproxy/objects/highlightrulemanager.rs +++ b/src/message/signalproxy/objects/highlightrulemanager.rs @@ -223,8 +223,10 @@ impl From<HighlightNickType> for Variant { } } +// TODO error handling impl From<Variant> for HighlightNickType { fn from(value: Variant) -> Self { + #[allow(clippy::unnecessary_fallible_conversions)] HighlightNickType::try_from(value).unwrap() } } diff --git a/src/message/signalproxy/objects/identity.rs b/src/message/signalproxy/objects/identity.rs index 6aa9830..ec7d9b4 100644 --- a/src/message/signalproxy/objects/identity.rs +++ b/src/message/signalproxy/objects/identity.rs @@ -81,7 +81,7 @@ impl Deserialize for Identity { Self: std::marker::Sized, { let (vlen, mut value) = VariantMap::parse(b)?; - return Ok((vlen, Self::from_network_map(&mut value))); + Ok((vlen, Self::from_network_map(&mut value))) } } diff --git a/src/message/signalproxy/objects/ircchannel.rs b/src/message/signalproxy/objects/ircchannel.rs index 9ca3474..9648210 100644 --- a/src/message/signalproxy/objects/ircchannel.rs +++ b/src/message/signalproxy/objects/ircchannel.rs @@ -47,7 +47,7 @@ impl Deserialize for IrcChannel { Self: std::marker::Sized, { let (vlen, mut value) = VariantMap::parse(b)?; - return Ok((vlen, Self::from_network_map(&mut value))); + Ok((vlen, Self::from_network_map(&mut value))) } } @@ -155,7 +155,7 @@ impl IrcChannel { None => warn!("tried to remove a user that is not joined to the channel"), } - if self.user_modes.len() == 0 + if self.user_modes.is_empty() /* nick.is_me() */ { // TODO Clean up channel and delete diff --git a/src/message/signalproxy/objects/ircuser.rs b/src/message/signalproxy/objects/ircuser.rs index 1969793..3b807ed 100644 --- a/src/message/signalproxy/objects/ircuser.rs +++ b/src/message/signalproxy/objects/ircuser.rs @@ -59,7 +59,7 @@ impl Deserialize for IrcUser { Self: std::marker::Sized, { let (vlen, mut value) = VariantMap::parse(b)?; - return Ok((vlen, Self::from_network_map(&mut value))); + Ok((vlen, Self::from_network_map(&mut value))) } } diff --git a/src/message/signalproxy/objects/mod.rs b/src/message/signalproxy/objects/mod.rs index 0fb16c6..999cd41 100644 --- a/src/message/signalproxy/objects/mod.rs +++ b/src/message/signalproxy/objects/mod.rs @@ -60,20 +60,20 @@ use crate::primitive::VariantList; // TODO Handle SyncedCoreInfo feature flag #[derive(Debug, Clone, PartialEq, From)] pub enum Types { - AliasManager(AliasManager), - BufferSyncer(BufferSyncer), - BufferViewConfig(BufferViewConfig), - BufferViewManager(BufferViewManager), - // CoreInfo(CoreInfo), - CoreData(CoreData), - HighlightRuleManager(HighlightRuleManager), - IgnoreListManager(IgnoreListManager), - CertManager(CertManager), - Network(network::Network), - NetworkInfo(NetworkInfo), - NetworkConfig(NetworkConfig), - IrcChannel(IrcChannel), - Unknown(VariantList), + AliasManager(Box<AliasManager>), + BufferSyncer(Box<BufferSyncer>), + BufferViewConfig(Box<BufferViewConfig>), + BufferViewManager(Box<BufferViewManager>), + // CoreInfo(Box< CoreInfo >), + CoreData(Box<CoreData>), + HighlightRuleManager(Box<HighlightRuleManager>), + IgnoreListManager(Box<IgnoreListManager>), + CertManager(Box<CertManager>), + Network(Box<network::Network>), + NetworkInfo(Box<NetworkInfo>), + NetworkConfig(Box<NetworkConfig>), + IrcChannel(Box<IrcChannel>), + Unknown(Box<VariantList>), } impl Types { @@ -93,37 +93,41 @@ impl Types { Types::NetworkInfo(val) => val.to_network_list(), Types::NetworkConfig(val) => val.to_network_list(), Types::IrcChannel(val) => val.to_network_list(), - Types::Unknown(val) => val.clone(), + Types::Unknown(val) => *val.clone(), } } pub fn from_network(class_name: &str, object_name: &str, input: &mut VariantList) -> Self { debug!("converting {} from network object: {:#?}", class_name, input); match class_name { - "AliasManager" => Types::AliasManager(AliasManager::from_network_list(input)), - "BufferSyncer" => Types::BufferSyncer(BufferSyncer::from_network_list(input)), + "AliasManager" => Types::AliasManager(Box::new(AliasManager::from_network_list(input))), + "BufferSyncer" => Types::BufferSyncer(Box::new(BufferSyncer::from_network_list(input))), "BufferViewConfig" => { let mut config = BufferViewConfig::from_network_list(input); config.buffer_view_id = object_name.parse().unwrap(); - Types::BufferViewConfig(config) + Types::BufferViewConfig(Box::new(config)) + } + "BufferViewManager" => { + Types::BufferViewManager(Box::new(BufferViewManager::from_network_list(input))) } - "BufferViewManager" => Types::BufferViewManager(BufferViewManager::from_network_list(input)), // "CoreInfo" => Types::CoreInfo(CoreInfo::from_network_map( // &mut input.remove(0).try_into().unwrap(), // )), - "CoreData" => Types::CoreData(CoreData::from_network_map( + "CoreData" => Types::CoreData(Box::new(CoreData::from_network_map( &mut input.remove(0).try_into().unwrap(), - )), + ))), "HighlightRuleManager" => { - Types::HighlightRuleManager(HighlightRuleManager::from_network_list(input)) + Types::HighlightRuleManager(Box::new(HighlightRuleManager::from_network_list(input))) + } + "IgnoreListManager" => { + Types::IgnoreListManager(Box::new(IgnoreListManager::from_network_list(input))) } - "IgnoreListManager" => Types::IgnoreListManager(IgnoreListManager::from_network_list(input)), - "CertManager" => Types::CertManager(CertManager::from_network_list(input)), - "Network" => Types::Network(Network::from_network_list(input)), - "NetworkInfo" => Types::NetworkInfo(NetworkInfo::from_network_list(input)), - "NetworkConfig" => Types::NetworkConfig(NetworkConfig::from_network_list(input)), - "IrcChannel" => Types::IrcChannel(IrcChannel::from_network_list(input)), - _ => Types::Unknown(input.to_owned()), + "CertManager" => Types::CertManager(Box::new(CertManager::from_network_list(input))), + "Network" => Types::Network(Box::new(Network::from_network_list(input))), + "NetworkInfo" => Types::NetworkInfo(Box::new(NetworkInfo::from_network_list(input))), + "NetworkConfig" => Types::NetworkConfig(Box::new(NetworkConfig::from_network_list(input))), + "IrcChannel" => Types::IrcChannel(Box::new(IrcChannel::from_network_list(input))), + _ => Types::Unknown(Box::new(input.to_owned())), } } } diff --git a/src/message/signalproxy/objects/network.rs b/src/message/signalproxy/objects/network.rs index a606537..3d2ee8b 100644 --- a/src/message/signalproxy/objects/network.rs +++ b/src/message/signalproxy/objects/network.rs @@ -71,23 +71,19 @@ impl Network { let default_prefixes = vec!['~', '&', '@', '%', '+']; let default_prefix_modes = vec!['q', 'a', 'o', 'h', 'v']; - match self.supports.get("PREFIX") { - Some(prefix) => { - if prefix.starts_with('(') { - let (prefix_modes, prefixes) = prefix[1..].split_once(')').unwrap(); - - self.prefix_modes = prefix_modes.chars().collect(); - self.prefixes = prefixes.chars().collect(); - } else { - self.prefixes = default_prefixes; - self.prefix_modes = default_prefix_modes; - } - } - None => { - self.prefixes = default_prefixes; - self.prefix_modes = default_prefix_modes; + if let Some(prefix) = self.supports.get("PREFIX") { + if let Some(prefix) = prefix.strip_prefix('(') { + let (prefix_modes, prefixes) = prefix.split_once(')').unwrap(); + + self.prefix_modes = prefix_modes.chars().collect(); + self.prefixes = prefixes.chars().collect(); + + return; } } + + self.prefixes = default_prefixes; + self.prefix_modes = default_prefix_modes; } pub fn add_channel(&mut self, name: &str, channel: IrcChannel) { @@ -280,6 +276,7 @@ impl crate::message::StatefulSyncableServer for Network { impl crate::message::signalproxy::NetworkList for Network { fn to_network_list(&self) -> VariantList { + #![allow(clippy::vec_init_then_push)] let mut res = VariantList::new(); res.push(Variant::ByteArray(s!("myNick"))); @@ -449,7 +446,7 @@ impl crate::message::signalproxy::NetworkList for Network { network.determine_channel_mode_types(); network.determine_prefixes(); - return network; + network } } @@ -526,7 +523,7 @@ impl crate::message::signalproxy::NetworkMap for Network { res.extend(self.network_info.to_network_map()); - return res; + res } fn from_network_map(input: &mut Self::Item) -> Self { @@ -648,7 +645,7 @@ impl Deserialize for NetworkServer { Self: std::marker::Sized, { let (vlen, mut value) = VariantMap::parse(b)?; - return Ok((vlen, Self::from_network_map(&mut value))); + Ok((vlen, Self::from_network_map(&mut value))) } } @@ -802,9 +799,9 @@ impl Default for ConnectionState { } } -impl Into<Variant> for ConnectionState { - fn into(self) -> Variant { - Variant::i32(self.to_i32().unwrap()) +impl From<ConnectionState> for Variant { + fn from(val: ConnectionState) -> Self { + Variant::i32(val.to_i32().unwrap()) } } diff --git a/src/message/signalproxy/objects/networkinfo.rs b/src/message/signalproxy/objects/networkinfo.rs index 4cd84dc..ba944e8 100644 --- a/src/message/signalproxy/objects/networkinfo.rs +++ b/src/message/signalproxy/objects/networkinfo.rs @@ -88,7 +88,7 @@ impl Deserialize for NetworkInfo { Self: std::marker::Sized, { let (vlen, mut value) = VariantMap::parse(b)?; - return Ok((vlen, Self::from_network_map(&mut value))); + Ok((vlen, Self::from_network_map(&mut value))) } } diff --git a/src/message/signalproxy/rpccall/client.rs b/src/message/signalproxy/rpccall/client.rs index 818b32c..7e31135 100644 --- a/src/message/signalproxy/rpccall/client.rs +++ b/src/message/signalproxy/rpccall/client.rs @@ -15,7 +15,7 @@ impl RpcCallType for KickClient { fn to_network(&self) -> Result<Vec<crate::primitive::Variant>, crate::ProtocolError> { Ok(vec![ Variant::ByteArray(Self::NAME.to_string()), - self.id.clone().into(), + self.id.into(), ]) } diff --git a/src/message/signalproxy/rpccall/identity.rs b/src/message/signalproxy/rpccall/identity.rs index 1672e98..15beec4 100644 --- a/src/message/signalproxy/rpccall/identity.rs +++ b/src/message/signalproxy/rpccall/identity.rs @@ -54,7 +54,7 @@ impl RpcCallType for RemoveIdentity { fn to_network(&self) -> Result<Vec<crate::primitive::Variant>, crate::ProtocolError> { Ok(vec![ Variant::ByteArray(Self::NAME.to_string()), - Variant::IdentityId(self.identity_id.clone()), + Variant::IdentityId(self.identity_id), ]) } @@ -120,7 +120,7 @@ impl RpcCallType for IdentityRemoved { fn to_network(&self) -> Result<Vec<crate::primitive::Variant>, crate::ProtocolError> { Ok(vec![ Variant::ByteArray(Self::NAME.to_string()), - Variant::IdentityId(self.identity_id.clone()), + Variant::IdentityId(self.identity_id), ]) } diff --git a/src/message/signalproxy/rpccall/mod.rs b/src/message/signalproxy/rpccall/mod.rs index c30d462..2a3e7b1 100644 --- a/src/message/signalproxy/rpccall/mod.rs +++ b/src/message/signalproxy/rpccall/mod.rs @@ -106,7 +106,7 @@ impl Serialize for RpcCall { impl Deserialize for RpcCall { fn parse(b: &[std::primitive::u8]) -> Result<(std::primitive::usize, Self), ProtocolError> { - let (size, mut res) = VariantList::parse(&b)?; + let (size, mut res) = VariantList::parse(b)?; res.remove(0); @@ -130,7 +130,7 @@ impl Deserialize for RpcCall { DisconnectFromCore::NAME => DisconnectFromCore::from_network(size, &mut res), ObjectRenamed::NAME => ObjectRenamed::from_network(size, &mut res), BufferInfoUpdated::NAME => BufferInfoUpdated::from_network(size, &mut res), - _ => return Ok((size, RpcCall::NotImplemented)), + _ => Ok((size, RpcCall::NotImplemented)), } } } diff --git a/src/message/signalproxy/rpccall/network.rs b/src/message/signalproxy/rpccall/network.rs index aeb3f80..738dddf 100644 --- a/src/message/signalproxy/rpccall/network.rs +++ b/src/message/signalproxy/rpccall/network.rs @@ -53,7 +53,7 @@ impl RpcCallType for RemoveNetwork { fn to_network(&self) -> Result<Vec<crate::primitive::Variant>, crate::ProtocolError> { Ok(vec![ Variant::ByteArray(Self::NAME.to_string()), - self.network_id.clone().into(), + self.network_id.into(), ]) } @@ -86,7 +86,7 @@ impl RpcCallType for NetworkCreated { fn to_network(&self) -> Result<Vec<crate::primitive::Variant>, crate::ProtocolError> { Ok(vec![ Variant::ByteArray(Self::NAME.to_string()), - self.network_id.clone().into(), + self.network_id.into(), ]) } @@ -119,7 +119,7 @@ impl RpcCallType for NetworkRemoved { fn to_network(&self) -> Result<Vec<crate::primitive::Variant>, crate::ProtocolError> { Ok(vec![ Variant::ByteArray(Self::NAME.to_string()), - self.network_id.clone().into(), + self.network_id.into(), ]) } diff --git a/src/message/signalproxy/rpccall/passwordchange.rs b/src/message/signalproxy/rpccall/passwordchange.rs index b96b926..16bf78f 100644 --- a/src/message/signalproxy/rpccall/passwordchange.rs +++ b/src/message/signalproxy/rpccall/passwordchange.rs @@ -21,7 +21,7 @@ impl RpcCallType for ChangePassword { fn to_network(&self) -> Result<Vec<crate::primitive::Variant>, crate::ProtocolError> { Ok(vec![ Variant::ByteArray(Self::NAME.to_string()), - self.peer.clone().into(), + self.peer.into(), self.user.clone().into(), self.before.clone().into(), self.after.clone().into(), @@ -64,8 +64,8 @@ impl RpcCallType for PasswordChanged { fn to_network(&self) -> Result<Vec<crate::primitive::Variant>, crate::ProtocolError> { Ok(vec![ Variant::ByteArray(Self::NAME.to_string()), - self.peer.clone().into(), - self.success.clone().into(), + self.peer.into(), + self.success.into(), ]) } diff --git a/src/message/signalproxy/syncmessage.rs b/src/message/signalproxy/syncmessage.rs index bb61d7c..b124d07 100644 --- a/src/message/signalproxy/syncmessage.rs +++ b/src/message/signalproxy/syncmessage.rs @@ -90,12 +90,12 @@ pub struct SyncMessage { impl Serialize for SyncMessage { fn serialize(&self) -> Result<Vec<std::primitive::u8>, ProtocolError> { - let mut res = VariantList::new(); - - res.push(Variant::i32(MessageType::SyncMessage as i32)); - res.push(Variant::ByteArray(self.class_name.as_str().to_owned())); - res.push(Variant::ByteArray(self.object_name.clone())); - res.push(Variant::ByteArray(self.slot_name.clone())); + let mut res = vec![ + Variant::i32(MessageType::SyncMessage as i32), + Variant::ByteArray(self.class_name.as_str().to_owned()), + Variant::ByteArray(self.object_name.clone()), + Variant::ByteArray(self.slot_name.clone()), + ]; res.append(&mut self.params.clone()); diff --git a/src/primitive/bufferid.rs b/src/primitive/bufferid.rs index 334e976..7d9b2bc 100644 --- a/src/primitive/bufferid.rs +++ b/src/primitive/bufferid.rs @@ -23,7 +23,7 @@ impl Serialize for BufferId { impl Deserialize for BufferId { fn parse(b: &[u8]) -> Result<(usize, Self), ProtocolError> { let (size, value) = i32::parse(b)?; - return Ok((size, BufferId(value))); + Ok((size, BufferId(value))) } } diff --git a/src/primitive/bufferinfo.rs b/src/primitive/bufferinfo.rs index 56d5cce..25edd0f 100644 --- a/src/primitive/bufferinfo.rs +++ b/src/primitive/bufferinfo.rs @@ -46,7 +46,7 @@ impl Deserialize for BufferInfo { // TODO is groupid let (size, name) = String::parse_utf8(&b[14..])?; - return Ok(( + Ok(( 14 + size, Self { id, @@ -54,7 +54,7 @@ impl Deserialize for BufferInfo { buffer_type: BufferType::from(buffer_type), name, }, - )); + )) } } @@ -75,10 +75,10 @@ pub enum BufferType { impl From<i16> for BufferType { fn from(value: i16) -> Self { match value { - 0x01 => return Self::Status, - 0x02 => return Self::Channel, - 0x04 => return Self::Query, - 0x08 => return Self::Group, + 0x01 => Self::Status, + 0x02 => Self::Channel, + 0x04 => Self::Query, + 0x08 => Self::Group, _ => unimplemented!(), } } diff --git a/src/primitive/datetime.rs b/src/primitive/datetime.rs index 42f6d14..13c367b 100644 --- a/src/primitive/datetime.rs +++ b/src/primitive/datetime.rs @@ -48,7 +48,7 @@ impl Serialize for OffsetDateTime { fn serialize(&self) -> Result<Vec<u8>, ProtocolError> { let mut values: Vec<u8> = Vec::new(); - values.extend(i32::serialize(&(self.date().to_julian_day() as i32))?); + values.extend(i32::serialize(&self.date().to_julian_day())?); let time: i32 = { let hour: i32 = self.time().hour() as i32; @@ -82,21 +82,20 @@ impl Deserialize for OffsetDateTime { return Ok((pos, OffsetDateTime::UNIX_EPOCH)); } - let offset: UtcOffset; - match zone { + let offset = match zone { TimeSpec::LocalUnknown | TimeSpec::LocalStandard | TimeSpec::LocalDST => { - offset = UtcOffset::current_local_offset().unwrap_or_else(|_| { + UtcOffset::current_local_offset().unwrap_or_else(|_| { log::warn!("could not get local offset defaulting to utc"); UtcOffset::UTC }) } - TimeSpec::UTC => offset = UtcOffset::UTC, + TimeSpec::UTC => UtcOffset::UTC, TimeSpec::OffsetFromUTC => { let (_, tmp_offset) = i32::parse(&b[9..13])?; pos += 4; - offset = UtcOffset::from_whole_seconds(tmp_offset).unwrap_or(UtcOffset::UTC) + UtcOffset::from_whole_seconds(tmp_offset).unwrap_or(UtcOffset::UTC) } - } + }; let date = Date::from_julian_day(julian_day)?; @@ -121,7 +120,7 @@ impl Serialize for Date { fn serialize(&self) -> Result<Vec<std::primitive::u8>, ProtocolError> { let mut values: Vec<u8> = Vec::new(); - values.extend(i32::serialize(&(self.to_julian_day() as i32))?); + values.extend(i32::serialize(&self.to_julian_day())?); Ok(values) } diff --git a/src/primitive/identityid.rs b/src/primitive/identityid.rs index 850cfb5..309bd29 100644 --- a/src/primitive/identityid.rs +++ b/src/primitive/identityid.rs @@ -20,7 +20,7 @@ impl Serialize for IdentityId { impl Deserialize for IdentityId { fn parse(b: &[u8]) -> Result<(usize, Self), ProtocolError> { let (size, value) = i32::parse(b)?; - return Ok((size, IdentityId(value))); + Ok((size, IdentityId(value))) } } diff --git a/src/primitive/message.rs b/src/primitive/message.rs index 624ff49..e558570 100644 --- a/src/primitive/message.rs +++ b/src/primitive/message.rs @@ -60,7 +60,7 @@ impl Serialize for Message { values.append(&mut i32::serialize(&(self.timestamp as i32))?); values.append(&mut i32::serialize(&(self.msg_type.bits()))?); - values.append(&mut i8::serialize(&(self.flags as i8))?); + values.append(&mut i8::serialize(&self.flags)?); values.append(&mut BufferInfo::serialize(&self.buffer)?); values.append(&mut String::serialize_utf8(&self.sender)?); @@ -75,7 +75,7 @@ impl Serialize for Message { values.append(&mut String::serialize_utf8(&self.content)?); - return Ok(values); + Ok(values) } } @@ -138,7 +138,7 @@ impl Deserialize for Message { let (parsed, content) = String::parse_utf8(&b[pos..])?; pos += parsed; - return Ok(( + Ok(( pos, Self { msg_id, @@ -155,7 +155,7 @@ impl Deserialize for Message { avatar_url, content, }, - )); + )) } } @@ -203,7 +203,7 @@ where res.push((*v).clone().bits().into()); }); - return res; + res } fn from_network_list(input: &mut VariantList) -> Self { @@ -224,7 +224,7 @@ where ); }); - return res; + res } } diff --git a/src/primitive/msgid.rs b/src/primitive/msgid.rs index 9ae8d9c..dcf9727 100644 --- a/src/primitive/msgid.rs +++ b/src/primitive/msgid.rs @@ -27,7 +27,7 @@ impl Deserialize for MsgId { let (size, value) = i32::parse(b)?; #[cfg(feature = "long-message-id")] let (size, value) = i64::parse(b)?; - return Ok((size, MsgId(value))); + Ok((size, MsgId(value))) } } diff --git a/src/primitive/networkid.rs b/src/primitive/networkid.rs index 1cfff61..6eead73 100644 --- a/src/primitive/networkid.rs +++ b/src/primitive/networkid.rs @@ -20,7 +20,7 @@ impl Serialize for NetworkId { impl Deserialize for NetworkId { fn parse(b: &[u8]) -> Result<(usize, Self), ProtocolError> { let (size, value) = i32::parse(b)?; - return Ok((size, NetworkId(value))); + Ok((size, NetworkId(value))) } } diff --git a/src/primitive/peerptr.rs b/src/primitive/peerptr.rs index 499be41..f5fc042 100644 --- a/src/primitive/peerptr.rs +++ b/src/primitive/peerptr.rs @@ -23,7 +23,7 @@ impl Serialize for PeerPtr { impl Deserialize for PeerPtr { fn parse(b: &[u8]) -> Result<(usize, Self), crate::error::ProtocolError> { let (size, value) = i64::parse(b)?; - return Ok((size, PeerPtr(value))); + Ok((size, PeerPtr(value))) } } diff --git a/src/primitive/string.rs b/src/primitive/string.rs index 7f8ec58..0d3e344 100644 --- a/src/primitive/string.rs +++ b/src/primitive/string.rs @@ -14,7 +14,7 @@ impl Deserialize for char { let (slen, qchar): (usize, u16) = u16::parse(&b[0..2])?; let qchar = char::from_u32(qchar as u32).ok_or(ProtocolError::CharError)?; - return Ok((slen, qchar)); + Ok((slen, qchar)) } } @@ -23,7 +23,7 @@ impl Serialize for char { let mut b = [0, 0]; self.encode_utf16(&mut b); - return Ok(b[0].to_be_bytes().to_vec()); + Ok(b[0].to_be_bytes().to_vec()) } } @@ -55,13 +55,13 @@ impl VariantType for String { /// Strings can only be serialized as UTF-8 null-terminated ByteArrays with (de)serialize_utf8(). impl Serialize for &str { fn serialize(&self) -> Result<Vec<u8>, ProtocolError> { - let mut res: Vec<u8> = Vec::new(); + let mut res = Vec::new(); self.encode_utf16() .for_each(|i| res.extend(i.to_be_bytes().iter())); util::prepend_byte_len(&mut res); - return Ok(res); + Ok(res) } } @@ -70,7 +70,7 @@ impl SerializeUTF8 for &str { let mut res: Vec<u8> = Vec::new(); res.extend(self.bytes()); util::prepend_byte_len(&mut res); - return Ok(res); + Ok(res) } } @@ -101,7 +101,7 @@ impl Deserialize for String { let res: String = String::from_utf16(&chars).unwrap(); trace!("parsed string: {}", res); - return Ok((pos, res)); + Ok((pos, res)) } } @@ -123,14 +123,14 @@ impl DeserializeUTF8 for String { // If the last byte is zero remove it // Receiving a string as bytearray will sometimes have // the string null terminated - if res.chars().last().unwrap() == '\u{0}' { + if res.ends_with('\u{0}') { let _ = res.pop(); } trace!("parsed string after trunc: {}", res); trace!("parsed bytes: {:x?}", &b[0..ulen]); - return Ok((ulen + 4, res)); + Ok((ulen + 4, res)) } } diff --git a/src/primitive/stringlist.rs b/src/primitive/stringlist.rs index 292557f..c4ce733 100644 --- a/src/primitive/stringlist.rs +++ b/src/primitive/stringlist.rs @@ -24,7 +24,7 @@ impl Serialize for StringList { res.extend(x.serialize()?); } - return Ok(res); + Ok(res) } } @@ -43,7 +43,7 @@ impl Deserialize for StringList { } } - return Ok((pos, res)); + Ok((pos, res)) } } @@ -70,8 +70,7 @@ pub fn string_list_deserialize() { 0, 0, 0, 1, 0, 0, 0, 20, 0, 67, 0, 111, 0, 110, 0, 102, 0, 105, 0, 103, 0, 117, 0, 114, 0, 101, 0, 100, 0, 0, 0, 1, ]; - let mut test_list = StringList::new(); - test_list.push("Configured".to_string()); + let test_list = vec!["Configured".to_string()]; let (len, res) = StringList::parse(test_bytes).unwrap(); assert_eq!(len, 28); assert_eq!(test_list, res); diff --git a/src/primitive/unsignedint.rs b/src/primitive/unsignedint.rs index a51ca6f..8176a9d 100644 --- a/src/primitive/unsignedint.rs +++ b/src/primitive/unsignedint.rs @@ -44,7 +44,7 @@ impl Serialize for u64 { impl Deserialize for u64 { fn parse(b: &[u8]) -> Result<(usize, Self), ProtocolError> { let mut rdr = Cursor::new(&b[0..8]); - return Ok((8, rdr.read_u64::<BigEndian>()?)); + Ok((8, rdr.read_u64::<BigEndian>()?)) } } @@ -61,7 +61,7 @@ impl Serialize for u32 { impl Deserialize for u32 { fn parse(b: &[u8]) -> Result<(usize, Self), ProtocolError> { let mut rdr = Cursor::new(&b[0..4]); - return Ok((4, rdr.read_u32::<BigEndian>()?)); + Ok((4, rdr.read_u32::<BigEndian>()?)) } } @@ -78,7 +78,7 @@ impl Serialize for u16 { impl Deserialize for u16 { fn parse(b: &[u8]) -> Result<(usize, Self), ProtocolError> { let mut rdr = Cursor::new(&b[0..2]); - return Ok((2, rdr.read_u16::<BigEndian>()?)); + Ok((2, rdr.read_u16::<BigEndian>()?)) } } @@ -94,7 +94,7 @@ impl Serialize for u8 { impl Deserialize for u8 { fn parse(b: &[u8]) -> Result<(usize, Self), ProtocolError> { - return Ok((1, b[0])); + Ok((1, b[0])) } } diff --git a/src/primitive/variant.rs b/src/primitive/variant.rs index 61e6752..14a96a7 100644 --- a/src/primitive/variant.rs +++ b/src/primitive/variant.rs @@ -100,7 +100,7 @@ where res.push((*v).clone().into()); }); - return res; + res } fn from_network_list(input: &mut VariantList) -> Self { @@ -119,7 +119,7 @@ where ); }); - return res; + res } } @@ -136,12 +136,12 @@ where res.insert(k.clone(), (*v).clone().into()); }); - return res; + res } fn from_network_map(input: &mut Self::Item) -> Self { input - .into_iter() + .iter_mut() .map(|(k, v)| { ( k.clone(), @@ -217,14 +217,14 @@ impl Deserialize for Variant { let len = 5; match qtype { - VariantMap::TYPE => return VariantMap::parse_variant(b, len), - VariantList::TYPE => return VariantList::parse_variant(b, len), - char::TYPE => return char::parse_variant(b, len), + VariantMap::TYPE => VariantMap::parse_variant(b, len), + VariantList::TYPE => VariantList::parse_variant(b, len), + char::TYPE => char::parse_variant(b, len), String::TYPE => String::parse_variant(b, len), primitive::QBYTEARRAY => { trace!(target: "primitive::Variant", "Parsing Variant: ByteArray"); let (vlen, value) = String::parse_utf8(&b[len..])?; - return Ok((len + vlen, Variant::ByteArray(value.clone()))); + Ok((len + vlen, Variant::ByteArray(value.clone()))) } StringList::TYPE => StringList::parse_variant(b, len), DateTime::TYPE => DateTime::parse_variant(b, len), @@ -265,7 +265,7 @@ impl Deserialize for Variant { } err => { error!(target: "parser", "UnknownVariant: {:x?}", err); - return Err(ProtocolError::UnknownVariant); + Err(ProtocolError::UnknownVariant) } } } @@ -392,8 +392,7 @@ mod tests { #[test] pub fn variantlist_serialize() { - let mut test_variantlist = VariantList::new(); - test_variantlist.push(Variant::bool(true)); + let test_variantlist = vec![Variant::bool(true)]; assert_eq!( test_variantlist.serialize().unwrap(), [0, 0, 0, 1, 0, 0, 0, 1, 0, 1] @@ -404,8 +403,7 @@ mod tests { pub fn variantlist_deserialize() { let test_bytes: &[u8] = &[0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1]; let (len, res) = VariantList::parse(test_bytes).unwrap(); - let mut test_variantlist = VariantList::new(); - test_variantlist.push(Variant::bool(true)); + let test_variantlist = vec![Variant::bool(true)]; assert_eq!(len, 10); assert_eq!(res, test_variantlist); } diff --git a/src/primitive/variantlist.rs b/src/primitive/variantlist.rs index 20913ff..2b5d58e 100644 --- a/src/primitive/variantlist.rs +++ b/src/primitive/variantlist.rs @@ -24,7 +24,7 @@ impl Serialize for VariantList { res.extend(v.serialize()?.iter()); } - return Ok(res); + Ok(res) } } @@ -43,7 +43,7 @@ impl Deserialize for VariantList { pos += vlen; } - return Ok((pos, res)); + Ok((pos, res)) } } diff --git a/src/primitive/variantmap.rs b/src/primitive/variantmap.rs index 4953f25..f84afd2 100644 --- a/src/primitive/variantmap.rs +++ b/src/primitive/variantmap.rs @@ -17,7 +17,7 @@ use crate::serialize::VariantType; pub type VariantMap = HashMap<String, Variant>; impl Serialize for VariantMap { - fn serialize<'a>(&'a self) -> Result<Vec<u8>, ProtocolError> { + fn serialize(&self) -> Result<Vec<u8>, ProtocolError> { let mut res: Vec<u8> = Vec::new(); for (k, v) in self { @@ -28,7 +28,7 @@ impl Serialize for VariantMap { let len: i32 = self.len().try_into()?; util::insert_bytes(0, &mut res, &mut len.to_be_bytes()); - return Ok(res); + Ok(res) } } @@ -51,7 +51,7 @@ impl Deserialize for VariantMap { map.insert(name, value); } - return Ok((pos, map)); + Ok((pos, map)) } } diff --git a/src/serialize.rs b/src/serialize.rs index dffd0c3..cc03172 100644 --- a/src/serialize.rs +++ b/src/serialize.rs @@ -163,7 +163,7 @@ where { fn parse_variant(b: &[u8], len: usize) -> Result<(usize, Variant), ProtocolError> { let (vlen, value) = Self::parse(&b[len..])?; - return Ok((len + vlen, value.into())); + Ok((len + vlen, value.into())) } } diff --git a/src/session.rs b/src/session.rs index d4a788b..6b00916 100644 --- a/src/session.rs +++ b/src/session.rs @@ -170,17 +170,17 @@ pub trait SessionManager { /// TODO handle automatic sending of InitRequest for whatever objects will need that. fn init(&mut self, data: InitData) { match data.init_data { - Types::AliasManager(data) => self.alias_manager().init(data), - Types::BufferSyncer(data) => self.buffer_syncer().init(data), - Types::BufferViewConfig(data) => self.buffer_view_manager().init_buffer_view_config(data), - Types::BufferViewManager(data) => self.buffer_view_manager().init(data), - Types::CoreData(data) => self.core_info().set_core_data(data), - Types::HighlightRuleManager(data) => self.highlight_rule_manager().init(data), - Types::IgnoreListManager(data) => self.ignore_list_manager().init(data), - Types::CertManager(data) => self.cert_manager().init(data), + Types::AliasManager(data) => self.alias_manager().init(*data), + Types::BufferSyncer(data) => self.buffer_syncer().init(*data), + Types::BufferViewConfig(data) => self.buffer_view_manager().init_buffer_view_config(*data), + Types::BufferViewManager(data) => self.buffer_view_manager().init(*data), + Types::CoreData(data) => self.core_info().set_core_data(*data), + Types::HighlightRuleManager(data) => self.highlight_rule_manager().init(*data), + Types::IgnoreListManager(data) => self.ignore_list_manager().init(*data), + Types::CertManager(data) => self.cert_manager().init(*data), Types::Network(network) => { let id: NetworkId = NetworkId(data.object_name.parse().unwrap()); - self.networks().insert(id, network); + self.networks().insert(id, *network); } Types::NetworkInfo(_) => (), Types::NetworkConfig(_) => (), @@ -189,7 +189,7 @@ pub trait SessionManager { let id: i32 = name.next().unwrap().parse().unwrap(); let name = name.next().unwrap(); if let Some(network) = self.network(id) { - network.add_channel(name, channel) + network.add_channel(name, *channel) } } Types::Unknown(_) => (), |
