Skip to content
Snippets Groups Projects
fqpath.rs 1.83 KiB
Newer Older
use proc_macro2::TokenStream;
use quote::{quote, ToTokens};

macro_rules! fq {
	($name:ident => $($tokens:tt)*) => {
		pub(crate) struct $name;
		impl ToTokens for $name {
			fn to_tokens(&self, tokens: &mut TokenStream) {
				quote!($($tokens)*).to_tokens(tokens);
			}
		}
	};
}

fq!(FQSerialize => ::serde::Serialize);
fq!(FQDeserialize => ::serde::Deserialize);
fq!(FQVec => ::std::vec::Vec);
fq!(FQString => ::std::string::String);
fq!(FQHashMap => ::std::collections::HashMap);
fq!(FQClone => ::core::clone::Clone);
fq!(FQDebug => ::core::fmt::Debug);
fq!(FQDisplay => ::core::fmt::Display);
fq!(FQDefault => ::core::default::Default);
fq!(FQSend => ::core::marker::Send);
fq!(FQSync => ::core::marker::Sync);
fq!(FQFrom => ::std::convert::From);

fq!(ImportBevyPrelude => use ::bevy::prelude::*);

fq!(BevyApp => ::bevy::app::App);
fq!(BevyPlugin => ::bevy::app::Plugin);
fq!(BevyUpdate => ::bevy::app::Update);
fq!(BevyRes => ::bevy::ecs::system::Res);
fq!(BevyResMut => ::bevy::ecs::system::ResMut);
fq!(BevyEventReader => ::bevy::ecs::event::EventReader);
fq!(BevySystemParam => ::bevy::ecs::system::SystemParam);
fq!(BevyResource => ::bevy::ecs::system::Resource);
fq!(BevyTypePath=> ::bevy::reflect::TypePath);
fq!(BevyTypeUuid => ::bevy::reflect::TypeUuid);
fq!(BevyDeref => ::bevy::prelude::Deref);
fq!(BevyDerefMut => ::bevy::prelude::DerefMut);
fq!(BevyHandle => ::bevy::asset::Handle);
fq!(BevyAssets => ::bevy::asset::Assets);
fq!(BevyAssetEvent => ::bevy::asset::AssetEvent);
fq!(BevyAssetLoader => ::bevy::asset::AssetLoader);
fq!(BevyBoxedFuture => ::bevy::asset::BoxedFuture);
fq!(BevyLoadContext => ::bevy::asset::LoadContext);
fq!(BevyLoadedAsset => ::bevy::asset::LoadedAsset);
fq!(BevyAssetServer => ::bevy::asset::AssetServer);
fq!(BevyAddAsset => ::bevy::asset::AddAsset);

#[cfg(feature = "kayak")]
fq!(KayakWidget => ::kayak_ui::prelude::Widget);