Skip to content

Commit 44233bd

Browse files
import serde on rust files.
1 parent 9eb3d55 commit 44233bd

File tree

3 files changed

+16
-1
lines changed

3 files changed

+16
-1
lines changed

codegen-core/src/main/kotlin/software/amazon/smithy/rust/codegen/core/rustlang/RustType.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -471,6 +471,10 @@ class Attribute(val inner: Writable) {
471471
return Attribute(serde("skip"))
472472
}
473473

474+
public fun SerdeSerializeOrDeserialize(): Attribute {
475+
return Attribute(cfgAttr(all(writable("aws_sdk_unstable"), any(feature("serde-serialize"), feature("serde-deserialize")))))
476+
}
477+
474478
companion object {
475479
val AllowClippyBoxedLocal = Attribute(allow("clippy::boxed_local"))
476480
val AllowClippyLetAndReturn = Attribute(allow("clippy::let_and_return"))

codegen-core/src/main/kotlin/software/amazon/smithy/rust/codegen/core/rustlang/RustWriter.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ package software.amazon.smithy.rust.codegen.core.rustlang
88
import org.intellij.lang.annotations.Language
99
import org.jsoup.Jsoup
1010
import org.jsoup.nodes.Element
11+
import software.amazon.smithy.rust.codegen.core.smithy.generators.RenderSerdeAttribute
1112
import software.amazon.smithy.codegen.core.CodegenException
1213
import software.amazon.smithy.codegen.core.Symbol
1314
import software.amazon.smithy.codegen.core.SymbolDependencyContainer
@@ -453,7 +454,9 @@ class RustWriter private constructor(
453454
fun forModule(module: String?): RustWriter = if (module == null) {
454455
RustWriter("lib.rs", "crate")
455456
} else {
456-
RustWriter("$module.rs", "crate::$module")
457+
var writer = RustWriter("$module.rs", "crate::$module")
458+
RenderSerdeAttribute.importSerde(writer)
459+
writer
457460
}
458461

459462
fun factory(debugMode: Boolean): Factory<RustWriter> = Factory { fileName: String, namespace: String ->

codegen-core/src/main/kotlin/software/amazon/smithy/rust/codegen/core/smithy/generators/RenderSerdeAttribute.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import software.amazon.smithy.model.shapes.MemberShape
1010
import software.amazon.smithy.model.shapes.StructureShape
1111
import software.amazon.smithy.rust.codegen.core.rustlang.Attribute
1212
import software.amazon.smithy.rust.codegen.core.rustlang.RustWriter
13+
import software.amazon.smithy.rust.codegen.core.rustlang.raw
1314
import software.amazon.smithy.rust.codegen.core.util.isEventStream
1415
import software.amazon.smithy.rust.codegen.core.util.isStreaming
1516

@@ -30,6 +31,13 @@ public object RenderSerdeAttribute {
3031
}
3132
}
3233

34+
public fun importSerde(writer: RustWriter) {
35+
// we need this for skip serde to work
36+
Attribute.AllowUnusedImports.render(writer)
37+
Attribute("").SerdeSerializeOrDeserialize().render(writer)
38+
writer.raw("use serde;")
39+
}
40+
3341
public fun writeAttributes(writer: RustWriter) {
3442
Attribute("").SerdeSerialize().render(writer)
3543
Attribute("").SerdeDeserialize().render(writer)

0 commit comments

Comments
 (0)