#impl #traits #bar #write #inherent #docs #foo

impl_trait

允许在固有实现中实现impl trait

8个版本

0.1.7 2021年8月16日
0.1.6 2021年8月13日
0.1.3 2021年4月22日
0.1.2 2021年3月23日

#7 in #固有


用于 hexchat-unsafe-plugin

AGPL-3.0或更高版本

21KB
309

impl_trait!

TL;DR:此功能添加了 impl_trait!,允许您进行

struct Foo;

trait Bar {}

impl_trait! {
  /// Yes, you can write docs here.
  impl Foo {
    /// You can write docs here too.
    fn as_dyn_bar(&self) -> &dyn Bar {
      self
    }
    /// You can even write docs here!
    impl trait Bar {
    }
  }
}

以下是一些需要注意的事项

  • 您可以在主 impl<T> Foo 块中定义泛型。
  • 您可以使用 impl trait<T> Bar 在特质实现中定义泛型。
  • 遗憾的是,我们无法让rustdoc将特质实现以某种方式输出为类型的“固有”部分。它们仍将出现在单独的“特质实现”部分中,而不是作为适当实现块的一部分。

关于许可的说明

这是一个过程宏。它基本上实现了一种简单的语法糖,您可以轻松手动去糖。

实际上,手动去糖可能比写一个过程宏来为您做这件事更容易!

尽管如此,是的,此代码是AGPLv3许可的。这是最严格的开放源代码许可。如果您不喜欢,那就废除版权吧?

幸运的是,AGPLv3包含许多漏洞,如系统库例外,以及第13条特别以“如果您修改程序”开头的事实,即它明确不适用于您仅使用crates.io上的此crate的普通版本的情况。

此外,此代码很糟糕,请勿复制。

许可

impl_trait - Rust proc macro that significantly reduces boilerplate
Copyright (C) 2021  Soni L.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.

依赖项

~1.5MB
~36K SLoC