Deduplicate the CrateInfo provider (#720)

diff --git a/rust/rust_common.bzl b/rust/rust_common.bzl
index d23e513..ad8cbdf 100644
--- a/rust/rust_common.bzl
+++ b/rust/rust_common.bzl
@@ -14,19 +14,6 @@
 
 """Module with Rust definitions required to write custom Rust rules."""
 
-CrateInfo = provider(
-    doc = "A provider containing general Crate information.",
-    fields = {
-        "aliases": "Dict[Label, String]: Renamed and aliased crates",
-        "deps": "List[Provider]: This crate's (rust or cc) dependencies' providers.",
-        "edition": "str: The edition of this crate.",
-        "is_test": "bool: If the crate is being compiled in a test context",
-        "name": "str: The name of this crate.",
-        "output": "File: The output File that will be produced, depends on crate type.",
-        "proc_macro_deps": "List[CrateInfo]: This crate's rust proc_macro dependencies' providers.",
-        "root": "File: The source File entrypoint to this crate, eg. lib.rs",
-        "rustc_env": "Dict[String, String]: Additional `\"key\": \"value\"` environment variables to set for rustc.",
-        "srcs": "List[File]: All source Files that are part of the crate.",
-        "type": "str: The type of this crate. eg. lib or bin",
-    },
-)
+load("//rust/private:providers.bzl", _CrateInfo = "CrateInfo")
+
+CrateInfo = _CrateInfo