From c3d75ad80d949be1cdb7c5a6c20d9134df677070 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Sun, 24 Apr 2016 17:15:54 +0530 Subject: [PATCH] Improve new_without_default docs --- src/new_without_default.rs | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/new_without_default.rs b/src/new_without_default.rs index f42b1d0d74a..46021ec8836 100644 --- a/src/new_without_default.rs +++ b/src/new_without_default.rs @@ -6,10 +6,13 @@ use syntax::codemap::Span; use utils::paths; use utils::{get_trait_def_id, implements_trait, in_external_macro, return_ty, same_tys, span_lint}; -/// **What it does:** This lints about type with a `fn new() -> Self` method and no `Default` -/// implementation. +/// **What it does:** This lints about type with a `fn new() -> Self` method +/// and no implementation of +/// [`Default`](https://doc.rust-lang.org/std/default/trait.Default.html) /// -/// **Why is this bad?** User might expect to be able to use `Default` as the type can be +/// **Why is this bad?** User might expect to be able to use +/// [`Default`](https://doc.rust-lang.org/std/default/trait.Default.html) +/// as the type can be /// constructed without arguments. /// /// **Known problems:** Hopefully none. @@ -25,6 +28,21 @@ use utils::{get_trait_def_id, implements_trait, in_external_macro, return_ty, sa /// } /// } /// ``` +/// +/// Instead, use: +/// +/// ```rust +/// struct Foo; +/// +/// impl Default for Foo { +/// fn default() -> Self { +/// Foo +/// } +/// } +/// ``` +/// +/// You can also have `new()` call `Default::default()` +/// declare_lint! { pub NEW_WITHOUT_DEFAULT, Warn,