     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24

    use proc_macro2::{Punct, Spacing, TokenStream};

    // None of our generated code requires the `From::from` error conversion
    // performed by the standard library's `try!` macro. With this simplified macro
    // we see a significant improvement in type checking and borrow checking time of
    // the generated code and a slight improvement in binary size.
    pub fn replacement() -> TokenStream {
        // Cannot pass `$expr` to `quote!` prior to Rust 1.17.0 so interpolate it.
        let dollar = Punct::new('$', Spacing::Alone);

        quote! {
            #[allow(unused_macros)]
            macro_rules! try {
                (#dollar __expr:expr) => {
                    match #dollar __expr {
                        _serde::export::Ok(__val) => __val,
                        _serde::export::Err(__err) => {
                            return _serde::export::Err(__err);
                        }
                    }
                }
            }
        }
    }

# Help

## Keyboard Shortcuts

`?`
  Show this help dialog
`S`
  Focus the search field
`↑`
  Move up in search results
`↓`
  Move down in search results
`↹`
  Switch tab
`⏎`
  Go to active search result
`+`
  Expand all sections
`-`
  Collapse all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g., `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g., `vec -> usize` or `* -> vec`)

Search multiple things at once by splitting your query with comma (e.g., `str,u8` or `String,struct:Vec,test`)