load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_library", "rust_test") package(default_visibility = ["//visibility:public"]) rust_binary( name = "print", srcs = ["main.rs"], deps = [ ":printer", ], ) rust_library( name = "printer", srcs = [ "lib.rs", "print_generic.rs", ] + select({ "@rules_rust//rust/platform:linux": [ ":print_linux.rs", ], "@rules_rust//rust/platform:macos": [ ":print_macos.rs", ], "@rules_rust//rust/platform:windows": [ ":print_windows.rs", ], }), # Because each os specific file is conditionally added to the target, # rustfmt does not have all sources to complete formatting. To avoid # this failure, rustfmt is not run on this target tags = ["norustfmt"], ) rust_test( name = "printer_test", crate = ":printer", # The same rational used for `printer` applies here. Do not run rustfmt # since not all sources are available. tags = ["norustfmt"], )