diff --git a/derive/src/lib.rs b/derive/src/lib.rs index ef0408cc4..77c23a76d 100644 --- a/derive/src/lib.rs +++ b/derive/src/lib.rs @@ -72,88 +72,58 @@ pub fn surreal_pickable_resources_derive(input: TokenStream) -> TokenStream { /// ```rust -/// use std::any::Any; -/// -/// #[derive(Node)] +/// #[derive(Pickable, Debug, Serialize)] /// struct Person<'a, T: 'a, U: 'a> { /// name: String, /// age: u8, /// some: &'a T, /// another: &'a U, /// } -/// pick!(PickedPerson, Person as PersonPickable, [name, age]); -/// -/// trait PersonPickable { -/// type name; -/// type age; -/// type some; -/// type another; -/// } /// -/// // impl<'a, T> PersonPicker for Person<'a, T> { -/// impl<'a, T: 'a, U: 'a> PersonPickable for Person<'a, T, U> { -/// type name = String; -/// type age = u8; -/// type some = &'a T; -/// type another = &'a U; -/// } +/// pick!(NewPersonWithUnusedTypeGenericsSkipped, Person<'a,_,_> as PersonPickable, [name, age]); +/// pick!(NewPerson, Person<'a,T,U> as PersonPickable, [name, age]); /// -/// // struct PickedPerson<'a, T> { -/// // name: as PersonPicker>::name, -/// // } -/// struct PickedPerson<'a> { -/// name: , std::marker::PhantomData> as PersonPickable>::name, -/// // __phantom_data: std::marker::PhantomData<&'a T>, -/// // kaka: T -/// } -/// -/// struct PickedPersonAll<'a, U> { -/// // name: > as PersonPickable>::name, -/// name: , U> as PersonPickable>::name, -/// // kaka: &'a std::marker::PhantomData, U -/// // some: , U> as PersonPickable>::some, -/// another: , U> as PersonPickable>::another, +/// pick!{ +/// #[derive(Serialize)] +/// NewPersonWithAttributes, Person<'a,_,_> as PersonPickable, +/// [ +/// #[serde(rename = "name2")] +/// name, +/// age, +/// ] /// } /// /// fn main() { -/// // let person = Person<'a, T> { /// let person = Person { /// name: "Oyelowo".into(), /// age: 25, /// some: &43, /// another: &"kaka", /// }; +/// println!("{:?}", person); /// -/// // let something = PickedPerson::<'_, u32>{ -/// let something = PickedPerson { -/// name: "Oyelowo".into(), -/// // name: person.name, -/// // kaka: 43, -/// // __phantom_data: std::marker::PhantomData, +/// let new2 = NewPersonWithUnusedTypeGenericsSkipped { +/// name: "Oye".to_string(), +/// age: 154, /// }; -/// // std::marker::PhantomData -/// let p2 = PickedPersonAll { -/// name: "Oyelowo".into(), -/// // some: &43, -/// another: &"kaka", +/// +/// println!("{}", new2.name); +/// println!("{}", new2.age); +/// +/// let new1 = NewPerson::<'_, u32, &str> { +/// name: "Oye".to_string(), +/// age: 154, /// }; -/// } +/// println!("{}", new1.name); +/// println!("{}", new1.age); /// -/// // pick!(PickedPerson, Person, [name]); -/// // -/// // #[pick(Person, [name])] -/// // #[pick(AnotherPerson, [age])] -/// // struct PickedPerson { -/// // more_fields: u8, -/// // } -/// // -/// // -/// // #[derive(Serialize, Deserialize)] -/// // struct NewPerson { -/// // #[serde(flatten)] -/// // picked_person: PickedPerson, -/// // more_fields: u8, -/// // } +/// let new3 = NewPersonWithAttributes { +/// name: "Oye".to_string(), +/// age: 154, +/// }; +/// println!("{}", new3.name); +/// } +/// ``` #[proc_macro] pub fn pick(input: TokenStream) -> TokenStream { let output = match syn::parse2::(input.into()) { diff --git a/derive/src/utilities/mod.rs b/derive/src/utilities/mod.rs deleted file mode 100644 index 2687d4a9c..000000000 --- a/derive/src/utilities/mod.rs +++ /dev/null @@ -1,13 +0,0 @@ -// pub mod pick; -// -// use syn; -// use quote::quote; -// -// pub fn generate_pick_macro_fn_tokens(input: proc_macro::TokenStream) -> proc_macro::TokenStream { -// let output = match syn::parse2::(input.into()) { -// Ok(out) => out, -// Err(err) => return err.to_compile_error().into() -// }; -// -// quote!(#output).into() -// } diff --git a/derive/src/utilities/pick.rs b/derive/src/utilities/pick.rs deleted file mode 100644 index e69de29bb..000000000