diff --git a/src/gn/desc_builder.cc b/src/gn/desc_builder.cc
index 4e8f690..f2a57e4 100644
--- a/src/gn/desc_builder.cc
+++ b/src/gn/desc_builder.cc
@@ -53,6 +53,8 @@
 //   "metadata" : [ dictionary of target metadata values ]
 //   "data_keys" : [ list of target data keys ]
 //   "walk_keys" : [ list of target walk keys ]
+//   "crate_root" : "root file of a Rust target"
+//   "crate_name" : "name of a Rust target"
 //   "rebase" : true or false
 //   "output_conversion" : "string for output conversion"
 //   "response_file_contents": [ list of response file contents entries ]
@@ -317,6 +319,13 @@
               target_->label().GetToolchainLabel().GetUserVisibleName(false)));
     }
 
+    if (target_->source_types_used().RustSourceUsed()) {
+      res->SetWithoutPathExpansion(
+          "crate_root", RenderValue(target_->rust_values().crate_root()));
+      res->SetKey("crate_name",
+                  base::Value(target_->rust_values().crate_name()));
+    }
+
     // General target meta variables.
 
     if (what(variables::kMetadata)) {
diff --git a/src/gn/json_project_writer.h b/src/gn/json_project_writer.h
index 72780ee..ee2e7b9 100644
--- a/src/gn/json_project_writer.h
+++ b/src/gn/json_project_writer.h
@@ -25,6 +25,7 @@
  private:
   FRIEND_TEST_ALL_PREFIXES(JSONProjectWriter, ActionWithResponseFile);
   FRIEND_TEST_ALL_PREFIXES(JSONProjectWriter, ForEachWithResponseFile);
+  FRIEND_TEST_ALL_PREFIXES(JSONProjectWriter, RustTarget);
 
   static std::string RenderJSON(const BuildSettings* build_settings,
                                 std::vector<const Target*>& all_targets);
diff --git a/src/gn/json_project_writer_unittest.cc b/src/gn/json_project_writer_unittest.cc
index f82bc0d..709d7c1 100644
--- a/src/gn/json_project_writer_unittest.cc
+++ b/src/gn/json_project_writer_unittest.cc
@@ -72,6 +72,61 @@
   EXPECT_EQ(expected_json, out);
 }
 
+TEST(JSONProjectWriter, RustTarget) {
+  Err err;
+  TestWithScope setup;
+
+  Target target(setup.settings(), Label(SourceDir("//foo/"), "bar"));
+  target.set_output_type(Target::RUST_LIBRARY);
+  target.visibility().SetPublic();
+  SourceFile lib("//foo/lib.rs");
+  target.sources().push_back(lib);
+  target.source_types_used().Set(SourceFile::SOURCE_RS);
+  target.rust_values().set_crate_root(lib);
+  target.rust_values().crate_name() = "foo";
+  target.SetToolchain(setup.toolchain());
+  ASSERT_TRUE(target.OnResolved(&err));
+
+  std::vector<const Target*> targets;
+  targets.push_back(&target);
+  std::string out =
+      JSONProjectWriter::RenderJSON(setup.build_settings(), targets);
+#if defined(OS_WIN)
+  base::ReplaceSubstringsAfterOffset(&out, 0, "\r\n", "\n");
+#endif
+  const char expected_json[] =
+      "{\n"
+      "   \"build_settings\": {\n"
+      "      \"build_dir\": \"//out/Debug/\",\n"
+      "      \"default_toolchain\": \"//toolchain:default\",\n"
+      "      \"root_path\": \"\"\n"
+      "   },\n"
+      "   \"targets\": {\n"
+      "      \"//foo:bar()\": {\n"
+      "         \"allow_circular_includes_from\": [  ],\n"
+      "         \"check_includes\": true,\n"
+      "         \"crate_name\": \"foo\",\n"
+      "         \"crate_root\": \"//foo/lib.rs\",\n"
+      "         \"deps\": [  ],\n"
+      "         \"externs\": {\n"
+      "\n"
+      "         },\n"
+      "         \"metadata\": {\n"
+      "\n"
+      "         },\n"
+      "         \"outputs\": [ \"//out/Debug/obj/foo/libbar.rlib\" ],\n"
+      "         \"public\": \"*\",\n"
+      "         \"sources\": [ \"//foo/lib.rs\" ],\n"
+      "         \"testonly\": false,\n"
+      "         \"toolchain\": \"\",\n"
+      "         \"type\": \"rust_library\",\n"
+      "         \"visibility\": [ \"*\" ]\n"
+      "      }\n"
+      "   }\n"
+      "}\n";
+  EXPECT_EQ(expected_json, out);
+}
+
 TEST(JSONProjectWriter, ForEachWithResponseFile) {
   Err err;
   TestWithScope setup;
diff --git a/src/gn/substitution_writer.cc b/src/gn/substitution_writer.cc
index 6674c9b..199faa3 100644
--- a/src/gn/substitution_writer.cc
+++ b/src/gn/substitution_writer.cc
@@ -381,6 +381,8 @@
     NOTREACHED() << "Cannot use substitution " << type->name
                  << " without target";
     return std::string();
+  } else if (IsValidRustSubstitution(type)) {
+    to_rebase = source.value();
   } else {
     NOTREACHED() << "Unsupported substitution for this function: "
                  << type->name;
diff --git a/src/gn/target.cc b/src/gn/target.cc
index 8721f1a..6df5ede 100644
--- a/src/gn/target.cc
+++ b/src/gn/target.cc
@@ -501,6 +501,11 @@
     return true;
   }
 
+  // Rust generates on a module level, not source.
+  if (file_type == SourceFile::SOURCE_RS) {
+    return false;
+  }
+
   *computed_tool_type = Tool::GetToolTypeForSourceType(file_type);
   if (*computed_tool_type == Tool::kToolNone)
     return false;  // No tool for this file (it's a header file or something).
