diff --git a/build/gen.py b/build/gen.py
index 766969f..943f2e8 100755
--- a/build/gen.py
+++ b/build/gen.py
@@ -515,6 +515,7 @@
         'tools/gn/pool.cc',
         'tools/gn/qt_creator_writer.cc',
         'tools/gn/runtime_deps.cc',
+        'tools/gn/rust_substitution_type.cc',
         'tools/gn/scheduler.cc',
         'tools/gn/scope.cc',
         'tools/gn/scope_per_file_provider.cc',
diff --git a/tools/gn/config_values.cc b/tools/gn/config_values.cc
index 5cdfa7a..85de7e4 100644
--- a/tools/gn/config_values.cc
+++ b/tools/gn/config_values.cc
@@ -34,6 +34,8 @@
   VectorAppend(&ldflags_, append.ldflags_);
   VectorAppend(&lib_dirs_, append.lib_dirs_);
   VectorAppend(&libs_, append.libs_);
+  VectorAppend(&rustflags_, append.rustflags_);
+  VectorAppend(&rustenv_, append.rustenv_);
 
   // Only append precompiled header if there isn't one. It might be nice to
   // throw an error if there are conflicting precompiled headers, but that
diff --git a/tools/gn/config_values.h b/tools/gn/config_values.h
index bcab53c..86eea6c 100644
--- a/tools/gn/config_values.h
+++ b/tools/gn/config_values.h
@@ -45,6 +45,8 @@
   DIR_VALUES_ACCESSOR(include_dirs)
   STRING_VALUES_ACCESSOR(ldflags)
   DIR_VALUES_ACCESSOR(lib_dirs)
+  STRING_VALUES_ACCESSOR(rustflags)
+  STRING_VALUES_ACCESSOR(rustenv)
   // =================================================================
   // IMPORTANT: If you add a new one, be sure to update AppendValues()
   //            and command_desc.cc.
@@ -81,6 +83,8 @@
   std::vector<std::string> ldflags_;
   std::vector<SourceDir> lib_dirs_;
   std::vector<LibFile> libs_;
+  std::vector<std::string> rustflags_;
+  std::vector<std::string> rustenv_;
   // If you add a new one, be sure to update AppendValues().
 
   std::string precompiled_header_;
diff --git a/tools/gn/rust_substitution_type.cc b/tools/gn/rust_substitution_type.cc
new file mode 100644
index 0000000..83ddbf5
--- /dev/null
+++ b/tools/gn/rust_substitution_type.cc
@@ -0,0 +1,47 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "tools/gn/rust_substitution_type.h"
+
+#include <stddef.h>
+#include <stdlib.h>
+
+#include "tools/gn/err.h"
+#include "tools/gn/substitution_type.h"
+
+const SubstitutionTypes RustSubstitutions = {
+    &kRustSubstitutionCrateName,       &kRustSubstitutionCrateType,
+    &kRustSubstitutionEdition,         &kRustSubstitutionExterns,
+    &kRustSubstitutionOutputExtension, &kRustSubstitutionOutputPrefix,
+    &kRustSubstitutionRustDeps,        &kRustSubstitutionRustFlags,
+    &kRustSubstitutionRustEnv,
+};
+
+// Valid for Rust tools.
+const Substitution kRustSubstitutionCrateName = {"{{crate_name}}",
+                                                 "crate_name"};
+const Substitution kRustSubstitutionCrateType = {"{{crate_type}}",
+                                                 "crate_type"};
+const Substitution kRustSubstitutionEdition = {"{{edition}}", "edition"};
+const Substitution kRustSubstitutionExterns = {"{{externs}}", "externs"};
+const Substitution kRustSubstitutionOutputExtension = {
+    "{{rustc_output_extension}}", "rustc_output_extension"};
+const Substitution kRustSubstitutionOutputPrefix = {"{{rustc_output_prefix}}",
+                                                    "rustc_output_prefix"};
+const Substitution kRustSubstitutionRustDeps = {"{{rustdeps}}", "rustdeps"};
+const Substitution kRustSubstitutionRustEnv = {"{{rustenv}}", "rustenv"};
+const Substitution kRustSubstitutionRustFlags = {"{{rustflags}}", "rustflags"};
+
+bool IsValidRustSubstitution(const Substitution* type) {
+  return IsValidToolSubstitution(type) || IsValidSourceSubstitution(type) ||
+         type == &kRustSubstitutionCrateName ||
+         type == &kRustSubstitutionCrateType ||
+         type == &kRustSubstitutionEdition ||
+         type == &kRustSubstitutionExterns ||
+         type == &kRustSubstitutionOutputExtension ||
+         type == &kRustSubstitutionOutputPrefix ||
+         type == &kRustSubstitutionRustDeps ||
+         type == &kRustSubstitutionRustEnv ||
+         type == &kRustSubstitutionRustFlags;
+}
\ No newline at end of file
diff --git a/tools/gn/rust_substitution_type.h b/tools/gn/rust_substitution_type.h
new file mode 100644
index 0000000..827f5d6
--- /dev/null
+++ b/tools/gn/rust_substitution_type.h
@@ -0,0 +1,29 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef TOOLS_GN_RUST_SUBSTITUTION_TYPE_H_
+#define TOOLS_GN_RUST_SUBSTITUTION_TYPE_H_
+
+#include <set>
+#include <vector>
+
+#include "tools/gn/substitution_type.h"
+
+// The set of substitutions available to Rust tools.
+extern const SubstitutionTypes RustSubstitutions;
+
+// Valid for Rust tools.
+extern const Substitution kRustSubstitutionCrateName;
+extern const Substitution kRustSubstitutionCrateType;
+extern const Substitution kRustSubstitutionEdition;
+extern const Substitution kRustSubstitutionExterns;
+extern const Substitution kRustSubstitutionOutputExtension;
+extern const Substitution kRustSubstitutionOutputPrefix;
+extern const Substitution kRustSubstitutionRustDeps;
+extern const Substitution kRustSubstitutionRustEnv;
+extern const Substitution kRustSubstitutionRustFlags;
+
+bool IsValidRustSubstitution(const Substitution* type);
+
+#endif  // TOOLS_GN_RUST_SUBSTITUTION_TYPE_H_
diff --git a/tools/gn/substitution_pattern_unittest.cc b/tools/gn/substitution_pattern_unittest.cc
index 59c057f..1a6498f 100644
--- a/tools/gn/substitution_pattern_unittest.cc
+++ b/tools/gn/substitution_pattern_unittest.cc
@@ -3,7 +3,9 @@
 // found in the LICENSE file.
 
 #include "tools/gn/substitution_pattern.h"
