diff --git a/substrate/client/chain-spec/derive/src/impls.rs b/substrate/client/chain-spec/derive/src/impls.rs
index 73634dcca42e506ba8d696e289b7d2d5a0b8c918..23415903b46491987a772e9d6647302cc7e5a49d 100644
--- a/substrate/client/chain-spec/derive/src/impls.rs
+++ b/substrate/client/chain-spec/derive/src/impls.rs
@@ -76,7 +76,7 @@ pub fn group_derive(ast: &DeriveInput) -> proc_macro::TokenStream {
 		let (impl_generics, ty_generics, where_clause) = generics.split_for_impl();
 		let fork_name = Ident::new(&format!("{}Fork", name), Span::call_site());
 
-		let fork_fields = generate_fork_fields(&crate_name, &field_names, &field_types);
+		let fork_fields = generate_fork_fields(crate_name, &field_names, &field_types);
 		let to_fork = generate_base_to_fork(&fork_name, &field_names);
 		let combine_with = generate_combine_with(&field_names);
 		let to_base = generate_fork_to_base(name, &field_names);
@@ -88,7 +88,7 @@ pub fn group_derive(ast: &DeriveInput) -> proc_macro::TokenStream {
 					Error::new(Span::call_site(), &format!("Could not find `serde` crate: {}", e))
 						.to_compile_error();
 
-				return quote!( #err ).into()
+				return quote!( #err )
 			},
 		};
 
diff --git a/substrate/frame/staking/reward-curve/src/lib.rs b/substrate/frame/staking/reward-curve/src/lib.rs
index c225c9045783528f66e57f0e303fb5c0cb6fccd0..076c3682ab411fca872745c5a696716bed5a4c13 100644
--- a/substrate/frame/staking/reward-curve/src/lib.rs
+++ b/substrate/frame/staking/reward-curve/src/lib.rs
@@ -62,14 +62,14 @@ use syn::parse::{Parse, ParseStream};
 /// use sp_runtime::curve::PiecewiseLinear;
 ///
 /// pallet_staking_reward_curve::build! {
-/// 	const I_NPOS: PiecewiseLinear<'static> = curve!(
-/// 		min_inflation: 0_025_000,
-/// 		max_inflation: 0_100_000,
-/// 		ideal_stake: 0_500_000,
-/// 		falloff: 0_050_000,
-/// 		max_piece_count: 40,
-/// 		test_precision: 0_005_000,
-/// 	);
+///     const I_NPOS: PiecewiseLinear<'static> = curve!(
+///         min_inflation: 0_025_000,
+///         max_inflation: 0_100_000,
+///         ideal_stake: 0_500_000,
+///         falloff: 0_050_000,
+///         max_piece_count: 40,
+///         test_precision: 0_005_000,
+///     );
 /// }
 /// ```
 #[proc_macro]
@@ -163,9 +163,9 @@ fn parse_field<Token: Parse + Default + ToTokens>(
 	input: ParseStream,
 	bounds: Bounds,
 ) -> syn::Result<u32> {
-	<Token>::parse(&input)?;
-	<syn::Token![:]>::parse(&input)?;
-	let value_lit = syn::LitInt::parse(&input)?;
+	<Token>::parse(input)?;
+	<syn::Token![:]>::parse(input)?;
+	let value_lit = syn::LitInt::parse(input)?;
 	let value: u32 = value_lit.base10_parse()?;
 	if !bounds.check(value) {
 		return Err(syn::Error::new(
@@ -186,15 +186,15 @@ impl Parse for INposInput {
 	fn parse(input: ParseStream) -> syn::Result<Self> {
 		let args_input;
 
-		<syn::Token![const]>::parse(&input)?;
-		let ident = <syn::Ident>::parse(&input)?;
-		<syn::Token![:]>::parse(&input)?;
-		let typ = <syn::Type>::parse(&input)?;
-		<syn::Token![=]>::parse(&input)?;
-		<keyword::curve>::parse(&input)?;
-		<syn::Token![!]>::parse(&input)?;
+		<syn::Token![const]>::parse(input)?;
+		let ident = <syn::Ident>::parse(input)?;
+		<syn::Token![:]>::parse(input)?;
+		let typ = <syn::Type>::parse(input)?;
+		<syn::Token![=]>::parse(input)?;
+		<keyword::curve>::parse(input)?;
+		<syn::Token![!]>::parse(input)?;
 		syn::parenthesized!(args_input in input);
-		<syn::Token![;]>::parse(&input)?;
+		<syn::Token![;]>::parse(input)?;
 
 		if !input.is_empty() {
 			return Err(input.error("expected end of input stream, no token expected"))
@@ -288,9 +288,7 @@ impl INPoS {
 fn compute_points(input: &INposInput) -> Vec<(u32, u32)> {
 	let inpos = INPoS::from_input(input);
 
-	let mut points = vec![];
-	points.push((0, inpos.i_0));
-	points.push((inpos.x_ideal, inpos.i_ideal_times_x_ideal));
+	let mut points = vec![(0, inpos.i_0), (inpos.x_ideal, inpos.i_ideal_times_x_ideal)];
 
 	// For each point p: (next_p.0 - p.0) < segment_length && (next_p.1 - p.1) < segment_length.
 	// This ensures that the total number of segment doesn't overflow max_piece_count.
@@ -445,5 +443,4 @@ fn generate_test_module(input: &INposInput) -> TokenStream2 {
 			}
 		}
 	)
-	.into()
 }
diff --git a/substrate/frame/staking/reward-curve/src/log.rs b/substrate/frame/staking/reward-curve/src/log.rs
index 06d2000619b5c82802458fa91b5d99e903259f15..c196aaaa31a930ef0be1839444cd35fcaed04126 100644
--- a/substrate/frame/staking/reward-curve/src/log.rs
+++ b/substrate/frame/staking/reward-curve/src/log.rs
@@ -46,14 +46,14 @@ pub fn log2(p: u32, q: u32) -> u32 {
 
 	// find the power of 2 where q * 2^n <= p < q * 2^(n+1)
 	let mut n = 0u32;
-	while !(p >= pow2!(n) * q) || !(p < pow2!(n + 1) * q) {
+	while (p < pow2!(n) * q) || (p >= pow2!(n + 1) * q) {
 		n += 1;
 		assert!(n < 32); // cannot represent 2^32 in u32
 	}
 	assert!(p < pow2!(n + 1) * q);
 
-	let y_num: u32 = (p - pow2!(n) * q).try_into().unwrap();
-	let y_den: u32 = (p + pow2!(n) * q).try_into().unwrap();
+	let y_num: u32 = p - pow2!(n) * q;
+	let y_den: u32 = p + pow2!(n) * q;
 
 	// Loop through each Taylor series coefficient until it reaches 10^-6
 	let mut res = n * 1_000_000u32;
diff --git a/substrate/primitives/npos-elections/compact/src/lib.rs b/substrate/primitives/npos-elections/compact/src/lib.rs
index 4bf8e8a4de403d1d65b822066629bce1e1cd2de2..5897e607cfa6c87004b7914f266059fb39f5bba7 100644
--- a/substrate/primitives/npos-elections/compact/src/lib.rs
+++ b/substrate/primitives/npos-elections/compact/src/lib.rs
@@ -89,7 +89,7 @@ pub fn generate_solution_type(item: TokenStream) -> TokenStream {
 
 	let solution_struct = struct_def(
 		vis,
-		ident.clone(),
+		ident,
 		count,
 		voter_type.clone(),
 		target_type.clone(),
diff --git a/substrate/primitives/utils/src/mpsc.rs b/substrate/primitives/utils/src/mpsc.rs
index 72dcd94c39e049a01bda7b57b0a87412426ba618..27e15cbe2ef2bf8463872b0a759640ed95b9f6c3 100644
--- a/substrate/primitives/utils/src/mpsc.rs
+++ b/substrate/primitives/utils/src/mpsc.rs
@@ -101,7 +101,7 @@ mod inner {
 		/// Proxy function to mpsc::UnboundedSender
 		pub fn unbounded_send(&self, msg: T) -> Result<(), TrySendError<T>> {
 			self.1.unbounded_send(msg).map(|s| {
-				UNBOUNDED_CHANNELS_COUNTER.with_label_values(&[self.0, &"send"]).inc();
+				UNBOUNDED_CHANNELS_COUNTER.with_label_values(&[self.0, "send"]).inc();
 				s
 			})
 		}
@@ -128,9 +128,7 @@ mod inner {
 			}
 			// and discount the messages
 			if count > 0 {
-				UNBOUNDED_CHANNELS_COUNTER
-					.with_label_values(&[self.0, &"dropped"])
-					.inc_by(count);
+				UNBOUNDED_CHANNELS_COUNTER.with_label_values(&[self.0, "dropped"]).inc_by(count);
 			}
 		}
 
@@ -146,7 +144,7 @@ mod inner {
 		pub fn try_next(&mut self) -> Result<Option<T>, TryRecvError> {
 			self.1.try_next().map(|s| {
 				if s.is_some() {
-					UNBOUNDED_CHANNELS_COUNTER.with_label_values(&[self.0, &"received"]).inc();
+					UNBOUNDED_CHANNELS_COUNTER.with_label_values(&[self.0, "received"]).inc();
 				}
 				s
 			})