Bug 1773399 - Update rust_decimal to 1.24.0. r=emilio

Differential Revision: https://phabricator.services.mozilla.com/D148720
This commit is contained in:
Mike Hommey 2022-06-09 20:23:27 +00:00
Родитель 84bb0f814b
Коммит 05b7b9f11c
14 изменённых файлов: 149 добавлений и 34 удалений

4
Cargo.lock сгенерированный
Просмотреть файл

@ -4572,9 +4572,9 @@ dependencies = [
[[package]]
name = "rust_decimal"
version = "1.23.1"
version = "1.24.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "22dc69eadbf0ee2110b8d20418c0c6edbaefec2811c4963dc17b6344e11fe0f8"
checksum = "e2ee7337df68898256ad0d4af4aad178210d9e44d2ff900ce44064a97cd86530"
dependencies = [
"arrayvec",
"num-traits",

Просмотреть файл

@ -1254,7 +1254,7 @@ version = "1.4.0"
criteria = "safe-to-deploy"
[[unaudited.rust_decimal]]
version = "1.23.1"
version = "1.24.0"
criteria = "safe-to-deploy"
[[unaudited.rustc-demangle]]

Просмотреть файл

@ -1 +1 @@
{"files":{"BUILD.md":"302c5260cb6eb87efc1d968b42f082ea3569cca084c0cbcc1821a8670235c19a","CODE_OF_CONDUCT.md":"64765f10290cfce7191b4208cb21698b708a118568f5016602cccc304846a09a","CONTRIBUTING.md":"471d6281fb5038e17e32d3b4450aacf542a396709605aa170e07d3971d70b9c1","Cargo.toml":"6b2a7c5df9dd2b2b2bef5805032eedf292885bbdf5aa973f0284fa6054712663","LICENSE":"f8218253704e32441cafea1b9b3bcb2c6a3c51c5553cd8513d179290202bccb2","Makefile.toml":"c04d088ae71c825a8dc29c2caa58f1cf3d57cf6119530d0e1c208b758ddba92e","README.md":"729a2765b275c24524174abfc905155c73095f5f79a131d676fd5a075bfaebcd","VERSION.md":"720f7dd3779de4a3cc4e984100d5b99ad497b20bc7c69cb976d59d3bb479eca1","benches/comparison.rs":"e8b14531b129acb8ffca2dd44565d9160f510ec38abd32fc49fd4e2386067e25","benches/lib_benches.rs":"1525a2b3424e04da73153a0a57f8ee6e3c7ba93f3d847940ee596be57d469248","build.rs":"5755f7c90249ff8389159726f105336f4df1c828e190414af1a5b9342be103bb","rustfmt.toml":"f33bda44a494d17c95b7bc1b3dd88c203030b75be766f3a7f9b63ef45d960bb0","src/arithmetic_impls.rs":"87a87bc46214ba7f239dfafcffb6ca05453f2ff07ed36e94792548d508da7a9d","src/constants.rs":"5a31626a234e4bb1f06752d7db6ebb39a543c5e0df1e929dd0032689ef7aaa1f","src/decimal.rs":"303741e8575f63365c0c3d7560fded5ee35f909f6e013d305e83885aaa666ae1","src/error.rs":"2a3f31951bcffc3bb3cfb48bb68e0e8f51713b0cd38a441bd4fdfb02228fe9c7","src/fuzz.rs":"86c07d8d541b9ee92a51275993b686902712f94c30785ba93f38997f3569e700","src/lib.rs":"22f5b4ad03a389d71b28da29758802cb310be65069cca023b8b66d03b3517455","src/maths.rs":"7179448dfab64f9da5d76f7e3c7c51d1eb6028a2c628bca75531dec365fc1bd8","src/mysql.rs":"1995123011bda5ac6a7d2df5885a568dfdfecd9897ab8d89205817877a242cb3","src/ops.rs":"4d426a35f73b0b69cbceee6e01c6eff59b8cc09aab7c885570aea52d8f258f66","src/ops/add.rs":"a85b6214be92a5563e8bb4a936275d8de094507d77384c9184d63583a78b3f55","src/ops/array.rs":"17a1af576390c8f33ed6c13e1b62722eeaa24c0c0086fb951def6d5dacfdc1cd","src/ops/cmp.rs":"95437401daf93d60425c388fc243e52ad5570cfe6c5d818b5aa144759a5f2ef1","src/ops/common.rs":"6d48ecfa4796a38cb9d4c48f50ffed5d1ee79ba8e168a175615b6fe97194b7c2","src/ops/div.rs":"6b1e90b383293eb51f20f22846002a61f17211f7791860d4e9d6f82ad940fb87","src/ops/legacy.rs":"08bc45454b1815a592cc2fd02df8c50bec36c831ab7af098018e29dfc81f0ec4","src/ops/mul.rs":"b0bb69461b4934cb53c49e105d21da8aa661e1215e8797b8fdc64564df431d92","src/ops/rem.rs":"125d64e9425effd01d4ff400f811f43ef76bf846b6823195059648fdf004b592","src/postgres.rs":"a95ac5e58e24fa2702f540b4f34c1d6508242a25dc0678dd2af4137b58739ab4","src/rocket.rs":"4d05f292281e4d463abeba603b07ea460065cb1b8ec1c6dafdb4e41f7b89e828","src/serde.rs":"d04dcd3a2143c7145bdaa917dfac61591f79348134b883d05764993bda5e0bac","src/str.rs":"e6750a1ab197a024bea32e2b31dea86bfb1ad640903d36143396e40864339a27","tests/decimal_tests.rs":"d7bc5d3e1ae14851f19e5a287d078cc3cdaad14813ebc44a8643c87d993e0902","tests/macros.rs":"f4e1ade99bf8a7aaf2a2d4ee557df5b0b32266a349daf59b2e8b1ae7bc72599c","tests/version-numbers.rs":"73301b7bfe500eada5ede66f0dce89bd3e354af50a8e7a123b02931cd5eb8e16"},"package":"22dc69eadbf0ee2110b8d20418c0c6edbaefec2811c4963dc17b6344e11fe0f8"}
{"files":{"BUILD.md":"302c5260cb6eb87efc1d968b42f082ea3569cca084c0cbcc1821a8670235c19a","CHANGELOG.md":"9eb97b0c6d9a54cb9a8e317a015c906fccd0400b19802651212b30e1f362497a","CODE_OF_CONDUCT.md":"64765f10290cfce7191b4208cb21698b708a118568f5016602cccc304846a09a","CONTRIBUTING.md":"471d6281fb5038e17e32d3b4450aacf542a396709605aa170e07d3971d70b9c1","Cargo.toml":"60ce8e5e75560df63b4897f5b4d856e1c727de56c4fa4a7ccd90fed8e7b5e059","LICENSE":"f8218253704e32441cafea1b9b3bcb2c6a3c51c5553cd8513d179290202bccb2","Makefile.toml":"3b56a3e8b8d9a8737793dedf02b4c19df0452e20452b9d095c8e0399cb406439","README.md":"14dc4562575c0cde12aeedfdfe1c5adbd90cdbc14168acb6da829a4742becdc6","benches/comparison.rs":"e8b14531b129acb8ffca2dd44565d9160f510ec38abd32fc49fd4e2386067e25","benches/lib_benches.rs":"1525a2b3424e04da73153a0a57f8ee6e3c7ba93f3d847940ee596be57d469248","build.rs":"0ec25a3f820ea04eae1e3caeb0cc422d2f9b53b387553db728dcf2d088a67ab9","rustfmt.toml":"f33bda44a494d17c95b7bc1b3dd88c203030b75be766f3a7f9b63ef45d960bb0","src/arithmetic_impls.rs":"87a87bc46214ba7f239dfafcffb6ca05453f2ff07ed36e94792548d508da7a9d","src/constants.rs":"5a31626a234e4bb1f06752d7db6ebb39a543c5e0df1e929dd0032689ef7aaa1f","src/decimal.rs":"c16606f8b5358611e882d09a26082136845ef18ffd2a3c57cb9c51b393c299d8","src/error.rs":"2a3f31951bcffc3bb3cfb48bb68e0e8f51713b0cd38a441bd4fdfb02228fe9c7","src/fuzz.rs":"86c07d8d541b9ee92a51275993b686902712f94c30785ba93f38997f3569e700","src/lib.rs":"70dbf6c86f99df5d8b6e9d4102ee53e9ad222cbfe8b677ee85afe205165bebee","src/maths.rs":"f82016c5ae8406103835a3fedebeb1360cfe3cc40ac4ab28e13da89636c6782c","src/mysql.rs":"1995123011bda5ac6a7d2df5885a568dfdfecd9897ab8d89205817877a242cb3","src/ops.rs":"4d426a35f73b0b69cbceee6e01c6eff59b8cc09aab7c885570aea52d8f258f66","src/ops/add.rs":"a85b6214be92a5563e8bb4a936275d8de094507d77384c9184d63583a78b3f55","src/ops/array.rs":"17a1af576390c8f33ed6c13e1b62722eeaa24c0c0086fb951def6d5dacfdc1cd","src/ops/cmp.rs":"95437401daf93d60425c388fc243e52ad5570cfe6c5d818b5aa144759a5f2ef1","src/ops/common.rs":"6d48ecfa4796a38cb9d4c48f50ffed5d1ee79ba8e168a175615b6fe97194b7c2","src/ops/div.rs":"6b1e90b383293eb51f20f22846002a61f17211f7791860d4e9d6f82ad940fb87","src/ops/legacy.rs":"08bc45454b1815a592cc2fd02df8c50bec36c831ab7af098018e29dfc81f0ec4","src/ops/mul.rs":"b0bb69461b4934cb53c49e105d21da8aa661e1215e8797b8fdc64564df431d92","src/ops/rem.rs":"125d64e9425effd01d4ff400f811f43ef76bf846b6823195059648fdf004b592","src/postgres.rs":"73c41588262ea8d243a4758596ade35ef902fec7dfaba60c44a40c2456900171","src/rand.rs":"386d5a53feec63f53247f102287a4bf8ffe9dbc464246e5f18bd6b14f15f056d","src/rocket.rs":"4d05f292281e4d463abeba603b07ea460065cb1b8ec1c6dafdb4e41f7b89e828","src/serde.rs":"d04dcd3a2143c7145bdaa917dfac61591f79348134b883d05764993bda5e0bac","src/str.rs":"e6750a1ab197a024bea32e2b31dea86bfb1ad640903d36143396e40864339a27","tests/decimal_tests.rs":"9f9a782cdfb215a0b0d3c191b793c2f14d86b3bde90792a0f512de112c86f43c","tests/macros.rs":"f4e1ade99bf8a7aaf2a2d4ee557df5b0b32266a349daf59b2e8b1ae7bc72599c","tests/version-numbers.rs":"73301b7bfe500eada5ede66f0dce89bd3e354af50a8e7a123b02931cd5eb8e16"},"package":"e2ee7337df68898256ad0d4af4aad178210d9e44d2ff900ce44064a97cd86530"}

Просмотреть файл

@ -1,5 +1,14 @@
# Version History
## 1.24.0
* Introduces new feature `rand` which allows for random number generation within `rust_decimal` ([#517](https://github.com/paupino/rust-decimal/pull/517)).
* Upgrade to Rust 2021 and remove unnecessary dependencies to improve build speed ([#513](https://github.com/paupino/rust-decimal/pull/513), [#516](https://github.com/paupino/rust-decimal/pull/516))
* Some test scoping improvements to ensure we capture as many test combinations as possible ([#503](https://github.com/paupino/rust-decimal/pull/503), [#504](https://github.com/paupino/rust-decimal/pull/504)).
A big thank you to [@c410-f3r](https://github.com/c410-f3r) for their contributions to this release!
## 1.23.1
Fixes issue with `no_std` compatability introduced in `1.23.0` ([#501](https://github.com/paupino/rust-decimal/pull/501)).

85
third_party/rust/rust_decimal/Cargo.toml поставляемый
Просмотреть файл

@ -10,19 +10,31 @@
# See Cargo.toml.orig for the original contents.
[package]
edition = "2018"
edition = "2021"
name = "rust_decimal"
version = "1.23.1"
version = "1.24.0"
authors = ["Paul Mason <paul@form1.co.nz>"]
build = "build.rs"
exclude = ["tests/generated/*"]
description = "Decimal number implementation written in pure Rust suitable for financial and fixed-precision calculations."
documentation = "https://docs.rs/rust_decimal/"
readme = "./README.md"
keywords = ["decimal", "financial", "fixed", "precision", "number"]
categories = ["science", "mathematics", "data-structures"]
keywords = [
"decimal",
"financial",
"fixed",
"precision",
"number",
]
categories = [
"science",
"mathematics",
"data-structures",
]
license = "MIT"
repository = "https://github.com/paupino/rust-decimal"
resolver = "2"
[package.metadata.docs.rs]
all-features = true
@ -30,6 +42,7 @@ all-features = true
name = "comparison"
path = "benches/comparison.rs"
harness = false
[dependencies.arbitrary]
version = "1.0"
optional = true
@ -69,6 +82,11 @@ version = "0.19"
optional = true
default-features = false
[dependencies.rand]
version = "0.8"
optional = true
default-features = false
[dependencies.rocket]
version = "0.5.0-rc.1"
optional = true
@ -88,11 +106,14 @@ default-features = false
version = "0.7"
optional = true
default-features = false
[dev-dependencies.bincode]
version = "1.3"
version = "1.0"
default-features = false
[dev-dependencies.bytes]
version = "1.0"
default-features = false
[dev-dependencies.criterion]
version = "0.3"
@ -103,6 +124,12 @@ version = "1"
[dev-dependencies.futures]
version = "0.3"
default-features = false
[dev-dependencies.rand]
version = "0.8"
features = ["getrandom"]
default-features = false
[dev-dependencies.serde]
version = "1.0"
@ -114,18 +141,48 @@ version = "1.0"
[dev-dependencies.tokio]
version = "1.0"
features = ["rt-multi-thread", "test-util", "macros"]
features = [
"macros",
"rt-multi-thread",
"test-util",
]
default-features = false
[dev-dependencies.version-sync]
version = "0.9"
features = [
"html_root_url_updated",
"markdown_deps_updated",
]
default-features = false
[features]
c-repr = []
db-diesel-mysql = ["diesel/mysql", "std"]
db-diesel-postgres = ["diesel/postgres", "std"]
db-postgres = ["byteorder", "bytes", "postgres", "std"]
db-tokio-postgres = ["byteorder", "bytes", "postgres", "std", "tokio-postgres"]
default = ["serde", "std"]
db-diesel-mysql = [
"diesel/mysql",
"std",
]
db-diesel-postgres = [
"diesel/postgres",
"std",
]
db-postgres = [
"byteorder",
"bytes",
"postgres",
"std",
]
db-tokio-postgres = [
"byteorder",
"bytes",
"postgres",
"std",
"tokio-postgres",
]
default = [
"serde",
"std",
]
legacy-ops = []
maths = []
maths-nopanic = ["maths"]
@ -135,7 +192,11 @@ serde-arbitrary-precision = ["serde-with-arbitrary-precision"]
serde-bincode = ["serde-str"]
serde-float = ["serde-with-float"]
serde-str = ["serde-with-str"]
serde-with-arbitrary-precision = ["serde", "serde_json/arbitrary_precision"]
serde-with-arbitrary-precision = [
"serde",
"serde_json/arbitrary_precision",
"serde_json/std",
]
serde-with-float = ["serde"]
serde-with-str = ["serde"]
std = []

13
third_party/rust/rust_decimal/Makefile.toml поставляемый
Просмотреть файл

@ -118,8 +118,7 @@ dependencies = [
"test-db",
"test-rocket-traits",
"test-serde",
"test-macros",
"test-borsh"
"test-macros"
]
[tasks.test-db]
@ -175,6 +174,12 @@ command = "cargo"
args = ["test", "--workspace", "--no-default-features", "--features=maths-nopanic", "maths", "--", "--skip", "generated"]
[tasks.test-misc]
dependencies = [
"test-rust-fuzz",
"test-borsh"
]
[tasks.test-rust-fuzz]
command = "cargo"
args = ["test", "--workspace", "--no-default-features", "--features=rust-fuzz", "rust_fuzz", "--", "--skip", "generated"]
@ -246,3 +251,7 @@ args = ["test", "--workspace", "--tests", "--features=serde-with-str", "serde",
command = "cargo"
args = ["test", "--workspace", "--features=borsh"]
[tasks.test-rand]
command = "cargo"
args = ["test", "--workspace", "--features=rand"]

12
third_party/rust/rust_decimal/README.md поставляемый
Просмотреть файл

@ -17,8 +17,8 @@ To get started, add `rust_decimal` and optionally `rust_decimal_macros` to your
```toml
[dependencies]
rust_decimal = "1.23"
rust_decimal_macros = "1.23"
rust_decimal = "1.24"
rust_decimal_macros = "1.24"
```
## Usage
@ -140,6 +140,10 @@ Please note that `ln` and `log10` will panic on invalid input with `checked_ln`
to curb against this. When the `maths` feature was first developed the library would return `0` on invalid input. To re-enable this
non-panicking behavior, please use the feature: `maths-nopanic`.
### `rand`
Implements `rand::distributions::Distribution<Decimal>` to allow the creation of random instances.
### `rocket-traits`
Enable support for Rocket forms by implementing the `FromFormField` trait.
@ -234,8 +238,8 @@ Please refer to the [Build document](BUILD.md) for more information on building
## Minimum Rust Compiler Version
The current _minimum_ compiler version is [`1.54.0`](https://github.com/rust-lang/rust/blob/master/RELEASES.md#version-1540-2021-07-29)
which was released on `2021-07-29`.
The current _minimum_ compiler version is [`1.56.0`](https://github.com/rust-lang/rust/blob/master/RELEASES.md#version-1560-2021-10-21)
which was released on `2021-10-21`.
This library maintains support for rust compiler versions that are 4 minor versions away from the current stable rust compiler version.
For example, if the current stable compiler version is `1.50.0` then we will guarantee support up to and including `1.46.0`.

2
third_party/rust/rust_decimal/build.rs поставляемый
Просмотреть файл

@ -42,7 +42,7 @@ fn prepare(readme: &str) -> String {
if !feature_section && line.starts_with("## Features") {
feature_section = true;
} else if feature_section && line.starts_with("### ") {
feature = line.replace("### ", "").replace("`", "");
feature = line.replace("### ", "").replace('`', "");
}
cleaned.push_str(line);
}

Просмотреть файл

@ -1720,7 +1720,7 @@ macro_rules! impl_try_from_decimal {
stringify!($TInto),
"`.",
)]
impl core::convert::TryFrom<Decimal> for $TInto {
impl TryFrom<Decimal> for $TInto {
type Error = crate::Error;
#[inline]
@ -1756,7 +1756,7 @@ macro_rules! impl_try_from_primitive {
stringify!($TFrom),
"` into a `Decimal`.\n\nCan fail if the value is out of range for `Decimal`."
)]
impl core::convert::TryFrom<$TFrom> for Decimal {
impl TryFrom<$TFrom> for Decimal {
type Error = crate::Error;
#[inline]

1
third_party/rust/rust_decimal/src/lib.rs поставляемый
Просмотреть файл

@ -7,6 +7,7 @@ mod constants;
mod decimal;
mod error;
mod ops;
mod rand;
mod str;
// We purposely place this here for documentation ordering

3
third_party/rust/rust_decimal/src/maths.rs поставляемый
Просмотреть файл

@ -748,6 +748,9 @@ impl Pow<f64> for Decimal {
mod test {
use super::*;
#[cfg(not(feature = "std"))]
use alloc::string::ToString;
#[test]
fn test_factorials() {
assert_eq!("1", FACTORIAL[0].to_string(), "0!");

Просмотреть файл

@ -3,7 +3,7 @@ use crate::{
ops::array::{div_by_u32, is_all_zero, mul_by_u32},
Decimal,
};
use core::{convert::TryInto, fmt};
use core::fmt;
use std::error;
#[derive(Debug, Clone)]
@ -149,7 +149,6 @@ mod diesel_postgres {
serialize::{self, Output, ToSql},
sql_types::Numeric,
};
use core::convert::{TryFrom, TryInto};
use std::io::Write;
impl<'a> TryFrom<&'a PgNumeric> for Decimal {

29
third_party/rust/rust_decimal/src/rand.rs поставляемый Normal file
Просмотреть файл

@ -0,0 +1,29 @@
#![cfg(feature = "rand")]
use crate::Decimal;
use rand::{
distributions::{Distribution, Standard},
Rng,
};
impl Distribution<Decimal> for Standard {
fn sample<R>(&self, rng: &mut R) -> Decimal
where
R: Rng + ?Sized,
{
Decimal::from_parts(
rng.next_u32(),
rng.next_u32(),
rng.next_u32(),
rng.gen(),
rng.next_u32(),
)
}
}
#[test]
fn has_random_decimal_instances() {
let mut rng = rand::rngs::OsRng;
let random: [Decimal; 32] = rng.gen();
assert!(random.windows(2).any(|slice| { slice[0] != slice[1] }));
}

Просмотреть файл

@ -1,10 +1,6 @@
mod macros;
use core::{
cmp::Ordering::*,
convert::{TryFrom, TryInto},
str::FromStr,
};
use core::{cmp::Ordering::*, str::FromStr};
use num_traits::{Inv, Signed, ToPrimitive};
use rust_decimal::{Decimal, Error, RoundingStrategy};
@ -146,8 +142,12 @@ fn it_can_serialize_deserialize_borsh() {
borsh::BorshSerialize::serialize(&a, &mut bytes).unwrap();
let b: Decimal = borsh::BorshDeserialize::deserialize(&mut bytes.as_slice()).unwrap();
assert_eq!(test.to_string(), b.to_string());
let bytes = borsh::schema_helper::serialize_with_schema(&a);
let b: Decimal = borsh::schema_helper::deserialize_with_schema(&bytes);
let bytes = borsh::try_to_vec_with_schema(&a);
assert!(bytes.is_ok(), "try_to_vec_with_schema.is_ok()");
let bytes = bytes.unwrap();
let result = borsh::try_from_slice_with_schema(&bytes);
assert!(result.is_ok(), "try_from_slice_with_schema.is_ok()");
let b: Decimal = result.unwrap();
assert_eq!(test.to_string(), b.to_string());
}
}