From 98c34b725f6d154092e408a067f41663148b1ee1 Mon Sep 17 00:00:00 2001 From: veetaha Date: Mon, 16 Mar 2020 02:35:59 +0200 Subject: ra_ide: refactor readonly String -> &str --- crates/ra_ide/src/display.rs | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) (limited to 'crates/ra_ide/src/display.rs') diff --git a/crates/ra_ide/src/display.rs b/crates/ra_ide/src/display.rs index eaeaaa2b4..c395057a7 100644 --- a/crates/ra_ide/src/display.rs +++ b/crates/ra_ide/src/display.rs @@ -6,6 +6,8 @@ mod navigation_target; mod structure; mod short_label; +use std::fmt::{Display, Write}; + use ra_syntax::{ ast::{self, AstNode, AttrsOwner, NameOwner, TypeParamsOwner}, SyntaxKind::{ATTR, COMMENT}, @@ -67,24 +69,27 @@ pub(crate) fn macro_label(node: &ast::MacroCall) -> String { format!("{}macro_rules! {}", vis, name) } -pub(crate) fn rust_code_markup>(val: CODE) -> String { - rust_code_markup_with_doc::<_, &str>(val, None, None) +pub(crate) fn rust_code_markup(code: &impl Display) -> String { + rust_code_markup_with_doc(code, None, None) } -pub(crate) fn rust_code_markup_with_doc( - val: CODE, - doc: Option, - mod_path: Option, -) -> String -where - CODE: AsRef, - DOC: AsRef, -{ - let mod_path = - mod_path.filter(|path| !path.is_empty()).map(|path| path + "\n").unwrap_or_default(); +pub(crate) fn rust_code_markup_with_doc( + code: &impl Display, + doc: Option<&str>, + mod_path: Option<&str>, +) -> String { + let mut markup = "```rust\n".to_owned(); + + if let Some(mod_path) = mod_path { + if !mod_path.is_empty() { + write!(markup, "{}\n", mod_path).unwrap(); + } + } + write!(markup, "{}\n```", code).unwrap(); + if let Some(doc) = doc { - format!("```rust\n{}{}\n```\n\n{}", mod_path, val.as_ref(), doc.as_ref()) - } else { - format!("```rust\n{}{}\n```", mod_path, val.as_ref()) + write!(markup, "\n\n{}", doc).unwrap(); } + + markup } -- cgit v1.2.3