| { | ||
| "git": { | ||
| "sha1": "6f9f73481506597750c9ab6674329cbb2b6679f0" | ||
| "sha1": "b88fd5bfdcc44409491cdb28105f660f09e08711" | ||
| }, | ||
| "path_in_vcs": "" | ||
| } |
+18
-47
@@ -6,11 +6,2 @@ # This file is automatically @generated by Cargo. | ||
| [[package]] | ||
| name = "aho-corasick" | ||
| version = "1.0.4" | ||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| checksum = "6748e8def348ed4d14996fa801f4122cd763fff530258cdc03f64b25f89d3a5a" | ||
| dependencies = [ | ||
| "memchr", | ||
| ] | ||
| [[package]] | ||
| name = "anes" | ||
@@ -49,3 +40,3 @@ version = "0.1.6" | ||
| name = "base64" | ||
| version = "0.21.3" | ||
| version = "0.21.4" | ||
| dependencies = [ | ||
@@ -332,8 +323,2 @@ "criterion", | ||
| [[package]] | ||
| name = "memchr" | ||
| version = "2.5.0" | ||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" | ||
| [[package]] | ||
| name = "memoffset" | ||
@@ -368,5 +353,5 @@ version = "0.9.0" | ||
| name = "once_cell" | ||
| version = "1.18.0" | ||
| version = "1.17.2" | ||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" | ||
| checksum = "9670a07f94779e00908f3e686eab508878ebb390ba6e604d3a284c00e8d0487b" | ||
@@ -387,5 +372,5 @@ [[package]] | ||
| name = "plotters" | ||
| version = "0.3.5" | ||
| version = "0.3.4" | ||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" | ||
| checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97" | ||
| dependencies = [ | ||
@@ -516,9 +501,6 @@ "num-traits", | ||
| name = "regex" | ||
| version = "1.9.3" | ||
| version = "1.8.4" | ||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| checksum = "81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a" | ||
| checksum = "d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f" | ||
| dependencies = [ | ||
| "aho-corasick", | ||
| "memchr", | ||
| "regex-automata", | ||
| "regex-syntax", | ||
@@ -528,17 +510,6 @@ ] | ||
| [[package]] | ||
| name = "regex-automata" | ||
| version = "0.3.6" | ||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| checksum = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69" | ||
| dependencies = [ | ||
| "aho-corasick", | ||
| "memchr", | ||
| "regex-syntax", | ||
| ] | ||
| [[package]] | ||
| name = "regex-syntax" | ||
| version = "0.7.4" | ||
| version = "0.7.2" | ||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" | ||
| checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" | ||
@@ -622,3 +593,3 @@ [[package]] | ||
| "quote", | ||
| "syn 2.0.29", | ||
| "syn 2.0.31", | ||
| ] | ||
@@ -628,5 +599,5 @@ | ||
| name = "serde_json" | ||
| version = "1.0.105" | ||
| version = "1.0.106" | ||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" | ||
| checksum = "2cc66a619ed80bf7a0f6b17dd063a84b88f6dea1813737cf469aef1d081142c2" | ||
| dependencies = [ | ||
@@ -681,5 +652,5 @@ "itoa", | ||
| name = "syn" | ||
| version = "2.0.29" | ||
| version = "2.0.31" | ||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a" | ||
| checksum = "718fa2415bcb8d8bd775917a1bf12a7931b6dfa890753378538118181e0cb398" | ||
| dependencies = [ | ||
@@ -748,5 +719,5 @@ "proc-macro2", | ||
| name = "walkdir" | ||
| version = "2.3.3" | ||
| version = "2.4.0" | ||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" | ||
| checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" | ||
| dependencies = [ | ||
@@ -784,3 +755,3 @@ "same-file", | ||
| "quote", | ||
| "syn 2.0.29", | ||
| "syn 2.0.31", | ||
| "wasm-bindgen-shared", | ||
@@ -807,3 +778,3 @@ ] | ||
| "quote", | ||
| "syn 2.0.29", | ||
| "syn 2.0.31", | ||
| "wasm-bindgen-backend", | ||
@@ -810,0 +781,0 @@ "wasm-bindgen-shared", |
+1
-1
@@ -16,3 +16,3 @@ # THIS FILE IS AUTOMATICALLY GENERATED BY CARGO | ||
| name = "base64" | ||
| version = "0.21.3" | ||
| version = "0.21.4" | ||
| authors = [ | ||
@@ -19,0 +19,0 @@ "Alice Maz <alice@alicemaz.com>", |
+8
-2
@@ -0,1 +1,5 @@ | ||
| # 0.21.4 | ||
| - Make `encoded_len` `const`, allowing the creation of arrays sized to encode compile-time-known data lengths | ||
| # 0.21.3 | ||
@@ -15,3 +19,4 @@ | ||
| - Remove the possibility of panicking during decoded length calculations | ||
| - `DecoderReader` no longer sometimes erroneously ignores padding [#226](https://github.com/marshallpierce/rust-base64/issues/226) | ||
| - `DecoderReader` no longer sometimes erroneously ignores | ||
| padding [#226](https://github.com/marshallpierce/rust-base64/issues/226) | ||
@@ -68,3 +73,4 @@ ## Breaking changes | ||
| - Re-exports of preconfigured engines in `engine` are removed in favor of `base64::prelude::...` that are better suited to those who wish to `use` the entire path to a name. | ||
| - Re-exports of preconfigured engines in `engine` are removed in favor of `base64::prelude::...` that are better suited | ||
| to those who wish to `use` the entire path to a name. | ||
@@ -71,0 +77,0 @@ # 0.21.0-beta.1 |
+14
-7
@@ -97,21 +97,28 @@ #[cfg(any(feature = "alloc", feature = "std", test))] | ||
| /// input lengths in approximately the top quarter of the range of `usize`. | ||
| pub fn encoded_len(bytes_len: usize, padding: bool) -> Option<usize> { | ||
| pub const fn encoded_len(bytes_len: usize, padding: bool) -> Option<usize> { | ||
| let rem = bytes_len % 3; | ||
| let complete_input_chunks = bytes_len / 3; | ||
| let complete_chunk_output = complete_input_chunks.checked_mul(4); | ||
| // `let Some(_) = _ else` requires 1.65.0, whereas this messier one works on 1.48 | ||
| let complete_chunk_output = | ||
| if let Some(complete_chunk_output) = complete_input_chunks.checked_mul(4) { | ||
| complete_chunk_output | ||
| } else { | ||
| return None; | ||
| }; | ||
| if rem > 0 { | ||
| if padding { | ||
| complete_chunk_output.and_then(|c| c.checked_add(4)) | ||
| complete_chunk_output.checked_add(4) | ||
| } else { | ||
| let encoded_rem = match rem { | ||
| 1 => 2, | ||
| 2 => 3, | ||
| _ => unreachable!("Impossible remainder"), | ||
| // only other possible remainder is 2 | ||
| // can't use a separate _ => unreachable!() in const fns in ancient rust versions | ||
| _ => 3, | ||
| }; | ||
| complete_chunk_output.and_then(|c| c.checked_add(encoded_rem)) | ||
| complete_chunk_output.checked_add(encoded_rem) | ||
| } | ||
| } else { | ||
| complete_chunk_output | ||
| Some(complete_chunk_output) | ||
| } | ||
@@ -118,0 +125,0 @@ } |
+31
-0
@@ -47,1 +47,32 @@ use base64::{ | ||
| } | ||
| #[test] | ||
| fn encoded_len_unpadded() { | ||
| assert_eq!(0, encoded_len(0, false).unwrap()); | ||
| assert_eq!(2, encoded_len(1, false).unwrap()); | ||
| assert_eq!(3, encoded_len(2, false).unwrap()); | ||
| assert_eq!(4, encoded_len(3, false).unwrap()); | ||
| assert_eq!(6, encoded_len(4, false).unwrap()); | ||
| assert_eq!(7, encoded_len(5, false).unwrap()); | ||
| assert_eq!(8, encoded_len(6, false).unwrap()); | ||
| assert_eq!(10, encoded_len(7, false).unwrap()); | ||
| } | ||
| #[test] | ||
| fn encoded_len_padded() { | ||
| assert_eq!(0, encoded_len(0, true).unwrap()); | ||
| assert_eq!(4, encoded_len(1, true).unwrap()); | ||
| assert_eq!(4, encoded_len(2, true).unwrap()); | ||
| assert_eq!(4, encoded_len(3, true).unwrap()); | ||
| assert_eq!(8, encoded_len(4, true).unwrap()); | ||
| assert_eq!(8, encoded_len(5, true).unwrap()); | ||
| assert_eq!(8, encoded_len(6, true).unwrap()); | ||
| assert_eq!(12, encoded_len(7, true).unwrap()); | ||
| } | ||
| #[test] | ||
| fn encoded_len_overflow() { | ||
| let max_size = usize::MAX / 4 * 3 + 2; | ||
| assert_eq!(2, max_size % 3); | ||
| assert_eq!(Some(usize::MAX), encoded_len(max_size, false)); | ||
| assert_eq!(None, encoded_len(max_size + 1, false)); | ||
| } |
Sorry, the diff of this file is not supported yet