1diff --git a/src/lib.rs b/src/lib.rs
2index 43fc5ba..2098949 100644
3--- a/src/lib.rs
4+++ b/src/lib.rs
5@@ -86,17 +86,17 @@ impl ModuleRequestSet {
6             |mut acc, (proto, raw)| {
7                 let module = Module::from_protobuf_package_name(proto.package());
8                 let proto_filename = proto.name();
9-                let entry = acc.entry(module).or_insert_with(|| {
10-                    let mut request = ModuleRequest::new(proto.package().to_owned());
11-                    if input_protos.contains(proto_filename) {
12-                        let filename = match proto.package() {
13-                            "" => default_package_filename.to_owned(),
14-                            package => format!("{package}.rs"),
15-                        };
16-                        request.with_output_filename(filename);
17-                    }
18-                    request
19-                });
20+                let entry = acc
21+                    .entry(module)
22+                    .or_insert_with(|| ModuleRequest::new(proto.package().to_owned()));
23+
24+                if entry.output_filename().is_none() && input_protos.contains(proto_filename) {
25+                    let filename = match proto.package() {
26+                        "" => default_package_filename.to_owned(),
27+                        package => format!("{package}.rs"),
28+                    };
29+                    entry.with_output_filename(filename);
30+                }
31
32                 entry.push_file_descriptor_proto(proto, raw);
33                 acc
34