Defensive Programming in Substrate Reference Document (#2615)
_This PR is being continued from https://github.com/paritytech/polkadot-sdk/pull/2206, which was closed when the developer_hub was merged._ closes https://github.com/paritytech/polkadot-sdk-docs/issues/44 --- # Description This PR adds a reference document to the `developer-hub` crate (see https://github.com/paritytech/polkadot-sdk/pull/2102). This specific reference document covers defensive programming practices common within the context of developing a runtime with Substrate. In particular, this covers the following areas: - Default behavior of how Rust deals with numbers in general - How to deal with floating point numbers in runtime / fixed point arithmetic - How to deal with Integer overflows - General "safe math" / defensive programming practices for common pallet development scenarios - Defensive traits that exist within Substrate, i.e., `defensive_saturating_add `, `defensive_unwrap_or` - More general defensive programming examples (keep it concise) - Link to relevant examples where these practices are actually in production / being used - Unwrapping (or rather lack thereof) 101 todo -- - [x] Apply feedback from previous PR - [x] This may warrant a PR to append some of these docs to `sp_arithmetic` --------- Co-authored-by:Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> Co-authored-by:
Gonçalo Pestana <g6pestana@gmail.com> Co-authored-by:
Kian Paimani <5588131+kianenigma@users.noreply.github.com> Co-authored-by:
Francisco Aguirre <franciscoaguirreperez@gmail.com> Co-authored-by:
Radha <86818441+DrW3RK@users.noreply.github.com>
Showing
- Cargo.lock 6 additions, 0 deletionsCargo.lock
- docs/sdk/Cargo.toml 7 additions, 0 deletionsdocs/sdk/Cargo.toml
- docs/sdk/src/guides/your_first_pallet/mod.rs 3 additions, 3 deletionsdocs/sdk/src/guides/your_first_pallet/mod.rs
- docs/sdk/src/reference_docs/defensive_programming.rs 395 additions, 0 deletionsdocs/sdk/src/reference_docs/defensive_programming.rs
- docs/sdk/src/reference_docs/mod.rs 1 addition, 2 deletionsdocs/sdk/src/reference_docs/mod.rs
- docs/sdk/src/reference_docs/safe_defensive_programming.rs 0 additions, 1 deletiondocs/sdk/src/reference_docs/safe_defensive_programming.rs
- substrate/primitives/arithmetic/Cargo.toml 3 additions, 0 deletionssubstrate/primitives/arithmetic/Cargo.toml
- substrate/primitives/arithmetic/src/fixed_point.rs 27 additions, 0 deletionssubstrate/primitives/arithmetic/src/fixed_point.rs
- substrate/primitives/arithmetic/src/lib.rs 110 additions, 28 deletionssubstrate/primitives/arithmetic/src/lib.rs
- substrate/primitives/arithmetic/src/per_things.rs 36 additions, 0 deletionssubstrate/primitives/arithmetic/src/per_things.rs
Please register or sign in to comment