Skip to content

Commit 92ffdae

Browse files
Egor IvkovКирилл Безуглый
authored andcommitted
chore: get rid of confusing clone
1 parent 5619abe commit 92ffdae

File tree

1 file changed

+11
-14
lines changed

1 file changed

+11
-14
lines changed

tarantool-proc/src/lib.rs

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -876,17 +876,16 @@ mod msgpack {
876876
Fields::Unit => {
877877
quote! {
878878
// https://doc.rust-lang.org/beta/unstable-book/language-features/try-blocks.html (2016 -_-)
879-
let mut r_copied = r.clone();
879+
let mut r_try = *r;
880880
let mut try_unit = || -> Result<(), #tarantool_crate::msgpack::DecodeError> {
881-
let () = #tarantool_crate::msgpack::Decode::decode(r, context)
881+
let () = #tarantool_crate::msgpack::Decode::decode(&mut r_try, context)
882882
.map_err(|err| #tarantool_crate::msgpack::DecodeError::new::<Self>(err))?;
883883
checker = Some(Self::#variant_ident);
884884
Ok(())
885885
};
886886

887887
if try_unit().is_ok() {
888-
let diff_len = r.len() - r_copied.len();
889-
*r = &r[diff_len..];
888+
*r = r_try;
890889
return Result::<Self, #tarantool_crate::msgpack::DecodeError>::Ok(checker.unwrap());
891890
}
892891
}
@@ -904,7 +903,7 @@ mod msgpack {
904903
let var_type = &field.ty;
905904

906905
let out = quote_spanned! {field.span()=>
907-
let #var_name: #var_type = #tarantool_crate::msgpack::Decode::decode(r_copied, context)
906+
let #var_name: #var_type = #tarantool_crate::msgpack::Decode::decode(&mut r_try, context)
908907
.map_err(|err| #tarantool_crate::msgpack::DecodeError::new::<Self>(err).with_part(format!("field {}", #index)))?;
909908
};
910909

@@ -914,9 +913,9 @@ mod msgpack {
914913
.collect();
915914
quote! {
916915
// https://doc.rust-lang.org/beta/unstable-book/language-features/try-blocks.html (2016 -_-)
917-
let mut r_copied = &mut r.clone();
916+
let mut r_try = *r;
918917
let mut try_unnamed = || -> Result<(), #tarantool_crate::msgpack::DecodeError> {
919-
let amount = #tarantool_crate::msgpack::rmp::decode::read_array_len(r_copied)
918+
let amount = #tarantool_crate::msgpack::rmp::decode::read_array_len(&mut r_try)
920919
.map_err(|err| #tarantool_crate::msgpack::DecodeError::new::<Self>(err))?;
921920
if amount as usize != #fields_amount {
922921
Err(#tarantool_crate::msgpack::DecodeError::new::<Self>("non-equal amount of type fields"))?;
@@ -929,8 +928,7 @@ mod msgpack {
929928
};
930929

931930
if try_unnamed().is_ok() {
932-
let diff_len = r.len() - r_copied.len();
933-
*r = &r[diff_len..];
931+
*r = r_try;
934932
return Result::<Self, #tarantool_crate::msgpack::DecodeError>::Ok(checker.unwrap());
935933
}
936934
}
@@ -948,7 +946,7 @@ mod msgpack {
948946
let var_type = &field.ty;
949947

950948
let out = quote_spanned! {field.span()=>
951-
let #var_name: #var_type = #tarantool_crate::msgpack::Decode::decode(r_copied, context)
949+
let #var_name: #var_type = #tarantool_crate::msgpack::Decode::decode(&mut r_try, context)
952950
.map_err(|err| #tarantool_crate::msgpack::DecodeError::new::<Self>(err).with_part(format!("field {}", stringify!(#field_ident))))?;
953951
};
954952

@@ -958,9 +956,9 @@ mod msgpack {
958956
.collect();
959957
quote! {
960958
// https://doc.rust-lang.org/beta/unstable-book/language-features/try-blocks.html (2016 -_-)
961-
let mut r_copied = &mut r.clone();
959+
let mut r_try = *r;
962960
let mut try_named = || -> Result<(), #tarantool_crate::msgpack::DecodeError> {
963-
let amount = #tarantool_crate::msgpack::rmp::decode::read_array_len(r_copied)
961+
let amount = #tarantool_crate::msgpack::rmp::decode::read_array_len(&mut r_try)
964962
.map_err(|err| #tarantool_crate::msgpack::DecodeError::new::<Self>(err))?;
965963
if amount as usize != #fields_amount {
966964
Err(#tarantool_crate::msgpack::DecodeError::new::<Self>("non-equal amount of type fields"))?;
@@ -973,8 +971,7 @@ mod msgpack {
973971
};
974972

975973
if try_named().is_ok() {
976-
let diff_len = r.len() - r_copied.len();
977-
*r = &r[diff_len..];
974+
*r = r_try;
978975
return Result::<Self, #tarantool_crate::msgpack::DecodeError>::Ok(checker.unwrap());
979976
}
980977
}

0 commit comments

Comments
 (0)