Loading codegen/src/dto.rs +28 −3 Original line number Diff line number Diff line Loading @@ -391,9 +391,14 @@ pub fn codegen(rust_types: &RustTypes, ops: &Operations) { fn codegen_struct(ty: &rust::Struct, rust_types: &RustTypes, ops: &Operations) { codegen_doc(ty.doc.as_deref()); if can_derive_default(ty, rust_types) { g!("#[derive(Default)]"); { let derives = struct_derives(ty, rust_types); if !derives.is_empty() { g!("#[derive({})]", derives.join(", ")); } } // g!("#[non_exhaustive]"); // TODO: builder? g!("pub struct {} {{", ty.name); Loading Loading @@ -494,7 +499,7 @@ fn codegen_str_enum(ty: &rust::StrEnum, _rust_types: &RustTypes) { fn codegen_struct_enum(ty: &rust::StructEnum, _rust_types: &RustTypes) { codegen_doc(ty.doc.as_deref()); g!("#[derive(Debug)]"); g!("#[derive(Debug, Clone)]"); g!("#[non_exhaustive]"); g!("pub enum {} {{", ty.name); Loading Loading @@ -528,6 +533,26 @@ fn codegen_tests(ops: &Operations) { g!("}}"); } fn struct_derives(ty: &rust::Struct, rust_types: &RustTypes) -> Vec<&'static str> { let mut derives = Vec::new(); if can_derive_clone(ty, rust_types) { derives.push("Clone"); } if can_derive_default(ty, rust_types) { derives.push("Default"); } derives } fn can_derive_clone(ty: &rust::Struct, _rust_types: &RustTypes) -> bool { ty.fields.iter().all(|field| { if matches!(field.type_.as_str(), "StreamingBlob" | "SelectObjectContentEventStream") { return false; } true }) } fn can_derive_default(ty: &rust::Struct, rust_types: &RustTypes) -> bool { ty.fields.iter().all(|field| is_default_field(field, rust_types)) } Loading crates/s3s/src/dto/copy_source.rs +1 −1 Original line number Diff line number Diff line Loading @@ -6,7 +6,7 @@ use crate::path; use std::fmt::Write; /// x-amz-copy-source #[derive(Debug)] #[derive(Debug, Clone)] pub enum CopySource { /// bucket repr Bucket { Loading crates/s3s/src/dto/event.rs +1 −1 Original line number Diff line number Diff line #[derive(Debug)] #[derive(Debug, Clone)] pub struct Event(String); impl From<String> for Event { Loading crates/s3s/src/dto/generated.rs +328 −196 File changed.Preview size limit exceeded, changes collapsed. Show changes crates/s3s/src/dto/timestamp.rs +1 −1 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ use time::format_description::well_known::Rfc3339; use time::format_description::FormatItem; use time::macros::format_description; #[derive(Debug)] #[derive(Debug, Clone)] pub struct Timestamp(time::OffsetDateTime); #[derive(Debug, Clone, Copy, PartialEq, Eq)] Loading Loading
codegen/src/dto.rs +28 −3 Original line number Diff line number Diff line Loading @@ -391,9 +391,14 @@ pub fn codegen(rust_types: &RustTypes, ops: &Operations) { fn codegen_struct(ty: &rust::Struct, rust_types: &RustTypes, ops: &Operations) { codegen_doc(ty.doc.as_deref()); if can_derive_default(ty, rust_types) { g!("#[derive(Default)]"); { let derives = struct_derives(ty, rust_types); if !derives.is_empty() { g!("#[derive({})]", derives.join(", ")); } } // g!("#[non_exhaustive]"); // TODO: builder? g!("pub struct {} {{", ty.name); Loading Loading @@ -494,7 +499,7 @@ fn codegen_str_enum(ty: &rust::StrEnum, _rust_types: &RustTypes) { fn codegen_struct_enum(ty: &rust::StructEnum, _rust_types: &RustTypes) { codegen_doc(ty.doc.as_deref()); g!("#[derive(Debug)]"); g!("#[derive(Debug, Clone)]"); g!("#[non_exhaustive]"); g!("pub enum {} {{", ty.name); Loading Loading @@ -528,6 +533,26 @@ fn codegen_tests(ops: &Operations) { g!("}}"); } fn struct_derives(ty: &rust::Struct, rust_types: &RustTypes) -> Vec<&'static str> { let mut derives = Vec::new(); if can_derive_clone(ty, rust_types) { derives.push("Clone"); } if can_derive_default(ty, rust_types) { derives.push("Default"); } derives } fn can_derive_clone(ty: &rust::Struct, _rust_types: &RustTypes) -> bool { ty.fields.iter().all(|field| { if matches!(field.type_.as_str(), "StreamingBlob" | "SelectObjectContentEventStream") { return false; } true }) } fn can_derive_default(ty: &rust::Struct, rust_types: &RustTypes) -> bool { ty.fields.iter().all(|field| is_default_field(field, rust_types)) } Loading
crates/s3s/src/dto/copy_source.rs +1 −1 Original line number Diff line number Diff line Loading @@ -6,7 +6,7 @@ use crate::path; use std::fmt::Write; /// x-amz-copy-source #[derive(Debug)] #[derive(Debug, Clone)] pub enum CopySource { /// bucket repr Bucket { Loading
crates/s3s/src/dto/event.rs +1 −1 Original line number Diff line number Diff line #[derive(Debug)] #[derive(Debug, Clone)] pub struct Event(String); impl From<String> for Event { Loading
crates/s3s/src/dto/generated.rs +328 −196 File changed.Preview size limit exceeded, changes collapsed. Show changes
crates/s3s/src/dto/timestamp.rs +1 −1 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ use time::format_description::well_known::Rfc3339; use time::format_description::FormatItem; use time::macros::format_description; #[derive(Debug)] #[derive(Debug, Clone)] pub struct Timestamp(time::OffsetDateTime); #[derive(Debug, Clone, Copy, PartialEq, Eq)] Loading