use downcast-rs instead of our own AsAny
This commit is contained in:
parent
234291f666
commit
4826d757ac
|
@ -869,6 +869,8 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "derive_builder"
|
name = "derive_builder"
|
||||||
version = "0.11.0"
|
version = "0.11.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ddd8db2d51ce241afb74f9e5cf9482de69c4b77657c2ddaf78993eda8ce2ce8c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"derive_builder_macro",
|
"derive_builder_macro",
|
||||||
]
|
]
|
||||||
|
@ -876,6 +878,8 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "derive_builder_core"
|
name = "derive_builder_core"
|
||||||
version = "0.11.0"
|
version = "0.11.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "fcf03b84d76c5bb011d983c17e2675ab49f5498f121bf1ceae5b5855b4a4dddd"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"darling",
|
"darling",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
|
@ -886,6 +890,8 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "derive_builder_macro"
|
name = "derive_builder_macro"
|
||||||
version = "0.11.0"
|
version = "0.11.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5cae44c47bca4fd1eaeda52b3d0eecb664ddcbc0d4e7b238bae7ec2c931646c0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"derive_builder_core",
|
"derive_builder_core",
|
||||||
"syn",
|
"syn",
|
||||||
|
@ -974,6 +980,12 @@ dependencies = [
|
||||||
"winapi 0.3.9",
|
"winapi 0.3.9",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "downcast-rs"
|
||||||
|
version = "1.2.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "easy-parallel"
|
name = "easy-parallel"
|
||||||
version = "3.2.0"
|
version = "3.2.0"
|
||||||
|
@ -3218,6 +3230,7 @@ dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"bounded-vec-deque",
|
"bounded-vec-deque",
|
||||||
"derive_builder",
|
"derive_builder",
|
||||||
|
"downcast-rs",
|
||||||
"educe",
|
"educe",
|
||||||
"futures",
|
"futures",
|
||||||
"futures-await-test",
|
"futures-await-test",
|
||||||
|
|
|
@ -34,6 +34,7 @@ tor-rtcompat = { path="../tor-rtcompat", version = "0.1.0"}
|
||||||
async-trait = "0.1.2"
|
async-trait = "0.1.2"
|
||||||
bounded-vec-deque = "0.1"
|
bounded-vec-deque = "0.1"
|
||||||
derive_builder = "0.11"
|
derive_builder = "0.11"
|
||||||
|
downcast-rs = "1.2.0"
|
||||||
educe = "0.4.6"
|
educe = "0.4.6"
|
||||||
futures = "0.3.14"
|
futures = "0.3.14"
|
||||||
humantime-serde = "1.1.1"
|
humantime-serde = "1.1.1"
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
//! Code related to tracking what activities a circuit can be used for.
|
//! Code related to tracking what activities a circuit can be used for.
|
||||||
|
|
||||||
|
use downcast_rs::{impl_downcast, Downcast};
|
||||||
use rand::Rng;
|
use rand::Rng;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::fmt::{self, Display};
|
use std::fmt::{self, Display};
|
||||||
|
@ -100,27 +101,14 @@ impl Display for TargetPorts {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
use std::any::Any;
|
|
||||||
|
|
||||||
/// TODO
|
/// TODO
|
||||||
pub trait AsAny {
|
pub trait Isolation: Downcast + std::fmt::Debug + Send + Sync + 'static {
|
||||||
/// TODO
|
|
||||||
fn as_any(&self) -> &dyn Any;
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<T: 'static> AsAny for T {
|
|
||||||
fn as_any(&self) -> &dyn Any {
|
|
||||||
self
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// TODO
|
|
||||||
pub trait Isolation: AsAny + std::fmt::Debug + Send + Sync + 'static {
|
|
||||||
/// TODO
|
/// TODO
|
||||||
fn isolated(&self, other: &dyn Isolation) -> bool;
|
fn isolated(&self, other: &dyn Isolation) -> bool;
|
||||||
/// TODO
|
/// TODO
|
||||||
fn join(&self, other: &dyn Isolation) -> JoinResult;
|
fn join(&self, other: &dyn Isolation) -> JoinResult;
|
||||||
}
|
}
|
||||||
|
impl_downcast!(Isolation);
|
||||||
|
|
||||||
impl<T: IsolationHelper + std::fmt::Debug + Send + Sync + 'static> Isolation for T {
|
impl<T: IsolationHelper + std::fmt::Debug + Send + Sync + 'static> Isolation for T {
|
||||||
fn isolated(&self, other: &dyn Isolation) -> bool {
|
fn isolated(&self, other: &dyn Isolation) -> bool {
|
||||||
|
|
Loading…
Reference in New Issue