# Copyright 2020 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# DO NOT EDIT. THIS FILE IS GENERATED BY CARGO GNAW. EDIT THE CARGO TOML FILE

group("package-with-bin") {
  deps = [ ":package-with-bin-v0_1_0" ]
}

group("foo-output") {
  deps = [ ":package-with-bin-foo-binary-v0_1_0" ]
}

executable("package-with-bin-foo-binary-v0_1_0") {
  crate_name = "foo_binary"
  crate_root = "//binary/src/main.rs"
  output_name = "foo-output"
  if (current_os == "fuchsia") {
    configs += [ "//extra/fuchsia/config" ]
  }
  if (true) {
    configs += [ "//applied/to/all" ]
  }

  deps = []

  rustenv = []

  rustflags = [
    "--cap-lints=allow",
    "--edition=2018",
    "-Cmetadata=afa00503dca78ba8",
    "-Cextra-filename=-afa00503dca78ba8",
  ]
}

rust_library("package-with-bin-v0_1_0") {
  crate_name = "package_with_bin"
  crate_root = "//binary/src/lib.rs"
  output_name = "package_with_bin-b6c5dfd7f886ecb4"

  deps = []

  rustenv = []

  rustflags = [
    "--cap-lints=allow",
    "--edition=2018",
    "-Cmetadata=b6c5dfd7f886ecb4",
    "-Cextra-filename=-b6c5dfd7f886ecb4",
  ]
}
