You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In Rust, numbers have the Zero trait implemented with the following functions:
zero() -> Self
is_zero(self) -> bool
We currently only support zero constants for the u256 type and nothing for the u8, u16, u32, u64 types. This should also be implemented for the signed integers and fixed point numbers libraries
The text was updated successfully, but these errors were encountered:
## Description
Introduces the following functions to be implemented:
- `zero()`
- `is_zero()`
This falls inline with what we see in [Rust's Zero
Trait](https://docs.rs/num/latest/num/traits/trait.Zero.html), making
the language feel and look more like Rust.
This PR also deprecates the following:
- `ZERO_B256` -> `b256::zero()`
- `ZERO_U256` -> `u256::zero()`
To define a `u256` or `b256` zero address, the following should be used:
```sway
let zero_b256 = b256::zero();
let zero_u256 = u256::zero();
```
A common use of the `ZERO_B256` was to define the zero addresses and
contract id`:
```sway
let zero_address = Address::from(ZERO_B256);
let zero_contract = ContractId::from(ZERO_B25);
```
The following is now possible:
```sway
let zero_address = Address::zero();
let zero_contract = ContractId::zero();
```
The following types now implement the `Zero` trait:
- `u8`
- `u16`
- `u32`
- `u64`
- `u256`
- `b256`
- `SubId`
- `AssetId`
- `ContractId`
- `Address`
- `EvmAddress`
- `U128`
- `B512`
Closes#5830
## Checklist
- [x] I have linked to any relevant issues.
- [x] I have commented my code, particularly in hard-to-understand
areas.
- [x] I have updated the documentation where relevant (API docs, the
reference, and the Sway book).
- [ ] If my change requires substantial documentation changes, I have
[requested support from the DevRel
team](https://github.com/FuelLabs/devrel-requests/issues/new/choose)
- [x] I have added tests that prove my fix is effective or that my
feature works.
- [x] I have added (or requested a maintainer to add) the necessary
`Breaking*` or `New Feature` labels where relevant.
- [x] I have done my best to ensure that my PR adheres to [the Fuel Labs
Code Review
Standards](https://github.com/FuelLabs/rfcs/blob/master/text/code-standards/external-contributors.md).
- [x] I have requested a review from the relevant team or maintainers.
---------
Co-authored-by: K1-R1 <77465250+K1-R1@users.noreply.github.com>
In Rust, numbers have the Zero trait implemented with the following functions:
zero() -> Self
is_zero(self) -> bool
We currently only support zero constants for the
u256
type and nothing for theu8
,u16
,u32
,u64
types. This should also be implemented for the signed integers and fixed point numbers librariesThe text was updated successfully, but these errors were encountered: