Skip to main content

typed_quote/tokens/
literal.rs

1#[cfg(any(feature = "proc-macro", feature = "proc-macro2"))]
2use core::str::FromStr;
3
4use super::*;
5
6impl<'a, S: MaybeSpan> sealed::IntoTokenTree for Literal<'a, S> {}
7impl<'a, S: MaybeSpan> IntoTokenTree for Literal<'a, S> {
8    crate::impl_into_token_tree!(|self| pm::TokenTree::Literal(
9        (
10            pm::Literal::from_str(self.0).expect("should be a stringified literal"),
11            self.1
12        )
13            .into_st()
14    ));
15}
16
17impl<'a, S: MaybeSpan> sealed::ToTokenTree for Literal<'a, S> {}
18impl<'a, S: MaybeSpan> ToTokenTree for Literal<'a, S> {
19    crate::impl_to_token_tree! {copy}
20}
21
22impl<'a, S: MaybeSpan> sealed::IntoTokens for Literal<'a, S> {}
23impl<'a, S: MaybeSpan> IntoTokens for Literal<'a, S> {
24    crate::impl_into_tokens! {tt}
25}
26
27impl<'a, S: MaybeSpan> sealed::ToTokens for Literal<'a, S> {}
28impl<'a, S: MaybeSpan> ToTokens for Literal<'a, S> {
29    crate::impl_to_tokens! {tt}
30}
31impl<'a, S: MaybeSpan> sealed::WithSpan for Literal<'a, S> {}
32impl<'a, SO: MaybeSpan> WithSpan for Literal<'a, SO> {
33    type WithDefaultSpan<S: crate::Span> = Literal<'a, SO::WithDefaultSpan<S>>;
34    fn with_default_span<S: crate::Span>(self, span: S) -> Self::WithDefaultSpan<S> {
35        Literal(self.0, self.1.with_default_span(span))
36    }
37
38    type WithReplacedSpan<S: crate::Span> = Literal<'a, SO::WithReplacedSpan<S>>;
39
40    fn with_replaced_span<S: crate::Span>(self, span: S) -> Self::WithReplacedSpan<S> {
41        Literal(self.0, self.1.with_replaced_span(span))
42    }
43}
44
45impl<'a, S: MaybeSpan> sealed::RefWithSpan for Literal<'a, S> {}
46impl<'a, SO: MaybeSpan> RefWithSpan for Literal<'a, SO> {
47    crate::impl_ref_with_span!(copy);
48}