Loading codegen-test/model/dynamodb.json +2331 −1169 File changed.Preview size limit exceeded, changes collapsed. Show changes codegen/src/main/kotlin/software/amazon/smithy/rust/codegen/lang/RustTypes.kt +6 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,11 @@ sealed class RustType { override val name: kotlin.String = "Vec" } data class Slice(val member: RustType) : RustType() { override val name: kotlin.String get() = "" } data class HashMap(val key: RustType, val value: RustType) : RustType() { // TODO: assert that underneath, the member is a String override val name: kotlin.String = "HashMap" Loading Loading @@ -76,6 +81,7 @@ fun RustType.render(): String = when (this) { is RustType.Integer -> this.name is RustType.String -> this.name is RustType.Vec -> "${this.name}<${this.member.render()}>" is RustType.Slice -> "[${this.member.render()}]" is RustType.HashMap -> "${this.name}<${this.key.render()}, ${this.value.render()}>" is RustType.HashSet -> "${this.name}<${this.member.render()}>" is RustType.Reference -> "&${this.lifetime?.let { "'$it" } ?: ""} ${this.value.render()}" Loading codegen/src/main/kotlin/software/amazon/smithy/rust/codegen/smithy/protocols/JsonSerializerSymbolProvider.kt +7 −1 Original line number Diff line number Diff line Loading @@ -139,7 +139,13 @@ class JsonSerializerSymbolProvider( targetType: RustType, body: RustWriter.() -> Unit ) { val ref = RustType.Reference(lifetime = null, value = targetType) // Convert Vec<T> to `[T]` when present. This is needed to avoid // Clippy complaining (and is also better in general). val sliceToVec = when (targetType) { is RustType.Vec -> RustType.Slice(targetType.member) else -> targetType } val ref = RustType.Reference(lifetime = null, value = sliceToVec) val newSymbol = symbol.toBuilder().rustType(ref).build() rustWriter.rustBlock( "pub fn $functionName<S>(_inp: \$T, _serializer: S) -> " + Loading Loading
codegen-test/model/dynamodb.json +2331 −1169 File changed.Preview size limit exceeded, changes collapsed. Show changes
codegen/src/main/kotlin/software/amazon/smithy/rust/codegen/lang/RustTypes.kt +6 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,11 @@ sealed class RustType { override val name: kotlin.String = "Vec" } data class Slice(val member: RustType) : RustType() { override val name: kotlin.String get() = "" } data class HashMap(val key: RustType, val value: RustType) : RustType() { // TODO: assert that underneath, the member is a String override val name: kotlin.String = "HashMap" Loading Loading @@ -76,6 +81,7 @@ fun RustType.render(): String = when (this) { is RustType.Integer -> this.name is RustType.String -> this.name is RustType.Vec -> "${this.name}<${this.member.render()}>" is RustType.Slice -> "[${this.member.render()}]" is RustType.HashMap -> "${this.name}<${this.key.render()}, ${this.value.render()}>" is RustType.HashSet -> "${this.name}<${this.member.render()}>" is RustType.Reference -> "&${this.lifetime?.let { "'$it" } ?: ""} ${this.value.render()}" Loading
codegen/src/main/kotlin/software/amazon/smithy/rust/codegen/smithy/protocols/JsonSerializerSymbolProvider.kt +7 −1 Original line number Diff line number Diff line Loading @@ -139,7 +139,13 @@ class JsonSerializerSymbolProvider( targetType: RustType, body: RustWriter.() -> Unit ) { val ref = RustType.Reference(lifetime = null, value = targetType) // Convert Vec<T> to `[T]` when present. This is needed to avoid // Clippy complaining (and is also better in general). val sliceToVec = when (targetType) { is RustType.Vec -> RustType.Slice(targetType.member) else -> targetType } val ref = RustType.Reference(lifetime = null, value = sliceToVec) val newSymbol = symbol.toBuilder().rustType(ref).build() rustWriter.rustBlock( "pub fn $functionName<S>(_inp: \$T, _serializer: S) -> " + Loading