diff --git a/src/gn/rust_project_writer.cc b/src/gn/rust_project_writer.cc
index 17e92d4..69c93e6 100644
--- a/src/gn/rust_project_writer.cc
+++ b/src/gn/rust_project_writer.cc
@@ -280,9 +280,14 @@
   }
 
   // Add the rest of the crate dependencies.
+  const auto& aliased_deps = target->rust_values().aliased_deps();
   for (const auto& dep : crate_deps) {
     auto idx = lookup[dep];
-    crate.AddDependency(idx, dep->rust_values().crate_name());
+    std::string_view crate_name = dep->rust_values().crate_name();
+    if (auto it = aliased_deps.find(dep->label()); it != aliased_deps.end()) {
+      crate_name = it->second;
+    }
+    crate.AddDependency(idx, std::string(crate_name));
   }
 
   crate_list.push_back(crate);
diff --git a/src/gn/rust_project_writer_unittest.cc b/src/gn/rust_project_writer_unittest.cc
index d48a879..5532a72 100644
--- a/src/gn/rust_project_writer_unittest.cc
+++ b/src/gn/rust_project_writer_unittest.cc
@@ -699,3 +699,88 @@
 
   ExpectEqOrShowDiff(expected_json, out);
 }
+
+TEST_F(RustProjectJSONWriter, RustTargetAliasedDep) {
+  Err err;
+  TestWithScope setup;
+
+  Target dep(setup.settings(), Label(SourceDir("//tortoise/"), "bar"));
+  dep.set_output_type(Target::RUST_LIBRARY);
+  dep.visibility().SetPublic();
+  SourceFile tlib("//tortoise/lib.rs");
+  dep.sources().push_back(tlib);
+  dep.source_types_used().Set(SourceFile::SOURCE_RS);
+  dep.rust_values().set_crate_root(tlib);
+  dep.rust_values().crate_name() = "tortoise_mangled_hash";
+  dep.SetToolchain(setup.toolchain());
+  ASSERT_TRUE(dep.OnResolved(&err));
+
+  Target target(setup.settings(), Label(SourceDir("//hare/"), "bar"));
+  target.set_output_type(Target::RUST_LIBRARY);
+  target.visibility().SetPublic();
+  SourceFile harelib("//hare/lib.rs");
+  target.sources().push_back(harelib);
+  target.source_types_used().Set(SourceFile::SOURCE_RS);
+  target.rust_values().set_crate_root(harelib);
+  target.rust_values().crate_name() = "hare";
+  target.rust_values().aliased_deps()[dep.label()] = "tortoise_alias";
+  target.public_deps().push_back(LabelTargetPair(&dep));
+  target.SetToolchain(setup.toolchain());
+  ASSERT_TRUE(target.OnResolved(&err));
+
+  std::ostringstream stream;
+  std::vector<const Target*> targets;
+  targets.push_back(&target);
+  RustProjectWriter::RenderJSON(setup.build_settings(), targets, stream);
+  std::string out = stream.str();
+#if defined(OS_WIN)
+  base::ReplaceSubstringsAfterOffset(&out, 0, "\r\n", "\n");
+#endif
+  const char expected_json[] = R"({
+  "crates": [
+    {
+      "crate_id": 0,
+      "root_module": "tortoise/lib.rs",
+      "label": "//tortoise:bar",
+      "source": {
+          "include_dirs": [
+               "tortoise/"
+          ],
+          "exclude_dirs": []
+      },
+      "deps": [
+      ],
+      "edition": "2015",
+      "cfg": [
+        "test",
+        "debug_assertions"
+      ]
+    },
+    {
+      "crate_id": 1,
+      "root_module": "hare/lib.rs",
+      "label": "//hare:bar",
+      "source": {
+          "include_dirs": [
+               "hare/"
+          ],
+          "exclude_dirs": []
+      },
+      "deps": [
+        {
+          "crate": 0,
+          "name": "tortoise_alias"
+        }
+      ],
+      "edition": "2015",
+      "cfg": [
+        "test",
+        "debug_assertions"
+      ]
+    }
+  ]
+}
+)";
+
+  ExpectEqOrShowDiff(expected_json, out);
+}
