Re: [PATCH v2 00/16] rust: QObject and QAPI bindings

Paolo Bonzini <[email protected]> Tue, 24 Feb 2026 18:28:49 +0100
Newsgroups org.nongnu.qemu-rust,org.nongnu.qemu-devel
Message-ID <[email protected]>
On 2/24/26 15:06, Markus Armbruster wrote:
> Paolo Bonzini <[email protected]> writes:
> 
>> This adds two related parts of the Rust bindings:
> 
> [...]
> 
>>   docs/devel/rust.rst                           |   1 +
>>   meson.build                                   |   4 +-
>>   include/qobject/qobject.h                     |   5 +-
>>   rust/util/wrapper.h                           |   8 +
>>   qapi/meson.build                              |   9 +
>>   rust/Cargo.lock                               |   2 +
>>   rust/Cargo.toml                               |   2 +
>>   rust/meson.build                              |   4 +
>>   rust/tests/meson.build                        |  21 +-
>>   rust/tests/tests/integration.rs               |   2 +
>>   rust/tests/tests/qapi.rs                      | 444 +++++++++++++
>>   rust/util/Cargo.toml                          |   2 +
>>   rust/util/meson.build                         |  30 +-
>>   rust/util/src/lib.rs                          |   4 +
>>   rust/util/src/qobject/deserialize.rs          | 134 ++++
>>   rust/util/src/qobject/deserializer.rs         | 371 +++++++++++
> 
> Are you sure having two source filenames differ in just one character is
> a good idea?
> 
>>   rust/util/src/qobject/error.rs                |  58 ++
>>   rust/util/src/qobject/mod.rs                  | 383 ++++++++++++
>>   rust/util/src/qobject/serialize.rs            |  59 ++
>>   rust/util/src/qobject/serializer.rs           | 585 ++++++++++++++++++
> 
> Likewise.

I feel and share your pain...  That's how serde calls the things ("-er" 
for the struct and verb for the trait) and I cannot really thing of a 
different naming for files.

I thought of renaming serializer.rs to to_qobject.rs, and 
deserializer.rs to from_qobject.rs.  However, that doesn't work out 
because I want  "qobject::to_object" to be the function, not the module 
containing to_qobject() and Serializer.

serde_json places the struct and trait in the same file (e.g. 
https://github.com/serde-rs/json/blob/master/src/value/ser.rs).  I can 
do that if you prefer it that way.

Paolo

> These caused a bit of friction in review already...
> 
> [...]
> 
> 
>