Temporarily replace generational-arena with a fake version.

This fake version is completely silly, but it will do the job until
we figure out our MPL2 concerns.
This commit is contained in:
Nick Mathewson 2023-05-03 15:13:19 -04:00
parent 54dabdbd0c
commit 7f59d7dae5
3 changed files with 112 additions and 50 deletions

80
Cargo.lock generated
View File

@ -23,7 +23,7 @@ version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "433cfd6710c9986c576a25ca913c39d66a6474107b406f34f91d4a8923395241"
dependencies = [
"cfg-if 1.0.0",
"cfg-if",
"cipher",
"cpufeatures",
"zeroize",
@ -96,7 +96,7 @@ dependencies = [
"arti-client",
"arti-rpcserver",
"async-ctrlc",
"cfg-if 1.0.0",
"cfg-if",
"clap",
"config",
"derive_builder_fork_arti",
@ -159,7 +159,7 @@ name = "arti-client"
version = "0.9.0"
dependencies = [
"anyhow",
"cfg-if 1.0.0",
"cfg-if",
"derive_builder_fork_arti",
"derive_more",
"directories",
@ -236,7 +236,6 @@ dependencies = [
"erased-serde",
"futures",
"futures-await-test",
"generational-arena",
"pin-project",
"serde",
"serde_json",
@ -257,7 +256,7 @@ dependencies = [
"arti",
"arti-client",
"async-trait",
"cfg-if 1.0.0",
"cfg-if",
"clap",
"config",
"futures",
@ -365,7 +364,7 @@ checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af"
dependencies = [
"async-lock",
"autocfg",
"cfg-if 1.0.0",
"cfg-if",
"concurrent-queue",
"futures-lite",
"log",
@ -408,7 +407,7 @@ dependencies = [
"async-lock",
"autocfg",
"blocking",
"cfg-if 1.0.0",
"cfg-if",
"event-listener",
"futures-lite",
"rustix 0.37.17",
@ -542,7 +541,7 @@ checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca"
dependencies = [
"addr2line",
"cc",
"cfg-if 1.0.0",
"cfg-if",
"libc",
"miniz_oxide 0.6.2",
"object",
@ -666,12 +665,6 @@ dependencies = [
"jobserver",
]
[[package]]
name = "cfg-if"
version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
[[package]]
name = "cfg-if"
version = "1.0.0"
@ -814,7 +807,7 @@ version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
dependencies = [
"cfg-if 1.0.0",
"cfg-if",
]
[[package]]
@ -823,7 +816,7 @@ version = "0.5.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200"
dependencies = [
"cfg-if 1.0.0",
"cfg-if",
"crossbeam-utils",
]
@ -833,7 +826,7 @@ version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add"
dependencies = [
"cfg-if 1.0.0",
"cfg-if",
"crossbeam-utils",
]
@ -843,7 +836,7 @@ version = "0.8.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
dependencies = [
"cfg-if 1.0.0",
"cfg-if",
]
[[package]]
@ -1028,7 +1021,7 @@ version = "5.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "907076dfda823b0b36d2a1bb5f90c96660a5bbcd7729e10727f07858f22c4edc"
dependencies = [
"cfg-if 1.0.0",
"cfg-if",
"hashbrown",
"lock_api",
"once_cell",
@ -1324,7 +1317,7 @@ version = "0.2.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153"
dependencies = [
"cfg-if 1.0.0",
"cfg-if",
"libc",
"redox_syscall 0.2.16",
"windows-sys 0.48.0",
@ -1550,15 +1543,6 @@ dependencies = [
"slab",
]
[[package]]
name = "generational-arena"
version = "0.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e1d3b771574f62d0548cee0ad9057857e9fc25d7a3335f140c84f6acd0bf601"
dependencies = [
"cfg-if 0.1.10",
]
[[package]]
name = "generic-array"
version = "0.14.7"
@ -1575,7 +1559,7 @@ version = "0.1.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
dependencies = [
"cfg-if 1.0.0",
"cfg-if",
"libc",
"wasi 0.9.0+wasi-snapshot-preview1",
]
@ -1586,7 +1570,7 @@ version = "0.2.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4"
dependencies = [
"cfg-if 1.0.0",
"cfg-if",
"js-sys",
"libc",
"wasi 0.11.0+wasi-snapshot-preview1",
@ -1885,7 +1869,7 @@ version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
dependencies = [
"cfg-if 1.0.0",
"cfg-if",
]
[[package]]
@ -2055,7 +2039,7 @@ version = "0.4.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
dependencies = [
"cfg-if 1.0.0",
"cfg-if",
"value-bag",
]
@ -2212,7 +2196,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a"
dependencies = [
"bitflags 1.3.2",
"cfg-if 1.0.0",
"cfg-if",
"libc",
"static_assertions",
]
@ -2391,7 +2375,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "01b8574602df80f7b85fdfc5392fa884a4e3b3f4f35402c070ab34c3d3f78d56"
dependencies = [
"bitflags 1.3.2",
"cfg-if 1.0.0",
"cfg-if",
"foreign-types",
"libc",
"once_cell",
@ -2472,7 +2456,7 @@ version = "0.9.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521"
dependencies = [
"cfg-if 1.0.0",
"cfg-if",
"libc",
"redox_syscall 0.2.16",
"smallvec",
@ -2627,7 +2611,7 @@ checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce"
dependencies = [
"autocfg",
"bitflags 1.3.2",
"cfg-if 1.0.0",
"cfg-if",
"concurrent-queue",
"libc",
"log",
@ -3081,7 +3065,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e1da19961cf7993af1accc104121777a15cb97e666dbc7727673ca82c9436cda"
dependencies = [
"anyhow",
"cfg-if 1.0.0",
"cfg-if",
"libc",
"rustix 0.36.13",
"thiserror",
@ -3245,7 +3229,7 @@ version = "0.10.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3"
dependencies = [
"cfg-if 1.0.0",
"cfg-if",
"cpufeatures",
"digest 0.10.6",
"sha1-asm",
@ -3267,7 +3251,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800"
dependencies = [
"block-buffer 0.9.0",
"cfg-if 1.0.0",
"cfg-if",
"cpufeatures",
"digest 0.9.0",
"opaque-debug",
@ -3279,7 +3263,7 @@ version = "0.10.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0"
dependencies = [
"cfg-if 1.0.0",
"cfg-if",
"cpufeatures",
"digest 0.10.6",
]
@ -3521,7 +3505,7 @@ version = "3.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998"
dependencies = [
"cfg-if 1.0.0",
"cfg-if",
"fastrand",
"redox_syscall 0.3.5",
"rustix 0.37.17",
@ -3580,7 +3564,7 @@ version = "1.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152"
dependencies = [
"cfg-if 1.0.0",
"cfg-if",
"once_cell",
]
@ -4255,7 +4239,7 @@ version = "0.7.0"
dependencies = [
"base64ct",
"by_address",
"cfg-if 1.0.0",
"cfg-if",
"derive_builder_fork_arti",
"derive_more",
"educe",
@ -4582,7 +4566,7 @@ version = "0.1.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2fce9567bd60a67d08a16488756721ba392f24f29006402881e43b19aac64307"
dependencies = [
"cfg-if 1.0.0",
"cfg-if",
"pin-project-lite",
"tracing-attributes",
"tracing-core",
@ -4690,7 +4674,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4f7f83d1e4a0e4358ac54c5c3681e5d7da5efc5a7a632c90bb6d6669ddd9bc26"
dependencies = [
"async-trait",
"cfg-if 1.0.0",
"cfg-if",
"data-encoding",
"enum-as-inner",
"futures-channel",
@ -4909,7 +4893,7 @@ version = "0.2.84"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
dependencies = [
"cfg-if 1.0.0",
"cfg-if",
"wasm-bindgen-macro",
]
@ -4934,7 +4918,7 @@ version = "0.4.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454"
dependencies = [
"cfg-if 1.0.0",
"cfg-if",
"js-sys",
"wasm-bindgen",
"web-sys",

View File

@ -21,7 +21,9 @@ asynchronous-codec = { version = "0.6.0", features = ["json"] }
bytes = "1"
erased-serde = "0.3.25"
futures = "0.3.14"
generational-arena = "0.2.8"
# I hope we can use this again, assuming our MPL-2.0 issues get straightened
# out.
# generational-arena = "0.2.8"
pin-project = "1"
serde = { version = "1.0.103", features = ["derive"] }
serde_json = "1.0.50"

View File

@ -8,9 +8,85 @@ use std::any;
use std::collections::HashMap;
use std::sync::{Arc, Weak};
use generational_arena::Arena;
use fake_generational_arena::{self as generational_arena, FakeArena as Arena};
// use generational_arena::Arena;
use tor_rpcbase as rpc;
/// Fake implementation of `generational_arena` while we sort out which MPL-2.0
/// they meant.
///
/// (See issue #845)
///
/// TODO RPC: Replace this with `generational_arena` if they agree with us that
/// they meant "no exhibit B", or with something else if they don't.
mod fake_generational_arena {
#![allow(missing_docs, unreachable_pub)]
#![allow(clippy::missing_docs_in_private_items)]
use std::collections::HashMap;
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
pub(crate) struct Index(u64);
#[derive(Clone, Debug)]
pub(crate) struct FakeArena<T> {
nextkey: u64,
map: HashMap<u64, T>,
}
impl Index {
pub fn into_raw_parts(self) -> (usize, u64) {
(0, self.0)
}
pub fn from_raw_parts(_: usize, idx: u64) -> Self {
Self(idx)
}
}
impl<T> FakeArena<T> {
pub fn new() -> Self {
Self {
nextkey: 0,
map: HashMap::new(),
}
}
pub fn capacity(&self) -> usize {
self.map.capacity()
}
pub fn len(&self) -> usize {
self.map.len()
}
pub fn reserve(&mut self, additional: usize) {
self.map.reserve(additional);
}
pub fn get(&self, index: Index) -> Option<&T> {
self.map.get(&index.0)
}
pub fn get_mut(&mut self, index: Index) -> Option<&mut T> {
self.map.get_mut(&index.0)
}
pub fn insert(&mut self, value: T) -> Index {
let key = self.nextkey;
self.nextkey += 1;
self.map.insert(key, value);
Index(key)
}
pub fn remove(&mut self, index: Index) -> Option<T> {
self.map.remove(&index.0)
}
pub fn iter(&self) -> impl Iterator<Item = (Index, &T)> {
self.map.iter().map(|(idx, val)| (Index(*idx), val))
}
pub fn retain<F>(&mut self, mut func: F)
where
F: FnMut(Index, &T) -> bool,
{
self.map.retain(|k, v| func(Index(*k), v));
}
}
impl<T> Default for FakeArena<T> {
fn default() -> Self {
Self::new()
}
}
}
/// Strong or weak reference to an Object.
enum ObjRef {
/// A strong reference