@@ -26,12 +26,14 @@ import software.amazon.smithy.model.shapes.StructureShape
26
26
import software.amazon.smithy.model.shapes.TimestampShape
27
27
import software.amazon.smithy.model.shapes.UnionShape
28
28
import software.amazon.smithy.model.traits.TimestampFormatTrait.Format.EPOCH_SECONDS
29
+ import software.amazon.smithy.rust.codegen.core.rustlang.Attribute
29
30
import software.amazon.smithy.rust.codegen.core.rustlang.RustWriter
30
31
import software.amazon.smithy.rust.codegen.core.rustlang.rust
31
32
import software.amazon.smithy.rust.codegen.core.rustlang.rustBlock
32
33
import software.amazon.smithy.rust.codegen.core.rustlang.rustBlockTemplate
33
34
import software.amazon.smithy.rust.codegen.core.rustlang.rustTemplate
34
35
import software.amazon.smithy.rust.codegen.core.rustlang.withBlock
36
+ import software.amazon.smithy.rust.codegen.core.rustlang.writable
35
37
import software.amazon.smithy.rust.codegen.core.smithy.CodegenContext
36
38
import software.amazon.smithy.rust.codegen.core.smithy.RuntimeType
37
39
import software.amazon.smithy.rust.codegen.core.smithy.RustSymbolProvider
@@ -312,21 +314,25 @@ class JsonSerializerGenerator(
312
314
context : StructContext ,
313
315
includedMembers : List <MemberShape >? = null,
314
316
) {
315
- val structureSymbol = symbolProvider.toSymbol(context.shape)
316
317
val structureSerializer = protocolFunctions.serializeFn(context.shape) { fnName ->
318
+ val inner = context.copy(objectName = " object" , localName = " input" )
319
+ val members = includedMembers ? : inner.shape.members()
320
+ val allowUnusedVariables = writable {
321
+ if (members.isEmpty()) { Attribute .AllowUnusedVariables .render(this ) }
322
+ }
317
323
rustBlockTemplate(
318
- " pub fn $fnName (object: &mut #{JsonObjectWriter}, input: &#{Input}) -> Result<(), #{Error}>" ,
319
- " Input" to structureSymbol,
324
+ """
325
+ pub fn $fnName (
326
+ #{AllowUnusedVariables:W} object: &mut #{JsonObjectWriter},
327
+ #{AllowUnusedVariables:W} input: &#{StructureSymbol},
328
+ ) -> Result<(), #{Error}>
329
+ """ ,
330
+ " StructureSymbol" to symbolProvider.toSymbol(context.shape),
331
+ " AllowUnusedVariables" to allowUnusedVariables,
320
332
* codegenScope,
321
333
) {
322
- context.copy(objectName = " object" , localName = " input" ).also { inner ->
323
- val members = includedMembers ? : inner.shape.members()
324
- if (members.isEmpty()) {
325
- rust(" let (_, _) = (object, input);" ) // Suppress unused argument warnings
326
- }
327
- for (member in members) {
328
- serializeMember(MemberContext .structMember(inner, member, symbolProvider, jsonName))
329
- }
334
+ for (member in members) {
335
+ serializeMember(MemberContext .structMember(inner, member, symbolProvider, jsonName))
330
336
}
331
337
rust(" Ok(())" )
332
338
}
0 commit comments