diff options
-rw-r--r-- | Cargo.lock | 65 | ||||
-rw-r--r-- | core/Cargo.toml | 1 | ||||
-rw-r--r-- | core/lib.rs | 2 | ||||
-rw-r--r-- | core/resources.rs | 34 |
4 files changed, 41 insertions, 61 deletions
diff --git a/Cargo.lock b/Cargo.lock index 615c410d3..62a5e9ba3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -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", @@ -559,12 +558,6 @@ dependencies = [ ] [[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" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -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]] @@ -1190,6 +1183,12 @@ 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" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -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", ] diff --git a/core/Cargo.toml b/core/Cargo.toml index d9b1243fc..f279accef 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -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" diff --git a/core/lib.rs b/core/lib.rs index ba7fdcd21..73d0da071 100644 --- a/core/lib.rs +++ b/core/lib.rs @@ -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; diff --git a/core/resources.rs b/core/resources.rs index 7a42a68a9..51d3260dc 100644 --- a/core/resources.rs +++ b/core/resources.rs @@ -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::*; |