mirror of
https://github.com/teloxide/teloxide.git
synced 2025-01-03 09:49:07 +01:00
Add more #[must_use]
attributes for appropriate functions
Former-commit-id: 52096d269f
This commit is contained in:
parent
fdf147c9f7
commit
f12cac7a43
4 changed files with 52 additions and 1 deletions
|
@ -18,11 +18,12 @@ pub struct TraceStorage<S> {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<S> TraceStorage<S> {
|
impl<S> TraceStorage<S> {
|
||||||
#[must_use]
|
#[must_use = "This function is pure, that is does nothing unless it's output is used"]
|
||||||
pub fn new(inner: Arc<S>) -> Arc<Self> {
|
pub fn new(inner: Arc<S>) -> Arc<Self> {
|
||||||
Arc::new(Self { inner })
|
Arc::new(Self { inner })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[must_use = "This function is pure, that is does nothing unless it's output is used"]
|
||||||
pub fn into_inner(self) -> Arc<S> {
|
pub fn into_inner(self) -> Arc<S> {
|
||||||
self.inner
|
self.inner
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,6 +39,7 @@ pub struct AsyncStopFlag(#[pin] Abortable<Pending<()>>);
|
||||||
|
|
||||||
impl AsyncStopToken {
|
impl AsyncStopToken {
|
||||||
/// Create a new token/flag pair.
|
/// Create a new token/flag pair.
|
||||||
|
#[must_use = "This function is pure, that is does nothing unless it's output is used"]
|
||||||
pub fn new_pair() -> (Self, AsyncStopFlag) {
|
pub fn new_pair() -> (Self, AsyncStopFlag) {
|
||||||
let (handle, reg) = AbortHandle::new_pair();
|
let (handle, reg) = AbortHandle::new_pair();
|
||||||
let token = Self(handle);
|
let token = Self(handle);
|
||||||
|
@ -56,6 +57,7 @@ impl StopToken for AsyncStopToken {
|
||||||
|
|
||||||
impl AsyncStopFlag {
|
impl AsyncStopFlag {
|
||||||
/// Returns true if the stop token linked to `self` was used.
|
/// Returns true if the stop token linked to `self` was used.
|
||||||
|
#[must_use = "This function is pure, that is does nothing unless it's output is used"]
|
||||||
pub fn is_stopped(&self) -> bool {
|
pub fn is_stopped(&self) -> bool {
|
||||||
self.0.is_aborted()
|
self.0.is_aborted()
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,8 @@ use teloxide_core::types::User;
|
||||||
///
|
///
|
||||||
/// Passed string will not be automatically escaped because it can contain
|
/// Passed string will not be automatically escaped because it can contain
|
||||||
/// nested markup.
|
/// nested markup.
|
||||||
|
#[must_use = "This function returns a new string, rather than mutating the argument, so calling it \
|
||||||
|
without using it's output does nothing useful"]
|
||||||
pub fn bold(s: &str) -> String {
|
pub fn bold(s: &str) -> String {
|
||||||
format!("<b>{}</b>", s)
|
format!("<b>{}</b>", s)
|
||||||
}
|
}
|
||||||
|
@ -16,6 +18,8 @@ pub fn bold(s: &str) -> String {
|
||||||
///
|
///
|
||||||
/// Passed string will not be automatically escaped because it can contain
|
/// Passed string will not be automatically escaped because it can contain
|
||||||
/// nested markup.
|
/// nested markup.
|
||||||
|
#[must_use = "This function returns a new string, rather than mutating the argument, so calling it \
|
||||||
|
without using it's output does nothing useful"]
|
||||||
pub fn italic(s: &str) -> String {
|
pub fn italic(s: &str) -> String {
|
||||||
format!("<i>{}</i>", s)
|
format!("<i>{}</i>", s)
|
||||||
}
|
}
|
||||||
|
@ -24,6 +28,8 @@ pub fn italic(s: &str) -> String {
|
||||||
///
|
///
|
||||||
/// Passed string will not be automatically escaped because it can contain
|
/// Passed string will not be automatically escaped because it can contain
|
||||||
/// nested markup.
|
/// nested markup.
|
||||||
|
#[must_use = "This function returns a new string, rather than mutating the argument, so calling it \
|
||||||
|
without using it's output does nothing useful"]
|
||||||
pub fn underline(s: &str) -> String {
|
pub fn underline(s: &str) -> String {
|
||||||
format!("<u>{}</u>", s)
|
format!("<u>{}</u>", s)
|
||||||
}
|
}
|
||||||
|
@ -32,6 +38,8 @@ pub fn underline(s: &str) -> String {
|
||||||
///
|
///
|
||||||
/// Passed string will not be automatically escaped because it can contain
|
/// Passed string will not be automatically escaped because it can contain
|
||||||
/// nested markup.
|
/// nested markup.
|
||||||
|
#[must_use = "This function returns a new string, rather than mutating the argument, so calling it \
|
||||||
|
without using it's output does nothing useful"]
|
||||||
pub fn strike(s: &str) -> String {
|
pub fn strike(s: &str) -> String {
|
||||||
format!("<s>{}</s>", s)
|
format!("<s>{}</s>", s)
|
||||||
}
|
}
|
||||||
|
@ -39,11 +47,15 @@ pub fn strike(s: &str) -> String {
|
||||||
/// Builds an inline link with an anchor.
|
/// Builds an inline link with an anchor.
|
||||||
///
|
///
|
||||||
/// Escapes the passed URL and the link text.
|
/// Escapes the passed URL and the link text.
|
||||||
|
#[must_use = "This function returns a new string, rather than mutating the argument, so calling it \
|
||||||
|
without using it's output does nothing useful"]
|
||||||
pub fn link(url: &str, text: &str) -> String {
|
pub fn link(url: &str, text: &str) -> String {
|
||||||
format!("<a href=\"{}\">{}</a>", escape(url), escape(text))
|
format!("<a href=\"{}\">{}</a>", escape(url), escape(text))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Builds an inline user mention link with an anchor.
|
/// Builds an inline user mention link with an anchor.
|
||||||
|
#[must_use = "This function returns a new string, rather than mutating the argument, so calling it \
|
||||||
|
without using it's output does nothing useful"]
|
||||||
pub fn user_mention(user_id: i64, text: &str) -> String {
|
pub fn user_mention(user_id: i64, text: &str) -> String {
|
||||||
link(format!("tg://user?id={}", user_id).as_str(), text)
|
link(format!("tg://user?id={}", user_id).as_str(), text)
|
||||||
}
|
}
|
||||||
|
@ -51,6 +63,8 @@ pub fn user_mention(user_id: i64, text: &str) -> String {
|
||||||
/// Formats the code block.
|
/// Formats the code block.
|
||||||
///
|
///
|
||||||
/// Escapes HTML characters inside the block.
|
/// Escapes HTML characters inside the block.
|
||||||
|
#[must_use = "This function returns a new string, rather than mutating the argument, so calling it \
|
||||||
|
without using it's output does nothing useful"]
|
||||||
pub fn code_block(code: &str) -> String {
|
pub fn code_block(code: &str) -> String {
|
||||||
format!("<pre>{}</pre>", escape(code))
|
format!("<pre>{}</pre>", escape(code))
|
||||||
}
|
}
|
||||||
|
@ -58,6 +72,8 @@ pub fn code_block(code: &str) -> String {
|
||||||
/// Formats the code block with a specific language syntax.
|
/// Formats the code block with a specific language syntax.
|
||||||
///
|
///
|
||||||
/// Escapes HTML characters inside the block.
|
/// Escapes HTML characters inside the block.
|
||||||
|
#[must_use = "This function returns a new string, rather than mutating the argument, so calling it \
|
||||||
|
without using it's output does nothing useful"]
|
||||||
pub fn code_block_with_lang(code: &str, lang: &str) -> String {
|
pub fn code_block_with_lang(code: &str, lang: &str) -> String {
|
||||||
format!(
|
format!(
|
||||||
"<pre><code class=\"language-{}\">{}</code></pre>",
|
"<pre><code class=\"language-{}\">{}</code></pre>",
|
||||||
|
@ -69,6 +85,8 @@ pub fn code_block_with_lang(code: &str, lang: &str) -> String {
|
||||||
/// Formats the string as an inline code.
|
/// Formats the string as an inline code.
|
||||||
///
|
///
|
||||||
/// Escapes HTML characters inside the block.
|
/// Escapes HTML characters inside the block.
|
||||||
|
#[must_use = "This function returns a new string, rather than mutating the argument, so calling it \
|
||||||
|
without using it's output does nothing useful"]
|
||||||
pub fn code_inline(s: &str) -> String {
|
pub fn code_inline(s: &str) -> String {
|
||||||
format!("<code>{}</code>", escape(s))
|
format!("<code>{}</code>", escape(s))
|
||||||
}
|
}
|
||||||
|
@ -80,10 +98,14 @@ pub fn code_inline(s: &str) -> String {
|
||||||
/// they shoudn't be escaped by the [spec].
|
/// they shoudn't be escaped by the [spec].
|
||||||
///
|
///
|
||||||
/// [spec]: https://core.telegram.org/bots/api#html-style
|
/// [spec]: https://core.telegram.org/bots/api#html-style
|
||||||
|
#[must_use = "This function returns a new string, rather than mutating the argument, so calling it \
|
||||||
|
without using it's output does nothing useful"]
|
||||||
pub fn escape(s: &str) -> String {
|
pub fn escape(s: &str) -> String {
|
||||||
s.replace('&', "&").replace('<', "<").replace('>', ">")
|
s.replace('&', "&").replace('<', "<").replace('>', ">")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[must_use = "This function returns a new string, rather than mutating the argument, so calling it \
|
||||||
|
without using it's output does nothing useful"]
|
||||||
pub fn user_mention_or_link(user: &User) -> String {
|
pub fn user_mention_or_link(user: &User) -> String {
|
||||||
match user.mention() {
|
match user.mention() {
|
||||||
Some(mention) => mention,
|
Some(mention) => mention,
|
||||||
|
|
|
@ -8,6 +8,8 @@ use teloxide_core::types::User;
|
||||||
///
|
///
|
||||||
/// Passed string will not be automatically escaped because it can contain
|
/// Passed string will not be automatically escaped because it can contain
|
||||||
/// nested markup.
|
/// nested markup.
|
||||||
|
#[must_use = "This function returns a new string, rather than mutating the argument, so calling it \
|
||||||
|
without using it's output does nothing useful"]
|
||||||
pub fn bold(s: &str) -> String {
|
pub fn bold(s: &str) -> String {
|
||||||
format!("*{}*", s)
|
format!("*{}*", s)
|
||||||
}
|
}
|
||||||
|
@ -17,6 +19,8 @@ pub fn bold(s: &str) -> String {
|
||||||
/// Can be safely used with `utils::markdown::underline()`.
|
/// Can be safely used with `utils::markdown::underline()`.
|
||||||
/// Passed string will not be automatically escaped because it can contain
|
/// Passed string will not be automatically escaped because it can contain
|
||||||
/// nested markup.
|
/// nested markup.
|
||||||
|
#[must_use = "This function returns a new string, rather than mutating the argument, so calling it \
|
||||||
|
without using it's output does nothing useful"]
|
||||||
pub fn italic(s: &str) -> String {
|
pub fn italic(s: &str) -> String {
|
||||||
if s.starts_with("__") && s.ends_with("__") {
|
if s.starts_with("__") && s.ends_with("__") {
|
||||||
format!(r"_{}\r__", &s[..s.len() - 1])
|
format!(r"_{}\r__", &s[..s.len() - 1])
|
||||||
|
@ -30,6 +34,8 @@ pub fn italic(s: &str) -> String {
|
||||||
/// Can be safely used with `utils::markdown::italic()`.
|
/// Can be safely used with `utils::markdown::italic()`.
|
||||||
/// Passed string will not be automatically escaped because it can contain
|
/// Passed string will not be automatically escaped because it can contain
|
||||||
/// nested markup.
|
/// nested markup.
|
||||||
|
#[must_use = "This function returns a new string, rather than mutating the argument, so calling it \
|
||||||
|
without using it's output does nothing useful"]
|
||||||
pub fn underline(s: &str) -> String {
|
pub fn underline(s: &str) -> String {
|
||||||
// In case of ambiguity between italic and underline entities
|
// In case of ambiguity between italic and underline entities
|
||||||
// ‘__’ is always greadily treated from left to right as beginning or end of
|
// ‘__’ is always greadily treated from left to right as beginning or end of
|
||||||
|
@ -47,6 +53,8 @@ pub fn underline(s: &str) -> String {
|
||||||
///
|
///
|
||||||
/// Passed string will not be automatically escaped because it can contain
|
/// Passed string will not be automatically escaped because it can contain
|
||||||
/// nested markup.
|
/// nested markup.
|
||||||
|
#[must_use = "This function returns a new string, rather than mutating the argument, so calling it \
|
||||||
|
without using it's output does nothing useful"]
|
||||||
pub fn strike(s: &str) -> String {
|
pub fn strike(s: &str) -> String {
|
||||||
format!("~{}~", s)
|
format!("~{}~", s)
|
||||||
}
|
}
|
||||||
|
@ -54,11 +62,15 @@ pub fn strike(s: &str) -> String {
|
||||||
/// Builds an inline link with an anchor.
|
/// Builds an inline link with an anchor.
|
||||||
///
|
///
|
||||||
/// Escapes `)` and ``` characters inside the link url.
|
/// Escapes `)` and ``` characters inside the link url.
|
||||||
|
#[must_use = "This function returns a new string, rather than mutating the argument, so calling it \
|
||||||
|
without using it's output does nothing useful"]
|
||||||
pub fn link(url: &str, text: &str) -> String {
|
pub fn link(url: &str, text: &str) -> String {
|
||||||
format!("[{}]({})", text, escape_link_url(url))
|
format!("[{}]({})", text, escape_link_url(url))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Builds an inline user mention link with an anchor.
|
/// Builds an inline user mention link with an anchor.
|
||||||
|
#[must_use = "This function returns a new string, rather than mutating the argument, so calling it \
|
||||||
|
without using it's output does nothing useful"]
|
||||||
pub fn user_mention(user_id: i64, text: &str) -> String {
|
pub fn user_mention(user_id: i64, text: &str) -> String {
|
||||||
link(format!("tg://user?id={}", user_id).as_str(), text)
|
link(format!("tg://user?id={}", user_id).as_str(), text)
|
||||||
}
|
}
|
||||||
|
@ -66,6 +78,8 @@ pub fn user_mention(user_id: i64, text: &str) -> String {
|
||||||
/// Formats the code block.
|
/// Formats the code block.
|
||||||
///
|
///
|
||||||
/// Escapes ``` and `\` characters inside the block.
|
/// Escapes ``` and `\` characters inside the block.
|
||||||
|
#[must_use = "This function returns a new string, rather than mutating the argument, so calling it \
|
||||||
|
without using it's output does nothing useful"]
|
||||||
pub fn code_block(code: &str) -> String {
|
pub fn code_block(code: &str) -> String {
|
||||||
format!("```\n{}\n```", escape_code(code))
|
format!("```\n{}\n```", escape_code(code))
|
||||||
}
|
}
|
||||||
|
@ -73,6 +87,8 @@ pub fn code_block(code: &str) -> String {
|
||||||
/// Formats the code block with a specific language syntax.
|
/// Formats the code block with a specific language syntax.
|
||||||
///
|
///
|
||||||
/// Escapes ``` and `\` characters inside the block.
|
/// Escapes ``` and `\` characters inside the block.
|
||||||
|
#[must_use = "This function returns a new string, rather than mutating the argument, so calling it \
|
||||||
|
without using it's output does nothing useful"]
|
||||||
pub fn code_block_with_lang(code: &str, lang: &str) -> String {
|
pub fn code_block_with_lang(code: &str, lang: &str) -> String {
|
||||||
format!("```{}\n{}\n```", escape(lang), escape_code(code))
|
format!("```{}\n{}\n```", escape(lang), escape_code(code))
|
||||||
}
|
}
|
||||||
|
@ -80,6 +96,8 @@ pub fn code_block_with_lang(code: &str, lang: &str) -> String {
|
||||||
/// Formats the string as an inline code.
|
/// Formats the string as an inline code.
|
||||||
///
|
///
|
||||||
/// Escapes ``` and `\` characters inside the block.
|
/// Escapes ``` and `\` characters inside the block.
|
||||||
|
#[must_use = "This function returns a new string, rather than mutating the argument, so calling it \
|
||||||
|
without using it's output does nothing useful"]
|
||||||
pub fn code_inline(s: &str) -> String {
|
pub fn code_inline(s: &str) -> String {
|
||||||
format!("`{}`", escape_code(s))
|
format!("`{}`", escape_code(s))
|
||||||
}
|
}
|
||||||
|
@ -88,6 +106,8 @@ pub fn code_inline(s: &str) -> String {
|
||||||
/// v2][spec] message style.
|
/// v2][spec] message style.
|
||||||
///
|
///
|
||||||
/// [spec]: https://core.telegram.org/bots/api#html-style
|
/// [spec]: https://core.telegram.org/bots/api#html-style
|
||||||
|
#[must_use = "This function returns a new string, rather than mutating the argument, so calling it \
|
||||||
|
without using it's output does nothing useful"]
|
||||||
pub fn escape(s: &str) -> String {
|
pub fn escape(s: &str) -> String {
|
||||||
s.replace('_', r"\_")
|
s.replace('_', r"\_")
|
||||||
.replace('*', r"\*")
|
.replace('*', r"\*")
|
||||||
|
@ -111,16 +131,22 @@ pub fn escape(s: &str) -> String {
|
||||||
|
|
||||||
/// Escapes all markdown special characters specific for the inline link URL
|
/// Escapes all markdown special characters specific for the inline link URL
|
||||||
/// (``` and `)`).
|
/// (``` and `)`).
|
||||||
|
#[must_use = "This function returns a new string, rather than mutating the argument, so calling it \
|
||||||
|
without using it's output does nothing useful"]
|
||||||
pub fn escape_link_url(s: &str) -> String {
|
pub fn escape_link_url(s: &str) -> String {
|
||||||
s.replace('`', r"\`").replace(')', r"\)")
|
s.replace('`', r"\`").replace(')', r"\)")
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Escapes all markdown special characters specific for the code block (``` and
|
/// Escapes all markdown special characters specific for the code block (``` and
|
||||||
/// `\`).
|
/// `\`).
|
||||||
|
#[must_use = "This function returns a new string, rather than mutating the argument, so calling it \
|
||||||
|
without using it's output does nothing useful"]
|
||||||
pub fn escape_code(s: &str) -> String {
|
pub fn escape_code(s: &str) -> String {
|
||||||
s.replace('\\', r"\\").replace('`', r"\`")
|
s.replace('\\', r"\\").replace('`', r"\`")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[must_use = "This function returns a new string, rather than mutating the argument, so calling it \
|
||||||
|
without using it's output does nothing useful"]
|
||||||
pub fn user_mention_or_link(user: &User) -> String {
|
pub fn user_mention_or_link(user: &User) -> String {
|
||||||
match user.mention() {
|
match user.mention() {
|
||||||
Some(mention) => mention,
|
Some(mention) => mention,
|
||||||
|
|
Loading…
Reference in a new issue