diff --git a/dh_setup_copyright b/dh_setup_copyright
index 12e1c64a02a545236f2998e757ea764b75381338..f87c8c069a5f5f8327b8248ebf5c51c44d63ee23 100755
--- a/dh_setup_copyright
+++ b/dh_setup_copyright
@@ -198,9 +198,15 @@ sub process_external_sources {
 	my $added_referenced_srcpackages = 0;
 
 	my $sources = decode_json $sources_data;
+	my $sources_changed = 0;
 
 	while (my ($file, $info) = each %$sources) {
 		foreach my $unit (@{$info->{'units'}}) {
+			if (($unit->{'comp_name'} =~ s|/@/.*||) && !$sources_changed) {
+				print "Stripping trailing '/@/...' from Rust compilation units\n";
+				$sources_changed = 1;
+			}
+
 			my $comp_dir = $unit->{'comp_dir'};
 			my $comp_name = $unit->{'comp_name'};
 
@@ -229,6 +235,13 @@ sub process_external_sources {
 		}
 	}
 
+	if ($sources_changed) {
+		print "Saving edited dwarf2sources output\n";
+		open my $sources_handle, '>', $fname_list or die "Failed to open $fname_list: $!";
+		print $sources_handle encode_json($sources);
+		close $sources_handle;
+	}
+
 	if (%$external_sources_to_packages) {
 		my $count = scalar %$external_sources_to_packages;
 		print "Adding metadata for $count external source file(s)\n";