+
 #include "tools/gn/err.h"
+#include "tools/gn/rust_substitution_type.h"
 #include "util/test/test.h"
 
 TEST(SubstitutionPattern, ParseLiteral) {
@@ -47,3 +49,25 @@
   EXPECT_FALSE(pattern.Parse("{{source{{source}}", nullptr, &err));
   EXPECT_TRUE(err.has_error());
 }
+
+TEST(SubstitutionPattern, ParseRust) {
+  SubstitutionPattern pattern;
+  Err err;
+  EXPECT_TRUE(pattern.Parse(
+      "AA{{rustflags}}{{rustenv}}BB{{crate_name}}{{rustdeps}}CC{{externs}}",
+      nullptr, &err));
+  EXPECT_FALSE(err.has_error());
+  ASSERT_EQ(8u, pattern.ranges().size());
+
+  EXPECT_EQ(&SubstitutionLiteral, pattern.ranges()[0].type);
+  EXPECT_EQ("AA", pattern.ranges()[0].literal);
+  EXPECT_EQ(&kRustSubstitutionRustFlags, pattern.ranges()[1].type);
+  EXPECT_EQ(&kRustSubstitutionRustEnv, pattern.ranges()[2].type);
+  EXPECT_EQ(&SubstitutionLiteral, pattern.ranges()[3].type);
+  EXPECT_EQ("BB", pattern.ranges()[3].literal);
+  EXPECT_EQ(&kRustSubstitutionCrateName, pattern.ranges()[4].type);
+  EXPECT_EQ(&kRustSubstitutionRustDeps, pattern.ranges()[5].type);
+  EXPECT_EQ(&SubstitutionLiteral, pattern.ranges()[6].type);
+  EXPECT_EQ("CC", pattern.ranges()[6].literal);
+  EXPECT_EQ(&kRustSubstitutionExterns, pattern.ranges()[7].type);
+}
\ No newline at end of file
diff --git a/tools/gn/substitution_type.cc b/tools/gn/substitution_type.cc
index ae680c9..6972beb 100644
--- a/tools/gn/substitution_type.cc
+++ b/tools/gn/substitution_type.cc
@@ -9,9 +9,10 @@
 
 #include "tools/gn/c_substitution_type.h"
 #include "tools/gn/err.h"
+#include "tools/gn/rust_substitution_type.h"
 
-const std::vector<SubstitutionTypes*> AllSubstitutions = {&GeneralSubstitutions,
-                                                          &CSubstitutions};
+const std::vector<SubstitutionTypes*> AllSubstitutions = {
+    &GeneralSubstitutions, &CSubstitutions, &RustSubstitutions};
 
 const SubstitutionTypes GeneralSubstitutions = {
     &SubstitutionLiteral,
