summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock65
-rw-r--r--core/Cargo.toml1
-rw-r--r--core/lib.rs2
-rw-r--r--core/resources.rs34
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::*;