FYI, I just posted patches to get rid of QAPI type String:

    Subject: [PATCH 0/4] qapi/net: Some doc improvement and cleanup
    Date: Wed, 6 May 2026 12:54:17 +0200
    Message-ID: <[email protected]>
    
https://lore.kernel.org/qemu-devel/[email protected]/


Markus Armbruster <[email protected]> writes:

[...]

>> +def rs_name(name: str) -> str:
>> +    """
>> +    Map @name to a valid, possibly raw Rust identifier.
>> +    """
>> +    name = re.sub(r'[^A-Za-z0-9_]', '_', name)
>> +    if name[0].isnumeric():
>
> .isdigit()?  It's what c_name() uses...
>
>> +        name = '_' + name
>
> In review of v1, I pointed to "The Rust Reference"
>
>        Identifiers starting with an underscore are typically used to
>        indicate an identifier that is intentionally unused, and will
>        silence the unused warning in rustc.
>
>        https://doc.rust-lang.org/reference/identifiers.html
>
> You replied "In this case it doesn't really matter: public items (such
> as QAPI enum entries, or struct fields) do not raise the unused warning
> anyway."
>
> What gives us confidence rs_name() will only be used where it doesn't
> really matter?
>
>> +    # based from the list:
>> +    # https://doc.rust-lang.org/reference/keywords.html
>> +    if name in ('Self', 'abstract', 'as', 'async',
>> +                'await', 'become', 'box', 'break',
>> +                'const', 'continue', 'crate', 'do',
>> +                'dyn', 'else', 'enum', 'extern',
>> +                'false', 'final', 'fn', 'for',
>> +                'if', 'impl', 'in', 'let',
>> +                'loop', 'macro', 'match', 'mod',
>> +                'move', 'mut', 'override', 'priv',
>> +                'pub', 'ref', 'return', 'self',
>> +                'static', 'struct', 'super', 'trait',
>> +                'true', 'try', 'type', 'typeof',
>> +                'union', 'unsafe', 'unsized', 'use',
>> +                'virtual', 'where', 'while', 'yield'):
>> +        name = 'r#' + name
>
> TIL...
>
>> +    # avoid some clashes with the standard library
>> +    if name in ('String',):
>> +        name = 'Qapi' + name
>
> This hides the unwise use of 'String' in qapi/net.json from Rust.  I'd
> rather rename that one.

[...]


Reply via email to