|  | // Copyright 2023 The Chromium Authors | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | // The explicit `extern crate` will catch if a GN target specifies conflicting | 
|  | // dependencies. | 
|  | // | 
|  | // When libraries are included implicitly from the command line, rustc seems to | 
|  | // silently pick the first one that matches. On the other hand with an explicit | 
|  | // "extern crate" directive, which tells rustc to link a dependency no matter | 
|  | // what, rustc will see the conflict. | 
|  | extern crate transitive_dep; | 
|  |  | 
|  | chromium::import! { | 
|  | "//build/rust/tests/test_rust_metadata:foo_dependency"; | 
|  | } | 
|  |  | 
|  | pub use foo_dependency::say_foo; | 
|  | pub use foo_dependency::say_foo_directly; | 
|  | pub use transitive_dep::say_something; | 
|  |  | 
|  | #[no_mangle] | 
|  | pub extern "C" fn print_foo_bar() { | 
|  | println!("{}", foo_dependency::say_foo()); | 
|  | println!("{}", transitive_dep::say_something()); | 
|  | } |