Thank you for a quick and open-minded response!

The possibility that this is an error in my build of some sort is entirely 
possible: I am hardly an expert in either Rust or protobuf. That said, I 
have sunk a couple of days into this problem (expensive on a skunkworks 
project to prove a point) and thought I would ask before I started reading 
deeply into the compiler code. It is also useful to have that information 
about the struct/module convention being used. 

I will try and put together an actual minimalist test case before I open 
the bug. I don't think I can legally use the protos with which I generated 
the problem, so it might be a day or so before I get around to filing the 
bug.

- d
On Tuesday, January 20, 2026 at 5:40:41 PM UTC Em Rauch wrote:

> Thank you for kicking the tires on the new RustProtobuf implementation! 
> You can open an issue on github with a repro we can take a look.
>
> > which go away if I hand edit the generated code to use the capitalized 
> Foo from the generated pub struct Foo
>
> The general case in Rust you can't nest structs in structs (unlike, say, 
> in Java where you can put a class in a class). So the workaround for nested 
> types here is that we emit the Foo struct for the Foo message itself, and 
> then a `foo` mod for anything that is nested inside in the .proto file, so 
> in your example there *should* be a structure that looks like this:
>
> ```
> struct Foo {...}
> mod foo {
>    struct Inner { ... }
>    mod inner {
>        struct Context { ... }
>    }
>    }
> }
> ```
>
> The reason we do all of the super::super:: is so that you should be able 
> to put your gencode might be in some mod in your crate that isn't top level 
> (so handwritten code would probably write `crate::foo::inner::Context` but 
> we can't because it should work for you to make your own `mod proto` or 
> something that our gencode won't know about).
>
> If you hand edited it to `super::super::super::Foo::inner::Context` and 
> that worked then something really weird is going on; these kind of nested 
> types are covered by tests and also widely used within Google and we 
> haven't gotten reports of the issue, so I would have to guess some form of 
> user-error (which maybe could be a documentation bug on our side).
>
>
> > As a side note, the proto code builds perfectly under the 3.7.2 
> stepancheg release, so maybe this is a bleeding edge problem?
>
> The 4.x release is a complete change compared to 3.x; what happened is 
> that he donated the crate name to Google. So it'll have a whole new set of 
> bugs 🙂
>
> On Tue, Jan 20, 2026 at 12:19 PM Day Rush <[email protected]> wrote:
>
>> Hi -
>>
>> I'm building an interface in rust to a large library of C & C# code that 
>> uses protocol buffers for it's IPC encoding. In the .proto files there are 
>> a lot of message structures like
>>
>> message Foo {
>>     message Inner {
>>         message Context {
>>             double field1 = 1;
>>             ... }
>>         google.protobuf.Timestamp at = 1;
>>         Context cx1 = 2;
>>         Context cx2 = 3;
>>         ... }
>>     double value = 1;
>>     repeated Inner inner_list = 2;
>>     ... }
>>
>> And the rust code generator doesn't appear to use consistent case folding 
>> in the generated code. Specifically, I see references to
>>
>>     super::super::super::foo::inner::Context
>>
>> producing error messages like
>>
>>     error[E0433]: failed to resolve: could not find `foo` in `super`
>>
>> which go away if I hand edit the generated code to use the capitalized 
>> Foo from the generated pub struct Foo. This seems like a bug, and I thought 
>> it would be good to check if there might be code generator option magic 
>> that I am missing.
>>
>> As a side note, the proto code builds perfectly under the 3.7.2 
>> stepancheg release, so maybe this is a bleeding edge problem?
>>
>> Thanks in advance
>> - d
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Protocol Buffers" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>> To view this discussion visit 
>> https://groups.google.com/d/msgid/protobuf/91bdad1a-1841-4556-9837-6f73c79e8358n%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/protobuf/91bdad1a-1841-4556-9837-6f73c79e8358n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/protobuf/ac735117-0c1a-46b6-aa15-c5540cfbcf01n%40googlegroups.com.

Reply via email to