Squashed 'third_party/rules_rust/' content from commit bf59038ca

git-subtree-dir: third_party/rules_rust
git-subtree-split: bf59038cac11798cbaef9f3bf965bad8182b97fa
Signed-off-by: Brian Silverman <bsilver16384@gmail.com>
Change-Id: I5a20e403203d670df467ea97dde9a4ac40339a8d
diff --git a/examples/per_platform_printer/lib.rs b/examples/per_platform_printer/lib.rs
new file mode 100644
index 0000000..3ae5ee7
--- /dev/null
+++ b/examples/per_platform_printer/lib.rs
@@ -0,0 +1,48 @@
+mod print_generic;
+
+#[cfg(target_os = "linux")]
+mod print_linux;
+
+#[cfg(target_os = "macos")]
+mod print_macos;
+
+#[cfg(target_os = "windows")]
+mod print_windows;
+
+#[cfg(target_os = "linux")]
+pub fn print() -> Vec<String> {
+    vec![print_generic::print(), print_linux::print()]
+}
+
+#[cfg(target_os = "macos")]
+pub fn print() -> Vec<String> {
+    vec![print_generic::print(), print_macos::print()]
+}
+
+#[cfg(target_os = "windows")]
+pub fn print() -> Vec<String> {
+    vec![print_generic::print(), print_windows::print()]
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn prints_correctly() {
+        let outs = print();
+
+        assert_eq!(
+            outs,
+            vec![
+                "Hello Generic!",
+                #[cfg(target_os = "linux")]
+                "Hello Linux!",
+                #[cfg(target_os = "macos")]
+                "Hello MacOS!",
+                #[cfg(target_os = "windows")]
+                "Hello Windows!",
+            ]
+        );
+    }
+}