mirror of
https://github.com/denoland/deno.git
synced 2025-03-03 09:31:22 -05:00
refactor: Remove dependency on downcast_rs. (#7475)
We don't seem to use downcast_rs in any essential way. We can just use the standard library `Any` directly.
This commit is contained in:
parent
7023263b30
commit
cf91550c65
4 changed files with 41 additions and 61 deletions
65
Cargo.lock
generated
65
Cargo.lock
generated
|
@ -93,7 +93,7 @@ dependencies = [
|
|||
"proc-macro2 1.0.21",
|
||||
"quote 1.0.7",
|
||||
"swc_macros_common",
|
||||
"syn 1.0.40",
|
||||
"syn 1.0.41",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -326,12 +326,12 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "crossbeam-channel"
|
||||
version = "0.4.3"
|
||||
version = "0.4.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "09ee0cc8804d5393478d743b035099520087a5186f3b93fa58cec08fa62407b6"
|
||||
checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"crossbeam-utils",
|
||||
"maybe-uninit",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -366,7 +366,7 @@ dependencies = [
|
|||
"proc-macro2 1.0.21",
|
||||
"quote 1.0.7",
|
||||
"strsim 0.9.3",
|
||||
"syn 1.0.40",
|
||||
"syn 1.0.41",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -377,7 +377,7 @@ checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72"
|
|||
dependencies = [
|
||||
"darling_core",
|
||||
"quote 1.0.7",
|
||||
"syn 1.0.40",
|
||||
"syn 1.0.41",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -457,7 +457,6 @@ name = "deno_core"
|
|||
version = "0.57.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"downcast-rs",
|
||||
"futures",
|
||||
"indexmap",
|
||||
"lazy_static",
|
||||
|
@ -558,12 +557,6 @@ dependencies = [
|
|||
"syn 0.15.44",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "downcast-rs"
|
||||
version = "1.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650"
|
||||
|
||||
[[package]]
|
||||
name = "dprint-core"
|
||||
version = "0.28.0"
|
||||
|
@ -615,7 +608,7 @@ dependencies = [
|
|||
"pmutil",
|
||||
"proc-macro2 1.0.21",
|
||||
"swc_macros_common",
|
||||
"syn 1.0.40",
|
||||
"syn 1.0.41",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -687,7 +680,7 @@ dependencies = [
|
|||
"pmutil",
|
||||
"proc-macro2 1.0.21",
|
||||
"swc_macros_common",
|
||||
"syn 1.0.40",
|
||||
"syn 1.0.41",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -788,7 +781,7 @@ dependencies = [
|
|||
"proc-macro-hack",
|
||||
"proc-macro2 1.0.21",
|
||||
"quote 1.0.7",
|
||||
"syn 1.0.40",
|
||||
"syn 1.0.41",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1097,7 +1090,7 @@ dependencies = [
|
|||
"pmutil",
|
||||
"proc-macro2 1.0.21",
|
||||
"quote 1.0.7",
|
||||
"syn 1.0.40",
|
||||
"syn 1.0.41",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1189,6 +1182,12 @@ version = "0.1.8"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08"
|
||||
|
||||
[[package]]
|
||||
name = "maybe-uninit"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00"
|
||||
|
||||
[[package]]
|
||||
name = "memchr"
|
||||
version = "2.3.3"
|
||||
|
@ -1500,7 +1499,7 @@ dependencies = [
|
|||
"proc-macro-hack",
|
||||
"proc-macro2 1.0.21",
|
||||
"quote 1.0.7",
|
||||
"syn 1.0.40",
|
||||
"syn 1.0.41",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1529,7 +1528,7 @@ checksum = "2c0e815c3ee9a031fdf5af21c10aa17c573c9c6a566328d99e3936c34e36461f"
|
|||
dependencies = [
|
||||
"proc-macro2 1.0.21",
|
||||
"quote 1.0.7",
|
||||
"syn 1.0.40",
|
||||
"syn 1.0.41",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1552,7 +1551,7 @@ checksum = "3894e5d549cccbe44afecf72922f277f603cd4bb0219c8342631ef18fffbe004"
|
|||
dependencies = [
|
||||
"proc-macro2 1.0.21",
|
||||
"quote 1.0.7",
|
||||
"syn 1.0.40",
|
||||
"syn 1.0.41",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2022,7 +2021,7 @@ checksum = "f630a6370fd8e457873b4bd2ffdae75408bc291ba72be773772a4c2a065d9ae8"
|
|||
dependencies = [
|
||||
"proc-macro2 1.0.21",
|
||||
"quote 1.0.7",
|
||||
"syn 1.0.40",
|
||||
"syn 1.0.41",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2183,7 +2182,7 @@ dependencies = [
|
|||
"proc-macro2 1.0.21",
|
||||
"quote 1.0.7",
|
||||
"swc_macros_common",
|
||||
"syn 1.0.40",
|
||||
"syn 1.0.41",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2269,7 +2268,7 @@ dependencies = [
|
|||
"proc-macro2 1.0.21",
|
||||
"quote 1.0.7",
|
||||
"swc_macros_common",
|
||||
"syn 1.0.40",
|
||||
"syn 1.0.41",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2315,7 +2314,7 @@ dependencies = [
|
|||
"proc-macro2 1.0.21",
|
||||
"quote 1.0.7",
|
||||
"swc_macros_common",
|
||||
"syn 1.0.40",
|
||||
"syn 1.0.41",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2362,7 +2361,7 @@ dependencies = [
|
|||
"proc-macro2 1.0.21",
|
||||
"quote 1.0.7",
|
||||
"swc_macros_common",
|
||||
"syn 1.0.40",
|
||||
"syn 1.0.41",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2417,7 +2416,7 @@ dependencies = [
|
|||
"pmutil",
|
||||
"proc-macro2 1.0.21",
|
||||
"quote 1.0.7",
|
||||
"syn 1.0.40",
|
||||
"syn 1.0.41",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2441,7 +2440,7 @@ dependencies = [
|
|||
"proc-macro2 1.0.21",
|
||||
"quote 1.0.7",
|
||||
"swc_macros_common",
|
||||
"syn 1.0.40",
|
||||
"syn 1.0.41",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2457,9 +2456,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "1.0.40"
|
||||
version = "1.0.41"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "963f7d3cc59b59b9325165add223142bbf1df27655d07789f109896d353d8350"
|
||||
checksum = "6690e3e9f692504b941dc6c3b188fd28df054f7fb8469ab40680df52fdcc842b"
|
||||
dependencies = [
|
||||
"proc-macro2 1.0.21",
|
||||
"quote 1.0.7",
|
||||
|
@ -2549,7 +2548,7 @@ checksum = "bd80fc12f73063ac132ac92aceea36734f04a1d93c1240c6944e23a3b8841793"
|
|||
dependencies = [
|
||||
"proc-macro2 1.0.21",
|
||||
"quote 1.0.7",
|
||||
"syn 1.0.40",
|
||||
"syn 1.0.41",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2610,7 +2609,7 @@ checksum = "f0c3acc6aa564495a0f2e1d59fab677cd7f81a19994cfc7f3ad0e64301560389"
|
|||
dependencies = [
|
||||
"proc-macro2 1.0.21",
|
||||
"quote 1.0.7",
|
||||
"syn 1.0.40",
|
||||
"syn 1.0.41",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2929,7 +2928,7 @@ dependencies = [
|
|||
"log",
|
||||
"proc-macro2 1.0.21",
|
||||
"quote 1.0.7",
|
||||
"syn 1.0.40",
|
||||
"syn 1.0.41",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
||||
|
@ -2963,7 +2962,7 @@ checksum = "f249f06ef7ee334cc3b8ff031bfc11ec99d00f34d86da7498396dc1e3b1498fe"
|
|||
dependencies = [
|
||||
"proc-macro2 1.0.21",
|
||||
"quote 1.0.7",
|
||||
"syn 1.0.40",
|
||||
"syn 1.0.41",
|
||||
"wasm-bindgen-backend",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
|
|
@ -14,7 +14,6 @@ path = "lib.rs"
|
|||
|
||||
[dependencies]
|
||||
anyhow = "1.0.32"
|
||||
downcast-rs = "1.2.0"
|
||||
futures = "0.3.5"
|
||||
indexmap = "1.6.0"
|
||||
lazy_static = "1.4.0"
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
|
||||
|
||||
#[macro_use]
|
||||
extern crate downcast_rs;
|
||||
extern crate futures;
|
||||
#[macro_use]
|
||||
extern crate lazy_static;
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
// Resources may or may not correspond to a real operating system file
|
||||
// descriptor (hence the different name).
|
||||
|
||||
use downcast_rs::Downcast;
|
||||
use std::any::Any;
|
||||
use std::collections::HashMap;
|
||||
|
||||
|
@ -16,7 +15,7 @@ pub type ResourceId = u32;
|
|||
|
||||
/// These store Deno's file descriptors. These are not necessarily the operating
|
||||
/// system ones.
|
||||
type ResourceMap = HashMap<ResourceId, (String, Box<dyn Resource>)>;
|
||||
type ResourceMap = HashMap<ResourceId, (String, Box<dyn Any>)>;
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct ResourceTable {
|
||||
|
@ -29,20 +28,14 @@ impl ResourceTable {
|
|||
self.map.contains_key(&rid)
|
||||
}
|
||||
|
||||
pub fn get<T: Resource>(&self, rid: ResourceId) -> Option<&T> {
|
||||
if let Some((_name, resource)) = self.map.get(&rid) {
|
||||
return resource.downcast_ref::<T>();
|
||||
}
|
||||
|
||||
None
|
||||
pub fn get<T: Any>(&self, rid: ResourceId) -> Option<&T> {
|
||||
let (_, resource) = self.map.get(&rid)?;
|
||||
resource.downcast_ref::<T>()
|
||||
}
|
||||
|
||||
pub fn get_mut<T: Resource>(&mut self, rid: ResourceId) -> Option<&mut T> {
|
||||
if let Some((_name, resource)) = self.map.get_mut(&rid) {
|
||||
return resource.downcast_mut::<T>();
|
||||
}
|
||||
|
||||
None
|
||||
pub fn get_mut<T: Any>(&mut self, rid: ResourceId) -> Option<&mut T> {
|
||||
let (_, resource) = self.map.get_mut(&rid)?;
|
||||
resource.downcast_mut::<T>()
|
||||
}
|
||||
|
||||
// TODO: resource id allocation should probably be randomized for security.
|
||||
|
@ -52,7 +45,7 @@ impl ResourceTable {
|
|||
next_rid as ResourceId
|
||||
}
|
||||
|
||||
pub fn add(&mut self, name: &str, resource: Box<dyn Resource>) -> ResourceId {
|
||||
pub fn add(&mut self, name: &str, resource: Box<dyn Any>) -> ResourceId {
|
||||
let rid = self.next_rid();
|
||||
let r = self.map.insert(rid, (name.to_string(), resource));
|
||||
assert!(r.is_none());
|
||||
|
@ -73,7 +66,7 @@ impl ResourceTable {
|
|||
self.map.remove(&rid).map(|(_name, _resource)| ())
|
||||
}
|
||||
|
||||
pub fn remove<T: Resource>(&mut self, rid: ResourceId) -> Option<Box<T>> {
|
||||
pub fn remove<T: Any>(&mut self, rid: ResourceId) -> Option<Box<T>> {
|
||||
if let Some((_name, resource)) = self.map.remove(&rid) {
|
||||
let res = match resource.downcast::<T>() {
|
||||
Ok(res) => Some(res),
|
||||
|
@ -85,15 +78,6 @@ impl ResourceTable {
|
|||
}
|
||||
}
|
||||
|
||||
/// Abstract type representing resource in Deno.
|
||||
///
|
||||
/// The only thing it does is implementing `Downcast` trait
|
||||
/// that allows to cast resource to concrete type in `TableResource::get`
|
||||
/// and `TableResource::get_mut` methods.
|
||||
pub trait Resource: Downcast + Any {}
|
||||
impl<T> Resource for T where T: Downcast + Any {}
|
||||
impl_downcast!(Resource);
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
|
Loading…
Add table
Reference in a new issue