diff options
author | Marcel Müller <m.mueller@ifm.com> | 2022-06-23 16:43:13 +0200 |
---|---|---|
committer | Marcel Müller <m.mueller@ifm.com> | 2022-06-23 16:43:13 +0200 |
commit | ed1808a9be40210b4d4d3e304f2582a7883b3211 (patch) | |
tree | ce23d7f8b8a64aa1be8f42219892d5adafbb71b6 | |
parent | 3dc51be974294fafa60c9b73280b9be241277765 (diff) | |
parent | 10ef8e00bd7c78ed709c933edd92a59cc885e341 (diff) |
Merge remote-tracking branch 'matze/feature/add_tedge_api/bevy-reflect-typeuuid' into feature/add_tedge_api_only
-rw-r--r-- | Cargo.lock | 132 | ||||
-rw-r--r-- | crates/core/tedge_api/Cargo.toml | 2 | ||||
-rw-r--r-- | crates/core/tedge_api/README.md | 4 | ||||
-rw-r--r-- | crates/core/tedge_api/examples/heartbeat.rs | 2 | ||||
-rw-r--r-- | crates/core/tedge_api/examples/universal_log.rs | 6 | ||||
-rw-r--r-- | crates/core/tedge_api/src/address.rs | 4 | ||||
-rw-r--r-- | crates/core/tedge_api/src/lib.rs | 3 | ||||
-rw-r--r-- | crates/core/tedge_api/src/message.rs | 16 | ||||
-rw-r--r-- | crates/core/tedge_api/src/plugin.rs | 10 |
9 files changed, 133 insertions, 46 deletions
@@ -31,6 +31,17 @@ dependencies = [ ] [[package]] +name = "ahash" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +dependencies = [ + "getrandom", + "once_cell", + "version_check", +] + +[[package]] name = "aho-corasick" version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -245,6 +256,71 @@ dependencies = [ ] [[package]] +name = "bevy_derive" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6abddf2ed415f31d28a9bf9ab3c0bc857e98a722858d38dba65bdda481f8d714" +dependencies = [ + "bevy_macro_utils", + "quote 1.0.18", + "syn 1.0.93", +] + +[[package]] +name = "bevy_macro_utils" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7ddfc33a99547e36718e56e414541e461c74ec318ff987a1e9f4ff46d0dacbb" +dependencies = [ + "cargo-manifest", + "quote 1.0.18", + "syn 1.0.93", +] + +[[package]] +name = "bevy_reflect" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d0793107bc4b7c6bd04232d739fc8d70aa5fb313bfad6e850f91f79b2557eed" +dependencies = [ + "bevy_reflect_derive", + "bevy_utils", + "downcast-rs", + "erased-serde", + "parking_lot 0.11.2", + "serde", + "thiserror", +] + +[[package]] +name = "bevy_reflect_derive" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81c88de8067d19dfde31662ee78e3ee6971e2df27715799f91b515b37a636677" +dependencies = [ + "bevy_macro_utils", + "proc-macro2 1.0.38", + "quote 1.0.18", + "syn 1.0.93", + "uuid", +] + +[[package]] +name = "bevy_utils" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f354c584812996febd48cc885f36b23004b49d6680e73fc95a69a2bb17a48e5" +dependencies = [ + "ahash", + "bevy_derive", + "getrandom", + "hashbrown", + "instant", + "tracing", + "uuid", +] + +[[package]] name = "bit-set" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -379,6 +455,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dba" [[package]] +name = "cargo-manifest" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af6d65c7592744998c67947ec771c62687c76f00179a83ffd563c0482046bb98" +dependencies = [ + "serde", + "serde_derive", + "toml", +] + +[[package]] name = "cast" version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -839,6 +926,15 @@ dependencies = [ ] [[package]] +name = "erased-serde" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81d013529d5574a60caeda29e179e695125448e5de52e3874f7b4c1d7360e18e" +dependencies = [ + "serde", +] + +[[package]] name = "event-listener" version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1034,8 +1130,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" dependencies = [ "cfg-if 1.0.0", + "js-sys", "libc", "wasi 0.10.2+wasi-snapshot-preview1", + "wasm-bindgen", ] [[package]] @@ -1084,6 +1182,10 @@ name = "hashbrown" version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +dependencies = [ + "ahash", + "serde", +] [[package]] name = "headers" @@ -1242,6 +1344,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", ] [[package]] @@ -2856,6 +2961,7 @@ name = "tedge_api" version = "0.1.0" dependencies = [ "async-trait", + "bevy_reflect", "downcast-rs", "futures", "miette", @@ -2872,7 +2978,6 @@ dependencies = [ "tokio-util 0.7.0", "toml", "tracing", - "type-uuid", ] [[package]] @@ -3277,6 +3382,7 @@ version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" dependencies = [ + "indexmap", "serde", ] @@ -3397,26 +3503,6 @@ dependencies = [ ] [[package]] -name = "type-uuid" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15043bca41f43205c9b0055d365a405d81b8e4a8ff99c36b263cf79ad1f4c051" -dependencies = [ - "type-uuid-derive", -] - -[[package]] -name = "type-uuid-derive" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e090ee857961c746ecf7fb596022493ffaad54d189061df49f7a0cf17796dc1" -dependencies = [ - "quote 1.0.18", - "syn 1.0.93", - "uuid", -] - -[[package]] name = "typed-arena" version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3515,6 +3601,10 @@ name = "uuid" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom", + "serde", +] [[package]] name = "value-bag" diff --git a/crates/core/tedge_api/Cargo.toml b/crates/core/tedge_api/Cargo.toml index a4ff92ab..06184c32 100644 --- a/crates/core/tedge_api/Cargo.toml +++ b/crates/core/tedge_api/Cargo.toml @@ -21,7 +21,7 @@ termimad = "0.20.1" nu-ansi-term = "0.45.1" tedge_config_derive = { version = "0.1.0", path = "tedge_config_derive" } tracing = "0.1" -type-uuid = "0.1.2" +bevy_reflect = "0.7.0" [dev-dependencies] pretty_assertions = "1.2.1" diff --git a/crates/core/tedge_api/README.md b/crates/core/tedge_api/README.md index 8c59231a..07a4a5bc 100644 --- a/crates/core/tedge_api/README.md +++ b/crates/core/tedge_api/README.md @@ -85,9 +85,9 @@ others. For example: ```rust -use tedge_api::{Message, TypeUuid}; +use tedge_api::Message; -#[derive(Debug, TypeUuid)] +#[derive(Debug, bevy_reflect::TypeUuid)] #[uuid = "b60dd50c-ccef-4204-b370-18bbbb68d6e2"] struct Value(f64); diff --git a/crates/core/tedge_api/examples/heartbeat.rs b/crates/core/tedge_api/examples/heartbeat.rs index 8d64232a..41dc7e74 100644 --- a/crates/core/tedge_api/examples/heartbeat.rs +++ b/crates/core/tedge_api/examples/heartbeat.rs @@ -1,6 +1,7 @@ use std::{collections::HashMap, sync::Arc, time::Duration}; use async_trait::async_trait; +use bevy_reflect::TypeUuid; use futures::FutureExt; use tedge_api::{ address::ReplySenderFor, @@ -10,7 +11,6 @@ use tedge_api::{ PluginError, }; use tokio::sync::RwLock; -use type_uuid::TypeUuid; #[derive(Debug, TypeUuid)] #[uuid = "94916be9-17ba-4bca-a3a0-408d33136fed"] diff --git a/crates/core/tedge_api/examples/universal_log.rs b/crates/core/tedge_api/examples/universal_log.rs index 064ffa22..0a1c6793 100644 --- a/crates/core/tedge_api/examples/universal_log.rs +++ b/crates/core/tedge_api/examples/universal_log.rs @@ -1,6 +1,7 @@ use std::{collections::HashMap, sync::Arc, time::Duration}; use async_trait::async_trait; +use bevy_reflect::TypeUuid; use futures::FutureExt; use tedge_api::{ address::ReplySenderFor, @@ -10,16 +11,15 @@ use tedge_api::{ PluginError, }; use tokio::sync::RwLock; -use type_uuid::TypeUuid; /// A message that represents a heartbeat that gets sent to plugins #[derive(Debug, TypeUuid)] -#[uuid = "1f807f7b-888f-4881-a1b5-16380e32f8c2"] +#[uuid = "1f807f7b-888f-4881-a1b5-16380e32f8c2"] struct Heartbeat; impl Message for Heartbeat {} #[derive(Debug, TypeUuid)] -#[uuid = "346e233f-c24a-47e0-a15b-3ec0d1e19019"] +#[uuid = "346e233f-c24a-47e0-a15b-3ec0d1e19019"] struct RandomData; impl Message for RandomData {} diff --git a/crates/core/tedge_api/src/address.rs b/crates/core/tedge_api/src/address.rs index 4249ecfc..a183b11c 100644 --- a/crates/core/tedge_api/src/address.rs +++ b/crates/core/tedge_api/src/address.rs @@ -359,8 +359,8 @@ pub trait Contains<M: Message> {} /// ## Example /// /// ```rust +/// # use bevy_reflect::TypeUuid; /// # use tedge_api::{Message, make_receiver_bundle}; -/// # use type_uuid::TypeUuid; /// /// #[derive(Debug, TypeUuid)] /// #[uuid = "b4e62630-0404-4d39-b435-95d777029887"] @@ -404,9 +404,9 @@ macro_rules! make_receiver_bundle { mod tests { use std::sync::Arc; + use bevy_reflect::TypeUuid; use static_assertions::{assert_impl_all, assert_not_impl_any}; use tokio::sync::RwLock; - use type_uuid::TypeUuid; use crate::{ address::{InnerMessageSender, ReplyReceiverFor, ReplySenderFor}, diff --git a/crates/core/tedge_api/src/lib.rs b/crates/core/tedge_api/src/lib.rs index f9716981..758c33aa 100644 --- a/crates/core/tedge_api/src/lib.rs +++ b/crates/core/tedge_api/src/lib.rs @@ -33,9 +33,6 @@ pub use tokio_util::sync::CancellationToken; /// Derive macro for self-describing configurations pub use tedge_config_derive::Config; -/// Derive macro for type uuids -pub use type_uuid::TypeUuid; - #[doc(hidden)] pub mod _internal { pub use futures::future::BoxFuture; diff --git a/crates/core/tedge_api/src/message.rs b/crates/core/tedge_api/src/message.rs index 1e63a368..dbde7feb 100644 --- a/crates/core/tedge_api/src/message.rs +++ b/crates/core/tedge_api/src/message.rs @@ -1,6 +1,6 @@ use downcast_rs::{impl_downcast, DowncastSync}; +use bevy_reflect::{TypeUuid, TypeUuidDynamic}; use serde::Serialize; -use type_uuid::{TypeUuid, TypeUuidDynamic}; use crate::address::AnyMessageBox; @@ -81,7 +81,7 @@ pub struct MessageType { } #[derive(Clone, PartialEq, Debug)] -struct Uuid([u8; 16]); +struct Uuid(bevy_reflect::Uuid); #[derive(Debug, Clone, Serialize)] enum MessageKind { @@ -113,10 +113,10 @@ impl MessageType { /// Get the [`MessageType`] for a `M`:[`Message`] #[must_use] pub fn for_message<M: Message + TypeUuid>() -> Self { - let id = M::UUID; + let id = M::TYPE_UUID; MessageType { name: std::any::type_name::<M>(), - kind: if id == AnyMessage::UUID { + kind: if id == AnyMessage::TYPE_UUID { MessageKind::Wildcard } else { MessageKind::Typed(Uuid(id)) @@ -125,10 +125,10 @@ impl MessageType { } pub(crate) fn from_message(msg: &dyn Message) -> Self { - let id = msg.uuid(); + let id = msg.type_uuid(); MessageType { - name: msg.type_name(), - kind: if id == AnyMessage::UUID { + name: TypeUuidDynamic::type_name(msg), + kind: if id == AnyMessage::TYPE_UUID { MessageKind::Wildcard } else { MessageKind::Typed(Uuid(id)) @@ -154,7 +154,7 @@ crate::make_receiver_bundle!(pub struct CoreMessages(StopCore)); #[cfg(test)] mod tests { - use type_uuid::TypeUuid; + use bevy_reflect::TypeUuid; use crate::Message; diff --git a/crates/core/tedge_api/src/plugin.rs b/crates/core/tedge_api/src/plugin.rs index 718dbf67..2129d4bf 100644 --- a/crates/core/tedge_api/src/plugin.rs +++ b/crates/core/tedge_api/src/plugin.rs @@ -4,9 +4,9 @@ //! - Its purpose is to simply instantiate your plugins as needed with custom logic if required //! 2. Create your plugin struct that implements `Plugin` +use bevy_reflect::TypeUuid; use futures::future::BoxFuture; use std::any::Any; -use type_uuid::TypeUuid; use downcast_rs::{impl_downcast, DowncastSync}; @@ -96,8 +96,8 @@ pub trait PluginBuilder<PD: PluginDirectory>: Sync + Send + 'static { /// # Example /// /// ```no_run + /// # use bevy_reflect::TypeUuid; /// # use tedge_api::{Plugin, plugin::BuiltPlugin, PluginError, PluginExt, PluginDirectory, PluginBuilder, PluginConfiguration}; - /// # use type_uuid::TypeUuid; /// /// #[derive(Debug, TypeUuid)] /// #[uuid = "46f5d318-4158-4726-83dd-9b310cae3328"] @@ -214,13 +214,13 @@ pub trait PluginBuilder<PD: PluginDirectory>: Sync + Send + 'static { /// # Example /// /// ```no_run + /// # use bevy_reflect::TypeUuid; /// # use tedge_api::plugin::BuiltPlugin; /// # use tedge_api::PluginConfiguration; /// # use tedge_api::Plugin; /// # use tedge_api::PluginBuilder; /// # use tedge_api::PluginDirectory; /// # use tedge_api::PluginExt; - /// # use type_uuid::TypeUuid; /// /// #[derive(Debug, TypeUuid)] /// #[uuid = "39046e3e-05ad-4b16-bbf1-8c2d2da5b668"] @@ -384,11 +384,11 @@ impl HandleTypes { /// /// ```rust /// # use async_trait::async_trait; + /// # use bevy_reflect::TypeUuid; /// # use tedge_api::plugin::{Handle, HandleTypes}; /// # use tedge_api::address::ReplySenderFor; /// # use tedge_api::PluginError; /// # use tedge_api::PluginExt; - /// # use type_uuid::TypeUuid; /// /// #[derive(Debug, TypeUuid)] /// #[uuid = "1276aa9c-5e04-4ab3-a987-61d89765ab33"] @@ -677,9 +677,9 @@ impl_msg_bundle_tuple!(M10 M9 M8 M7 M6 M5 M4 M3 M2 M1); mod tests { use crate::{message::DynMessage, Message}; + use bevy_reflect::TypeUuid; use super::{Plugin, PluginBuilder}; use static_assertions::assert_obj_safe; - use type_uuid::TypeUuid; // Object Safety assert_obj_safe!(PluginBuilder<()>); |