forked from mirrors/jj
cargo: add ref-cast dependency
It helps to implement transparent conversion from &str to &Wrapped(str). We could instead wrap the reference as Wrapped<'a>(&'a str), but it has various drawbacks. Notably we can't implement Borrow and Deref because these traits require a reference in return position. Since the unsafe bits are pretty small, we can instead implement cast functions without using the ref-cast crate. However, I believe we'll trust ref-cast more than hand-crafted unsafe code. https://crates.io/crates/ref-cast https://docs.rs/ref-cast/1.0.20/ref_cast/attr.ref_cast_custom.html
This commit is contained in:
parent
b7543f8a08
commit
b5b01f4dd7
3 changed files with 23 additions and 0 deletions
21
Cargo.lock
generated
21
Cargo.lock
generated
|
@ -1681,6 +1681,7 @@ dependencies = [
|
|||
"rand",
|
||||
"rand_chacha",
|
||||
"rayon",
|
||||
"ref-cast",
|
||||
"regex",
|
||||
"rustix",
|
||||
"serde",
|
||||
|
@ -2380,6 +2381,26 @@ dependencies = [
|
|||
"thiserror",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ref-cast"
|
||||
version = "1.0.20"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "acde58d073e9c79da00f2b5b84eed919c8326832648a5b109b3fce1bb1175280"
|
||||
dependencies = [
|
||||
"ref-cast-impl",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ref-cast-impl"
|
||||
version = "1.0.20"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7f7473c2cfcf90008193dd0e3e16599455cb601a9fce322b5bb55de799664925"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.37",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "1.10.2"
|
||||
|
|
|
@ -65,6 +65,7 @@ prost-build = "0.11.9"
|
|||
rand = "0.8.5"
|
||||
rand_chacha = "0.3.1"
|
||||
rayon = "1.8.0"
|
||||
ref-cast = "1.0.20"
|
||||
regex = "1.10.2"
|
||||
rpassword = "7.3.1"
|
||||
rustix = { version = "0.38.25", features = ["fs"] }
|
||||
|
|
|
@ -43,6 +43,7 @@ prost = { workspace = true }
|
|||
rand = { workspace = true }
|
||||
rand_chacha = { workspace = true }
|
||||
rayon = { workspace = true }
|
||||
ref-cast = { workspace = true }
|
||||
regex = { workspace = true }
|
||||
serde = { workspace = true }
|
||||
serde_json = { workspace = true }
|
||||
|
|
Loading…
Reference in a new issue