A better Rust ATProto crate

cleaned up output a bit for zero-field xrpc parameter structs. no builder, no {}, no lifetime

+46 -30
+1 -1
crates/jacquard-api/src/app_bsky/actor/get_preferences.rs
··· 15 15 jacquard_derive::IntoStatic 16 16 )] 17 17 #[serde(rename_all = "camelCase")] 18 - pub struct GetPreferences {} 18 + pub struct GetPreferences; 19 19 #[jacquard_derive::lexicon] 20 20 #[derive( 21 21 serde::Serialize,
+1 -1
crates/jacquard-api/src/app_bsky/notification/get_preferences.rs
··· 15 15 jacquard_derive::IntoStatic 16 16 )] 17 17 #[serde(rename_all = "camelCase")] 18 - pub struct GetPreferences {} 18 + pub struct GetPreferences; 19 19 #[jacquard_derive::lexicon] 20 20 #[derive( 21 21 serde::Serialize,
+1 -1
crates/jacquard-api/src/app_bsky/unspecced/get_tagged_suggestions.rs
··· 15 15 jacquard_derive::IntoStatic 16 16 )] 17 17 #[serde(rename_all = "camelCase")] 18 - pub struct GetTaggedSuggestions {} 18 + pub struct GetTaggedSuggestions; 19 19 #[jacquard_derive::lexicon] 20 20 #[derive( 21 21 serde::Serialize,
+1 -1
crates/jacquard-api/src/com_shinolabs/pinksea/get_identity.rs
··· 15 15 jacquard_derive::IntoStatic 16 16 )] 17 17 #[serde(rename_all = "camelCase")] 18 - pub struct GetIdentity {} 18 + pub struct GetIdentity; 19 19 #[jacquard_derive::lexicon] 20 20 #[derive( 21 21 serde::Serialize,
+1 -1
crates/jacquard-api/src/network_slices/slice/get_jetstream_status.rs
··· 15 15 jacquard_derive::IntoStatic 16 16 )] 17 17 #[serde(rename_all = "camelCase")] 18 - pub struct GetJetstreamStatus {} 18 + pub struct GetJetstreamStatus; 19 19 #[jacquard_derive::lexicon] 20 20 #[derive( 21 21 serde::Serialize,
+1 -1
crates/jacquard-api/src/place_stream/broadcast/get_broadcaster.rs
··· 15 15 jacquard_derive::IntoStatic 16 16 )] 17 17 #[serde(rename_all = "camelCase")] 18 - pub struct GetBroadcaster {} 18 + pub struct GetBroadcaster; 19 19 #[jacquard_derive::lexicon] 20 20 #[derive( 21 21 serde::Serialize,
+17 -6
crates/jacquard-api/src/place_stream/live/get_live_users.rs
··· 6 6 // Any manual changes will be overwritten on the next regeneration. 7 7 8 8 #[derive( 9 - serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq, jacquard_derive::IntoStatic, 9 + serde::Serialize, 10 + serde::Deserialize, 11 + Debug, 12 + Clone, 13 + PartialEq, 14 + Eq, 15 + jacquard_derive::IntoStatic 10 16 )] 11 17 #[serde(rename_all = "camelCase")] 12 18 pub struct GetLiveUsers { ··· 19 25 20 26 pub mod get_live_users_state { 21 27 22 - pub use crate::builder_types::{IsSet, IsUnset, Set, Unset}; 28 + pub use crate::builder_types::{Set, Unset, IsSet, IsUnset}; 23 29 #[allow(unused)] 24 30 use ::core::marker::PhantomData; 25 31 mod sealed { ··· 72 78 self 73 79 } 74 80 /// Set the `before` field to an Option value (optional) 75 - pub fn maybe_before(mut self, value: Option<jacquard_common::types::string::Datetime>) -> Self { 81 + pub fn maybe_before( 82 + mut self, 83 + value: Option<jacquard_common::types::string::Datetime>, 84 + ) -> Self { 76 85 self.__unsafe_private_named.0 = value; 77 86 self 78 87 } ··· 113 122 PartialEq, 114 123 Eq, 115 124 jacquard_derive::IntoStatic, 116 - Default, 125 + Default 117 126 )] 118 127 #[serde(rename_all = "camelCase")] 119 128 pub struct GetLiveUsersOutput<'a> { 120 129 #[serde(skip_serializing_if = "std::option::Option::is_none")] 121 130 #[serde(borrow)] 122 - pub streams: std::option::Option<Vec<crate::place_stream::livestream::LivestreamView<'a>>>, 131 + pub streams: std::option::Option< 132 + Vec<crate::place_stream::livestream::LivestreamView<'a>>, 133 + >, 123 134 } 124 135 125 136 /// Response type for ··· 146 157 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Query; 147 158 type Request<'de> = GetLiveUsers; 148 159 type Response = GetLiveUsersResponse; 149 - } 160 + }
+1 -1
crates/jacquard-api/src/social_clippr/actor/get_preferences.rs
··· 15 15 jacquard_derive::IntoStatic 16 16 )] 17 17 #[serde(rename_all = "camelCase")] 18 - pub struct GetPreferences {} 18 + pub struct GetPreferences; 19 19 #[jacquard_derive::lexicon] 20 20 #[derive( 21 21 serde::Serialize,
-9
crates/jacquard-lexicon/src/codegen/builder_gen/tests.rs
··· 116 116 } 117 117 118 118 #[test] 119 - fn test_state_module_empty_fields() { 120 - let tokens = generate_state_module("Foo", &[]); 121 - assert!( 122 - tokens.is_empty(), 123 - "No state module for zero required fields" 124 - ); 125 - } 126 - 127 - #[test] 128 119 fn test_build_method_generation() { 129 120 let fields = vec![RequiredField::new("repo"), RequiredField::new("collection")]; 130 121
+20 -6
crates/jacquard-lexicon/src/codegen/xrpc.rs
··· 399 399 #[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq, jacquard_derive::IntoStatic)] 400 400 }; 401 401 402 + let struct_body = if fields.is_empty() { 403 + quote! { 404 + pub struct #ident; 405 + } 406 + } else if needs_lifetime { 407 + quote! { 408 + pub struct #ident<'a> { 409 + #(#fields)* 410 + } 411 + } 412 + } else { 413 + quote! { 414 + pub struct #ident { 415 + #(#fields)* 416 + } 417 + } 418 + }; 419 + 402 420 let struct_def = if needs_lifetime { 403 421 quote! { 404 422 #doc 405 423 #derives 406 424 #[serde(rename_all = "camelCase")] 407 - pub struct #ident<'a> { 408 - #(#fields)* 409 - } 425 + #struct_body 410 426 } 411 427 } else { 412 428 quote! { 413 429 #doc 414 430 #derives 415 431 #[serde(rename_all = "camelCase")] 416 - pub struct #ident { 417 - #(#fields)* 418 - } 432 + #struct_body 419 433 } 420 434 }; 421 435
+1 -1
crates/jacquard/src/client.rs
··· 184 184 /// # let (identifier, password, post_text): (CowStr<'_>, CowStr<'_>, CowStr<'_>) = todo!(); 185 185 /// let (session, _) = MemoryCredentialSession::authenticated(identifier, password, None).await?; 186 186 /// let agent = Agent::from(session); 187 - /// let post = Post::builder().text(post_text).created_at(Datetime::now()).build(); 187 + /// let post = Post::new().text(post_text).created_at(Datetime::now()).build(); 188 188 /// let output = agent.create_record(post, None).await?; 189 189 /// # Ok(()) 190 190 /// # }
+1 -1
crates/jacquard/src/client/vec_update/preferences.rs
··· 39 39 type Item = PreferencesItem<'static>; 40 40 41 41 fn build_get() -> Self::GetRequest { 42 - GetPreferences {} 42 + GetPreferences 43 43 } 44 44 45 45 fn extract_vec<'s>(