diff --git a/src/gn/binary_target_generator.cc b/src/gn/binary_target_generator.cc
index 7322adb..9811a73 100644
--- a/src/gn/binary_target_generator.cc
+++ b/src/gn/binary_target_generator.cc
@@ -67,7 +67,7 @@
     return;
 
   if (target_->source_types_used().RustSourceUsed()) {
-    RustTargetGenerator rustgen(target_, scope_, function_call_, err_);
+    RustValuesGenerator rustgen(target_, scope_, function_call_, err_);
     rustgen.Run();
     if (err_->has_error())
       return;
diff --git a/src/gn/command_desc.cc b/src/gn/command_desc.cc
index 278d45d..cdb2e74 100644
--- a/src/gn/command_desc.cc
+++ b/src/gn/command_desc.cc
@@ -21,6 +21,7 @@
 #include "gn/switches.h"
 #include "gn/target.h"
 #include "gn/variables.h"
+#include "gn/rust_variables.h"
 
 namespace commands {
 
@@ -301,6 +302,8 @@
           {variables::kWalkKeys, DefaultHandler},
           {variables::kWeakFrameworks, DefaultHandler},
           {variables::kWriteOutputConversion, DefaultHandler},
+          {variables::kRustCrateName, DefaultHandler},
+          {variables::kRustCrateRoot, DefaultHandler},
           {"runtime_deps", DefaultHandler}};
 }
 
@@ -351,6 +354,8 @@
   // Entries with DefaultHandler are present to enforce order
   HandleProperty("type", handler_map, v, dict);
   HandleProperty("toolchain", handler_map, v, dict);
+  HandleProperty(variables::kRustCrateName, handler_map, v, dict);
+  HandleProperty(variables::kRustCrateRoot, handler_map, v, dict);
   HandleProperty(variables::kVisibility, handler_map, v, dict);
   HandleProperty(variables::kMetadata, handler_map, v, dict);
   HandleProperty(variables::kTestonly, handler_map, v, dict);
diff --git a/src/gn/desc_builder.cc b/src/gn/desc_builder.cc
index 9590975..5006723 100644
--- a/src/gn/desc_builder.cc
+++ b/src/gn/desc_builder.cc
@@ -15,6 +15,7 @@
 #include "gn/input_file.h"
 #include "gn/parse_tree.h"
 #include "gn/runtime_deps.h"
+#include "gn/rust_variables.h"
 #include "gn/scope.h"
 #include "gn/settings.h"
 #include "gn/standard_out.h"
@@ -326,10 +327,15 @@
     }
 
     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()));
+      if (what(variables::kRustCrateRoot)) {
+        res->SetWithoutPathExpansion(
+            variables::kRustCrateRoot,
+            RenderValue(target_->rust_values().crate_root()));
+      }
+      if (what(variables::kRustCrateName)) {
+        res->SetKey(variables::kRustCrateName,
+                    base::Value(target_->rust_values().crate_name()));
+      }
     }
 
     // General target meta variables.
diff --git a/src/gn/rust_values_generator.cc b/src/gn/rust_values_generator.cc
index 926ab21..e71aff6 100644
--- a/src/gn/rust_values_generator.cc
+++ b/src/gn/rust_values_generator.cc
@@ -18,7 +18,7 @@
     "\"crate_type\" must be one of \"bin\", \"cdylib\", \"dylib\", or "
     "\"proc-macro\", \"rlib\", \"staticlib\".";
 
-RustTargetGenerator::RustTargetGenerator(Target* target,
+RustValuesGenerator::RustValuesGenerator(Target* target,
                                          Scope* scope,
                                          const FunctionCallNode* function_call,
                                          Err* err)
@@ -27,9 +27,9 @@
       function_call_(function_call),
       err_(err) {}
 
-RustTargetGenerator::~RustTargetGenerator() = default;
+RustValuesGenerator::~RustValuesGenerator() = default;
 
-void RustTargetGenerator::Run() {
+void RustValuesGenerator::Run() {
   // source_set targets don't need any special Rust handling.
   if (target_->output_type() == Target::SOURCE_SET)
     return;
@@ -65,7 +65,7 @@
     return;
 }
 
-bool RustTargetGenerator::FillCrateName() {
+bool RustValuesGenerator::FillCrateName() {
   const Value* value = scope_->GetValue(variables::kRustCrateName, true);
   if (!value) {
     // The target name will be used.
@@ -79,7 +79,7 @@
   return true;
 }
 
-bool RustTargetGenerator::FillCrateType() {
+bool RustValuesGenerator::FillCrateType() {
   const Value* value = scope_->GetValue(variables::kRustCrateType, true);
   if (!value) {
     // Require shared_library and loadable_module targets to tell us what
@@ -129,7 +129,7 @@
   return false;
 }
 
-bool RustTargetGenerator::FillCrateRoot() {
+bool RustValuesGenerator::FillCrateRoot() {
   const Value* value = scope_->GetValue(variables::kRustCrateRoot, true);
   if (!value) {
     // If there's only one source, use that.
@@ -163,7 +163,7 @@
   return true;
 }
 
-bool RustTargetGenerator::FillAliasedDeps() {
+bool RustValuesGenerator::FillAliasedDeps() {
   const Value* value = scope_->GetValue(variables::kRustAliasedDeps, true);
   if (!value)
     return true;
diff --git a/src/gn/rust_values_generator.h b/src/gn/rust_values_generator.h
index 0804b8b..d902978 100644
--- a/src/gn/rust_values_generator.h
+++ b/src/gn/rust_values_generator.h
@@ -11,13 +11,13 @@
 class FunctionCallNode;
 
 // Collects and writes specified data.
-class RustTargetGenerator {
+class RustValuesGenerator {
  public:
-  RustTargetGenerator(Target* target,
+  RustValuesGenerator(Target* target,
                       Scope* scope,
                       const FunctionCallNode* function_call,
                       Err* err);
-  ~RustTargetGenerator();
+  ~RustValuesGenerator();
 
   void Run();
 
@@ -33,7 +33,7 @@
   const FunctionCallNode* function_call_;
   Err* err_;
 
-  DISALLOW_COPY_AND_ASSIGN(RustTargetGenerator);
+  DISALLOW_COPY_AND_ASSIGN(RustValuesGenerator);
 };
 
 #endif  // TOOLS_GN_RUST_VALUES_GENERATOR_H_
