From f33ef836f8290b62e4ce127faa087f1b68284f8a Mon Sep 17 00:00:00 2001 From: Gilad Chase Date: Tue, 5 Nov 2024 21:06:00 +0200 Subject: [PATCH] chore: starknet API add lints Lior banned `as` repo-wide, unless absolutely necessary. Nearly all as uses can be replaced with [Try]From which doesn't have implicit coercions like as (we encountered several bugs due to these coercions). Motivation: we are standardizing lints across the repo and CI, instead of each crate having separate sets of lints. Notes: changes to docs are due to cargo doc now running on changed files --- crates/starknet_api/Cargo.toml | 3 +++ crates/starknet_api/src/core.rs | 2 +- crates/starknet_api/src/deprecated_contract_class.rs | 10 +++++----- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/crates/starknet_api/Cargo.toml b/crates/starknet_api/Cargo.toml index b0697d0f18..73879008b9 100644 --- a/crates/starknet_api/Cargo.toml +++ b/crates/starknet_api/Cargo.toml @@ -35,3 +35,6 @@ rstest.workspace = true [package.metadata.cargo-machete] ignored = ["strum"] + +[lints] +workspace = true diff --git a/crates/starknet_api/src/core.rs b/crates/starknet_api/src/core.rs index 93f9dea540..8296075c8d 100644 --- a/crates/starknet_api/src/core.rs +++ b/crates/starknet_api/src/core.rs @@ -250,7 +250,7 @@ impl Nonce { } } -/// The selector of an [EntryPoint](`crate::deprecated_contract_class::EntryPoint`). +/// The selector of an [EntryPoint](`crate::state::EntryPoint`). #[derive( Debug, Copy, Clone, Default, Eq, PartialEq, Hash, Deserialize, Serialize, PartialOrd, Ord, )] diff --git a/crates/starknet_api/src/deprecated_contract_class.rs b/crates/starknet_api/src/deprecated_contract_class.rs index 5ea52037af..233ceb64ea 100644 --- a/crates/starknet_api/src/deprecated_contract_class.rs +++ b/crates/starknet_api/src/deprecated_contract_class.rs @@ -195,7 +195,7 @@ pub struct TypedParameter { pub r#type: String, } -/// The offset of an [EntryPoint](`crate::deprecated_contract_class::EntryPoint`). +/// The offset of an [EntryPoint](`crate::state::EntryPoint`). #[derive( Debug, Copy, Clone, Default, Eq, PartialEq, Hash, Deserialize, Serialize, PartialOrd, Ord, )] @@ -212,10 +212,10 @@ impl TryFrom for EntryPointOffset { pub fn number_or_string<'de, D: Deserializer<'de>>(deserializer: D) -> Result { let usize_value = match Value::deserialize(deserializer)? { - Value::Number(number) => { - number.as_u64().ok_or(DeserializationError::custom("Cannot cast number to usize."))? - as usize - } + Value::Number(number) => number + .as_u64() + .and_then(|num_u64| usize::try_from(num_u64).ok()) + .ok_or(DeserializationError::custom("Cannot cast number to usize."))?, Value::String(s) => hex_string_try_into_usize(&s).map_err(DeserializationError::custom)?, _ => return Err(DeserializationError::custom("Cannot cast value into usize.")), };