From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- third_party/rust/inherent/README.md | 86 +++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 third_party/rust/inherent/README.md (limited to 'third_party/rust/inherent/README.md') diff --git a/third_party/rust/inherent/README.md b/third_party/rust/inherent/README.md new file mode 100644 index 0000000000..8921d595ab --- /dev/null +++ b/third_party/rust/inherent/README.md @@ -0,0 +1,86 @@ +\#\[inherent\] +============== + +[github](https://github.com/dtolnay/inherent) +[crates.io](https://crates.io/crates/inherent) +[docs.rs](https://docs.rs/inherent) +[build status](https://github.com/dtolnay/inherent/actions?query=branch%3Amaster) + +This crate provides an attribute macro to make trait methods callable without +the trait in scope. + +```toml +[dependencies] +inherent = "1.0" +``` + +## Example + +```rust +mod types { + use inherent::inherent; + + trait Trait { + fn f(self); + } + + pub struct Struct; + + #[inherent] + impl Trait for Struct { + pub fn f(self) {} + } +} + +fn main() { + // types::Trait is not in scope, but method can be called. + types::Struct.f(); +} +``` + +Without the `inherent` macro on the trait impl, this would have failed with the +following error: + +```console +error[E0599]: no method named `f` found for type `types::Struct` in the current scope + --> src/main.rs:18:19 + | +8 | pub struct Struct; + | ------------------ method `f` not found for this +... +18 | types::Struct.f(); + | ^ + | + = help: items from traits can only be used if the trait is implemented and in scope + = note: the following trait defines an item `f`, perhaps you need to implement it: + candidate #1: `types::Trait` +``` + +The `inherent` macro expands to inherent methods on the `Self` type of the trait +impl that forward to the trait methods. In the case above, the generated code +would be: + +```rust +impl Struct { + pub fn f(self) { + ::f(self) + } +} +``` + +
+ +#### License + + +Licensed under either of Apache License, Version +2.0 or MIT license at your option. + + +
+ + +Unless you explicitly state otherwise, any contribution intentionally submitted +for inclusion in this crate by you, as defined in the Apache-2.0 license, shall +be dual licensed as above, without any additional terms or conditions. + -- cgit v1.2.3