#literals #proc-macro #value #parser #extension #extracting #methods

literalext

A helper crate for interpreting proc-macro Literal values

3 unstable releases

Uses old Rust 2015

0.2.0 Jan 14, 2018
0.1.1 Aug 9, 2017
0.1.0 Jul 17, 2017

#2758 in Rust patterns

Download history 121/week @ 2024-03-12 159/week @ 2024-03-19 186/week @ 2024-03-26 216/week @ 2024-04-02 105/week @ 2024-04-09 145/week @ 2024-04-16 160/week @ 2024-04-23 141/week @ 2024-04-30 146/week @ 2024-05-07 136/week @ 2024-05-14 153/week @ 2024-05-21 134/week @ 2024-05-28 113/week @ 2024-06-04 96/week @ 2024-06-11 128/week @ 2024-06-18 113/week @ 2024-06-25

474 downloads per month
Used in 16 crates (via mauzi_macros)

MIT/Apache

31KB
789 lines

literalext

Build Status

WARNING: This crate is no longer maintained. The literal parsing logic in this crate has been moved into syn 0.12.

To get similar behaviour with syn, parse a syn::Lit by calling syn::parse2::<syn::Lit>(ts) or syn::parse_str::<syn::Lit>(s).

This crate provides extension methods to proc-macro, and proc-macro2's Literal types. These methods provide a mechanism for extracting the value of the type.

API

Adds a trait with implementations for the types proc_macro2::Literal, proc_macro::Literal, and DummyLiteral with the following methods for extracting the value of the type:

pub trait LiteralExt {
    /// If the `Literal` is an integer literal, returns its value.
    fn parse_int(&self) -> Option<IntLit>;

    /// If the `Literal` is a floating point literal, returns its value.
    fn parse_float(&self) -> Option<FloatLit>;

    /// If the `Literal` is a string literal, returns it's value.
    fn parse_string(&self) -> Option<String>;

    /// If the `Literal` is a char literal, returns it's value.
    fn parse_char(&self) -> Option<char>;

    /// If the `Literal` is a byte string literal, returns it's value.
    fn parse_bytes(&self) -> Option<Vec<u8>>;

    /// If the `Literal` is a byte literal, returns it's value.
    fn parse_byte(&self) -> Option<u8>;

    /// If the `Literal` is an inner doc comment (`//!` or `/*!`), returns a
    /// string with the text of the comment.
    fn parse_inner_doc(&self) -> Option<String>;

    /// If the `Literal` is an outer doc comment (`///` or `/**`), returns a
    /// string with the text of the comment.
    fn parse_outer_doc(&self) -> Option<String>;
}

Supported Features

  • i128: Add support for interpreting the i128 and u128 integer types. nightly only

  • proc-macro2 default: Implement LiteralExt on proc_macro2::Literal.

  • proc-macro: Implement LiteralExt on proc_macro::Literal. nightly only

  • dummy: Export a type DummyLiteral with a public constructor which implements the LiteralExt trait.

Dependencies

~225KB