From 2814adf8d01b9511494af984f95decfb0bd6bbd1 Mon Sep 17 00:00:00 2001 From: sosthene-nitrokey Date: Thu, 12 Dec 2024 15:26:31 +0000 Subject: [PATCH] deploy: f6ee0e7f480e3a83359852567050843c495218fd --- crates.js | 3 +- delog/all.html | 2 +- delog/enum.Level.html | 89 +- delog/enum.LevelFilter.html | 93 +- delog/fn.dequeue.html | 4 +- delog/fn.enqueue.html | 4 +- delog/fn.logger.html | 2 +- delog/fn.try_enqueue.html | 8 +- delog/hex/fn.HexStr.html | 10 +- delog/hex/index.html | 24 +- delog/hex/struct.HexStr.html | 76 +- delog/hex/struct.U1.html | 22 +- delog/hex/trait.Separator.html | 8 +- delog/hex/trait.Unsigned.html | 8 +- delog/index.html | 16 +- delog/macro.delog.html | 2 +- delog/macro.generate_macros.html | 2 +- delog/macro.hex_str.html | 10 +- delog/macro.hexstr.html | 6 +- delog/render/fn.default.html | 2 +- delog/render/fn.render_arguments.html | 2 +- delog/render/fn.render_record.html | 2 +- delog/render/index.html | 6 +- delog/render/struct.DefaultRenderer.html | 25 +- delog/render/struct.RipgrepRenderer.html | 25 +- delog/struct.Record.html | 51 +- delog/struct.Statistics.html | 43 +- delog/trait.Delogger.html | 29 +- delog/trait.Flusher.html | 8 +- delog/trait.Renderer.html | 8 +- delog/trait.State.html | 6 +- delog/trait.TryLog.html | 8 +- delog/trait.TryLogWithStatistics.html | 6 +- flexiber/all.html | 2 +- flexiber/derive.Decodable.html | 4 +- flexiber/derive.Encodable.html | 4 +- flexiber/enum.Class.html | 34 +- flexiber/enum.ErrorKind.html | 72 +- flexiber/index.html | 8 +- flexiber/struct.Decoder.html | 42 +- flexiber/struct.Encoder.html | 42 +- flexiber/struct.Error.html | 30 +- flexiber/struct.Length.html | 47 +- flexiber/struct.SimpleTag.html | 30 +- flexiber/struct.Slice.html | 32 +- flexiber/struct.Tag.html | 34 +- flexiber/struct.TaggedValue.html | 70 +- flexiber/trait.Container.html | 10 +- flexiber/trait.Decodable.html | 18 +- flexiber/trait.Encodable.html | 92 +- flexiber/trait.TagLike.html | 13 +- flexiber/trait.Tagged.html | 6 +- flexiber/type.Result.html | 8 +- flexiber/type.TaggedSlice.html | 29 +- flexiber_derive/all.html | 2 +- flexiber_derive/derive.Decodable.html | 4 +- flexiber_derive/derive.Encodable.html | 4 +- flexiber_derive/index.html | 4 +- help.html | 2 +- implementors/core/clone/trait.Clone.js | 8 - implementors/core/cmp/trait.Eq.js | 7 - implementors/core/cmp/trait.Ord.js | 6 - implementors/core/cmp/trait.PartialEq.js | 7 - implementors/core/cmp/trait.PartialOrd.js | 6 - implementors/core/convert/trait.AsRef.js | 3 - implementors/core/convert/trait.From.js | 5 - implementors/core/convert/trait.TryFrom.js | 3 - implementors/core/default/trait.Default.js | 6 - implementors/core/error/trait.Error.js | 4 - implementors/core/fmt/trait.Debug.js | 8 - implementors/core/fmt/trait.Display.js | 7 - implementors/core/fmt/trait.LowerHex.js | 3 - implementors/core/fmt/trait.UpperHex.js | 3 - implementors/core/hash/trait.Hash.js | 6 - .../core/iter/traits/collect/trait.Extend.js | 4 - .../iter/traits/collect/trait.FromIterator.js | 4 - .../iter/traits/collect/trait.IntoIterator.js | 4 - .../double_ended/trait.DoubleEndedIterator.js | 3 - .../exact_size/trait.ExactSizeIterator.js | 3 - .../iter/traits/iterator/trait.Iterator.js | 4 - implementors/core/marker/trait.Copy.js | 8 - implementors/core/marker/trait.Freeze.js | 8 - implementors/core/marker/trait.Send.js | 8 - .../core/marker/trait.StructuralEq.js | 6 - .../core/marker/trait.StructuralPartialEq.js | 6 - implementors/core/marker/trait.Sync.js | 8 - implementors/core/marker/trait.Unpin.js | 8 - implementors/core/ops/arith/trait.Add.js | 3 - implementors/core/ops/deref/trait.Deref.js | 3 - implementors/core/ops/deref/trait.DerefMut.js | 3 - implementors/core/ops/drop/trait.Drop.js | 3 - implementors/core/ops/index/trait.Index.js | 3 - implementors/core/ops/index/trait.IndexMut.js | 3 - .../panic/unwind_safe/trait.RefUnwindSafe.js | 8 - .../panic/unwind_safe/trait.UnwindSafe.js | 8 - implementors/core/str/traits/trait.FromStr.js | 4 - implementors/delog/hex/trait.Unsigned.js | 3 - implementors/delog/trait.Renderer.js | 3 - implementors/flexiber/tag/trait.TagLike.js | 3 - .../flexiber/traits/trait.Decodable.js | 3 - .../flexiber/traits/trait.Encodable.js | 3 - implementors/log/trait.Log.js | 3 - .../quote/ext/trait.TokenStreamExt.js | 3 - .../ident_fragment/trait.IdentFragment.js | 4 - .../quote/to_tokens/trait.ToTokens.js | 5 - implementors/syn/ext/trait.IdentExt.js | 3 - implementors/syn/lookahead/trait.Peek.js | 3 - .../parse/discouraged/trait.Speculative.js | 3 - implementors/syn/parse/trait.Parse.js | 3 - implementors/syn/parse/trait.Parser.js | 3 - implementors/syn/spanned/trait.Spanned.js | 3 - implementors/syn/token/trait.Token.js | 3 - .../synstructure/trait.MacroResult.js | 3 - implementors/unicode_xid/trait.UnicodeXID.js | 3 - log/all.html | 2 +- log/constant.STATIC_MAX_LEVEL.html | 2 +- log/enum.Level.html | 87 +- log/enum.LevelFilter.html | 91 +- log/fn.logger.html | 2 +- log/fn.max_level.html | 2 +- log/fn.set_logger.html | 18 +- log/fn.set_logger_racy.html | 12 +- log/fn.set_max_level.html | 2 +- log/fn.set_max_level_racy.html | 10 +- log/index.html | 82 +- log/macro.debug.html | 10 +- log/macro.error.html | 12 +- log/macro.info.html | 10 +- log/macro.log.html | 16 +- log/macro.log_enabled.html | 12 +- log/macro.trace.html | 14 +- log/macro.warn.html | 12 +- log/struct.Metadata.html | 55 +- log/struct.MetadataBuilder.html | 54 +- log/struct.ParseLevelError.html | 25 +- log/struct.Record.html | 51 +- log/struct.RecordBuilder.html | 72 +- log/struct.SetLoggerError.html | 22 +- log/trait.Log.html | 21 +- proc_macro2/all.html | 2 +- proc_macro2/enum.Delimiter.html | 44 +- proc_macro2/enum.Spacing.html | 30 +- proc_macro2/enum.TokenTree.html | 41 +- proc_macro2/extra/index.html | 6 +- proc_macro2/extra/struct.DelimSpan.html | 33 +- proc_macro2/index.html | 19 +- proc_macro2/struct.Group.html | 48 +- proc_macro2/struct.Ident.html | 78 +- proc_macro2/struct.LexError.html | 24 +- proc_macro2/struct.Literal.html | 105 +- proc_macro2/struct.Punct.html | 39 +- proc_macro2/struct.Span.html | 43 +- proc_macro2/struct.TokenStream.html | 41 +- proc_macro2/token_stream/index.html | 4 +- proc_macro2/token_stream/struct.IntoIter.html | 379 +- quote/all.html | 2 +- quote/index.html | 17 +- quote/macro.format_ident.html | 62 +- quote/macro.quote.html | 62 +- quote/macro.quote_spanned.html | 15 +- quote/trait.IdentFragment.html | 14 +- quote/trait.ToTokens.html | 20 +- quote/trait.TokenStreamExt.html | 64 +- search-index.js | 18 +- search.desc/delog/delog-desc-0-.js | 1 + search.desc/flexiber/flexiber-desc-0-.js | 1 + .../flexiber_derive-desc-0-.js | 1 + search.desc/log/log-desc-0-.js | 1 + .../proc_macro2/proc_macro2-desc-0-.js | 1 + search.desc/quote/quote-desc-0-.js | 1 + search.desc/syn/syn-desc-0-.js | 1 + .../synstructure/synstructure-desc-0-.js | 1 + .../unicode_ident/unicode_ident-desc-0-.js | 1 + settings.html | 2 +- src-files.js | 14 +- src/delog/hex.rs.html | 104 +- src/delog/lib.rs.html | 58 +- src/delog/logger.rs.html | 118 +- src/delog/macros.rs.html | 114 +- src/delog/render.rs.html | 42 +- src/flexiber/decoder.rs.html | 38 +- src/flexiber/encoder.rs.html | 36 +- src/flexiber/error.rs.html | 66 +- src/flexiber/header.rs.html | 22 +- src/flexiber/length.rs.html | 20 +- src/flexiber/lib.rs.html | 24 +- src/flexiber/simpletag.rs.html | 34 +- src/flexiber/slice.rs.html | 22 +- src/flexiber/tag.rs.html | 130 +- src/flexiber/tagged.rs.html | 56 +- src/flexiber/traits.rs.html | 262 +- src/flexiber_derive/decodable.rs.html | 38 +- src/flexiber_derive/encodable.rs.html | 26 +- src/flexiber_derive/lib.rs.html | 496 +- src/log/__private_api.rs.html | 220 +- src/log/lib.rs.html | 864 +-- src/log/macros.rs.html | 386 +- src/proc_macro2/detection.rs.html | 22 +- src/proc_macro2/extra.rs.html | 148 +- src/proc_macro2/fallback.rs.html | 778 ++- src/proc_macro2/lib.rs.html | 368 +- src/proc_macro2/marker.rs.html | 22 +- src/proc_macro2/parse.rs.html | 318 +- src/proc_macro2/rcvec.rs.html | 44 +- src/proc_macro2/wrapper.rs.html | 460 +- src/quote/ext.rs.html | 8 +- src/quote/format.rs.html | 52 +- src/quote/ident_fragment.rs.html | 12 +- src/quote/lib.rs.html | 1178 ++-- src/quote/runtime.rs.html | 154 +- src/quote/spanned.rs.html | 6 +- src/quote/to_tokens.rs.html | 208 +- src/syn/attr.rs.html | 1006 ++-- src/syn/await.rs.html | 5 - src/syn/bigint.rs.html | 16 +- src/syn/buffer.rs.html | 284 +- src/syn/classify.rs.html | 795 +++ src/syn/custom_keyword.rs.html | 104 +- src/syn/custom_punctuation.rs.html | 120 +- src/syn/data.rs.html | 496 +- src/syn/derive.rs.html | 126 +- src/syn/discouraged.rs.html | 110 +- src/syn/drops.rs.html | 14 +- src/syn/error.rs.html | 196 +- src/syn/export.rs.html | 130 +- src/syn/expr.rs.html | 4372 ++++++++------ src/syn/ext.rs.html | 30 +- src/syn/fixup.rs.html | 695 +++ src/syn/gen/clone.rs.html | 2104 +++---- src/syn/gen/debug.rs.html | 5174 +++++++++-------- src/syn/gen/eq.rs.html | 3064 +++++----- src/syn/gen/hash.rs.html | 1884 +++--- src/syn/gen/visit.rs.html | 4266 +++++++------- src/syn/gen_helper.rs.html | 309 - src/syn/generics.rs.html | 1130 ++-- src/syn/group.rs.html | 94 +- src/syn/ident.rs.html | 142 +- src/syn/lib.rs.html | 1016 ++-- src/syn/lifetime.rs.html | 62 +- src/syn/lit.rs.html | 1284 ++-- src/syn/lookahead.rs.html | 372 +- src/syn/mac.rs.html | 152 +- src/syn/macros.rs.html | 188 +- src/syn/meta.rs.html | 855 +++ src/syn/op.rs.html | 204 +- src/syn/parse.rs.html | 566 +- src/syn/parse_macro_input.rs.html | 118 +- src/syn/parse_quote.rs.html | 154 +- src/syn/path.rs.html | 930 +-- src/syn/precedence.rs.html | 421 ++ src/syn/print.rs.html | 10 +- src/syn/punctuated.rs.html | 458 +- src/syn/restriction.rs.html | 357 ++ src/syn/scan_expr.rs.html | 529 ++ src/syn/sealed.rs.html | 8 +- src/syn/span.rs.html | 50 +- src/syn/spanned.rs.html | 30 +- src/syn/thread.rs.html | 50 +- src/syn/token.rs.html | 1094 ++-- src/syn/tt.rs.html | 20 +- src/syn/ty.rs.html | 736 ++- src/syn/verbatim.rs.html | 10 +- src/synstructure/lib.rs.html | 780 ++- src/synstructure/macros.rs.html | 118 +- src/unicode_ident/lib.rs.html | 56 +- src/unicode_ident/tables.rs.html | 206 +- src/unicode_xid/lib.rs.html | 185 - src/unicode_xid/tables.rs.html | 2989 ---------- static.files/clipboard-7571035ce49a181d.svg | 1 - .../favicon-16x16-8b506e7a72182f1c.png | Bin 715 -> 0 bytes static.files/main-c5bd66d33317d69f.js | 12 - static.files/main-f070b9041d14864c.js | 11 + static.files/noscript-0111fcff984fae8f.css | 1 + static.files/noscript-5d8b3c7633ad77ba.css | 1 - static.files/rustdoc-b0742ba02757f159.css | 53 + static.files/rustdoc-fa3bb1812debf86c.css | 10 - .../scrape-examples-46fc985aa763a438.js | 1 + .../scrape-examples-ef1e698c1d417c0c.js | 1 - static.files/search-8be46b629f5f14a8.js | 5 - static.files/search-f0d225181b97f9a4.js | 6 + static.files/settings-74424d7eec62a23e.js | 17 - static.files/settings-805db61a62df4bd2.js | 17 + static.files/src-script-3280b574d94e47b4.js | 1 - static.files/src-script-e66d777a5a92e9b2.js | 1 + static.files/storage-1d39b6787ed640ff.js | 23 + static.files/storage-fec3eaa3851e447d.js | 1 - static.files/wheel-7b819b6101059cd0.svg | 1 - syn/all.html | 2 +- syn/attr/enum.NestedMeta.html | 11 - syn/attr/type.AttributeArgs.html | 11 - syn/buffer/index.html | 5 +- syn/buffer/struct.Cursor.html | 63 +- syn/buffer/struct.TokenBuffer.html | 31 +- syn/data/struct.VisCrate.html | 11 - syn/data/struct.VisPublic.html | 11 - syn/enum.AttrStyle.html | 42 +- syn/enum.BinOp.html | 98 +- syn/enum.Data.html | 40 +- syn/enum.Expr.html | 89 +- syn/enum.FieldMutability.html | 20 + syn/enum.Fields.html | 77 +- syn/enum.GenericArgument.html | 50 +- syn/enum.GenericParam.html | 50 +- syn/enum.Lit.html | 50 +- syn/enum.MacroDelimiter.html | 36 +- syn/enum.Member.html | 42 +- syn/enum.Meta.html | 63 +- syn/enum.NestedMeta.html | 29 - syn/enum.PathArguments.html | 48 +- syn/enum.ReturnType.html | 48 +- syn/enum.StrStyle.html | 19 - syn/enum.TraitBoundModifier.html | 42 +- syn/enum.Type.html | 48 +- syn/enum.TypeParamBound.html | 44 +- syn/enum.UnOp.html | 52 +- syn/enum.Visibility.html | 50 +- syn/enum.WherePredicate.html | 52 +- syn/expr/struct.ExprAssignOp.html | 11 - syn/expr/struct.ExprBox.html | 11 - syn/expr/struct.ExprConst.html | 11 + syn/expr/struct.ExprInfer.html | 11 + syn/expr/struct.ExprRawAddr.html | 11 + syn/expr/struct.ExprType.html | 11 - syn/expr/struct.FieldValue.html | 11 + syn/ext/index.html | 5 +- syn/ext/trait.IdentExt.html | 17 +- syn/fn.parse.html | 24 +- syn/fn.parse2.html | 7 +- syn/fn.parse_str.html | 13 +- syn/gen/visit/fn.visit_assoc_const.html | 11 + syn/gen/visit/fn.visit_assoc_type.html | 11 + syn/gen/visit/fn.visit_bare_variadic.html | 11 + syn/gen/visit/fn.visit_binding.html | 11 - syn/gen/visit/fn.visit_expr_group.html | 11 + syn/gen/visit/fn.visit_expr_macro.html | 11 + syn/gen/visit/fn.visit_expr_method_call.html | 11 + syn/gen/visit/fn.visit_expr_reference.html | 11 + syn/gen/visit/fn.visit_expr_struct.html | 11 + syn/gen/visit/fn.visit_expr_tuple.html | 11 + syn/gen/visit/fn.visit_field_mutability.html | 11 + syn/gen/visit/fn.visit_field_value.html | 11 + ..._def.html => fn.visit_lifetime_param.html} | 6 +- syn/gen/visit/fn.visit_lit_cstr.html | 11 + syn/gen/visit/fn.visit_nested_meta.html | 11 - syn/gen/visit/fn.visit_predicate_eq.html | 11 - syn/gen/visit/fn.visit_variadic.html | 11 - syn/gen/visit/fn.visit_vis_crate.html | 11 - syn/gen/visit/fn.visit_vis_public.html | 11 - syn/generics/struct.LifetimeDef.html | 11 - syn/generics/struct.LifetimeParam.html | 11 + syn/generics/struct.PredicateEq.html | 11 - syn/index.html | 86 +- syn/lit/enum.StrStyle.html | 11 - syn/lit/struct.LitCStr.html | 11 + syn/lookahead/struct.End.html | 11 + syn/macro.Token.html | 66 +- syn/macro.braced.html | 6 +- syn/macro.bracketed.html | 4 +- syn/macro.custom_keyword.html | 8 +- syn/macro.custom_punctuation.html | 8 +- syn/macro.parenthesized.html | 6 +- syn/macro.parse_macro_input.html | 8 +- syn/macro.parse_quote.html | 17 +- syn/macro.parse_quote_spanned.html | 6 +- syn/meta/fn.parser.html | 92 + syn/meta/index.html | 4 + syn/meta/sidebar-items.js | 1 + syn/meta/struct.ParseNestedMeta.html | 173 + syn/parse/discouraged/index.html | 5 +- syn/parse/discouraged/sidebar-items.js | 2 +- syn/parse/discouraged/trait.AnyDelimiter.html | 10 + syn/parse/discouraged/trait.Speculative.html | 25 +- syn/parse/index.html | 20 +- syn/parse/sidebar-items.js | 2 +- syn/parse/struct.End.html | 117 + syn/parse/struct.Error.html | 70 +- syn/parse/struct.Lookahead1.html | 36 +- syn/parse/struct.Nothing.html | 35 +- syn/parse/struct.ParseBuffer.html | 201 +- syn/parse/struct.StepCursor.html | 33 +- syn/parse/trait.Parse.html | 4 +- syn/parse/trait.Parser.html | 33 +- syn/parse/trait.Peek.html | 4 +- syn/parse/type.ParseStream.html | 4 +- syn/parse/type.Result.html | 25 +- syn/path/struct.AssocConst.html | 11 + syn/path/struct.AssocType.html | 11 + syn/path/struct.Binding.html | 11 - syn/punctuated/enum.Pair.html | 82 +- syn/punctuated/index.html | 7 +- syn/punctuated/struct.IntoIter.html | 415 +- syn/punctuated/struct.IntoPairs.html | 428 +- syn/punctuated/struct.Iter.html | 405 +- syn/punctuated/struct.IterMut.html | 400 +- syn/punctuated/struct.Pairs.html | 421 +- syn/punctuated/struct.PairsMut.html | 412 +- syn/punctuated/struct.Punctuated.html | 175 +- syn/restriction/enum.FieldMutability.html | 11 + .../enum.Visibility.html | 0 .../struct.VisRestricted.html | 0 syn/sidebar-items.js | 2 +- syn/spanned/index.html | 19 +- syn/spanned/trait.Spanned.html | 8 +- syn/struct.Abi.html | 46 +- ...struct.AngleBracketedGenericArguments.html | 44 +- syn/struct.AssocConst.html | 27 + syn/struct.AssocType.html | 27 + syn/struct.Attribute.html | 328 +- syn/struct.BareFnArg.html | 46 +- syn/struct.BareVariadic.html | 26 + syn/struct.Binding.html | 27 - syn/struct.BoundLifetimes.html | 44 +- syn/struct.ConstParam.html | 48 +- syn/struct.Constraint.html | 45 +- syn/struct.DataEnum.html | 36 +- syn/struct.DataStruct.html | 38 +- syn/struct.DataUnion.html | 36 +- syn/struct.DeriveInput.html | 48 +- syn/struct.Error.html | 70 +- syn/struct.ExprArray.html | 29 +- syn/struct.ExprAssign.html | 29 +- syn/struct.ExprAssignOp.html | 16 - syn/struct.ExprAsync.html | 29 +- syn/struct.ExprAwait.html | 29 +- syn/struct.ExprBinary.html | 50 +- syn/struct.ExprBlock.html | 29 +- syn/struct.ExprBox.html | 16 - syn/struct.ExprBreak.html | 29 +- syn/struct.ExprCall.html | 46 +- syn/struct.ExprCast.html | 48 +- syn/struct.ExprClosure.html | 29 +- syn/struct.ExprConst.html | 15 + syn/struct.ExprContinue.html | 29 +- syn/struct.ExprField.html | 45 +- syn/struct.ExprForLoop.html | 29 +- syn/struct.ExprGroup.html | 39 +- syn/struct.ExprIf.html | 29 +- syn/struct.ExprIndex.html | 48 +- syn/struct.ExprInfer.html | 15 + syn/struct.ExprLet.html | 29 +- syn/struct.ExprLit.html | 46 +- syn/struct.ExprLoop.html | 29 +- syn/struct.ExprMacro.html | 38 +- syn/struct.ExprMatch.html | 29 +- syn/struct.ExprMethodCall.html | 43 +- syn/struct.ExprParen.html | 45 +- syn/struct.ExprPath.html | 46 +- syn/struct.ExprRange.html | 29 +- syn/struct.ExprRawAddr.html | 15 + syn/struct.ExprReference.html | 40 +- syn/struct.ExprRepeat.html | 29 +- syn/struct.ExprReturn.html | 29 +- syn/struct.ExprStruct.html | 43 +- syn/struct.ExprTry.html | 29 +- syn/struct.ExprTryBlock.html | 29 +- syn/struct.ExprTuple.html | 39 +- syn/struct.ExprType.html | 16 - syn/struct.ExprUnary.html | 46 +- syn/struct.ExprUnsafe.html | 29 +- syn/struct.ExprWhile.html | 29 +- syn/struct.ExprYield.html | 29 +- syn/struct.Field.html | 58 +- syn/struct.FieldValue.html | 28 + syn/struct.FieldsNamed.html | 42 +- syn/struct.FieldsUnnamed.html | 42 +- syn/struct.Generics.html | 111 +- syn/struct.Ident.html | 88 +- syn/struct.ImplGenerics.html | 40 +- syn/struct.Index.html | 42 +- syn/struct.Lifetime.html | 57 +- syn/struct.LifetimeDef.html | 28 - syn/struct.LifetimeParam.html | 26 + syn/struct.LitBool.html | 42 +- syn/struct.LitByte.html | 40 +- syn/struct.LitByteStr.html | 40 +- syn/struct.LitCStr.html | 21 + syn/struct.LitChar.html | 40 +- syn/struct.LitFloat.html | 46 +- syn/struct.LitInt.html | 48 +- syn/struct.LitStr.html | 72 +- syn/struct.Macro.html | 62 +- syn/struct.MetaList.html | 52 +- syn/struct.MetaNameValue.html | 46 +- syn/struct.ParenthesizedGenericArguments.html | 46 +- syn/struct.Path.html | 83 +- syn/struct.PathSegment.html | 44 +- syn/struct.PredicateEq.html | 27 - syn/struct.PredicateLifetime.html | 44 +- syn/struct.PredicateType.html | 52 +- syn/struct.QSelf.html | 45 +- syn/struct.TraitBound.html | 50 +- syn/struct.Turbofish.html | 40 +- syn/struct.TypeArray.html | 44 +- syn/struct.TypeBareFn.html | 50 +- syn/struct.TypeGenerics.html | 44 +- syn/struct.TypeGroup.html | 44 +- syn/struct.TypeImplTrait.html | 44 +- syn/struct.TypeInfer.html | 42 +- syn/struct.TypeMacro.html | 42 +- syn/struct.TypeNever.html | 44 +- syn/struct.TypeParam.html | 52 +- syn/struct.TypeParen.html | 44 +- syn/struct.TypePath.html | 44 +- syn/struct.TypePtr.html | 48 +- syn/struct.TypeReference.html | 48 +- syn/struct.TypeSlice.html | 44 +- syn/struct.TypeTraitObject.html | 46 +- syn/struct.TypeTuple.html | 42 +- syn/struct.Variadic.html | 31 - syn/struct.Variant.html | 53 +- syn/struct.VisCrate.html | 25 - syn/struct.VisPublic.html | 25 - syn/struct.VisRestricted.html | 46 +- syn/struct.WhereClause.html | 42 +- syn/token/index.html | 10 +- syn/token/sidebar-items.js | 2 +- syn/token/struct.Abstract.html | 38 +- syn/token/struct.Add.html | 24 - syn/token/struct.AddEq.html | 24 - syn/token/struct.And.html | 42 +- syn/token/struct.AndAnd.html | 42 +- syn/token/struct.AndEq.html | 42 +- syn/token/struct.As.html | 38 +- syn/token/struct.Async.html | 38 +- syn/token/struct.At.html | 42 +- syn/token/struct.Auto.html | 38 +- syn/token/struct.Await.html | 38 +- syn/token/struct.Bang.html | 24 - syn/token/struct.Become.html | 38 +- syn/token/struct.Box.html | 38 +- syn/token/struct.Brace.html | 38 +- syn/token/struct.Bracket.html | 38 +- syn/token/struct.Break.html | 38 +- syn/token/struct.Caret.html | 42 +- syn/token/struct.CaretEq.html | 42 +- syn/token/struct.Colon.html | 42 +- syn/token/struct.Colon2.html | 24 - syn/token/struct.Comma.html | 42 +- syn/token/struct.Const.html | 38 +- syn/token/struct.Continue.html | 38 +- syn/token/struct.Crate.html | 38 +- syn/token/struct.Default.html | 38 +- syn/token/struct.Div.html | 24 - syn/token/struct.DivEq.html | 24 - syn/token/struct.Do.html | 38 +- syn/token/struct.Dollar.html | 42 +- syn/token/struct.Dot.html | 42 +- syn/token/struct.Dot2.html | 24 - syn/token/struct.Dot3.html | 24 - syn/token/struct.DotDot.html | 26 + syn/token/struct.DotDotDot.html | 26 + syn/token/struct.DotDotEq.html | 42 +- syn/token/struct.Dyn.html | 38 +- syn/token/struct.Else.html | 38 +- syn/token/struct.Enum.html | 38 +- syn/token/struct.Eq.html | 42 +- syn/token/struct.EqEq.html | 42 +- syn/token/struct.Extern.html | 38 +- syn/token/struct.FatArrow.html | 42 +- syn/token/struct.Final.html | 38 +- syn/token/struct.Fn.html | 38 +- syn/token/struct.For.html | 38 +- syn/token/struct.Ge.html | 42 +- syn/token/struct.Group.html | 34 +- syn/token/struct.Gt.html | 42 +- syn/token/struct.If.html | 38 +- syn/token/struct.Impl.html | 38 +- syn/token/struct.In.html | 38 +- syn/token/struct.LArrow.html | 42 +- syn/token/struct.Le.html | 42 +- syn/token/struct.Let.html | 38 +- syn/token/struct.Loop.html | 38 +- syn/token/struct.Lt.html | 42 +- syn/token/struct.Macro.html | 38 +- syn/token/struct.Match.html | 38 +- syn/token/struct.Minus.html | 26 + syn/token/struct.MinusEq.html | 26 + syn/token/struct.Mod.html | 38 +- syn/token/struct.Move.html | 38 +- syn/token/struct.MulEq.html | 24 - syn/token/struct.Mut.html | 38 +- syn/token/struct.Ne.html | 42 +- syn/token/struct.Not.html | 26 + syn/token/struct.Or.html | 42 +- syn/token/struct.OrEq.html | 42 +- syn/token/struct.OrOr.html | 42 +- syn/token/struct.Override.html | 38 +- syn/token/struct.Paren.html | 38 +- syn/token/struct.PathSep.html | 26 + syn/token/struct.Percent.html | 26 + syn/token/struct.PercentEq.html | 26 + syn/token/struct.Plus.html | 26 + syn/token/struct.PlusEq.html | 26 + syn/token/struct.Pound.html | 42 +- syn/token/struct.Priv.html | 38 +- syn/token/struct.Pub.html | 38 +- syn/token/struct.Question.html | 42 +- syn/token/struct.RArrow.html | 42 +- syn/token/struct.Raw.html | 24 + syn/token/struct.Ref.html | 38 +- syn/token/struct.Rem.html | 24 - syn/token/struct.RemEq.html | 24 - syn/token/struct.Return.html | 38 +- syn/token/struct.SelfType.html | 38 +- syn/token/struct.SelfValue.html | 38 +- syn/token/struct.Semi.html | 42 +- syn/token/struct.Shl.html | 42 +- syn/token/struct.ShlEq.html | 42 +- syn/token/struct.Shr.html | 42 +- syn/token/struct.ShrEq.html | 42 +- syn/token/struct.Slash.html | 26 + syn/token/struct.SlashEq.html | 26 + syn/token/struct.Star.html | 42 +- syn/token/struct.StarEq.html | 26 + syn/token/struct.Static.html | 38 +- syn/token/struct.Struct.html | 38 +- syn/token/struct.Sub.html | 24 - syn/token/struct.SubEq.html | 24 - syn/token/struct.Super.html | 38 +- syn/token/struct.Tilde.html | 42 +- syn/token/struct.Trait.html | 38 +- syn/token/struct.Try.html | 38 +- syn/token/struct.Type.html | 38 +- syn/token/struct.Typeof.html | 38 +- syn/token/struct.Underscore.html | 42 +- syn/token/struct.Union.html | 38 +- syn/token/struct.Unsafe.html | 38 +- syn/token/struct.Unsized.html | 38 +- syn/token/struct.Use.html | 38 +- syn/token/struct.Virtual.html | 38 +- syn/token/struct.Where.html | 38 +- syn/token/struct.While.html | 38 +- syn/token/struct.Yield.html | 38 +- syn/token/trait.Token.html | 4 +- syn/ty/struct.BareVariadic.html | 11 + syn/ty/struct.Variadic.html | 11 - syn/type.AttributeArgs.html | 1129 ---- syn/type.Result.html | 25 +- syn/visit/fn.visit_abi.html | 4 +- ...sit_angle_bracketed_generic_arguments.html | 10 +- syn/visit/fn.visit_assoc_const.html | 2 + syn/visit/fn.visit_assoc_type.html | 2 + syn/visit/fn.visit_attr_style.html | 4 +- syn/visit/fn.visit_attribute.html | 4 +- syn/visit/fn.visit_bare_fn_arg.html | 4 +- syn/visit/fn.visit_bare_variadic.html | 2 + syn/visit/fn.visit_bin_op.html | 4 +- syn/visit/fn.visit_binding.html | 2 - syn/visit/fn.visit_bound_lifetimes.html | 4 +- syn/visit/fn.visit_const_param.html | 4 +- syn/visit/fn.visit_constraint.html | 4 +- syn/visit/fn.visit_data.html | 4 +- syn/visit/fn.visit_data_enum.html | 4 +- syn/visit/fn.visit_data_struct.html | 4 +- syn/visit/fn.visit_data_union.html | 4 +- syn/visit/fn.visit_derive_input.html | 4 +- syn/visit/fn.visit_expr.html | 4 +- syn/visit/fn.visit_expr_binary.html | 4 +- syn/visit/fn.visit_expr_call.html | 4 +- syn/visit/fn.visit_expr_cast.html | 4 +- syn/visit/fn.visit_expr_field.html | 4 +- syn/visit/fn.visit_expr_group.html | 2 + syn/visit/fn.visit_expr_index.html | 4 +- syn/visit/fn.visit_expr_lit.html | 4 +- syn/visit/fn.visit_expr_macro.html | 2 + syn/visit/fn.visit_expr_method_call.html | 2 + syn/visit/fn.visit_expr_paren.html | 4 +- syn/visit/fn.visit_expr_path.html | 4 +- syn/visit/fn.visit_expr_reference.html | 2 + syn/visit/fn.visit_expr_struct.html | 2 + syn/visit/fn.visit_expr_tuple.html | 2 + syn/visit/fn.visit_expr_unary.html | 4 +- syn/visit/fn.visit_field.html | 4 +- syn/visit/fn.visit_field_mutability.html | 2 + syn/visit/fn.visit_field_value.html | 2 + syn/visit/fn.visit_fields.html | 4 +- syn/visit/fn.visit_fields_named.html | 4 +- syn/visit/fn.visit_fields_unnamed.html | 4 +- syn/visit/fn.visit_generic_argument.html | 4 +- syn/visit/fn.visit_generic_param.html | 4 +- syn/visit/fn.visit_generics.html | 4 +- syn/visit/fn.visit_ident.html | 4 +- syn/visit/fn.visit_index.html | 4 +- syn/visit/fn.visit_lifetime.html | 4 +- syn/visit/fn.visit_lifetime_def.html | 2 - syn/visit/fn.visit_lifetime_param.html | 2 + syn/visit/fn.visit_lit.html | 4 +- syn/visit/fn.visit_lit_bool.html | 4 +- syn/visit/fn.visit_lit_byte.html | 4 +- syn/visit/fn.visit_lit_byte_str.html | 4 +- syn/visit/fn.visit_lit_char.html | 4 +- syn/visit/fn.visit_lit_cstr.html | 2 + syn/visit/fn.visit_lit_float.html | 4 +- syn/visit/fn.visit_lit_int.html | 4 +- syn/visit/fn.visit_lit_str.html | 4 +- syn/visit/fn.visit_macro.html | 4 +- syn/visit/fn.visit_macro_delimiter.html | 4 +- syn/visit/fn.visit_member.html | 4 +- syn/visit/fn.visit_meta.html | 4 +- syn/visit/fn.visit_meta_list.html | 4 +- syn/visit/fn.visit_meta_name_value.html | 4 +- syn/visit/fn.visit_nested_meta.html | 2 - ...visit_parenthesized_generic_arguments.html | 10 +- syn/visit/fn.visit_path.html | 4 +- syn/visit/fn.visit_path_arguments.html | 4 +- syn/visit/fn.visit_path_segment.html | 4 +- syn/visit/fn.visit_predicate_eq.html | 2 - syn/visit/fn.visit_predicate_lifetime.html | 10 +- syn/visit/fn.visit_predicate_type.html | 4 +- syn/visit/fn.visit_qself.html | 4 +- syn/visit/fn.visit_return_type.html | 4 +- syn/visit/fn.visit_span.html | 4 +- syn/visit/fn.visit_trait_bound.html | 4 +- syn/visit/fn.visit_trait_bound_modifier.html | 10 +- syn/visit/fn.visit_type.html | 4 +- syn/visit/fn.visit_type_array.html | 4 +- syn/visit/fn.visit_type_bare_fn.html | 4 +- syn/visit/fn.visit_type_group.html | 4 +- syn/visit/fn.visit_type_impl_trait.html | 4 +- syn/visit/fn.visit_type_infer.html | 4 +- syn/visit/fn.visit_type_macro.html | 4 +- syn/visit/fn.visit_type_never.html | 4 +- syn/visit/fn.visit_type_param.html | 4 +- syn/visit/fn.visit_type_param_bound.html | 4 +- syn/visit/fn.visit_type_paren.html | 4 +- syn/visit/fn.visit_type_path.html | 4 +- syn/visit/fn.visit_type_ptr.html | 4 +- syn/visit/fn.visit_type_reference.html | 4 +- syn/visit/fn.visit_type_slice.html | 4 +- syn/visit/fn.visit_type_trait_object.html | 4 +- syn/visit/fn.visit_type_tuple.html | 4 +- syn/visit/fn.visit_un_op.html | 4 +- syn/visit/fn.visit_variadic.html | 2 - syn/visit/fn.visit_variant.html | 4 +- syn/visit/fn.visit_vis_crate.html | 2 - syn/visit/fn.visit_vis_public.html | 2 - syn/visit/fn.visit_vis_restricted.html | 4 +- syn/visit/fn.visit_visibility.html | 4 +- syn/visit/fn.visit_where_clause.html | 4 +- syn/visit/fn.visit_where_predicate.html | 4 +- syn/visit/index.html | 39 +- syn/visit/sidebar-items.js | 2 +- syn/visit/trait.Visit.html | 39 +- synstructure/all.html | 2 +- synstructure/enum.AddBounds.html | 36 +- synstructure/enum.BindStyle.html | 40 +- synstructure/fn.unpretty_print.html | 19 +- synstructure/index.html | 38 +- synstructure/macro.decl_attribute.html | 8 +- synstructure/macro.decl_derive.html | 18 +- synstructure/macro.test_derive.html | 8 +- synstructure/struct.BindingInfo.html | 64 +- synstructure/struct.Structure.html | 452 +- synstructure/struct.VariantAst.html | 34 +- synstructure/struct.VariantInfo.html | 189 +- synstructure/trait.MacroResult.html | 16 +- trait.impl/core/clone/trait.Clone.js | 9 + trait.impl/core/cmp/trait.Eq.js | 9 + trait.impl/core/cmp/trait.Ord.js | 9 + trait.impl/core/cmp/trait.PartialEq.js | 9 + trait.impl/core/cmp/trait.PartialOrd.js | 9 + trait.impl/core/convert/trait.AsRef.js | 9 + trait.impl/core/convert/trait.From.js | 9 + trait.impl/core/convert/trait.TryFrom.js | 9 + trait.impl/core/default/trait.Default.js | 9 + trait.impl/core/error/trait.Error.js | 9 + trait.impl/core/fmt/trait.Debug.js | 9 + trait.impl/core/fmt/trait.Display.js | 9 + trait.impl/core/fmt/trait.LowerHex.js | 9 + trait.impl/core/fmt/trait.UpperHex.js | 9 + trait.impl/core/hash/trait.Hash.js | 9 + .../core/iter/traits/collect/trait.Extend.js | 9 + .../iter/traits/collect/trait.FromIterator.js | 9 + .../iter/traits/collect/trait.IntoIterator.js | 9 + .../double_ended/trait.DoubleEndedIterator.js | 9 + .../exact_size/trait.ExactSizeIterator.js | 9 + .../iter/traits/iterator/trait.Iterator.js | 9 + trait.impl/core/marker/trait.Copy.js | 9 + trait.impl/core/marker/trait.Freeze.js | 9 + trait.impl/core/marker/trait.Send.js | 9 + .../core/marker/trait.StructuralPartialEq.js | 9 + trait.impl/core/marker/trait.Sync.js | 9 + trait.impl/core/marker/trait.Unpin.js | 9 + trait.impl/core/ops/arith/trait.Add.js | 9 + trait.impl/core/ops/deref/trait.Deref.js | 9 + trait.impl/core/ops/deref/trait.DerefMut.js | 9 + trait.impl/core/ops/drop/trait.Drop.js | 9 + trait.impl/core/ops/index/trait.Index.js | 9 + trait.impl/core/ops/index/trait.IndexMut.js | 9 + .../panic/unwind_safe/trait.RefUnwindSafe.js | 9 + .../panic/unwind_safe/trait.UnwindSafe.js | 9 + trait.impl/core/str/traits/trait.FromStr.js | 9 + trait.impl/delog/hex/trait.Unsigned.js | 9 + trait.impl/delog/trait.Renderer.js | 9 + trait.impl/flexiber/tag/trait.TagLike.js | 9 + trait.impl/flexiber/traits/trait.Decodable.js | 9 + trait.impl/flexiber/traits/trait.Encodable.js | 9 + trait.impl/log/trait.Log.js | 9 + trait.impl/quote/ext/trait.TokenStreamExt.js | 9 + .../ident_fragment/trait.IdentFragment.js | 9 + trait.impl/quote/to_tokens/trait.ToTokens.js | 9 + trait.impl/syn/ext/trait.IdentExt.js | 9 + trait.impl/syn/lookahead/trait.Peek.js | 9 + .../parse/discouraged/trait.AnyDelimiter.js | 9 + .../parse/discouraged/trait.Speculative.js | 9 + trait.impl/syn/parse/trait.Parse.js | 9 + trait.impl/syn/parse/trait.Parser.js | 9 + trait.impl/syn/spanned/trait.Spanned.js | 9 + trait.impl/syn/token/trait.Token.js | 9 + trait.impl/synstructure/trait.MacroResult.js | 9 + type.impl/core/result/enum.Result.js | 9 + type.impl/flexiber/struct.TaggedValue.js | 9 + type.impl/syn/parse/struct.ParseBuffer.js | 9 + unicode_ident/all.html | 2 +- unicode_ident/fn.is_xid_continue.html | 2 +- unicode_ident/fn.is_xid_start.html | 2 +- unicode_ident/index.html | 42 +- unicode_xid/all.html | 1 - unicode_xid/constant.UNICODE_VERSION.html | 3 - unicode_xid/index.html | 16 - unicode_xid/sidebar-items.js | 1 - .../tables/constant.UNICODE_VERSION.html | 11 - unicode_xid/trait.UnicodeXID.html | 16 - 823 files changed, 37622 insertions(+), 31349 deletions(-) delete mode 100644 implementors/core/clone/trait.Clone.js delete mode 100644 implementors/core/cmp/trait.Eq.js delete mode 100644 implementors/core/cmp/trait.Ord.js delete mode 100644 implementors/core/cmp/trait.PartialEq.js delete mode 100644 implementors/core/cmp/trait.PartialOrd.js delete mode 100644 implementors/core/convert/trait.AsRef.js delete mode 100644 implementors/core/convert/trait.From.js delete mode 100644 implementors/core/convert/trait.TryFrom.js delete mode 100644 implementors/core/default/trait.Default.js delete mode 100644 implementors/core/error/trait.Error.js delete mode 100644 implementors/core/fmt/trait.Debug.js delete mode 100644 implementors/core/fmt/trait.Display.js delete mode 100644 implementors/core/fmt/trait.LowerHex.js delete mode 100644 implementors/core/fmt/trait.UpperHex.js delete mode 100644 implementors/core/hash/trait.Hash.js delete mode 100644 implementors/core/iter/traits/collect/trait.Extend.js delete mode 100644 implementors/core/iter/traits/collect/trait.FromIterator.js delete mode 100644 implementors/core/iter/traits/collect/trait.IntoIterator.js delete mode 100644 implementors/core/iter/traits/double_ended/trait.DoubleEndedIterator.js delete mode 100644 implementors/core/iter/traits/exact_size/trait.ExactSizeIterator.js delete mode 100644 implementors/core/iter/traits/iterator/trait.Iterator.js delete mode 100644 implementors/core/marker/trait.Copy.js delete mode 100644 implementors/core/marker/trait.Freeze.js delete mode 100644 implementors/core/marker/trait.Send.js delete mode 100644 implementors/core/marker/trait.StructuralEq.js delete mode 100644 implementors/core/marker/trait.StructuralPartialEq.js delete mode 100644 implementors/core/marker/trait.Sync.js delete mode 100644 implementors/core/marker/trait.Unpin.js delete mode 100644 implementors/core/ops/arith/trait.Add.js delete mode 100644 implementors/core/ops/deref/trait.Deref.js delete mode 100644 implementors/core/ops/deref/trait.DerefMut.js delete mode 100644 implementors/core/ops/drop/trait.Drop.js delete mode 100644 implementors/core/ops/index/trait.Index.js delete mode 100644 implementors/core/ops/index/trait.IndexMut.js delete mode 100644 implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js delete mode 100644 implementors/core/panic/unwind_safe/trait.UnwindSafe.js delete mode 100644 implementors/core/str/traits/trait.FromStr.js delete mode 100644 implementors/delog/hex/trait.Unsigned.js delete mode 100644 implementors/delog/trait.Renderer.js delete mode 100644 implementors/flexiber/tag/trait.TagLike.js delete mode 100644 implementors/flexiber/traits/trait.Decodable.js delete mode 100644 implementors/flexiber/traits/trait.Encodable.js delete mode 100644 implementors/log/trait.Log.js delete mode 100644 implementors/quote/ext/trait.TokenStreamExt.js delete mode 100644 implementors/quote/ident_fragment/trait.IdentFragment.js delete mode 100644 implementors/quote/to_tokens/trait.ToTokens.js delete mode 100644 implementors/syn/ext/trait.IdentExt.js delete mode 100644 implementors/syn/lookahead/trait.Peek.js delete mode 100644 implementors/syn/parse/discouraged/trait.Speculative.js delete mode 100644 implementors/syn/parse/trait.Parse.js delete mode 100644 implementors/syn/parse/trait.Parser.js delete mode 100644 implementors/syn/spanned/trait.Spanned.js delete mode 100644 implementors/syn/token/trait.Token.js delete mode 100644 implementors/synstructure/trait.MacroResult.js delete mode 100644 implementors/unicode_xid/trait.UnicodeXID.js create mode 100644 search.desc/delog/delog-desc-0-.js create mode 100644 search.desc/flexiber/flexiber-desc-0-.js create mode 100644 search.desc/flexiber_derive/flexiber_derive-desc-0-.js create mode 100644 search.desc/log/log-desc-0-.js create mode 100644 search.desc/proc_macro2/proc_macro2-desc-0-.js create mode 100644 search.desc/quote/quote-desc-0-.js create mode 100644 search.desc/syn/syn-desc-0-.js create mode 100644 search.desc/synstructure/synstructure-desc-0-.js create mode 100644 search.desc/unicode_ident/unicode_ident-desc-0-.js delete mode 100644 src/syn/await.rs.html create mode 100644 src/syn/classify.rs.html create mode 100644 src/syn/fixup.rs.html delete mode 100644 src/syn/gen_helper.rs.html create mode 100644 src/syn/meta.rs.html create mode 100644 src/syn/precedence.rs.html create mode 100644 src/syn/restriction.rs.html create mode 100644 src/syn/scan_expr.rs.html delete mode 100644 src/unicode_xid/lib.rs.html delete mode 100644 src/unicode_xid/tables.rs.html delete mode 100644 static.files/clipboard-7571035ce49a181d.svg delete mode 100644 static.files/favicon-16x16-8b506e7a72182f1c.png delete mode 100644 static.files/main-c5bd66d33317d69f.js create mode 100644 static.files/main-f070b9041d14864c.js create mode 100644 static.files/noscript-0111fcff984fae8f.css delete mode 100644 static.files/noscript-5d8b3c7633ad77ba.css create mode 100644 static.files/rustdoc-b0742ba02757f159.css delete mode 100644 static.files/rustdoc-fa3bb1812debf86c.css create mode 100644 static.files/scrape-examples-46fc985aa763a438.js delete mode 100644 static.files/scrape-examples-ef1e698c1d417c0c.js delete mode 100644 static.files/search-8be46b629f5f14a8.js create mode 100644 static.files/search-f0d225181b97f9a4.js delete mode 100644 static.files/settings-74424d7eec62a23e.js create mode 100644 static.files/settings-805db61a62df4bd2.js delete mode 100644 static.files/src-script-3280b574d94e47b4.js create mode 100644 static.files/src-script-e66d777a5a92e9b2.js create mode 100644 static.files/storage-1d39b6787ed640ff.js delete mode 100644 static.files/storage-fec3eaa3851e447d.js delete mode 100644 static.files/wheel-7b819b6101059cd0.svg delete mode 100644 syn/attr/enum.NestedMeta.html delete mode 100644 syn/attr/type.AttributeArgs.html delete mode 100644 syn/data/struct.VisCrate.html delete mode 100644 syn/data/struct.VisPublic.html create mode 100644 syn/enum.FieldMutability.html delete mode 100644 syn/enum.NestedMeta.html delete mode 100644 syn/enum.StrStyle.html delete mode 100644 syn/expr/struct.ExprAssignOp.html delete mode 100644 syn/expr/struct.ExprBox.html create mode 100644 syn/expr/struct.ExprConst.html create mode 100644 syn/expr/struct.ExprInfer.html create mode 100644 syn/expr/struct.ExprRawAddr.html delete mode 100644 syn/expr/struct.ExprType.html create mode 100644 syn/expr/struct.FieldValue.html create mode 100644 syn/gen/visit/fn.visit_assoc_const.html create mode 100644 syn/gen/visit/fn.visit_assoc_type.html create mode 100644 syn/gen/visit/fn.visit_bare_variadic.html delete mode 100644 syn/gen/visit/fn.visit_binding.html create mode 100644 syn/gen/visit/fn.visit_expr_group.html create mode 100644 syn/gen/visit/fn.visit_expr_macro.html create mode 100644 syn/gen/visit/fn.visit_expr_method_call.html create mode 100644 syn/gen/visit/fn.visit_expr_reference.html create mode 100644 syn/gen/visit/fn.visit_expr_struct.html create mode 100644 syn/gen/visit/fn.visit_expr_tuple.html create mode 100644 syn/gen/visit/fn.visit_field_mutability.html create mode 100644 syn/gen/visit/fn.visit_field_value.html rename syn/gen/visit/{fn.visit_lifetime_def.html => fn.visit_lifetime_param.html} (63%) create mode 100644 syn/gen/visit/fn.visit_lit_cstr.html delete mode 100644 syn/gen/visit/fn.visit_nested_meta.html delete mode 100644 syn/gen/visit/fn.visit_predicate_eq.html delete mode 100644 syn/gen/visit/fn.visit_variadic.html delete mode 100644 syn/gen/visit/fn.visit_vis_crate.html delete mode 100644 syn/gen/visit/fn.visit_vis_public.html delete mode 100644 syn/generics/struct.LifetimeDef.html create mode 100644 syn/generics/struct.LifetimeParam.html delete mode 100644 syn/generics/struct.PredicateEq.html delete mode 100644 syn/lit/enum.StrStyle.html create mode 100644 syn/lit/struct.LitCStr.html create mode 100644 syn/lookahead/struct.End.html create mode 100644 syn/meta/fn.parser.html create mode 100644 syn/meta/index.html create mode 100644 syn/meta/sidebar-items.js create mode 100644 syn/meta/struct.ParseNestedMeta.html create mode 100644 syn/parse/discouraged/trait.AnyDelimiter.html create mode 100644 syn/parse/struct.End.html create mode 100644 syn/path/struct.AssocConst.html create mode 100644 syn/path/struct.AssocType.html delete mode 100644 syn/path/struct.Binding.html create mode 100644 syn/restriction/enum.FieldMutability.html rename syn/{data => restriction}/enum.Visibility.html (100%) rename syn/{data => restriction}/struct.VisRestricted.html (100%) create mode 100644 syn/struct.AssocConst.html create mode 100644 syn/struct.AssocType.html create mode 100644 syn/struct.BareVariadic.html delete mode 100644 syn/struct.Binding.html delete mode 100644 syn/struct.ExprAssignOp.html delete mode 100644 syn/struct.ExprBox.html create mode 100644 syn/struct.ExprConst.html create mode 100644 syn/struct.ExprInfer.html create mode 100644 syn/struct.ExprRawAddr.html delete mode 100644 syn/struct.ExprType.html create mode 100644 syn/struct.FieldValue.html delete mode 100644 syn/struct.LifetimeDef.html create mode 100644 syn/struct.LifetimeParam.html create mode 100644 syn/struct.LitCStr.html delete mode 100644 syn/struct.PredicateEq.html delete mode 100644 syn/struct.Variadic.html delete mode 100644 syn/struct.VisCrate.html delete mode 100644 syn/struct.VisPublic.html delete mode 100644 syn/token/struct.Add.html delete mode 100644 syn/token/struct.AddEq.html delete mode 100644 syn/token/struct.Bang.html delete mode 100644 syn/token/struct.Colon2.html delete mode 100644 syn/token/struct.Div.html delete mode 100644 syn/token/struct.DivEq.html delete mode 100644 syn/token/struct.Dot2.html delete mode 100644 syn/token/struct.Dot3.html create mode 100644 syn/token/struct.DotDot.html create mode 100644 syn/token/struct.DotDotDot.html create mode 100644 syn/token/struct.Minus.html create mode 100644 syn/token/struct.MinusEq.html delete mode 100644 syn/token/struct.MulEq.html create mode 100644 syn/token/struct.Not.html create mode 100644 syn/token/struct.PathSep.html create mode 100644 syn/token/struct.Percent.html create mode 100644 syn/token/struct.PercentEq.html create mode 100644 syn/token/struct.Plus.html create mode 100644 syn/token/struct.PlusEq.html create mode 100644 syn/token/struct.Raw.html delete mode 100644 syn/token/struct.Rem.html delete mode 100644 syn/token/struct.RemEq.html create mode 100644 syn/token/struct.Slash.html create mode 100644 syn/token/struct.SlashEq.html create mode 100644 syn/token/struct.StarEq.html delete mode 100644 syn/token/struct.Sub.html delete mode 100644 syn/token/struct.SubEq.html create mode 100644 syn/ty/struct.BareVariadic.html delete mode 100644 syn/ty/struct.Variadic.html delete mode 100644 syn/type.AttributeArgs.html create mode 100644 syn/visit/fn.visit_assoc_const.html create mode 100644 syn/visit/fn.visit_assoc_type.html create mode 100644 syn/visit/fn.visit_bare_variadic.html delete mode 100644 syn/visit/fn.visit_binding.html create mode 100644 syn/visit/fn.visit_expr_group.html create mode 100644 syn/visit/fn.visit_expr_macro.html create mode 100644 syn/visit/fn.visit_expr_method_call.html create mode 100644 syn/visit/fn.visit_expr_reference.html create mode 100644 syn/visit/fn.visit_expr_struct.html create mode 100644 syn/visit/fn.visit_expr_tuple.html create mode 100644 syn/visit/fn.visit_field_mutability.html create mode 100644 syn/visit/fn.visit_field_value.html delete mode 100644 syn/visit/fn.visit_lifetime_def.html create mode 100644 syn/visit/fn.visit_lifetime_param.html create mode 100644 syn/visit/fn.visit_lit_cstr.html delete mode 100644 syn/visit/fn.visit_nested_meta.html delete mode 100644 syn/visit/fn.visit_predicate_eq.html delete mode 100644 syn/visit/fn.visit_variadic.html delete mode 100644 syn/visit/fn.visit_vis_crate.html delete mode 100644 syn/visit/fn.visit_vis_public.html create mode 100644 trait.impl/core/clone/trait.Clone.js create mode 100644 trait.impl/core/cmp/trait.Eq.js create mode 100644 trait.impl/core/cmp/trait.Ord.js create mode 100644 trait.impl/core/cmp/trait.PartialEq.js create mode 100644 trait.impl/core/cmp/trait.PartialOrd.js create mode 100644 trait.impl/core/convert/trait.AsRef.js create mode 100644 trait.impl/core/convert/trait.From.js create mode 100644 trait.impl/core/convert/trait.TryFrom.js create mode 100644 trait.impl/core/default/trait.Default.js create mode 100644 trait.impl/core/error/trait.Error.js create mode 100644 trait.impl/core/fmt/trait.Debug.js create mode 100644 trait.impl/core/fmt/trait.Display.js create mode 100644 trait.impl/core/fmt/trait.LowerHex.js create mode 100644 trait.impl/core/fmt/trait.UpperHex.js create mode 100644 trait.impl/core/hash/trait.Hash.js create mode 100644 trait.impl/core/iter/traits/collect/trait.Extend.js create mode 100644 trait.impl/core/iter/traits/collect/trait.FromIterator.js create mode 100644 trait.impl/core/iter/traits/collect/trait.IntoIterator.js create mode 100644 trait.impl/core/iter/traits/double_ended/trait.DoubleEndedIterator.js create mode 100644 trait.impl/core/iter/traits/exact_size/trait.ExactSizeIterator.js create mode 100644 trait.impl/core/iter/traits/iterator/trait.Iterator.js create mode 100644 trait.impl/core/marker/trait.Copy.js create mode 100644 trait.impl/core/marker/trait.Freeze.js create mode 100644 trait.impl/core/marker/trait.Send.js create mode 100644 trait.impl/core/marker/trait.StructuralPartialEq.js create mode 100644 trait.impl/core/marker/trait.Sync.js create mode 100644 trait.impl/core/marker/trait.Unpin.js create mode 100644 trait.impl/core/ops/arith/trait.Add.js create mode 100644 trait.impl/core/ops/deref/trait.Deref.js create mode 100644 trait.impl/core/ops/deref/trait.DerefMut.js create mode 100644 trait.impl/core/ops/drop/trait.Drop.js create mode 100644 trait.impl/core/ops/index/trait.Index.js create mode 100644 trait.impl/core/ops/index/trait.IndexMut.js create mode 100644 trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js create mode 100644 trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js create mode 100644 trait.impl/core/str/traits/trait.FromStr.js create mode 100644 trait.impl/delog/hex/trait.Unsigned.js create mode 100644 trait.impl/delog/trait.Renderer.js create mode 100644 trait.impl/flexiber/tag/trait.TagLike.js create mode 100644 trait.impl/flexiber/traits/trait.Decodable.js create mode 100644 trait.impl/flexiber/traits/trait.Encodable.js create mode 100644 trait.impl/log/trait.Log.js create mode 100644 trait.impl/quote/ext/trait.TokenStreamExt.js create mode 100644 trait.impl/quote/ident_fragment/trait.IdentFragment.js create mode 100644 trait.impl/quote/to_tokens/trait.ToTokens.js create mode 100644 trait.impl/syn/ext/trait.IdentExt.js create mode 100644 trait.impl/syn/lookahead/trait.Peek.js create mode 100644 trait.impl/syn/parse/discouraged/trait.AnyDelimiter.js create mode 100644 trait.impl/syn/parse/discouraged/trait.Speculative.js create mode 100644 trait.impl/syn/parse/trait.Parse.js create mode 100644 trait.impl/syn/parse/trait.Parser.js create mode 100644 trait.impl/syn/spanned/trait.Spanned.js create mode 100644 trait.impl/syn/token/trait.Token.js create mode 100644 trait.impl/synstructure/trait.MacroResult.js create mode 100644 type.impl/core/result/enum.Result.js create mode 100644 type.impl/flexiber/struct.TaggedValue.js create mode 100644 type.impl/syn/parse/struct.ParseBuffer.js delete mode 100644 unicode_xid/all.html delete mode 100644 unicode_xid/constant.UNICODE_VERSION.html delete mode 100644 unicode_xid/index.html delete mode 100644 unicode_xid/sidebar-items.js delete mode 100644 unicode_xid/tables/constant.UNICODE_VERSION.html delete mode 100644 unicode_xid/trait.UnicodeXID.html diff --git a/crates.js b/crates.js index f62457d..f9b2b57 100644 --- a/crates.js +++ b/crates.js @@ -1 +1,2 @@ -window.ALL_CRATES = ["delog","flexiber","flexiber_derive","log","proc_macro2","quote","syn","synstructure","unicode_ident","unicode_xid"]; \ No newline at end of file +window.ALL_CRATES = ["delog","flexiber","flexiber_derive","log","proc_macro2","quote","syn","synstructure","unicode_ident"]; +//{"start":21,"fragment_lengths":[7,11,18,6,14,8,6,15,16]} \ No newline at end of file diff --git a/delog/all.html b/delog/all.html index 5fc98a2..adf62ef 100644 --- a/delog/all.html +++ b/delog/all.html @@ -1 +1 @@ -List of all items in this crate
\ No newline at end of file +List of all items in this crate
\ No newline at end of file diff --git a/delog/enum.Level.html b/delog/enum.Level.html index 03bc10b..1148285 100644 --- a/delog/enum.Level.html +++ b/delog/enum.Level.html @@ -1,63 +1,64 @@ -Level in delog - Rust

Enum delog::Level

source ·
#[repr(usize)]
pub enum Level { - Error, - Warn, - Info, - Debug, - Trace, +Level in delog - Rust
delog

Enum Level

source
#[repr(usize)]
pub enum Level { + Error = 1, + Warn = 2, + Info = 3, + Debug = 4, + Trace = 5, }
Expand description

An enum representing the available verbosity levels of the logger.

Typical usage includes: checking if a certain Level is enabled with log_enabled!, specifying the Level of log!, and comparing a Level directly to a LevelFilter.

-

Variants§

§

Error

The “error” level.

+

Variants§

§

Error = 1

The “error” level.

Designates very serious errors.

-
§

Warn

The “warn” level.

+
§

Warn = 2

The “warn” level.

Designates hazardous situations.

-
§

Info

The “info” level.

+
§

Info = 3

The “info” level.

Designates useful information.

-
§

Debug

The “debug” level.

+
§

Debug = 4

The “debug” level.

Designates lower priority information.

-
§

Trace

The “trace” level.

+
§

Trace = 5

The “trace” level.

Designates very low priority, often extremely verbose, information.

-

Implementations§

source§

impl Level

source

pub fn max() -> Level

Returns the most verbose logging level.

-
source

pub fn to_level_filter(&self) -> LevelFilter

Converts the Level to the equivalent LevelFilter.

-
source

pub fn as_str(&self) -> &'static str

Returns the string representation of the Level.

+

Implementations§

source§

impl Level

source

pub fn max() -> Level

Returns the most verbose logging level.

+
source

pub fn to_level_filter(&self) -> LevelFilter

Converts the Level to the equivalent LevelFilter.

+
source

pub fn as_str(&self) -> &'static str

Returns the string representation of the Level.

This returns the same string as the fmt::Display implementation.

-
source

pub fn iter() -> impl Iterator<Item = Level>

Iterate through all supported logging levels.

+
source

pub fn iter() -> impl Iterator<Item = Level>

Iterate through all supported logging levels.

The order of iteration is from more severe to less severe log messages.

-
Examples
+
§Examples
use log::Level;
 
 let mut levels = Level::iter();
 
 assert_eq!(Some(Level::Error), levels.next());
 assert_eq!(Some(Level::Trace), levels.last());
-

Trait Implementations§

source§

impl Clone for Level

source§

fn clone(&self) -> Level

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Level

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl Display for Level

source§

fn fmt(&self, fmt: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl FromStr for Level

§

type Err = ParseLevelError

The associated error which can be returned from parsing.
source§

fn from_str(level: &str) -> Result<Level, <Level as FromStr>::Err>

Parses a string s to return a value of this type. Read more
source§

impl Hash for Level

source§

fn hash<__H>(&self, state: &mut __H)where - __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for Level

source§

fn cmp(&self, other: &Level) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

Restrict a value to a certain interval. Read more
source§

impl PartialEq<Level> for Level

source§

fn eq(&self, other: &Level) -> bool

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl PartialEq<Level> for LevelFilter

source§

fn eq(&self, other: &Level) -> bool

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl PartialEq<LevelFilter> for Level

source§

fn eq(&self, other: &LevelFilter) -> bool

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd<Level> for Level

source§

fn partial_cmp(&self, other: &Level) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
source§

impl PartialOrd<Level> for LevelFilter

source§

fn partial_cmp(&self, other: &Level) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
source§

impl PartialOrd<LevelFilter> for Level

source§

fn partial_cmp(&self, other: &LevelFilter) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
source§

impl Copy for Level

source§

impl Eq for Level

source§

impl StructuralEq for Level

source§

impl StructuralPartialEq for Level

Auto Trait Implementations§

§

impl RefUnwindSafe for Level

§

impl Send for Level

§

impl Sync for Level

§

impl Unpin for Level

§

impl UnwindSafe for Level

Blanket Implementations§

source§

impl<T> Any for Twhere - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Trait Implementations§

source§

impl Clone for Level

source§

fn clone(&self) -> Level

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Level

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl Display for Level

source§

fn fmt(&self, fmt: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl FromStr for Level

source§

type Err = ParseLevelError

The associated error which can be returned from parsing.
source§

fn from_str(level: &str) -> Result<Level, <Level as FromStr>::Err>

Parses a string s to return a value of this type. Read more
source§

impl Hash for Level

source§

fn hash<__H>(&self, state: &mut __H)
where + __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where + H: Hasher, + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for Level

source§

fn cmp(&self, other: &Level) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where + Self: Sized,

Restrict a value to a certain interval. Read more
source§

impl PartialEq<Level> for LevelFilter

source§

fn eq(&self, other: &Level) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl PartialEq<LevelFilter> for Level

source§

fn eq(&self, other: &LevelFilter) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl PartialEq for Level

source§

fn eq(&self, other: &Level) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl PartialOrd<Level> for LevelFilter

source§

fn partial_cmp(&self, other: &Level) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the +<= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > +operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by +the >= operator. Read more
source§

impl PartialOrd<LevelFilter> for Level

source§

fn partial_cmp(&self, other: &LevelFilter) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the +<= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > +operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by +the >= operator. Read more
source§

impl PartialOrd for Level

source§

fn partial_cmp(&self, other: &Level) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the +<= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > +operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by +the >= operator. Read more
source§

impl Copy for Level

source§

impl Eq for Level

source§

impl StructuralPartialEq for Level

Auto Trait Implementations§

§

impl Freeze for Level

§

impl RefUnwindSafe for Level

§

impl Send for Level

§

impl Sync for Level

§

impl Unpin for Level

§

impl UnwindSafe for Level

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where + T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/delog/enum.LevelFilter.html b/delog/enum.LevelFilter.html index 8d9f8ef..b8a25b0 100644 --- a/delog/enum.LevelFilter.html +++ b/delog/enum.LevelFilter.html @@ -1,59 +1,60 @@ -LevelFilter in delog - Rust

Enum delog::LevelFilter

source ·
#[repr(usize)]
pub enum LevelFilter { - Off, - Error, - Warn, - Info, - Debug, - Trace, +LevelFilter in delog - Rust
delog

Enum LevelFilter

source
#[repr(usize)]
pub enum LevelFilter { + Off = 0, + Error = 1, + Warn = 2, + Info = 3, + Debug = 4, + Trace = 5, }
Expand description

An enum representing the available verbosity level filters of the logger.

A LevelFilter may be compared directly to a Level. Use this type to get and set the maximum log level with max_level() and set_max_level.

-

Variants§

§

Off

A level lower than all log levels.

-
§

Error

Corresponds to the Error log level.

-
§

Warn

Corresponds to the Warn log level.

-
§

Info

Corresponds to the Info log level.

-
§

Debug

Corresponds to the Debug log level.

-
§

Trace

Corresponds to the Trace log level.

-

Implementations§

source§

impl LevelFilter

source

pub fn max() -> LevelFilter

Returns the most verbose logging level filter.

-
source

pub fn to_level(&self) -> Option<Level>

Converts self to the equivalent Level.

+

Variants§

§

Off = 0

A level lower than all log levels.

+
§

Error = 1

Corresponds to the Error log level.

+
§

Warn = 2

Corresponds to the Warn log level.

+
§

Info = 3

Corresponds to the Info log level.

+
§

Debug = 4

Corresponds to the Debug log level.

+
§

Trace = 5

Corresponds to the Trace log level.

+

Implementations§

source§

impl LevelFilter

source

pub fn max() -> LevelFilter

Returns the most verbose logging level filter.

+
source

pub fn to_level(&self) -> Option<Level>

Converts self to the equivalent Level.

Returns None if self is LevelFilter::Off.

-
source

pub fn as_str(&self) -> &'static str

Returns the string representation of the LevelFilter.

+
source

pub fn as_str(&self) -> &'static str

Returns the string representation of the LevelFilter.

This returns the same string as the fmt::Display implementation.

-
source

pub fn iter() -> impl Iterator<Item = LevelFilter>

Iterate through all supported filtering levels.

+
source

pub fn iter() -> impl Iterator<Item = LevelFilter>

Iterate through all supported filtering levels.

The order of iteration is from less to more verbose filtering.

-
Examples
+
§Examples
use log::LevelFilter;
 
 let mut levels = LevelFilter::iter();
 
 assert_eq!(Some(LevelFilter::Off), levels.next());
 assert_eq!(Some(LevelFilter::Trace), levels.last());
-

Trait Implementations§

source§

impl Clone for LevelFilter

source§

fn clone(&self) -> LevelFilter

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for LevelFilter

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl Display for LevelFilter

source§

fn fmt(&self, fmt: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl FromStr for LevelFilter

§

type Err = ParseLevelError

The associated error which can be returned from parsing.
source§

fn from_str(level: &str) -> Result<LevelFilter, <LevelFilter as FromStr>::Err>

Parses a string s to return a value of this type. Read more
source§

impl Hash for LevelFilter

source§

fn hash<__H>(&self, state: &mut __H)where - __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for LevelFilter

source§

fn cmp(&self, other: &LevelFilter) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

Restrict a value to a certain interval. Read more
source§

impl PartialEq<Level> for LevelFilter

source§

fn eq(&self, other: &Level) -> bool

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl PartialEq<LevelFilter> for Level

source§

fn eq(&self, other: &LevelFilter) -> bool

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl PartialEq<LevelFilter> for LevelFilter

source§

fn eq(&self, other: &LevelFilter) -> bool

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd<Level> for LevelFilter

source§

fn partial_cmp(&self, other: &Level) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
source§

impl PartialOrd<LevelFilter> for Level

source§

fn partial_cmp(&self, other: &LevelFilter) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
source§

impl PartialOrd<LevelFilter> for LevelFilter

source§

fn partial_cmp(&self, other: &LevelFilter) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
source§

impl Copy for LevelFilter

source§

impl Eq for LevelFilter

source§

impl StructuralEq for LevelFilter

source§

impl StructuralPartialEq for LevelFilter

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Trait Implementations§

source§

impl Clone for LevelFilter

source§

fn clone(&self) -> LevelFilter

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for LevelFilter

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl Display for LevelFilter

source§

fn fmt(&self, fmt: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl FromStr for LevelFilter

source§

type Err = ParseLevelError

The associated error which can be returned from parsing.
source§

fn from_str(level: &str) -> Result<LevelFilter, <LevelFilter as FromStr>::Err>

Parses a string s to return a value of this type. Read more
source§

impl Hash for LevelFilter

source§

fn hash<__H>(&self, state: &mut __H)
where + __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where + H: Hasher, + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for LevelFilter

source§

fn cmp(&self, other: &LevelFilter) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where + Self: Sized,

Restrict a value to a certain interval. Read more
source§

impl PartialEq<Level> for LevelFilter

source§

fn eq(&self, other: &Level) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl PartialEq<LevelFilter> for Level

source§

fn eq(&self, other: &LevelFilter) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl PartialEq for LevelFilter

source§

fn eq(&self, other: &LevelFilter) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl PartialOrd<Level> for LevelFilter

source§

fn partial_cmp(&self, other: &Level) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the +<= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > +operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by +the >= operator. Read more
source§

impl PartialOrd<LevelFilter> for Level

source§

fn partial_cmp(&self, other: &LevelFilter) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the +<= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > +operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by +the >= operator. Read more
source§

impl PartialOrd for LevelFilter

source§

fn partial_cmp(&self, other: &LevelFilter) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the +<= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > +operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by +the >= operator. Read more
source§

impl Copy for LevelFilter

source§

impl Eq for LevelFilter

source§

impl StructuralPartialEq for LevelFilter

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where + T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/delog/fn.dequeue.html b/delog/fn.dequeue.html index 0e65171..30ebe21 100644 --- a/delog/fn.dequeue.html +++ b/delog/fn.dequeue.html @@ -1,5 +1,5 @@ -dequeue in delog - Rust

Function delog::dequeue

source ·
pub unsafe fn dequeue(delogger: impl Delogger, buf: &mut [u8]) -> &str
Expand description

The core “read from circular buffer” method. Marked unsafe to discourage use!

-

Safety

+dequeue in delog - Rust
delog

Function dequeue

source
pub unsafe fn dequeue(delogger: impl Delogger, buf: &mut [u8]) -> &str
Expand description

The core “read from circular buffer” method. Marked unsafe to discourage use!

+

§Safety

Unfortunately exposed for all to see, as the delog! macro needs access to it to implement the logger at call site. Hence marked as unsafe.

\ No newline at end of file diff --git a/delog/fn.enqueue.html b/delog/fn.enqueue.html index c78f893..61055c3 100644 --- a/delog/fn.enqueue.html +++ b/delog/fn.enqueue.html @@ -1,5 +1,5 @@ -enqueue in delog - Rust

Function delog::enqueue

source ·
pub unsafe fn enqueue(delogger: impl Delogger, record: &Record<'_>)
Expand description

The core “write to circular buffer” method. Marked unsafe to discourage use!

-

Safety

+enqueue in delog - Rust
delog

Function enqueue

source
pub unsafe fn enqueue(delogger: impl Delogger, record: &Record<'_>)
Expand description

The core “write to circular buffer” method. Marked unsafe to discourage use!

+

§Safety

Unfortunately exposed for all to see, as the delog! macro needs access to it to implement the logger at call site. Hence marked as unsafe.

\ No newline at end of file diff --git a/delog/fn.logger.html b/delog/fn.logger.html index 6672279..92c6daa 100644 --- a/delog/fn.logger.html +++ b/delog/fn.logger.html @@ -1,2 +1,2 @@ -logger in delog - Rust

Function delog::logger

source ·
pub fn logger() -> &'static mut Option<&'static dyn TryLogWithStatistics>
Expand description

Returns a reference to the logger (as TryLogWithStatistics implementation)

+logger in delog - Rust
delog

Function logger

source
pub fn logger() -> &'static mut Option<&'static dyn TryLogWithStatistics>
Expand description

Returns a reference to the logger (as TryLogWithStatistics implementation)

\ No newline at end of file diff --git a/delog/fn.try_enqueue.html b/delog/fn.try_enqueue.html index 340f177..635217e 100644 --- a/delog/fn.try_enqueue.html +++ b/delog/fn.try_enqueue.html @@ -1,8 +1,8 @@ -try_enqueue in delog - Rust

Function delog::try_enqueue

source ·
pub unsafe fn try_enqueue(
+try_enqueue in delog - Rust
delog

Function try_enqueue

source
pub unsafe fn try_enqueue(
     delogger: impl Delogger,
-    record: &Record<'_>
-) -> Result<(), ()>
Expand description

The fallible “write to circular buffer” method. Marked unsafe to discourage use!

-

Safety

+ record: &Record<'_>, +) -> Result<(), ()>
Expand description

The fallible “write to circular buffer” method. Marked unsafe to discourage use!

+

§Safety

Unfortunately exposed for all to see, as the delog! macro needs access to it to implement the logger at call site. Hence marked as unsafe.

This implementation needs some HEAVY testing. It is unsound on PC, where the OS diff --git a/delog/hex/fn.HexStr.html b/delog/hex/fn.HexStr.html index be2c938..f95a496 100644 --- a/delog/hex/fn.HexStr.html +++ b/delog/hex/fn.HexStr.html @@ -1,5 +1,5 @@ -HexStr in delog::hex - Rust

Function delog::hex::HexStr

source ·
pub fn HexStr<T: ?Sized, U: Unsigned, S: Separator>(
-    value: &T
+HexStr in delog::hex - Rust
delog::hex

Function HexStr

source
pub fn HexStr<T: ?Sized, U: Unsigned, S: Separator>(
+    value: &T,
 ) -> HexStr<'_, T, U, S>
Expand description

Explicitly construct a newtype to format with.

The first generic parameter specifies the block size in bytes, the second parameter the separator string.

@@ -14,14 +14,14 @@ does internally (using the undocumented typeint! and typesep! const N: usize = 3; } -// typesep!(Pipe, "|"); +// typesep!(Pipe, "|"); struct Pipe {} impl Separator for Pipe { - const SEPARATOR: &'static str = "|"; + const SEPARATOR: &'static str = "|"; } let four_bytes = &[7u8, 0xA1, 255, 0xC7]; let hex_str = HexStr::<_, U3, Pipe>(four_bytes); -assert_eq!(format!("{}", hex_str), "07A1FF|C7");
+assert_eq!(format!("{}", hex_str), "07A1FF|C7");
\ No newline at end of file diff --git a/delog/hex/index.html b/delog/hex/index.html index 533077d..d562d49 100644 --- a/delog/hex/index.html +++ b/delog/hex/index.html @@ -1,9 +1,9 @@ -delog::hex - Rust

Module delog::hex

source ·
Expand description

Convenient Display and other traits for binary data.

+delog::hex - Rust
delog

Module hex

source
Expand description

Convenient Display and other traits for binary data.

Standard Rust uses the fmt::UpperHex and LowerHex traits to implement hexadecimal representations for use in format strings. For instance, -format_args!("{:02X?}", &[7, 0xA1, 0xFF]) produces the string "[07, A1, FF]".

+format_args!("{:02X?}", &[7, 0xA1, 0xFF]) produces the string "[07, A1, FF]".

-
assert_eq!(format!("{:02X?}", [7u8, 0xA1, 0xFF].as_ref()), "[07, A1, FF]");
+
assert_eq!(format!("{:02X?}", [7u8, 0xA1, 0xFF].as_ref()), "[07, A1, FF]");

However, this only works for the Debug trait, not Display; needs extra dancing to pad with leading zeros, and is not very compact when debugging binary data formats.

The idea of this module is to generate newtypes around byte arrays/slices, and implement the fmt traits on these. @@ -15,12 +15,12 @@ for additional newtypes that can be used.

let data = &[7u8, 0xA1, 255, 0xC7]; -assert_eq!(format!("{}", hexstr!(data)), "07A1FFC7"); -assert_eq!(format!("{:x}", hexstr!(data)), "07a1ffc7"); -assert_eq!(format!("{:2x}", hex_str!(data)), "07..c7"); -assert_eq!(format!("{:<3x}", hex_str!(data)), "07 a1 ff.."); -assert_eq!(format!("{:>3x}", hex_str!(data)), "..a1 ff c7"); -assert_eq!(format!("{}", hex_str!(data, 2)), "07A1 FFC7"); -assert_eq!(format!("{:<3}", hex_str!(data, sep: "|")), "07|A1|FF..");
-

Structs

  • Zero-sized wrapper newtype, allowing grouping bytes in blocks of N hexadecimals -during formatting.
  • A type that represents the integer 1.

Traits

  • A type that specifies a separator str.
  • A type that specifies an unsigned integer.

Functions

  • Explicitly construct a newtype to format with.
\ No newline at end of file +assert_eq!(format!("{}", hexstr!(data)), "07A1FFC7"); +assert_eq!(format!("{:x}", hexstr!(data)), "07a1ffc7"); +assert_eq!(format!("{:2x}", hex_str!(data)), "07..c7"); +assert_eq!(format!("{:<3x}", hex_str!(data)), "07 a1 ff.."); +assert_eq!(format!("{:>3x}", hex_str!(data)), "..a1 ff c7"); +assert_eq!(format!("{}", hex_str!(data, 2)), "07A1 FFC7"); +assert_eq!(format!("{:<3}", hex_str!(data, sep: "|")), "07|A1|FF..");
+

Structs§

  • Zero-sized wrapper newtype, allowing grouping bytes in blocks of N hexadecimals +during formatting.
  • A type that represents the integer 1.

Traits§

  • A type that specifies a separator str.
  • A type that specifies an unsigned integer.

Functions§

  • Explicitly construct a newtype to format with.
\ No newline at end of file diff --git a/delog/hex/struct.HexStr.html b/delog/hex/struct.HexStr.html index 9d29e0d..89e18db 100644 --- a/delog/hex/struct.HexStr.html +++ b/delog/hex/struct.HexStr.html @@ -1,47 +1,49 @@ -HexStr in delog::hex - Rust

Struct delog::hex::HexStr

source ·
pub struct HexStr<'a, T: ?Sized, U, S>where
+HexStr in delog::hex - Rust
delog::hex

Struct HexStr

source
pub struct HexStr<'a, T: ?Sized, U, S>
where U: Unsigned, - S: Separator,{ - pub value: &'a T, - /* private fields */ + S: Separator,
{ + pub value: &'a T, + /* private fields */ }
Expand description

Zero-sized wrapper newtype, allowing grouping bytes in blocks of N hexadecimals during formatting.

Use the method with the same name to construct this from your byte array or slice, or preferrably the hex_str! or hexstr! macro.

-

Fields§

§value: &'a T

The value to be formatted.

-

Trait Implementations§

source§

impl<T, S, U> Debug for HexStr<'_, T, U, S>where - T: AsRef<[u8]> + ?Sized, +

Fields§

§value: &'a T

The value to be formatted.

+

Trait Implementations§

source§

impl<T, S, U> Debug for HexStr<'_, T, U, S>
where + T: AsRef<[u8]> + ?Sized, U: Unsigned, - S: Separator,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl<T, U, S> Display for HexStr<'_, T, U, S>where - T: AsRef<[u8]> + ?Sized, + S: Separator,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl<T, U, S> Display for HexStr<'_, T, U, S>
where + T: AsRef<[u8]> + ?Sized, U: Unsigned, - S: Separator,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl<'a, T, U, S> LowerHex for HexStr<'a, T, U, S>where - T: AsRef<[u8]> + ?Sized, + S: Separator,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl<'a, T, U, S> LowerHex for HexStr<'a, T, U, S>
where + T: AsRef<[u8]> + ?Sized, U: Unsigned, - S: Separator,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter.
source§

impl<'a, T, U, S> UpperHex for HexStr<'a, T, U, S>where - T: AsRef<[u8]> + ?Sized, + S: Separator,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl<'a, T, U, S> UpperHex for HexStr<'a, T, U, S>
where + T: AsRef<[u8]> + ?Sized, U: Unsigned, - S: Separator,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter.

Auto Trait Implementations§

§

impl<'a, T: ?Sized, U, S> RefUnwindSafe for HexStr<'a, T, U, S>where - S: RefUnwindSafe, - T: RefUnwindSafe, - U: RefUnwindSafe,

§

impl<'a, T: ?Sized, U, S> Send for HexStr<'a, T, U, S>where - S: Send, - T: Sync, - U: Send,

§

impl<'a, T: ?Sized, U, S> Sync for HexStr<'a, T, U, S>where - S: Sync, - T: Sync, - U: Sync,

§

impl<'a, T: ?Sized, U, S> Unpin for HexStr<'a, T, U, S>where - S: Unpin, - U: Unpin,

§

impl<'a, T: ?Sized, U, S> UnwindSafe for HexStr<'a, T, U, S>where - S: UnwindSafe, - T: RefUnwindSafe, - U: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+ S: Separator,
source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a, T, U, S> Freeze for HexStr<'a, T, U, S>
where + T: ?Sized,

§

impl<'a, T, U, S> RefUnwindSafe for HexStr<'a, T, U, S>
where + T: RefUnwindSafe + ?Sized, + U: RefUnwindSafe, + S: RefUnwindSafe,

§

impl<'a, T, U, S> Send for HexStr<'a, T, U, S>
where + T: Sync + ?Sized, + U: Send, + S: Send,

§

impl<'a, T, U, S> Sync for HexStr<'a, T, U, S>
where + T: Sync + ?Sized, + U: Sync, + S: Sync,

§

impl<'a, T, U, S> Unpin for HexStr<'a, T, U, S>
where + U: Unpin, + S: Unpin, + T: ?Sized,

§

impl<'a, T, U, S> UnwindSafe for HexStr<'a, T, U, S>
where + T: RefUnwindSafe + ?Sized, + U: UnwindSafe, + S: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/delog/hex/struct.U1.html b/delog/hex/struct.U1.html index f3da2dd..22c0acc 100644 --- a/delog/hex/struct.U1.html +++ b/delog/hex/struct.U1.html @@ -1,12 +1,12 @@ -U1 in delog::hex - Rust

Struct delog::hex::U1

source ·
pub struct U1;
Expand description

A type that represents the integer 1.

-

Trait Implementations§

source§

impl Unsigned for U1

source§

const N: usize = 1usize

The actual number.

Auto Trait Implementations§

§

impl RefUnwindSafe for U1

§

impl Send for U1

§

impl Sync for U1

§

impl Unpin for U1

§

impl UnwindSafe for U1

Blanket Implementations§

source§

impl<T> Any for Twhere - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+U1 in delog::hex - Rust
delog::hex

Struct U1

source
pub struct U1;
Expand description

A type that represents the integer 1.

+

Trait Implementations§

source§

impl Unsigned for U1

source§

const N: usize = 1usize

The actual number.

Auto Trait Implementations§

§

impl Freeze for U1

§

impl RefUnwindSafe for U1

§

impl Send for U1

§

impl Sync for U1

§

impl Unpin for U1

§

impl UnwindSafe for U1

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/delog/hex/trait.Separator.html b/delog/hex/trait.Separator.html index ae28cec..ffa8e59 100644 --- a/delog/hex/trait.Separator.html +++ b/delog/hex/trait.Separator.html @@ -1,5 +1,5 @@ -Separator in delog::hex - Rust

Trait delog::hex::Separator

source ·
pub trait Separator {
-    const SEPARATOR: &'static str;
+Separator in delog::hex - Rust
delog::hex

Trait Separator

source
pub trait Separator {
+    const SEPARATOR: &'static str;
 }
Expand description

A type that specifies a separator str.

-

Required Associated Constants§

source

const SEPARATOR: &'static str

The actual separator str.

-

Implementors§

\ No newline at end of file +

Required Associated Constants§

source

const SEPARATOR: &'static str

The actual separator str.

+

Object Safety§

This trait is not object safe.

Implementors§

\ No newline at end of file diff --git a/delog/hex/trait.Unsigned.html b/delog/hex/trait.Unsigned.html index 8daf4fe..a55a1e6 100644 --- a/delog/hex/trait.Unsigned.html +++ b/delog/hex/trait.Unsigned.html @@ -1,7 +1,7 @@ -Unsigned in delog::hex - Rust

Trait delog::hex::Unsigned

source ·
pub trait Unsigned {
-    const N: usize;
+Unsigned in delog::hex - Rust
delog::hex

Trait Unsigned

source
pub trait Unsigned {
+    const N: usize;
 }
Expand description

A type that specifies an unsigned integer.

We use this instead of typenum as the latter currently lacks a mapping from usize to the associated type.

-

Required Associated Constants§

source

const N: usize

The actual number.

-

Implementors§

source§

impl Unsigned for U1

source§

const N: usize = 1usize

\ No newline at end of file +

Required Associated Constants§

source

const N: usize

The actual number.

+

Object Safety§

This trait is not object safe.

Implementors§

source§

impl Unsigned for U1

source§

const N: usize = 1usize

\ No newline at end of file diff --git a/delog/index.html b/delog/index.html index ae0badd..e1dea2f 100644 --- a/delog/index.html +++ b/delog/index.html @@ -1,4 +1,4 @@ -delog - Rust

Crate delog

source ·
Expand description

Compile-time configurable deferred logging (for printf()-debugging aka tracing)

+delog - Rust

Crate delog

source
Expand description

§Compile-time configurable deferred logging (for printf()-debugging aka tracing)

This is an implementation of the log::Log trait, suitable for use in both embedded and desktop environments.

It has two main goals:

@@ -10,7 +10,7 @@ inactive log levels of libraries are completely compiled out.

Moreover, setting the kill switch feature flag knock-it-off, any and all traces of logging are removed from the final binary.

-

Usage and defaults

+

§Usage and defaults

“Global settings subtractive (default all), local settings additive (default none) but with kill-switch.”

@@ -31,7 +31,7 @@ and goverend by the global filters. Such a library can also define a feature suc logic such as “log-info implies log-warn”. There is a kill-switch: if the library defines a feature log-none, and some intermediate library activates one of the additive log-* features, setting log-none completely turns off logging for this library.

-

Background

+

§Background

Compared to existing approaches such as ufmt, cortex-m-funnel and defmt, we pursue different values and requirements, namely:

    @@ -40,7 +40,7 @@ This means that, while libraries may “upgrade” their logging capabilities by as drop-in replacement for their logging calls (see below), any existing library that already uses log is compatible. This, for our use cases, is a huge win, as opposed to using up “weirdness budget” and requiring custom tooling for something that is often trivial, throw-away, simple logging. -
  • it follows that one can easily drop a trace!("{:?}", &suspicious_object) call at any time for +
  • it follows that one can easily drop a trace!("{:?}", &suspicious_object) call at any time for any object that has a (possibly automatically derived) Debug trait implementation – without passing around structures and keeping on top of lifetimes.
  • deferred logging: This is a typical “shared memory” logger, calls to info! etc. @@ -70,21 +70,21 @@ improved at the root level, namely the language itself.)
  • using, e.g., the fmt::Binary trait, newtypes and sentinel values to embed raw binary representations of data in time-critical situations without formatting, deferring the extraction and actual formatting to some host-side mechanism.

    -

    Features

    +

    §Features

    The flushers and semihosting features mostly exist to share code within the examples, including the example feature. Without them, dependencies are quite minimal, and compilation fast.

    The fallible and immediate features (default on) activate the try_*! and *_now! macros, respectively.

    -

    Warning

    +

    §Warning

    The current circular buffer implementation (v0.1.0) is definitely unsound on desktop. For embedded use, atomics are required (so no Cortex-M0/M1, and no plans to support non-atomic platforms, which are likely to also be too resource-constrained to support the bloat inherent in core::fmt). While we think the implemented circular buffer algorithm works for the “nested interrupt” setup of NVICs, it has not been tested much. The hope is that the worst case scenario is some slightly messed up log outputs.

    -

    Outlook

    +

    §Outlook

    We plan to iterate towards a v0.2.0 soon, making use of a separate “flusher” for the “immediate” logging path. For instance, when logging via serial-over-USB, one might want immediate logs to pend a separate RTIC interrupt handler that blocks until the logs are pushed and read (allowing one to debug the boot process of a firmware), or one might want to just write to RTT (or even semihosting xD) for these, during development.

    -

Re-exports

Modules

  • Convenient Display and other traits for binary data.
  • The default, minimal renderer, and some helper functions.

Macros

  • Generate a deferred logger with specified capacity and flushing mechanism.
  • Generate logging macros that can be gated by library.
  • Compactly format byte arrays and slices as hexadecimals.
  • More compactly format byte arrays and slices as hexadecimals.

Structs

Enums

  • An enum representing the available verbosity levels of the logger.
  • An enum representing the available verbosity level filters of the logger.

Traits

  • Semi-abstract characterization of the deferred loggers that the delog! macro produces.
  • A way to pass on logs, user supplied.
  • A way to format logs, user supplied.
  • Trait for either state or statistics of loggers.
  • Fallible, panic-free version of the log::Log trait.
  • TryLog with some usage statistics on top.

Functions

  • The core “read from circular buffer” method. Marked unsafe to discourage use!
  • The core “write to circular buffer” method. Marked unsafe to discourage use!
  • Returns a reference to the logger (as TryLogWithStatistics implementation)
  • The fallible “write to circular buffer” method. Marked unsafe to discourage use!
\ No newline at end of file +

Re-exports§

Modules§

  • Convenient Display and other traits for binary data.
  • The default, minimal renderer, and some helper functions.

Macros§

  • Generate a deferred logger with specified capacity and flushing mechanism.
  • Generate logging macros that can be gated by library.
  • Compactly format byte arrays and slices as hexadecimals.
  • More compactly format byte arrays and slices as hexadecimals.

Structs§

Enums§

  • An enum representing the available verbosity levels of the logger.
  • An enum representing the available verbosity level filters of the logger.

Traits§

  • Semi-abstract characterization of the deferred loggers that the delog! macro produces.
  • A way to pass on logs, user supplied.
  • A way to format logs, user supplied.
  • Trait for either state or statistics of loggers.
  • Fallible, panic-free version of the log::Log trait.
  • TryLog with some usage statistics on top.

Functions§

  • The core “read from circular buffer” method. Marked unsafe to discourage use!
  • The core “write to circular buffer” method. Marked unsafe to discourage use!
  • Returns a reference to the logger (as TryLogWithStatistics implementation)
  • The fallible “write to circular buffer” method. Marked unsafe to discourage use!
\ No newline at end of file diff --git a/delog/macro.delog.html b/delog/macro.delog.html index b2faa32..5538022 100644 --- a/delog/macro.delog.html +++ b/delog/macro.delog.html @@ -1,4 +1,4 @@ -delog in delog - Rust

Macro delog::delog

source ·
macro_rules! delog {
+delog in delog - Rust
delog

Macro delog

source
macro_rules! delog {
     ($logger:ident, $capacity:expr, $render_capacity:expr, $flusher:ty) => { ... };
     ($logger:ident, $capacity:expr, $flusher:ty) => { ... };
     ($logger:ident, $capacity:expr, $flusher:ty, renderer: $renderer:ty) => { ... };
diff --git a/delog/macro.generate_macros.html b/delog/macro.generate_macros.html
index 84194a3..519188e 100644
--- a/delog/macro.generate_macros.html
+++ b/delog/macro.generate_macros.html
@@ -1,4 +1,4 @@
-generate_macros in delog - Rust
macro_rules! generate_macros {
+generate_macros in delog - Rust
delog

Macro generate_macros

source
macro_rules! generate_macros {
     () => { ... };
 }
Expand description

Generate logging macros that can be gated by library.

Realize that these macros are generated in the namespace of the consuming library, the one diff --git a/delog/macro.hex_str.html b/delog/macro.hex_str.html index 1d7a844..4dc94a3 100644 --- a/delog/macro.hex_str.html +++ b/delog/macro.hex_str.html @@ -1,4 +1,4 @@ -hex_str in delog - Rust

Macro delog::hex_str

source ·
macro_rules! hex_str {
+hex_str in delog - Rust
delog

Macro hex_str

source
macro_rules! hex_str {
     ($array:expr) => { ... };
     ($array:expr, sep: $separator:expr) => { ... };
     ($array:expr, $n:tt) => { ... };
@@ -8,8 +8,8 @@
 
 
use delog::hex_str;
 let four_bytes = &[7u8, 0xA1, 255, 0xC7];
-assert_eq!(format!("{:x}", hex_str!(four_bytes)), "07 a1 ff c7");
-assert_eq!(format!("{}", hex_str!(four_bytes, 2)), "07A1 FFC7");
-assert_eq!(format!("{}", hex_str!(four_bytes, 2, sep: "|")), "07A1|FFC7");
-assert_eq!(format!("{}", hex_str!(four_bytes, 3)), "07A1FF C7");
+assert_eq!(format!("{:x}", hex_str!(four_bytes)), "07 a1 ff c7"); +assert_eq!(format!("{}", hex_str!(four_bytes, 2)), "07A1 FFC7"); +assert_eq!(format!("{}", hex_str!(four_bytes, 2, sep: "|")), "07A1|FFC7"); +assert_eq!(format!("{}", hex_str!(four_bytes, 3)), "07A1FF C7");
\ No newline at end of file diff --git a/delog/macro.hexstr.html b/delog/macro.hexstr.html index 1f46f1f..b6a9d8e 100644 --- a/delog/macro.hexstr.html +++ b/delog/macro.hexstr.html @@ -1,9 +1,9 @@ -hexstr in delog - Rust

Macro delog::hexstr

source ·
macro_rules! hexstr {
+hexstr in delog - Rust
delog

Macro hexstr

source
macro_rules! hexstr {
     ($array:expr) => { ... };
 }
Expand description

More compactly format byte arrays and slices as hexadecimals.

use delog::hexstr;
 let four_bytes = &[7u8, 0xA1, 255, 0xC7];
-assert_eq!(format!("{}", hexstr!(four_bytes)), "07A1FFC7");
-assert_eq!(format!("{:x}", hexstr!(four_bytes)), "07a1ffc7");
+assert_eq!(format!("{}", hexstr!(four_bytes)), "07A1FFC7"); +assert_eq!(format!("{:x}", hexstr!(four_bytes)), "07a1ffc7");
\ No newline at end of file diff --git a/delog/render/fn.default.html b/delog/render/fn.default.html index 80ffcba..1633318 100644 --- a/delog/render/fn.default.html +++ b/delog/render/fn.default.html @@ -1,2 +1,2 @@ -default in delog::render - Rust

Function delog::render::default

source ·
pub fn default() -> &'static DefaultRenderer
Expand description

The default, minimal renderer.

+default in delog::render - Rust
delog::render

Function default

source
pub fn default() -> &'static DefaultRenderer
Expand description

The default, minimal renderer.

\ No newline at end of file diff --git a/delog/render/fn.render_arguments.html b/delog/render/fn.render_arguments.html index d41b1f0..143daae 100644 --- a/delog/render/fn.render_arguments.html +++ b/delog/render/fn.render_arguments.html @@ -1,4 +1,4 @@ -render_arguments in delog::render - Rust

Function delog::render::render_arguments

source ·
pub fn render_arguments<'a>(buf: &'a mut [u8], args: Arguments<'_>) -> &'a [u8]
Expand description

For some reason, there seems to be no existing method to easily render +render_arguments in delog::render - Rust

delog::render

Function render_arguments

source
pub fn render_arguments<'a>(buf: &'a mut [u8], args: Arguments<'_>) -> &'a [u8]
Expand description

For some reason, there seems to be no existing method to easily render fmt::Arguments in a pre-allocated byte array.

That is what this does.

\ No newline at end of file diff --git a/delog/render/fn.render_record.html b/delog/render/fn.render_record.html index 5664c14..d5eb7b1 100644 --- a/delog/render/fn.render_record.html +++ b/delog/render/fn.render_record.html @@ -1,2 +1,2 @@ -render_record in delog::render - Rust

Function delog::render::render_record

source ·
pub fn render_record<'a>(buf: &'a mut [u8], record: &Record<'_>) -> &'a [u8]
Expand description

Render record, based on feature flags.

+render_record in delog::render - Rust
delog::render

Function render_record

source
pub fn render_record<'a>(buf: &'a mut [u8], record: &Record<'_>) -> &'a [u8]
Expand description

Render record, based on feature flags.

\ No newline at end of file diff --git a/delog/render/index.html b/delog/render/index.html index 23b1af9..3acf0b6 100644 --- a/delog/render/index.html +++ b/delog/render/index.html @@ -1,3 +1,3 @@ -delog::render - Rust

Module delog::render

source ·
Expand description

The default, minimal renderer, and some helper functions.

-

Structs

Functions

  • The default, minimal renderer.
  • For some reason, there seems to be no existing method to easily render -fmt::Arguments in a pre-allocated byte array.
  • Render record, based on feature flags.
\ No newline at end of file +delog::render - Rust
delog

Module render

source
Expand description

The default, minimal renderer, and some helper functions.

+

Structs§

Functions§

  • The default, minimal renderer.
  • For some reason, there seems to be no existing method to easily render +fmt::Arguments in a pre-allocated byte array.
  • Render record, based on feature flags.
\ No newline at end of file diff --git a/delog/render/struct.DefaultRenderer.html b/delog/render/struct.DefaultRenderer.html index e686f72..d092eba 100644 --- a/delog/render/struct.DefaultRenderer.html +++ b/delog/render/struct.DefaultRenderer.html @@ -1,13 +1,14 @@ -DefaultRenderer in delog::render - Rust
pub struct DefaultRenderer {}
Expand description

Renders just the record.args().

-

Trait Implementations§

source§

impl Clone for DefaultRenderer

source§

fn clone(&self) -> DefaultRenderer

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Renderer for DefaultRenderer

source§

fn render<'a>(&self, buf: &'a mut [u8], record: &Record<'_>) -> &'a [u8]

Implementor must render record into buf, returning the slice containing the rendered -record.
source§

impl Copy for DefaultRenderer

source§

impl Send for DefaultRenderer

source§

impl Sync for DefaultRenderer

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+DefaultRenderer in delog::render - Rust
delog::render

Struct DefaultRenderer

source
pub struct DefaultRenderer {}
Expand description

Renders just the record.args().

+

Trait Implementations§

source§

impl Clone for DefaultRenderer

source§

fn clone(&self) -> DefaultRenderer

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Renderer for DefaultRenderer

source§

fn render<'a>(&self, buf: &'a mut [u8], record: &Record<'_>) -> &'a [u8]

Implementor must render record into buf, returning the slice containing the rendered +record.
source§

impl Copy for DefaultRenderer

source§

impl Send for DefaultRenderer

source§

impl Sync for DefaultRenderer

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where + T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/delog/render/struct.RipgrepRenderer.html b/delog/render/struct.RipgrepRenderer.html index 1876093..3e856b0 100644 --- a/delog/render/struct.RipgrepRenderer.html +++ b/delog/render/struct.RipgrepRenderer.html @@ -1,13 +1,14 @@ -RipgrepRenderer in delog::render - Rust
pub struct RipgrepRenderer {}
Expand description

Renders the record.args(), prefixed by level, target, and file, line if they are some.

-

Trait Implementations§

source§

impl Clone for RipgrepRenderer

source§

fn clone(&self) -> RipgrepRenderer

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Renderer for RipgrepRenderer

source§

fn render<'a>(&self, buf: &'a mut [u8], record: &Record<'_>) -> &'a [u8]

Implementor must render record into buf, returning the slice containing the rendered -record.
source§

impl Copy for RipgrepRenderer

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+RipgrepRenderer in delog::render - Rust
delog::render

Struct RipgrepRenderer

source
pub struct RipgrepRenderer {}
Expand description

Renders the record.args(), prefixed by level, target, and file, line if they are some.

+

Trait Implementations§

source§

impl Clone for RipgrepRenderer

source§

fn clone(&self) -> RipgrepRenderer

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Renderer for RipgrepRenderer

source§

fn render<'a>(&self, buf: &'a mut [u8], record: &Record<'_>) -> &'a [u8]

Implementor must render record into buf, returning the slice containing the rendered +record.
source§

impl Copy for RipgrepRenderer

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where + T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/delog/struct.Record.html b/delog/struct.Record.html index 62d3e11..4064a4c 100644 --- a/delog/struct.Record.html +++ b/delog/struct.Record.html @@ -1,5 +1,5 @@ -Record in delog - Rust

Struct delog::Record

source ·
pub struct Record<'a> { /* private fields */ }
Expand description

The “payload” of a log message.

-

Use

+Record in delog - Rust
delog

Struct Record

source
pub struct Record<'a> { /* private fields */ }
Expand description

The “payload” of a log message.

+

§Use

Record structures are passed as parameters to the log method of the Log trait. Logger implementors manipulate these structures in order to display log messages. Records are automatically @@ -7,11 +7,11 @@ created by the log! macro and so are n

Note that the level() and target() accessors are equivalent to self.metadata().level() and self.metadata().target() respectively. These methods are provided as a convenience for users of this structure.

-

Example

+

§Example

The following example shows a simple logger that displays the level, module path, and message of any Record that is passed to it.

-
struct SimpleLogger;
+
struct SimpleLogger;
 
 impl log::Log for SimpleLogger {
    fn enabled(&self, _metadata: &log::Metadata) -> bool {
@@ -23,31 +23,32 @@ module path, and message of any Record that is passed to it.

return; } - println!("{}:{} -- {}", + println!("{}:{} -- {}", record.level(), record.target(), record.args()); } fn flush(&self) {} }
-

Implementations§

source§

impl<'a> Record<'a>

source

pub fn builder() -> RecordBuilder<'a>

Returns a new builder.

-
source

pub fn args(&self) -> &Arguments<'a>

The message body.

-
source

pub fn metadata(&self) -> &Metadata<'a>

Metadata about the log directive.

-
source

pub fn level(&self) -> Level

The verbosity level of the message.

-
source

pub fn target(&self) -> &'a str

The name of the target of the directive.

-
source

pub fn module_path(&self) -> Option<&'a str>

The module path of the message.

-
source

pub fn module_path_static(&self) -> Option<&'static str>

The module path of the message, if it is a 'static string.

-
source

pub fn file(&self) -> Option<&'a str>

The source file containing the message.

-
source

pub fn file_static(&self) -> Option<&'static str>

The module path of the message, if it is a 'static string.

-
source

pub fn line(&self) -> Option<u32>

The line containing the message.

-

Trait Implementations§

source§

impl<'a> Clone for Record<'a>

source§

fn clone(&self) -> Record<'a>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<'a> Debug for Record<'a>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> !RefUnwindSafe for Record<'a>

§

impl<'a> !Send for Record<'a>

§

impl<'a> !Sync for Record<'a>

§

impl<'a> Unpin for Record<'a>

§

impl<'a> !UnwindSafe for Record<'a>

Blanket Implementations§

source§

impl<T> Any for Twhere - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Implementations§

source§

impl<'a> Record<'a>

source

pub fn builder() -> RecordBuilder<'a>

Returns a new builder.

+
source

pub fn args(&self) -> &Arguments<'a>

The message body.

+
source

pub fn metadata(&self) -> &Metadata<'a>

Metadata about the log directive.

+
source

pub fn level(&self) -> Level

The verbosity level of the message.

+
source

pub fn target(&self) -> &'a str

The name of the target of the directive.

+
source

pub fn module_path(&self) -> Option<&'a str>

The module path of the message.

+
source

pub fn module_path_static(&self) -> Option<&'static str>

The module path of the message, if it is a 'static string.

+
source

pub fn file(&self) -> Option<&'a str>

The source file containing the message.

+
source

pub fn file_static(&self) -> Option<&'static str>

The source file containing the message, if it is a 'static string.

+
source

pub fn line(&self) -> Option<u32>

The line containing the message.

+

Trait Implementations§

source§

impl<'a> Clone for Record<'a>

source§

fn clone(&self) -> Record<'a>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<'a> Debug for Record<'a>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for Record<'a>

§

impl<'a> RefUnwindSafe for Record<'a>

§

impl<'a> !Send for Record<'a>

§

impl<'a> !Sync for Record<'a>

§

impl<'a> Unpin for Record<'a>

§

impl<'a> UnwindSafe for Record<'a>

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where + T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/delog/struct.Statistics.html b/delog/struct.Statistics.html index b627e4a..157d896 100644 --- a/delog/struct.Statistics.html +++ b/delog/struct.Statistics.html @@ -1,23 +1,24 @@ -Statistics in delog - Rust

Struct delog::Statistics

source ·
pub struct Statistics {
-    pub attempts: usize,
-    pub successes: usize,
-    pub flushes: usize,
-    pub read: usize,
-    pub written: usize,
+Statistics in delog - Rust
delog

Struct Statistics

source
pub struct Statistics {
+    pub attempts: usize,
+    pub successes: usize,
+    pub flushes: usize,
+    pub read: usize,
+    pub written: usize,
 }
Expand description

Statistics on logger usage.

-

Fields§

§attempts: usize

How often was one of the logging macros called.

-
§successes: usize

How often was one of the logging macros called without early exit (e.g., buffer not full)

-
§flushes: usize

How often was the flusher called.

-
§read: usize

How many bytes were flushed so far.

-
§written: usize

How many bytes were logged so far.

-

Trait Implementations§

source§

impl Clone for Statistics

source§

fn clone(&self) -> Statistics

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Statistics

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Copy for Statistics

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Fields§

§attempts: usize

How often was one of the logging macros called.

+
§successes: usize

How often was one of the logging macros called without early exit (e.g., buffer not full)

+
§flushes: usize

How often was the flusher called.

+
§read: usize

How many bytes were flushed so far.

+
§written: usize

How many bytes were logged so far.

+

Trait Implementations§

source§

impl Clone for Statistics

source§

fn clone(&self) -> Statistics

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Statistics

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Copy for Statistics

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where + T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/delog/trait.Delogger.html b/delog/trait.Delogger.html index 321fd54..ebd04ce 100644 --- a/delog/trait.Delogger.html +++ b/delog/trait.Delogger.html @@ -1,21 +1,24 @@ -Delogger in delog - Rust

Trait delog::Delogger

source ·
pub unsafe trait Delogger: Log + TryLog + State<&'static AtomicUsize> {
+Delogger in delog - Rust
delog

Trait Delogger

source
pub unsafe trait Delogger:
+    Log
+    + TryLog
+    + State<&'static AtomicUsize> {
     // Required methods
-    fn buffer(&self) -> &'static mut [u8];
-    fn claimed(&self) -> &'static AtomicUsize;
-    fn flush(&self, logs: &str);
-    fn render(&self, record: &Record<'_>) -> &'static [u8];
+    fn buffer(&self) -> &'static mut [u8];
+    fn claimed(&self) -> &'static AtomicUsize;
+    fn flush(&self, logs: &str);
+    fn render(&self, record: &Record<'_>) -> &'static [u8];
 
     // Provided method
-    fn capacity(&self) -> usize { ... }
+    fn capacity(&self) -> usize { ... }
 }
Expand description

Semi-abstract characterization of the deferred loggers that the delog! macro produces.

-

Safety

+

§Safety

This trait is markes “unsafe” to signal that users should never (need to) “write their own”, but always go through the delog! macro.

The user has access to the global logger via delog::logger(), but only as TryLog/Log implementation, not with this direct access to implementation details.

-

Required Methods§

source

fn buffer(&self) -> &'static mut [u8]

the underlying buffer

-
source

fn claimed(&self) -> &'static AtomicUsize

How many characters were claimed so far.

-
source

fn flush(&self, logs: &str)

Call the flusher.

-
source

fn render(&self, record: &Record<'_>) -> &'static [u8]

Actually render the arguments (via internal static buffer).

-

Provided Methods§

source

fn capacity(&self) -> usize

Capacity of circular buffer.

-

Implementors§

\ No newline at end of file +

Required Methods§

source

fn buffer(&self) -> &'static mut [u8]

the underlying buffer

+
source

fn claimed(&self) -> &'static AtomicUsize

How many characters were claimed so far.

+
source

fn flush(&self, logs: &str)

Call the flusher.

+
source

fn render(&self, record: &Record<'_>) -> &'static [u8]

Actually render the arguments (via internal static buffer).

+

Provided Methods§

source

fn capacity(&self) -> usize

Capacity of circular buffer.

+

Implementors§

\ No newline at end of file diff --git a/delog/trait.Flusher.html b/delog/trait.Flusher.html index d8d617b..9578757 100644 --- a/delog/trait.Flusher.html +++ b/delog/trait.Flusher.html @@ -1,9 +1,9 @@ -Flusher in delog - Rust

Trait delog::Flusher

source ·
pub trait Flusher: Debug + Send {
+Flusher in delog - Rust
delog

Trait Flusher

source
pub trait Flusher: Debug + Send {
     // Required method
-    fn flush(&self, logs: &str);
+    fn flush(&self, logs: &str);
 }
Expand description

A way to pass on logs, user supplied.

In embedded, this is intended to pend an interrupt to send the logs off via (USB) serial, semihosting, or similar.

On PC, typical implemenation will just println! or eprintln!

-

Required Methods§

source

fn flush(&self, logs: &str)

Implementor must handle passed log &str in some hopefully useful way.

-

Implementors§

\ No newline at end of file +

Required Methods§

source

fn flush(&self, logs: &str)

Implementor must handle passed log &str in some hopefully useful way.

+

Implementors§

\ No newline at end of file diff --git a/delog/trait.Renderer.html b/delog/trait.Renderer.html index 54fef94..da98ec8 100644 --- a/delog/trait.Renderer.html +++ b/delog/trait.Renderer.html @@ -1,7 +1,7 @@ -Renderer in delog - Rust

Trait delog::Renderer

source ·
pub trait Renderer: Send + Sync {
+Renderer in delog - Rust
delog

Trait Renderer

source
pub trait Renderer: Send + Sync {
     // Required method
-    fn render<'a>(&self, buf: &'a mut [u8], record: &Record<'_>) -> &'a [u8];
+    fn render<'a>(&self, buf: &'a mut [u8], record: &Record<'_>) -> &'a [u8];
 }
Expand description

A way to format logs, user supplied.

-

Required Methods§

source

fn render<'a>(&self, buf: &'a mut [u8], record: &Record<'_>) -> &'a [u8]

Implementor must render record into buf, returning the slice containing the rendered +

Required Methods§

source

fn render<'a>(&self, buf: &'a mut [u8], record: &Record<'_>) -> &'a [u8]

Implementor must render record into buf, returning the slice containing the rendered record.

-

Implementors§

\ No newline at end of file +

Implementors§

\ No newline at end of file diff --git a/delog/trait.State.html b/delog/trait.State.html index d11b068..5eb3492 100644 --- a/delog/trait.State.html +++ b/delog/trait.State.html @@ -1,4 +1,4 @@ -State in delog - Rust

Trait delog::State

source ·
pub trait State<T> {
+State in delog - Rust
delog

Trait State

source
pub trait State<T> {
     // Required methods
     fn attempts(&self) -> T;
     fn successes(&self) -> T;
@@ -6,9 +6,9 @@
     fn read(&self) -> T;
     fn written(&self) -> T;
 }
Expand description

Trait for either state or statistics of loggers.

-

Required Methods§

source

fn attempts(&self) -> T

How often was one of the logging macros called.

+

Required Methods§

source

fn attempts(&self) -> T

How often was one of the logging macros called.

source

fn successes(&self) -> T

How often was one of the logging macros called without early exit (e.g., buffer not full)

source

fn flushes(&self) -> T

How often was the flusher called.

source

fn read(&self) -> T

How many bytes were flushed so far.

source

fn written(&self) -> T

How many bytes were logged so far.

-

Implementors§

\ No newline at end of file +

Implementors§

\ No newline at end of file diff --git a/delog/trait.TryLog.html b/delog/trait.TryLog.html index 0f0bd27..b6b159f 100644 --- a/delog/trait.TryLog.html +++ b/delog/trait.TryLog.html @@ -1,11 +1,11 @@ -TryLog in delog - Rust

Trait delog::TryLog

source ·
pub trait TryLog: Log {
+TryLog in delog - Rust
delog

Trait TryLog

source
pub trait TryLog: Log {
     // Required method
-    fn try_log(&self, _: &Record<'_>) -> Result<(), ()>;
+    fn try_log(&self, _: &Record<'_>) -> Result<(), ()>;
 }
Expand description

Fallible, panic-free version of the log::Log trait.

The intention is actually that implementors of this trait also implement log::Log in a panic-free fashion, and simply drop logs that can’t be logged. Because, if the user can handle the error, they would be using the fallible macros, and if not, they most likely do not want to crash.

-

Required Methods§

source

fn try_log(&self, _: &Record<'_>) -> Result<(), ()>

Fallible logging call (fails when buffer is full)

-

Implementors§

\ No newline at end of file +

Required Methods§

source

fn try_log(&self, _: &Record<'_>) -> Result<(), ()>

Fallible logging call (fails when buffer is full)

+

Implementors§

\ No newline at end of file diff --git a/delog/trait.TryLogWithStatistics.html b/delog/trait.TryLogWithStatistics.html index 218b497..776be91 100644 --- a/delog/trait.TryLogWithStatistics.html +++ b/delog/trait.TryLogWithStatistics.html @@ -1,6 +1,6 @@ -TryLogWithStatistics in delog - Rust
pub trait TryLogWithStatistics: TryLog + State<usize> {
+TryLogWithStatistics in delog - Rust
delog

Trait TryLogWithStatistics

source
pub trait TryLogWithStatistics: TryLog + State<usize> {
     // Provided method
     fn statistics(&self) -> Statistics { ... }
 }
Expand description

TryLog with some usage statistics on top.

-

Provided Methods§

source

fn statistics(&self) -> Statistics

Read out statistics on logger usage.

-

Implementors§

\ No newline at end of file +

Provided Methods§

source

fn statistics(&self) -> Statistics

Read out statistics on logger usage.

+

Implementors§

\ No newline at end of file diff --git a/flexiber/all.html b/flexiber/all.html index 054268f..732dfff 100644 --- a/flexiber/all.html +++ b/flexiber/all.html @@ -1 +1 @@ -List of all items in this crate
\ No newline at end of file +List of all items in this crate
\ No newline at end of file diff --git a/flexiber/derive.Decodable.html b/flexiber/derive.Decodable.html index 3b7c4ed..362af9e 100644 --- a/flexiber/derive.Decodable.html +++ b/flexiber/derive.Decodable.html @@ -1,6 +1,6 @@ -Decodable in flexiber - Rust

Derive Macro flexiber::Decodable

source ·
#[derive(Decodable)]
+Decodable in flexiber - Rust
flexiber

Derive Macro Decodable

source
#[derive(Decodable)]
 {
-    // Attributes available to this derive:
+    // Attributes available to this derive:
     #[tlv]
 }
 
Expand description

Derive the Decodable trait on a struct.

diff --git a/flexiber/derive.Encodable.html b/flexiber/derive.Encodable.html index d487286..bc9f909 100644 --- a/flexiber/derive.Encodable.html +++ b/flexiber/derive.Encodable.html @@ -1,6 +1,6 @@ -Encodable in flexiber - Rust

Derive Macro flexiber::Encodable

source ·
#[derive(Encodable)]
+Encodable in flexiber - Rust
flexiber

Derive Macro Encodable

source
#[derive(Encodable)]
 {
-    // Attributes available to this derive:
+    // Attributes available to this derive:
     #[tlv]
 }
 
Expand description

Derive the Encodable trait on a struct.

diff --git a/flexiber/enum.Class.html b/flexiber/enum.Class.html index 4ca16d0..3a890d8 100644 --- a/flexiber/enum.Class.html +++ b/flexiber/enum.Class.html @@ -1,19 +1,19 @@ -Class in flexiber - Rust

Enum flexiber::Class

source ·
#[repr(u8)]
pub enum Class { - Universal, - Application, - Context, - Private, +Class in flexiber - Rust
flexiber

Enum Class

source
#[repr(u8)]
pub enum Class { + Universal = 0, + Application = 1, + Context = 2, + Private = 3, }
Expand description

Class of BER tag.

-

Variants§

§

Universal

§

Application

§

Context

§

Private

Trait Implementations§

source§

impl Clone for Class

source§

fn clone(&self) -> Class

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Class

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq<Class> for Class

source§

fn eq(&self, other: &Class) -> bool

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl TryFrom<u8> for Class

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(value: u8) -> Result<Self>

Performs the conversion.
source§

impl Copy for Class

source§

impl Eq for Class

source§

impl StructuralEq for Class

source§

impl StructuralPartialEq for Class

Auto Trait Implementations§

§

impl RefUnwindSafe for Class

§

impl Send for Class

§

impl Sync for Class

§

impl Unpin for Class

§

impl UnwindSafe for Class

Blanket Implementations§

source§

impl<T> Any for Twhere - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Variants§

§

Universal = 0

§

Application = 1

§

Context = 2

§

Private = 3

Trait Implementations§

source§

impl Clone for Class

source§

fn clone(&self) -> Class

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Class

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for Class

source§

fn eq(&self, other: &Class) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl TryFrom<u8> for Class

source§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(value: u8) -> Result<Self>

Performs the conversion.
source§

impl Copy for Class

source§

impl Eq for Class

source§

impl StructuralPartialEq for Class

Auto Trait Implementations§

§

impl Freeze for Class

§

impl RefUnwindSafe for Class

§

impl Send for Class

§

impl Sync for Class

§

impl Unpin for Class

§

impl UnwindSafe for Class

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where + T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/flexiber/enum.ErrorKind.html b/flexiber/enum.ErrorKind.html index d69e5ef..b728711 100644 --- a/flexiber/enum.ErrorKind.html +++ b/flexiber/enum.ErrorKind.html @@ -1,10 +1,10 @@ -ErrorKind in flexiber - Rust

Enum flexiber::ErrorKind

source ·
#[non_exhaustive]
pub enum ErrorKind { +ErrorKind in flexiber - Rust
flexiber

Enum ErrorKind

source
#[non_exhaustive]
pub enum ErrorKind { Failed, InvalidClass { - value: u8, + value: u8, }, InvalidTag { - byte: u8, + byte: u8, }, InvalidLength, Length { @@ -22,46 +22,46 @@ actual: Length, }, UnexpectedTag { - expected: Option<Tag>, + expected: Option<Tag>, actual: Tag, }, UnsupportedTagSize, }
Expand description

Error type.

-

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Failed

Operation failed due to previous error

-
§

InvalidClass

Fields

§value: u8

Class has more than 2 bytes

-
§

InvalidTag

Fields

§byte: u8

Raw byte value of the tag

-

Invalid tag

-
§

InvalidLength

Length greater than u16::MAX

-
§

Length

Fields

§tag: Tag

Tag type of the value being decoded

-

Incorrect length for a given field

-
§

Overflow

Integer overflow occurred (library bug!)

+

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Failed

Operation failed due to previous error

+
§

InvalidClass

Class has more than 2 bytes

+

Fields

§value: u8
§

InvalidTag

Invalid tag

+

Fields

§byte: u8

Raw byte value of the tag

+
§

InvalidLength

Length greater than u16::MAX

+
§

Length

Incorrect length for a given field

+

Fields

§tag: Tag

Tag type of the value being decoded

+
§

Overflow

Integer overflow occurred (library bug!)

§

Overlength

Message is longer than BER-TLV’s limits support

-
§

TrailingData

Fields

§decoded: Length

Length of the decoded data

-
§remaining: Length

Total length of the remaining data left in the buffer

-

Undecoded trailing data at end of message

-
§

Truncated

Unexpected end-of-message/nested field when decoding

-
§

Underlength

Fields

§expected: Length

Expected length

-
§actual: Length

Actual length

-

Encoded message is shorter than the expected length +

§

TrailingData

Undecoded trailing data at end of message

+

Fields

§decoded: Length

Length of the decoded data

+
§remaining: Length

Total length of the remaining data left in the buffer

+
§

Truncated

Unexpected end-of-message/nested field when decoding

+
§

Underlength

Encoded message is shorter than the expected length (i.e. an Encodable impl on a particular type has a buggy encoded_length)

-
§

UnexpectedTag

Fields

§expected: Option<Tag>

Tag the decoder was expecting (if there is a single such tag).

+

Fields

§expected: Length

Expected length

+
§actual: Length

Actual length

+
§

UnexpectedTag

Unexpected tag

+

Fields

§expected: Option<Tag>

Tag the decoder was expecting (if there is a single such tag).

None if multiple tags are expected/allowed, but the actual tag does not match any of them.

-
§actual: Tag

Actual tag encountered in the message

-

Unexpected tag

-
§

UnsupportedTagSize

Tag does not fit in 3 bytes

-

Implementations§

source§

impl ErrorKind

source

pub fn at(self, position: Length) -> Error

Annotate an ErrorKind with context about where it occurred, +

§actual: Tag

Actual tag encountered in the message

+
§

UnsupportedTagSize

Tag does not fit in 3 bytes

+

Implementations§

source§

impl ErrorKind

source

pub fn at(self, position: Length) -> Error

Annotate an ErrorKind with context about where it occurred, returning an error.

-

Trait Implementations§

source§

impl Clone for ErrorKind

source§

fn clone(&self) -> ErrorKind

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ErrorKind

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for ErrorKind

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<ErrorKind> for Error

source§

fn from(kind: ErrorKind) -> Error

Converts to this type from the input type.
source§

impl PartialEq<ErrorKind> for ErrorKind

source§

fn eq(&self, other: &ErrorKind) -> bool

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl Copy for ErrorKind

source§

impl Eq for ErrorKind

source§

impl StructuralEq for ErrorKind

source§

impl StructuralPartialEq for ErrorKind

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Trait Implementations§

source§

impl Clone for ErrorKind

source§

fn clone(&self) -> ErrorKind

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ErrorKind

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for ErrorKind

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<ErrorKind> for Error

source§

fn from(kind: ErrorKind) -> Error

Converts to this type from the input type.
source§

impl PartialEq for ErrorKind

source§

fn eq(&self, other: &ErrorKind) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl Copy for ErrorKind

source§

impl Eq for ErrorKind

source§

impl StructuralPartialEq for ErrorKind

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where + T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/flexiber/index.html b/flexiber/index.html index cbe1404..06d3c03 100644 --- a/flexiber/index.html +++ b/flexiber/index.html @@ -1,12 +1,12 @@ -flexiber - Rust

Crate flexiber

source ·
Expand description

flexiber

+flexiber - Rust

Crate flexiber

source
Expand description

§flexiber

Implementation of the BER-TLV serialization format from ISO 7816-4:2005.

ITU-T X.690 (08/2015) defines the BER, CER and DER encoding rules for ASN.1

The exact same document is ISO/IET 8825-1, which is freely available, inconveniently packed as a single PDF in a ZIP file :)

-

Credits

+

§Credits

This library is a remix of RustCrypto/utils/der.

The core idea taken from der is to have Encodable require an encoded_length method. By calling this recursively in a first pass, allocations required in other approaches are avoided.

-

Structs

  • BER-TLV decoder.
  • BER-TLV encoder.
  • Error type.
  • BER-TLV-encoded length.
  • These are tags like in SIMPLE-TLV.
  • Slice of at most Length::max() bytes.
  • The tag field consists of a single byte encoding a tag number from 1 to 254. The values ‘00’ and ‘FF’ are invalid.
  • BER-TLV data object.

Enums

Traits

  • Multiple encodables in a container.
  • Decoding trait.
  • Encoding trait.
  • This is the common trait that types to be used as tags -are supposed to implement.
  • Types with an associated BER-TLV Tag.

Type Aliases

Derive Macros

\ No newline at end of file +

Structs§

  • BER-TLV decoder.
  • BER-TLV encoder.
  • Error type.
  • BER-TLV-encoded length.
  • These are tags like in SIMPLE-TLV.
  • Slice of at most Length::max() bytes.
  • The tag field consists of a single byte encoding a tag number from 1 to 254. The values ‘00’ and ‘FF’ are invalid.
  • BER-TLV data object.

Enums§

Traits§

  • Multiple encodables in a container.
  • Decoding trait.
  • Encoding trait.
  • This is the common trait that types to be used as tags +are supposed to implement.
  • Types with an associated BER-TLV Tag.

Type Aliases§

Derive Macros§

\ No newline at end of file diff --git a/flexiber/struct.Decoder.html b/flexiber/struct.Decoder.html index 77b182c..8804467 100644 --- a/flexiber/struct.Decoder.html +++ b/flexiber/struct.Decoder.html @@ -1,30 +1,30 @@ -Decoder in flexiber - Rust

Struct flexiber::Decoder

source ·
pub struct Decoder<'a> { /* private fields */ }
Expand description

BER-TLV decoder.

-

Implementations§

source§

impl<'a> Decoder<'a>

source

pub fn new(bytes: &'a [u8]) -> Self

Create a new decoder for the given byte slice.

+Decoder in flexiber - Rust
flexiber

Struct Decoder

source
pub struct Decoder<'a> { /* private fields */ }
Expand description

BER-TLV decoder.

+

Implementations§

source§

impl<'a> Decoder<'a>

source

pub fn new(bytes: &'a [u8]) -> Self

Create a new decoder for the given byte slice.

source

pub fn decode<T: Decodable<'a>>(&mut self) -> Result<T>

Decode a value which impls the Decodable trait.

-
source

pub fn decode_tagged_value<T: Decodable<'a> + TagLike, V: Decodable<'a>>( +

source

pub fn decode_tagged_value<T: Decodable<'a> + TagLike, V: Decodable<'a>>( &mut self, - tag: T + tag: T, ) -> Result<V>

Decode a TaggedValue with tag checked to be as expected, returning the value

-
source

pub fn decode_tagged_slice<T: Decodable<'a> + TagLike>( +

source

pub fn decode_tagged_slice<T: Decodable<'a> + TagLike>( &mut self, - tag: T -) -> Result<&'a [u8]>

Decode a TaggedSlice with tag checked to be as expected, returning the value

-
source

pub fn error<T>(&mut self, kind: ErrorKind) -> Result<T>

Return an error with the given ErrorKind, annotating it with + tag: T, +) -> Result<&'a [u8]>

Decode a TaggedSlice with tag checked to be as expected, returning the value

+
source

pub fn error<T>(&mut self, kind: ErrorKind) -> Result<T>

Return an error with the given ErrorKind, annotating it with context about where the error occurred.

-
source

pub fn is_failed(&self) -> bool

Did the decoding operation fail due to an error?

-
source

pub fn finish<T>(self, value: T) -> Result<T>

Finish decoding, returning the given value if there is no +

source

pub fn is_failed(&self) -> bool

Did the decoding operation fail due to an error?

+
source

pub fn finish<T>(self, value: T) -> Result<T>

Finish decoding, returning the given value if there is no remaining data, or an error otherwise

-
source

pub fn is_finished(&self) -> bool

Have we decoded all of the bytes in this Decoder?

+
source

pub fn is_finished(&self) -> bool

Have we decoded all of the bytes in this Decoder?

Returns false if we’re not finished decoding or if a fatal error has occurred.

-

Trait Implementations§

source§

impl<'a> Debug for Decoder<'a>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'a> From<&'a [u8]> for Decoder<'a>

source§

fn from(bytes: &'a [u8]) -> Decoder<'a>

Converts to this type from the input type.

Auto Trait Implementations§

§

impl<'a> RefUnwindSafe for Decoder<'a>

§

impl<'a> Send for Decoder<'a>

§

impl<'a> Sync for Decoder<'a>

§

impl<'a> Unpin for Decoder<'a>

§

impl<'a> UnwindSafe for Decoder<'a>

Blanket Implementations§

source§

impl<T> Any for Twhere - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Trait Implementations§

source§

impl<'a> Debug for Decoder<'a>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'a> From<&'a [u8]> for Decoder<'a>

source§

fn from(bytes: &'a [u8]) -> Decoder<'a>

Converts to this type from the input type.

Auto Trait Implementations§

§

impl<'a> Freeze for Decoder<'a>

§

impl<'a> RefUnwindSafe for Decoder<'a>

§

impl<'a> Send for Decoder<'a>

§

impl<'a> Sync for Decoder<'a>

§

impl<'a> Unpin for Decoder<'a>

§

impl<'a> UnwindSafe for Decoder<'a>

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/flexiber/struct.Encoder.html b/flexiber/struct.Encoder.html index e460c73..3b6a459 100644 --- a/flexiber/struct.Encoder.html +++ b/flexiber/struct.Encoder.html @@ -1,28 +1,28 @@ -Encoder in flexiber - Rust

Struct flexiber::Encoder

source ·
pub struct Encoder<'a> { /* private fields */ }
Expand description

BER-TLV encoder.

-

Implementations§

source§

impl<'a> Encoder<'a>

source

pub fn new(bytes: &'a mut [u8]) -> Self

Create a new encoder with the given byte slice as a backing buffer.

-
source

pub fn encode<T: Encodable>(&mut self, encodable: &T) -> Result<()>

Encode a value which impls the Encodable trait.

+Encoder in flexiber - Rust
flexiber

Struct Encoder

source
pub struct Encoder<'a> { /* private fields */ }
Expand description

BER-TLV encoder.

+

Implementations§

source§

impl<'a> Encoder<'a>

source

pub fn new(bytes: &'a mut [u8]) -> Self

Create a new encoder with the given byte slice as a backing buffer.

+
source

pub fn encode<T: Encodable>(&mut self, encodable: &T) -> Result<()>

Encode a value which impls the Encodable trait.

source

pub fn error<T>(&mut self, kind: ErrorKind) -> Result<T>

Return an error with the given ErrorKind, annotating it with context about where the error occurred.

-
source

pub fn is_failed(&self) -> bool

Did the decoding operation fail due to an error?

-
source

pub fn finish(self) -> Result<&'a [u8]>

Finish encoding to the buffer, returning a slice containing the data +

source

pub fn is_failed(&self) -> bool

Did the decoding operation fail due to an error?

+
source

pub fn finish(self) -> Result<&'a [u8]>

Finish encoding to the buffer, returning a slice containing the data written to the buffer.

-
source

pub fn encode_tagged_collection( +

source

pub fn encode_tagged_collection( &mut self, tag: Tag, - encodables: &[&dyn Encodable] -) -> Result<()>

Encode a collection of values which impl the Encodable trait under a given tag.

-
source

pub fn encode_untagged_collection( + encodables: &[&dyn Encodable], +) -> Result<()>

Encode a collection of values which impl the Encodable trait under a given tag.

+
source

pub fn encode_untagged_collection( &mut self, - encodables: &[&dyn Encodable] -) -> Result<()>

Encode a collection of values which impl the Encodable trait under a given tag.

-

Trait Implementations§

source§

impl<'a> Debug for Encoder<'a>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> RefUnwindSafe for Encoder<'a>

§

impl<'a> Send for Encoder<'a>

§

impl<'a> Sync for Encoder<'a>

§

impl<'a> Unpin for Encoder<'a>

§

impl<'a> !UnwindSafe for Encoder<'a>

Blanket Implementations§

source§

impl<T> Any for Twhere - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+ encodables: &[&dyn Encodable], +) -> Result<()>

Encode a collection of values which impl the Encodable trait under a given tag.

+

Trait Implementations§

source§

impl<'a> Debug for Encoder<'a>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for Encoder<'a>

§

impl<'a> RefUnwindSafe for Encoder<'a>

§

impl<'a> Send for Encoder<'a>

§

impl<'a> Sync for Encoder<'a>

§

impl<'a> Unpin for Encoder<'a>

§

impl<'a> !UnwindSafe for Encoder<'a>

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/flexiber/struct.Error.html b/flexiber/struct.Error.html index a87fc13..28a9497 100644 --- a/flexiber/struct.Error.html +++ b/flexiber/struct.Error.html @@ -1,19 +1,19 @@ -Error in flexiber - Rust

Struct flexiber::Error

source ·
pub struct Error { /* private fields */ }
Expand description

Error type.

-

Implementations§

source§

impl Error

source

pub fn new(kind: ErrorKind, position: Length) -> Error

Create a new Error

+Error in flexiber - Rust
flexiber

Struct Error

source
pub struct Error { /* private fields */ }
Expand description

Error type.

+

Implementations§

source§

impl Error

source

pub fn new(kind: ErrorKind, position: Length) -> Error

Create a new Error

source

pub fn kind(self) -> ErrorKind

Get the ErrorKind which occurred.

-
source

pub fn position(self) -> Option<Length>

Get the position inside of the message where the error occurred.

+
source

pub fn position(self) -> Option<Length>

Get the position inside of the message where the error occurred.

source

pub fn nested(self, nested_position: Length) -> Self

For errors occurring inside of a nested message, extend the position count by the location where the nested message occurs.

-

Trait Implementations§

source§

impl Clone for Error

source§

fn clone(&self) -> Error

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<ErrorKind> for Error

source§

fn from(kind: ErrorKind) -> Error

Converts to this type from the input type.
source§

impl From<Infallible> for Error

source§

fn from(_: Infallible) -> Error

Converts to this type from the input type.
source§

impl PartialEq<Error> for Error

source§

fn eq(&self, other: &Error) -> bool

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl Copy for Error

source§

impl Eq for Error

source§

impl StructuralEq for Error

source§

impl StructuralPartialEq for Error

Auto Trait Implementations§

§

impl RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl UnwindSafe for Error

Blanket Implementations§

source§

impl<T> Any for Twhere - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Trait Implementations§

source§

impl Clone for Error

source§

fn clone(&self) -> Error

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<ErrorKind> for Error

source§

fn from(kind: ErrorKind) -> Error

Converts to this type from the input type.
source§

impl From<Infallible> for Error

source§

fn from(_: Infallible) -> Error

Converts to this type from the input type.
source§

impl PartialEq for Error

source§

fn eq(&self, other: &Error) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl Copy for Error

source§

impl Eq for Error

source§

impl StructuralPartialEq for Error

Auto Trait Implementations§

§

impl Freeze for Error

§

impl RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl UnwindSafe for Error

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where + T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/flexiber/struct.Length.html b/flexiber/struct.Length.html index 0b3441f..9d83cf5 100644 --- a/flexiber/struct.Length.html +++ b/flexiber/struct.Length.html @@ -1,4 +1,4 @@ -Length in flexiber - Rust

Struct flexiber::Length

source ·
pub struct Length(/* private fields */);
Expand description

BER-TLV-encoded length.

+Length in flexiber - Rust
flexiber

Struct Length

source
pub struct Length(/* private fields */);
Expand description

BER-TLV-encoded length.

By definition, in the range 0..=65535

The length field consists of one or three consecutive bytes.

    @@ -7,26 +7,27 @@ zero to 254.
  • If the first byte is 0xFF, then the length field consists of the subsequent two bytes interpreted as big-endian integer, with any value from zero to 65,535.
-

Implementations§

source§

impl Length

source

pub const fn zero() -> Self

Return a length of 0.

-
source

pub const fn max() -> usize

Get the maximum length supported by BER-TLV: 65,535.

-
source

pub fn to_usize(self) -> usize

Convert length to usize.

-

Trait Implementations§

source§

impl Add<Length> for Length

§

type Output = Result<Length, Error>

The resulting type after applying the + operator.
source§

fn add(self, other: Self) -> Result<Self>

Performs the + operation. Read more
source§

impl Add<Length> for Result<Length>

§

type Output = Result<Length, Error>

The resulting type after applying the + operator.
source§

fn add(self, other: Length) -> Self

Performs the + operation. Read more
source§

impl Add<u16> for Length

§

type Output = Result<Length, Error>

The resulting type after applying the + operator.
source§

fn add(self, other: u16) -> Result<Self>

Performs the + operation. Read more
source§

impl Add<u8> for Length

§

type Output = Result<Length, Error>

The resulting type after applying the + operator.
source§

fn add(self, other: u8) -> Result<Self>

Performs the + operation. Read more
source§

impl Add<usize> for Length

§

type Output = Result<Length, Error>

The resulting type after applying the + operator.
source§

fn add(self, other: usize) -> Result<Self>

Performs the + operation. Read more
source§

impl Clone for Length

source§

fn clone(&self) -> Length

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Length

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Decodable<'_> for Length

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Length>

Attempt to decode this message using the provided decoder.
source§

fn from_bytes(bytes: &'a [u8]) -> Result<Self>

Parse Self from the provided byte slice.
source§

impl Default for Length

source§

fn default() -> Length

Returns the “default value” for a type. Read more
source§

impl Display for Length

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Encodable for Length

source§

fn encoded_length(&self) -> Result<Length>

Compute the length of this value in bytes when encoded as BER-TLV
source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.
source§

fn encode_to_slice<'a>(&self, buf: &'a mut [u8]) -> Result<&'a [u8]>

Encode this value to the provided byte slice, returning a sub-slice -containing the encoded message.
source§

impl From<Length> for u16

source§

fn from(len: Length) -> u16

Converts to this type from the input type.
source§

impl From<Length> for usize

source§

fn from(len: Length) -> usize

Converts to this type from the input type.
source§

impl From<u16> for Length

source§

fn from(len: u16) -> Length

Converts to this type from the input type.
source§

impl From<u8> for Length

source§

fn from(len: u8) -> Length

Converts to this type from the input type.
source§

impl Ord for Length

source§

fn cmp(&self, other: &Length) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

Restrict a value to a certain interval. Read more
source§

impl PartialEq<Length> for Length

source§

fn eq(&self, other: &Length) -> bool

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd<Length> for Length

source§

fn partial_cmp(&self, other: &Length) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
source§

impl<'a> TryFrom<&'a [&'a dyn Encodable]> for Length

Calculate the sum of the encoded lengths of the encodables.

-
§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(encodables: &[&dyn Encodable]) -> Result<Length>

Performs the conversion.
source§

impl TryFrom<usize> for Length

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(len: usize) -> Result<Length>

Performs the conversion.
source§

impl Copy for Length

source§

impl Eq for Length

source§

impl StructuralEq for Length

source§

impl StructuralPartialEq for Length

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Implementations§

source§

impl Length

source

pub const fn zero() -> Self

Return a length of 0.

+
source

pub const fn max() -> usize

Get the maximum length supported by BER-TLV: 65,535.

+
source

pub fn to_usize(self) -> usize

Convert length to usize.

+

Trait Implementations§

source§

impl Add<Length> for Result<Length>

source§

type Output = Result<Length, Error>

The resulting type after applying the + operator.
source§

fn add(self, other: Length) -> Self

Performs the + operation. Read more
source§

impl Add<u16> for Length

source§

type Output = Result<Length, Error>

The resulting type after applying the + operator.
source§

fn add(self, other: u16) -> Result<Self>

Performs the + operation. Read more
source§

impl Add<u8> for Length

source§

type Output = Result<Length, Error>

The resulting type after applying the + operator.
source§

fn add(self, other: u8) -> Result<Self>

Performs the + operation. Read more
source§

impl Add<usize> for Length

source§

type Output = Result<Length, Error>

The resulting type after applying the + operator.
source§

fn add(self, other: usize) -> Result<Self>

Performs the + operation. Read more
source§

impl Add for Length

source§

type Output = Result<Length, Error>

The resulting type after applying the + operator.
source§

fn add(self, other: Self) -> Result<Self>

Performs the + operation. Read more
source§

impl Clone for Length

source§

fn clone(&self) -> Length

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Length

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Decodable<'_> for Length

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Length>

Attempt to decode this message using the provided decoder.
source§

fn from_bytes(bytes: &'a [u8]) -> Result<Self>

Parse Self from the provided byte slice.
source§

impl Default for Length

source§

fn default() -> Length

Returns the “default value” for a type. Read more
source§

impl Display for Length

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Encodable for Length

source§

fn encoded_length(&self) -> Result<Length>

Compute the length of this value in bytes when encoded as BER-TLV
source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.
source§

fn encode_to_slice<'a>(&self, buf: &'a mut [u8]) -> Result<&'a [u8]>

Encode this value to the provided byte slice, returning a sub-slice +containing the encoded message.
source§

impl From<Length> for u16

source§

fn from(len: Length) -> u16

Converts to this type from the input type.
source§

impl From<Length> for usize

source§

fn from(len: Length) -> usize

Converts to this type from the input type.
source§

impl From<u16> for Length

source§

fn from(len: u16) -> Length

Converts to this type from the input type.
source§

impl From<u8> for Length

source§

fn from(len: u8) -> Length

Converts to this type from the input type.
source§

impl Ord for Length

source§

fn cmp(&self, other: &Length) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where + Self: Sized,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for Length

source§

fn eq(&self, other: &Length) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl PartialOrd for Length

source§

fn partial_cmp(&self, other: &Length) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the +<= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > +operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by +the >= operator. Read more
source§

impl<'a> TryFrom<&'a [&'a dyn Encodable]> for Length

Calculate the sum of the encoded lengths of the encodables.

+
source§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(encodables: &[&dyn Encodable]) -> Result<Length>

Performs the conversion.
source§

impl TryFrom<usize> for Length

source§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(len: usize) -> Result<Length>

Performs the conversion.
source§

impl Copy for Length

source§

impl Eq for Length

source§

impl StructuralPartialEq for Length

Auto Trait Implementations§

§

impl Freeze for Length

§

impl RefUnwindSafe for Length

§

impl Send for Length

§

impl Sync for Length

§

impl Unpin for Length

§

impl UnwindSafe for Length

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where + T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/flexiber/struct.SimpleTag.html b/flexiber/struct.SimpleTag.html index 71b28ef..867b601 100644 --- a/flexiber/struct.SimpleTag.html +++ b/flexiber/struct.SimpleTag.html @@ -1,20 +1,20 @@ -SimpleTag in flexiber - Rust

Struct flexiber::SimpleTag

source ·
pub struct SimpleTag(/* private fields */);
Expand description

These are tags like in SIMPLE-TLV.

+SimpleTag in flexiber - Rust
flexiber

Struct SimpleTag

source
pub struct SimpleTag(/* private fields */);
Expand description

These are tags like in SIMPLE-TLV.

The tag field consists of a single byte encoding a tag number from 1 to 254. The values ‘00’ and ‘FF’ are invalid.

The use case is that PIV (FIPS 201) data objects generally use BER-TLV, but, for historical reasons, label entries with “simple” tags (in particular, tag numbers larger than 30 are still encoded as single bytes.

-

Trait Implementations§

source§

impl Clone for SimpleTag

source§

fn clone(&self) -> SimpleTag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Decodable<'_> for SimpleTag

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

Attempt to decode this message using the provided decoder.
source§

fn from_bytes(bytes: &'a [u8]) -> Result<Self>

Parse Self from the provided byte slice.
source§

impl Encodable for SimpleTag

source§

fn encoded_length(&self) -> Result<Length>

Compute the length of this value in bytes when encoded as BER-TLV
source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.
source§

fn encode_to_slice<'a>(&self, buf: &'a mut [u8]) -> Result<&'a [u8]>

Encode this value to the provided byte slice, returning a sub-slice -containing the encoded message.
source§

impl PartialEq<SimpleTag> for SimpleTag

source§

fn eq(&self, other: &SimpleTag) -> bool

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl TagLike for SimpleTag

source§

fn embedding(self) -> Tag

To stick with one Error type, make sure the tag type can somehow -or other be coerced into a BerTag.
source§

fn assert_eq(self, expected: Self) -> Result<Self>

Assert that this Tag matches the provided expected tag. Read more
source§

fn with_value<V>(self, value: V) -> TaggedValue<V, Self>

Ergonomic way to get a TaggedValue for a given tag and value
source§

impl TryFrom<u8> for SimpleTag

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(tag_number: u8) -> Result<Self>

Performs the conversion.
source§

impl Copy for SimpleTag

source§

impl Eq for SimpleTag

source§

impl StructuralEq for SimpleTag

source§

impl StructuralPartialEq for SimpleTag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Trait Implementations§

source§

impl Clone for SimpleTag

source§

fn clone(&self) -> SimpleTag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Decodable<'_> for SimpleTag

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

Attempt to decode this message using the provided decoder.
source§

fn from_bytes(bytes: &'a [u8]) -> Result<Self>

Parse Self from the provided byte slice.
source§

impl Encodable for SimpleTag

source§

fn encoded_length(&self) -> Result<Length>

Compute the length of this value in bytes when encoded as BER-TLV
source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.
source§

fn encode_to_slice<'a>(&self, buf: &'a mut [u8]) -> Result<&'a [u8]>

Encode this value to the provided byte slice, returning a sub-slice +containing the encoded message.
source§

impl PartialEq for SimpleTag

source§

fn eq(&self, other: &SimpleTag) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl TagLike for SimpleTag

source§

fn embedding(self) -> Tag

To stick with one Error type, make sure the tag type can somehow +or other be coerced into a BerTag.
source§

fn assert_eq(self, expected: Self) -> Result<Self>

Assert that this Tag matches the provided expected tag. Read more
source§

fn with_value<V>(self, value: V) -> TaggedValue<V, Self>

Ergonomic way to get a TaggedValue for a given tag and value
source§

impl TryFrom<u8> for SimpleTag

source§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(tag_number: u8) -> Result<Self>

Performs the conversion.
source§

impl Copy for SimpleTag

source§

impl Eq for SimpleTag

source§

impl StructuralPartialEq for SimpleTag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where + T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/flexiber/struct.Slice.html b/flexiber/struct.Slice.html index 5c4f42e..e808ed4 100644 --- a/flexiber/struct.Slice.html +++ b/flexiber/struct.Slice.html @@ -1,19 +1,19 @@ -Slice in flexiber - Rust

Struct flexiber::Slice

source ·
pub struct Slice<'a> { /* private fields */ }
Expand description

Slice of at most Length::max() bytes.

-

Implementations§

source§

impl<'a> Slice<'a>

source

pub fn new(slice: &'a [u8]) -> Result<Self>

Create a new Slice, ensuring that the provided slice value +Slice in flexiber - Rust

flexiber

Struct Slice

source
pub struct Slice<'a> { /* private fields */ }
Expand description

Slice of at most Length::max() bytes.

+

Implementations§

source§

impl<'a> Slice<'a>

source

pub fn new(slice: &'a [u8]) -> Result<Self>

Create a new Slice, ensuring that the provided slice value is shorter than Length::max().

-
source

pub fn as_bytes(&self) -> &'a [u8]

Borrow the inner byte slice

+
source

pub fn as_bytes(&self) -> &'a [u8]

Borrow the inner byte slice

source

pub fn length(self) -> Length

Get the Length of this Slice

-
source

pub fn is_empty(self) -> bool

Is this Slice empty?

-

Trait Implementations§

source§

impl AsRef<[u8]> for Slice<'_>

source§

fn as_ref(&self) -> &[u8]

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl<'a> Clone for Slice<'a>

source§

fn clone(&self) -> Slice<'a>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<'a> Debug for Slice<'a>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'a> PartialEq<Slice<'a>> for Slice<'a>

source§

fn eq(&self, other: &Slice<'a>) -> bool

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl<'a> Copy for Slice<'a>

source§

impl<'a> Eq for Slice<'a>

source§

impl<'a> StructuralEq for Slice<'a>

source§

impl<'a> StructuralPartialEq for Slice<'a>

Auto Trait Implementations§

§

impl<'a> RefUnwindSafe for Slice<'a>

§

impl<'a> Send for Slice<'a>

§

impl<'a> Sync for Slice<'a>

§

impl<'a> Unpin for Slice<'a>

§

impl<'a> UnwindSafe for Slice<'a>

Blanket Implementations§

source§

impl<T> Any for Twhere - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+
source

pub fn is_empty(self) -> bool

Is this Slice empty?

+

Trait Implementations§

source§

impl AsRef<[u8]> for Slice<'_>

source§

fn as_ref(&self) -> &[u8]

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl<'a> Clone for Slice<'a>

source§

fn clone(&self) -> Slice<'a>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<'a> Debug for Slice<'a>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'a> PartialEq for Slice<'a>

source§

fn eq(&self, other: &Slice<'a>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl<'a> Copy for Slice<'a>

source§

impl<'a> Eq for Slice<'a>

source§

impl<'a> StructuralPartialEq for Slice<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Slice<'a>

§

impl<'a> RefUnwindSafe for Slice<'a>

§

impl<'a> Send for Slice<'a>

§

impl<'a> Sync for Slice<'a>

§

impl<'a> Unpin for Slice<'a>

§

impl<'a> UnwindSafe for Slice<'a>

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where + T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/flexiber/struct.Tag.html b/flexiber/struct.Tag.html index 6aaa530..79aacc0 100644 --- a/flexiber/struct.Tag.html +++ b/flexiber/struct.Tag.html @@ -1,20 +1,20 @@ -Tag in flexiber - Rust

Struct flexiber::Tag

source ·
pub struct Tag {
+Tag in flexiber - Rust
flexiber

Struct Tag

source
pub struct Tag {
     pub class: Class,
-    pub constructed: bool,
-    pub number: u16,
+    pub constructed: bool,
+    pub number: u16,
 }
Expand description

The tag field consists of a single byte encoding a tag number from 1 to 254. The values ‘00’ and ‘FF’ are invalid.

-

Fields§

§class: Class§constructed: bool§number: u16

Implementations§

source§

impl Tag

source

pub const BOOLEAN: Self = _

source

pub const INTEGER: Self = _

source

pub const BIT_STRING: Self = _

source

pub const OCTET_STRING: Self = _

source

pub const NULL: Self = _

source

pub const OBJECT_IDENTIFIER: Self = _

source

pub const UTF8_STRING: Self = _

source

pub const PRINTABLE_STRING: Self = _

source

pub const UTC_TIME: Self = _

source

pub const GENERALIZED_TIME: Self = _

source

pub const SEQUENCE: Self = _

source

pub const SET: Self = _

source

pub fn from(class: Class, constructed: bool, number: u16) -> Self

source

pub const fn universal(number: u16) -> Self

source

pub const fn application(number: u16) -> Self

source

pub const fn context(number: u16) -> Self

source

pub const fn private(number: u16) -> Self

source

pub const fn constructed(self) -> Self

Trait Implementations§

source§

impl Clone for Tag

source§

fn clone(&self) -> Tag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Tag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Decodable<'_> for Tag

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

Attempt to decode this message using the provided decoder.
source§

fn from_bytes(bytes: &'a [u8]) -> Result<Self>

Parse Self from the provided byte slice.
source§

impl Display for Tag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Encodable for Tag

source§

fn encoded_length(&self) -> Result<Length>

Compute the length of this value in bytes when encoded as BER-TLV
source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.
source§

fn encode_to_slice<'a>(&self, buf: &'a mut [u8]) -> Result<&'a [u8]>

Encode this value to the provided byte slice, returning a sub-slice -containing the encoded message.
source§

impl PartialEq<Tag> for Tag

source§

fn eq(&self, other: &Tag) -> bool

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl TagLike for Tag

source§

fn embedding(self) -> Tag

To stick with one Error type, make sure the tag type can somehow -or other be coerced into a BerTag.
source§

fn assert_eq(self, expected: Self) -> Result<Self>

Assert that this Tag matches the provided expected tag. Read more
source§

fn with_value<V>(self, value: V) -> TaggedValue<V, Self>

Ergonomic way to get a TaggedValue for a given tag and value
source§

impl TryFrom<&[u8]> for Tag

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(encoding: &[u8]) -> Result<Self>

Performs the conversion.
source§

impl TryFrom<u8> for Tag

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(encoded_value: u8) -> Result<Self>

Performs the conversion.
source§

impl Copy for Tag

source§

impl Eq for Tag

source§

impl StructuralEq for Tag

source§

impl StructuralPartialEq for Tag

Auto Trait Implementations§

§

impl RefUnwindSafe for Tag

§

impl Send for Tag

§

impl Sync for Tag

§

impl Unpin for Tag

§

impl UnwindSafe for Tag

Blanket Implementations§

source§

impl<T> Any for Twhere - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Fields§

§class: Class§constructed: bool§number: u16

Implementations§

source§

impl Tag

source

pub const BOOLEAN: Self = _

source

pub const INTEGER: Self = _

source

pub const BIT_STRING: Self = _

source

pub const OCTET_STRING: Self = _

source

pub const NULL: Self = _

source

pub const OBJECT_IDENTIFIER: Self = _

source

pub const UTF8_STRING: Self = _

source

pub const PRINTABLE_STRING: Self = _

source

pub const UTC_TIME: Self = _

source

pub const GENERALIZED_TIME: Self = _

source

pub const SEQUENCE: Self = _

source

pub const SET: Self = _

source

pub fn from(class: Class, constructed: bool, number: u16) -> Self

source

pub const fn universal(number: u16) -> Self

source

pub const fn application(number: u16) -> Self

source

pub const fn context(number: u16) -> Self

source

pub const fn private(number: u16) -> Self

source

pub const fn constructed(self) -> Self

Trait Implementations§

source§

impl Clone for Tag

source§

fn clone(&self) -> Tag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Tag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Decodable<'_> for Tag

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

Attempt to decode this message using the provided decoder.
source§

fn from_bytes(bytes: &'a [u8]) -> Result<Self>

Parse Self from the provided byte slice.
source§

impl Display for Tag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Encodable for Tag

source§

fn encoded_length(&self) -> Result<Length>

Compute the length of this value in bytes when encoded as BER-TLV
source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.
source§

fn encode_to_slice<'a>(&self, buf: &'a mut [u8]) -> Result<&'a [u8]>

Encode this value to the provided byte slice, returning a sub-slice +containing the encoded message.
source§

impl PartialEq for Tag

source§

fn eq(&self, other: &Tag) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl TagLike for Tag

source§

fn embedding(self) -> Tag

To stick with one Error type, make sure the tag type can somehow +or other be coerced into a BerTag.
source§

fn assert_eq(self, expected: Self) -> Result<Self>

Assert that this Tag matches the provided expected tag. Read more
source§

fn with_value<V>(self, value: V) -> TaggedValue<V, Self>

Ergonomic way to get a TaggedValue for a given tag and value
source§

impl TryFrom<&[u8]> for Tag

source§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(encoding: &[u8]) -> Result<Self>

Performs the conversion.
source§

impl TryFrom<u8> for Tag

source§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(encoded_value: u8) -> Result<Self>

Performs the conversion.
source§

impl Copy for Tag

source§

impl Eq for Tag

source§

impl StructuralPartialEq for Tag

Auto Trait Implementations§

§

impl Freeze for Tag

§

impl RefUnwindSafe for Tag

§

impl Send for Tag

§

impl Sync for Tag

§

impl Unpin for Tag

§

impl UnwindSafe for Tag

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where + T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/flexiber/struct.TaggedValue.html b/flexiber/struct.TaggedValue.html index 1059ba0..972df30 100644 --- a/flexiber/struct.TaggedValue.html +++ b/flexiber/struct.TaggedValue.html @@ -1,37 +1,39 @@ -TaggedValue in flexiber - Rust

Struct flexiber::TaggedValue

source ·
pub struct TaggedValue<V, T = Tag> { /* private fields */ }
Expand description

BER-TLV data object.

-

Implementations§

source§

impl<V, T> TaggedValue<V, T>where - T: Copy,

source

pub fn new(tag: T, value: V) -> Self

source

pub fn tag(&self) -> T

source§

impl<'a, T> TaggedValue<Slice<'a>, T>where - T: Copy,

source

pub fn from(tag: T, slice: &'a [u8]) -> Result<Self>

Create a new tagged slice, checking lengths.

-
source

pub fn as_bytes(&self) -> &'a [u8]

Borrow the inner byte slice.

-
source

pub fn length(&self) -> Length

Get the length of the inner byte slice.

-
source

pub fn is_empty(&self) -> bool

Is the inner byte slice empty?

-
source

pub fn decode_nested<F, R>(&self, f: F) -> Result<R>where - F: FnOnce(&mut Decoder<'a>) -> Result<R>,

Decode nested values, creating a new Decoder for +TaggedValue in flexiber - Rust

flexiber

Struct TaggedValue

source
pub struct TaggedValue<V, T = Tag> { /* private fields */ }
Expand description

BER-TLV data object.

+

Implementations§

source§

impl<V, T> TaggedValue<V, T>
where + T: Copy,

source

pub fn new(tag: T, value: V) -> Self

source

pub fn tag(&self) -> T

source§

impl<'a, T> TaggedValue<Slice<'a>, T>
where + T: Copy,

source

pub fn from(tag: T, slice: &'a [u8]) -> Result<Self>

Create a new tagged slice, checking lengths.

+
source

pub fn as_bytes(&self) -> &'a [u8]

Borrow the inner byte slice.

+
source

pub fn length(&self) -> Length

Get the length of the inner byte slice.

+
source

pub fn is_empty(&self) -> bool

Is the inner byte slice empty?

+
source

pub fn decode_nested<F, R>(&self, f: F) -> Result<R>
where + F: FnOnce(&mut Decoder<'a>) -> Result<R>,

Decode nested values, creating a new Decoder for the data contained in the sequence’s body and passing it to the provided -FnOnce.

-

Trait Implementations§

source§

impl<V: Clone, T: Clone> Clone for TaggedValue<V, T>

source§

fn clone(&self) -> TaggedValue<V, T>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<V: Debug, T: Debug> Debug for TaggedValue<V, T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'a, E, T> Encodable for TaggedValue<&'a E, T>where +FnOnce.

+

Trait Implementations§

source§

impl<V: Clone, T: Clone> Clone for TaggedValue<V, T>

source§

fn clone(&self) -> TaggedValue<V, T>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<V: Debug, T: Debug> Debug for TaggedValue<V, T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<E, T> Encodable for TaggedValue<&E, T>
where E: Encodable, - T: Copy + Encodable,

source§

fn encoded_length(&self) -> Result<Length>

Compute the length of this value in bytes when encoded as BER-TLV
source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.
source§

fn encode_to_slice<'a>(&self, buf: &'a mut [u8]) -> Result<&'a [u8]>

Encode this value to the provided byte slice, returning a sub-slice -containing the encoded message.
source§

impl<V: PartialEq, T: PartialEq> PartialEq<TaggedValue<V, T>> for TaggedValue<V, T>

source§

fn eq(&self, other: &TaggedValue<V, T>) -> bool

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl<V: Copy, T: Copy> Copy for TaggedValue<V, T>

source§

impl<V: Eq, T: Eq> Eq for TaggedValue<V, T>

source§

impl<V, T> StructuralEq for TaggedValue<V, T>

source§

impl<V, T> StructuralPartialEq for TaggedValue<V, T>

Auto Trait Implementations§

§

impl<V, T> RefUnwindSafe for TaggedValue<V, T>where - T: RefUnwindSafe, - V: RefUnwindSafe,

§

impl<V, T> Send for TaggedValue<V, T>where - T: Send, - V: Send,

§

impl<V, T> Sync for TaggedValue<V, T>where - T: Sync, - V: Sync,

§

impl<V, T> Unpin for TaggedValue<V, T>where - T: Unpin, - V: Unpin,

§

impl<V, T> UnwindSafe for TaggedValue<V, T>where - T: UnwindSafe, - V: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+ T: Copy + Encodable,
source§

fn encoded_length(&self) -> Result<Length>

Compute the length of this value in bytes when encoded as BER-TLV
source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.
source§

fn encode_to_slice<'a>(&self, buf: &'a mut [u8]) -> Result<&'a [u8]>

Encode this value to the provided byte slice, returning a sub-slice +containing the encoded message.
source§

impl<V: PartialEq, T: PartialEq> PartialEq for TaggedValue<V, T>

source§

fn eq(&self, other: &TaggedValue<V, T>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl<V: Copy, T: Copy> Copy for TaggedValue<V, T>

source§

impl<V: Eq, T: Eq> Eq for TaggedValue<V, T>

source§

impl<V, T> StructuralPartialEq for TaggedValue<V, T>

Auto Trait Implementations§

§

impl<V, T> Freeze for TaggedValue<V, T>
where + T: Freeze, + V: Freeze,

§

impl<V, T> RefUnwindSafe for TaggedValue<V, T>
where + T: RefUnwindSafe, + V: RefUnwindSafe,

§

impl<V, T> Send for TaggedValue<V, T>
where + T: Send, + V: Send,

§

impl<V, T> Sync for TaggedValue<V, T>
where + T: Sync, + V: Sync,

§

impl<V, T> Unpin for TaggedValue<V, T>
where + T: Unpin, + V: Unpin,

§

impl<V, T> UnwindSafe for TaggedValue<V, T>
where + T: UnwindSafe, + V: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where + T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/flexiber/trait.Container.html b/flexiber/trait.Container.html index 56da403..5bf7bc5 100644 --- a/flexiber/trait.Container.html +++ b/flexiber/trait.Container.html @@ -1,13 +1,13 @@ -Container in flexiber - Rust

Trait flexiber::Container

source ·
pub trait Container {
+Container in flexiber - Rust
flexiber

Trait Container

source
pub trait Container {
     // Required method
     fn fields<F, T>(&self, f: F) -> Result<T>
-       where F: FnOnce(&[&dyn Encodable]) -> Result<T>;
+       where F: FnOnce(&[&dyn Encodable]) -> Result<T>;
 }
Expand description

Multiple encodables in a container.

A container implementing Tagged has a blanked implementation of Encodable.

-

Required Methods§

source

fn fields<F, T>(&self, f: F) -> Result<T>where - F: FnOnce(&[&dyn Encodable]) -> Result<T>,

Call the provided function with a slice of Encodable trait objects +

Required Methods§

source

fn fields<F, T>(&self, f: F) -> Result<T>
where + F: FnOnce(&[&dyn Encodable]) -> Result<T>,

Call the provided function with a slice of Encodable trait objects representing the fields of this message.

This method uses a callback because structs with fields which aren’t directly Encodable may need to construct temporary values from their fields prior to encoding.

-

Implementors§

\ No newline at end of file +

Object Safety§

This trait is not object safe.

Implementors§

\ No newline at end of file diff --git a/flexiber/trait.Decodable.html b/flexiber/trait.Decodable.html index 4d149a7..fa3ddf8 100644 --- a/flexiber/trait.Decodable.html +++ b/flexiber/trait.Decodable.html @@ -1,17 +1,17 @@ -Decodable in flexiber - Rust

Trait flexiber::Decodable

source ·
pub trait Decodable<'a>: Sized {
+Decodable in flexiber - Rust
flexiber

Trait Decodable

source
pub trait Decodable<'a>: Sized {
     // Required method
     fn decode(decoder: &mut Decoder<'a>) -> Result<Self>;
 
     // Provided method
-    fn from_bytes(bytes: &'a [u8]) -> Result<Self> { ... }
+    fn from_bytes(bytes: &'a [u8]) -> Result<Self> { ... }
 }
Expand description

Decoding trait.

Decode out of decoder, which essentially is a slice of bytes.

One way to implement this trait is to implement TryFrom<TaggedSlice<'_>, Error = Error>.

-

Required Methods§

source

fn decode(decoder: &mut Decoder<'a>) -> Result<Self>

Attempt to decode this message using the provided decoder.

-

Provided Methods§

source

fn from_bytes(bytes: &'a [u8]) -> Result<Self>

Parse Self from the provided byte slice.

-

Implementations on Foreign Types§

source§

impl Decodable<'_> for [u8; 30]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 22]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 6]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 0]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 29]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 28]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 26]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 13]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 32]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 25]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 1]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 21]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 24]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 27]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 5]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 10]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl<'a, T> Decodable<'a> for Option<T>where - T: Decodable<'a> + Tagged,

This implementation is quite gotcha-y, since only one byte is peeked.

+

Required Methods§

source

fn decode(decoder: &mut Decoder<'a>) -> Result<Self>

Attempt to decode this message using the provided decoder.

+

Provided Methods§

source

fn from_bytes(bytes: &'a [u8]) -> Result<Self>

Parse Self from the provided byte slice.

+

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl Decodable<'_> for [u8; 0]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 1]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 2]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 3]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 4]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 5]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 6]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 7]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 8]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 9]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 10]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 11]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 12]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 13]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 14]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 15]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 16]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 17]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 18]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 19]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 20]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 21]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 22]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 23]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 24]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 25]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 26]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 27]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 28]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 29]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 30]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 31]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 32]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl<'a, T> Decodable<'a> for Option<T>
where + T: Decodable<'a> + Tagged,

This implementation is quite gotcha-y, since only one byte is peeked.

It should evaluate to the desired tag via Tag::try_from(byte)?.

-
source§

fn decode(decoder: &mut Decoder<'a>) -> Result<Option<T>>

source§

impl Decodable<'_> for [u8; 4]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 31]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 3]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 20]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 16]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 23]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 15]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 7]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 2]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 11]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 14]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 12]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 17]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 18]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 9]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 8]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

source§

impl Decodable<'_> for [u8; 19]

source§

fn decode(decoder: &mut Decoder<'_>) -> Result<Self>

Implementors§

source§

impl Decodable<'_> for Length

source§

impl Decodable<'_> for SimpleTag

source§

impl Decodable<'_> for Tag

source§

impl<'a, T> Decodable<'a> for TaggedSlice<'a, T>where - T: Decodable<'a> + TagLike,

source§

impl<'a, X> Decodable<'a> for Xwhere - X: TryFrom<TaggedSlice<'a>, Error = Error>,

\ No newline at end of file +
source§

fn decode(decoder: &mut Decoder<'a>) -> Result<Option<T>>

Implementors§

source§

impl Decodable<'_> for Length

source§

impl Decodable<'_> for SimpleTag

source§

impl Decodable<'_> for Tag

source§

impl<'a, T> Decodable<'a> for TaggedSlice<'a, T>
where + T: Decodable<'a> + TagLike,

source§

impl<'a, X> Decodable<'a> for X
where + X: TryFrom<TaggedSlice<'a>, Error = Error>,

\ No newline at end of file diff --git a/flexiber/trait.Encodable.html b/flexiber/trait.Encodable.html index cf84e08..8d68e61 100644 --- a/flexiber/trait.Encodable.html +++ b/flexiber/trait.Encodable.html @@ -1,55 +1,55 @@ -Encodable in flexiber - Rust

Trait flexiber::Encodable

source ·
pub trait Encodable {
+Encodable in flexiber - Rust
flexiber

Trait Encodable

source
pub trait Encodable {
     // Required methods
     fn encoded_length(&self) -> Result<Length>;
-    fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>;
+    fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>;
 
     // Provided method
-    fn encode_to_slice<'a>(&self, buf: &'a mut [u8]) -> Result<&'a [u8]> { ... }
+    fn encode_to_slice<'a>(&self, buf: &'a mut [u8]) -> Result<&'a [u8]> { ... }
 }
Expand description

Encoding trait.

Encode into encoder, which essentially is a mutable slice of bytes.

Additionally, the encoded length needs to be known without actually encoding.

-

Required Methods§

source

fn encoded_length(&self) -> Result<Length>

Compute the length of this value in bytes when encoded as BER-TLV

-
source

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-

Provided Methods§

source

fn encode_to_slice<'a>(&self, buf: &'a mut [u8]) -> Result<&'a [u8]>

Encode this value to the provided byte slice, returning a sub-slice +

Required Methods§

source

fn encoded_length(&self) -> Result<Length>

Compute the length of this value in bytes when encoded as BER-TLV

+
source

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+

Provided Methods§

source

fn encode_to_slice<'a>(&self, buf: &'a mut [u8]) -> Result<&'a [u8]>

Encode this value to the provided byte slice, returning a sub-slice containing the encoded message.

-

Implementations on Foreign Types§

source§

impl Encodable for [u8; 19]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 29]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 21]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 3]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 2]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 1]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 4]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 20]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl<T> Encodable for Option<T>where - T: Encodable,

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 23]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for &[u8]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 22]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 14]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 13]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 16]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 12]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 7]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 28]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 27]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 24]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 11]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 26]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 17]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 32]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 30]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 18]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 25]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 15]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 31]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 9]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 8]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 6]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 5]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 0]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 10]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

-
source§

fn encoded_length(&self) -> Result<Length>

Implementors§

Implementations on Foreign Types§

source§

impl Encodable for &[u8]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 0]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 1]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 2]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 3]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 4]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 5]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 6]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 7]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 8]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 9]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 10]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 11]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 12]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 13]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 14]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 15]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 16]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 17]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 18]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 19]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 20]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 21]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 22]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 23]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 24]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 25]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 26]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 27]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 28]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 29]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 30]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 31]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl Encodable for [u8; 32]

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

source§

impl<T> Encodable for Option<T>
where + T: Encodable,

source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.

+
source§

fn encoded_length(&self) -> Result<Length>

Implementors§

source§

impl Encodable for Length

source§

impl Encodable for SimpleTag

source§

impl Encodable for Tag

source§

impl<E, T> Encodable for TaggedValue<&E, T>
where E: Encodable, - T: Copy + Encodable,

source§

impl<'a, T> Encodable for TaggedSlice<'a, T>where - T: Copy + Encodable,

source§

impl<TaggedContainer> Encodable for TaggedContainerwhere - TaggedContainer: Tagged + Container,

\ No newline at end of file + T: Copy + Encodable,
source§

impl<T> Encodable for TaggedSlice<'_, T>
where + T: Copy + Encodable,

source§

impl<TaggedContainer> Encodable for TaggedContainer
where + TaggedContainer: Tagged + Container,

\ No newline at end of file diff --git a/flexiber/trait.TagLike.html b/flexiber/trait.TagLike.html index 0e453f9..6537085 100644 --- a/flexiber/trait.TagLike.html +++ b/flexiber/trait.TagLike.html @@ -1,4 +1,7 @@ -TagLike in flexiber - Rust

Trait flexiber::TagLike

source ·
pub trait TagLike: Copy + PartialEq + Sized {
+TagLike in flexiber - Rust
flexiber

Trait TagLike

source
pub trait TagLike:
+    Copy
+    + PartialEq
+    + Sized {
     // Required method
     fn embedding(self) -> Tag;
 
@@ -7,9 +10,9 @@
     fn with_value<V>(self, value: V) -> TaggedValue<V, Self> { ... }
 }
Expand description

This is the common trait that types to be used as tags are supposed to implement.

-

Required Methods§

source

fn embedding(self) -> Tag

To stick with one Error type, make sure the tag type can somehow +

Required Methods§

source

fn embedding(self) -> Tag

To stick with one Error type, make sure the tag type can somehow or other be coerced into a BerTag.

-

Provided Methods§

source

fn assert_eq(self, expected: Self) -> Result<Self>

Assert that this Tag matches the provided expected tag.

+

Provided Methods§

source

fn assert_eq(self, expected: Self) -> Result<Self>

Assert that this Tag matches the provided expected tag.

On mismatch, returns an Error with ErrorKind::UnexpectedTag.

-
source

fn with_value<V>(self, value: V) -> TaggedValue<V, Self>

Ergonomic way to get a TaggedValue for a given tag and value

-

Implementors§

\ No newline at end of file +
source

fn with_value<V>(self, value: V) -> TaggedValue<V, Self>

Ergonomic way to get a TaggedValue for a given tag and value

+

Object Safety§

This trait is not object safe.

Implementors§

\ No newline at end of file diff --git a/flexiber/trait.Tagged.html b/flexiber/trait.Tagged.html index 5d00541..4680132 100644 --- a/flexiber/trait.Tagged.html +++ b/flexiber/trait.Tagged.html @@ -1,7 +1,7 @@ -Tagged in flexiber - Rust

Trait flexiber::Tagged

source ·
pub trait Tagged {
+Tagged in flexiber - Rust
flexiber

Trait Tagged

source
pub trait Tagged {
     // Required method
     fn tag() -> Tag;
 }
Expand description

Types with an associated BER-TLV Tag.

A tagged type implementing Container has a blanked implementation of Encodable.

-

Required Methods§

source

fn tag() -> Tag

The tag

-

Implementors§

\ No newline at end of file +

Required Methods§

source

fn tag() -> Tag

The tag

+

Object Safety§

This trait is not object safe.

Implementors§

\ No newline at end of file diff --git a/flexiber/type.Result.html b/flexiber/type.Result.html index e609448..4202053 100644 --- a/flexiber/type.Result.html +++ b/flexiber/type.Result.html @@ -1,7 +1,7 @@ -Result in flexiber - Rust

Type Alias flexiber::Result

source ·
pub type Result<T> = Result<T, Error>;
Expand description

Result type.

-

Aliased Type§

enum Result<T> {
+Result in flexiber - Rust
flexiber

Type Alias Result

source
pub type Result<T> = Result<T, Error>;
Expand description

Result type.

+

Aliased Type§

enum Result<T> {
     Ok(T),
     Err(Error),
-}

Variants§

§1.0.0

Ok(T)

Contains the success value

+}

Variants§

§1.0.0

Ok(T)

Contains the success value

§1.0.0

Err(Error)

Contains the error value

-

Trait Implementations§

source§

impl Add<Length> for Result<Length>

§

type Output = Result<Length, Error>

The resulting type after applying the + operator.
source§

fn add(self, other: Length) -> Self

Performs the + operation. Read more
\ No newline at end of file +

Trait Implementations§

source§

impl Add<Length> for Result<Length>

source§

type Output = Result<Length, Error>

The resulting type after applying the + operator.
source§

fn add(self, other: Length) -> Self

Performs the + operation. Read more
\ No newline at end of file diff --git a/flexiber/type.TaggedSlice.html b/flexiber/type.TaggedSlice.html index 6f3d408..c269c8b 100644 --- a/flexiber/type.TaggedSlice.html +++ b/flexiber/type.TaggedSlice.html @@ -1,17 +1,14 @@ -TaggedSlice in flexiber - Rust

Type Alias flexiber::TaggedSlice

source ·
pub type TaggedSlice<'a, T = Tag> = TaggedValue<Slice<'a>, T>;
Expand description

Raw BER-TLV data object TaggedValue<Slice<'_>>.

-

Aliased Type§

struct TaggedSlice<'a, T = Tag> { /* private fields */ }

Implementations§

source§

impl<'a, T> TaggedSlice<'a, T>where - T: Copy,

source

pub fn from(tag: T, slice: &'a [u8]) -> Result<Self>

Create a new tagged slice, checking lengths.

-
source

pub fn as_bytes(&self) -> &'a [u8]

Borrow the inner byte slice.

-
source

pub fn length(&self) -> Length

Get the length of the inner byte slice.

-
source

pub fn is_empty(&self) -> bool

Is the inner byte slice empty?

-
source

pub fn decode_nested<F, R>(&self, f: F) -> Result<R>where - F: FnOnce(&mut Decoder<'a>) -> Result<R>,

Decode nested values, creating a new Decoder for +TaggedSlice in flexiber - Rust

flexiber

Type Alias TaggedSlice

source
pub type TaggedSlice<'a, T = Tag> = TaggedValue<Slice<'a>, T>;
Expand description

Raw BER-TLV data object TaggedValue<Slice<'_>>.

+

Aliased Type§

struct TaggedSlice<'a, T = Tag> { /* private fields */ }

Implementations§

source§

impl<'a, T> TaggedSlice<'a, T>
where + T: Copy,

source

pub fn from(tag: T, slice: &'a [u8]) -> Result<Self>

Create a new tagged slice, checking lengths.

+
source

pub fn as_bytes(&self) -> &'a [u8]

Borrow the inner byte slice.

+
source

pub fn length(&self) -> Length

Get the length of the inner byte slice.

+
source

pub fn is_empty(&self) -> bool

Is the inner byte slice empty?

+
source

pub fn decode_nested<F, R>(&self, f: F) -> Result<R>
where + F: FnOnce(&mut Decoder<'a>) -> Result<R>,

Decode nested values, creating a new Decoder for the data contained in the sequence’s body and passing it to the provided -FnOnce.

-
source§

impl<V, T> TaggedValue<V, T>where - T: Copy,

source

pub fn new(tag: T, value: V) -> Self

source

pub fn tag(&self) -> T

Trait Implementations§

source§

impl<V: Clone, T: Clone> Clone for TaggedValue<V, T>

source§

fn clone(&self) -> TaggedValue<V, T>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<V: Debug, T: Debug> Debug for TaggedValue<V, T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'a, T> Decodable<'a> for TaggedSlice<'a, T>where - T: Decodable<'a> + TagLike,

source§

fn decode(decoder: &mut Decoder<'a>) -> Result<Self>

Attempt to decode this message using the provided decoder.
source§

fn from_bytes(bytes: &'a [u8]) -> Result<Self>

Parse Self from the provided byte slice.
source§

impl<'a, T> Encodable for TaggedSlice<'a, T>where - T: Copy + Encodable,

source§

fn encoded_length(&self) -> Result<Length>

Compute the length of this value in bytes when encoded as BER-TLV
source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.
source§

fn encode_to_slice<'a>(&self, buf: &'a mut [u8]) -> Result<&'a [u8]>

Encode this value to the provided byte slice, returning a sub-slice -containing the encoded message.
source§

impl<V: PartialEq, T: PartialEq> PartialEq<TaggedValue<V, T>> for TaggedValue<V, T>

source§

fn eq(&self, other: &TaggedValue<V, T>) -> bool

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl<V: Copy, T: Copy> Copy for TaggedValue<V, T>

source§

impl<V: Eq, T: Eq> Eq for TaggedValue<V, T>

source§

impl<V, T> StructuralEq for TaggedValue<V, T>

source§

impl<V, T> StructuralPartialEq for TaggedValue<V, T>

\ No newline at end of file +FnOnce.

+

Trait Implementations§

source§

impl<'a, T> Decodable<'a> for TaggedSlice<'a, T>
where + T: Decodable<'a> + TagLike,

source§

fn decode(decoder: &mut Decoder<'a>) -> Result<Self>

Attempt to decode this message using the provided decoder.
source§

fn from_bytes(bytes: &'a [u8]) -> Result<Self>

Parse Self from the provided byte slice.
source§

impl<T> Encodable for TaggedSlice<'_, T>
where + T: Copy + Encodable,

source§

fn encoded_length(&self) -> Result<Length>

Compute the length of this value in bytes when encoded as BER-TLV
source§

fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>

Encode this value as BER-TLV using the provided Encoder.
source§

fn encode_to_slice<'a>(&self, buf: &'a mut [u8]) -> Result<&'a [u8]>

Encode this value to the provided byte slice, returning a sub-slice +containing the encoded message.
\ No newline at end of file diff --git a/flexiber_derive/all.html b/flexiber_derive/all.html index 8073456..d0226ad 100644 --- a/flexiber_derive/all.html +++ b/flexiber_derive/all.html @@ -1 +1 @@ -List of all items in this crate

List of all items

Derive Macros

\ No newline at end of file +List of all items in this crate

List of all items

Derive Macros

\ No newline at end of file diff --git a/flexiber_derive/derive.Decodable.html b/flexiber_derive/derive.Decodable.html index 1080786..c769744 100644 --- a/flexiber_derive/derive.Decodable.html +++ b/flexiber_derive/derive.Decodable.html @@ -1,6 +1,6 @@ -Decodable in flexiber_derive - Rust

Derive Macro flexiber_derive::Decodable

source ·
#[derive(Decodable)]
+Decodable in flexiber_derive - Rust
flexiber_derive

Derive Macro Decodable

source
#[derive(Decodable)]
 {
-    // Attributes available to this derive:
+    // Attributes available to this derive:
     #[tlv]
 }
 
Expand description

Derive the Decodable trait on a struct.

diff --git a/flexiber_derive/derive.Encodable.html b/flexiber_derive/derive.Encodable.html index 1b3c8b8..ce23ce4 100644 --- a/flexiber_derive/derive.Encodable.html +++ b/flexiber_derive/derive.Encodable.html @@ -1,6 +1,6 @@ -Encodable in flexiber_derive - Rust

Derive Macro flexiber_derive::Encodable

source ·
#[derive(Encodable)]
+Encodable in flexiber_derive - Rust
flexiber_derive

Derive Macro Encodable

source
#[derive(Encodable)]
 {
-    // Attributes available to this derive:
+    // Attributes available to this derive:
     #[tlv]
 }
 
Expand description

Derive the Encodable trait on a struct.

diff --git a/flexiber_derive/index.html b/flexiber_derive/index.html index 703757d..901a8ff 100644 --- a/flexiber_derive/index.html +++ b/flexiber_derive/index.html @@ -1,5 +1,5 @@ -flexiber_derive - Rust

Crate flexiber_derive

source ·
Expand description

Custom derive support for the flexiber crate

+flexiber_derive - Rust

Crate flexiber_derive

source
Expand description

Custom derive support for the flexiber crate

With #[tlv(slice)] set, Encodable should work for fields implementing AsRef<[u8]>, and Decodable should work for fields implementing TryFrom<[u8]>, even if the field is not Decodable or Encodable.

-

Derive Macros

\ No newline at end of file +

Derive Macros§

\ No newline at end of file diff --git a/help.html b/help.html index cc601c2..3bb78ac 100644 --- a/help.html +++ b/help.html @@ -1 +1 @@ -Rustdoc help

Rustdoc help

Back
\ No newline at end of file +Help

Rustdoc help

Back
\ No newline at end of file diff --git a/implementors/core/clone/trait.Clone.js b/implementors/core/clone/trait.Clone.js deleted file mode 100644 index c21a6be..0000000 --- a/implementors/core/clone/trait.Clone.js +++ /dev/null @@ -1,8 +0,0 @@ -(function() {var implementors = { -"delog":[["impl Clone for DefaultRenderer"],["impl Clone for Statistics"],["impl Clone for RipgrepRenderer"]], -"flexiber":[["impl Clone for Tag"],["impl Clone for Error"],["impl Clone for ErrorKind"],["impl Clone for SimpleTag"],["impl Clone for Class"],["impl Clone for Length"],["impl<'a> Clone for Slice<'a>"],["impl<V: Clone, T: Clone> Clone for TaggedValue<V, T>"]], -"log":[["impl Clone for LevelFilter"],["impl<'a> Clone for Record<'a>"],["impl<'a> Clone for Metadata<'a>"],["impl Clone for Level"]], -"proc_macro2":[["impl Clone for TokenStream"],["impl Clone for Literal"],["impl Clone for Spacing"],["impl Clone for DelimSpan"],["impl Clone for TokenTree"],["impl Clone for IntoIter"],["impl Clone for Delimiter"],["impl Clone for Punct"],["impl Clone for Span"],["impl Clone for Group"],["impl Clone for Ident"]], -"syn":[["impl Clone for Group"],["impl Clone for BareFnArg"],["impl Clone for LitBool"],["impl Clone for Pound"],["impl Clone for Type"],["impl Clone for LitChar"],["impl Clone for Add"],["impl Clone for AttrStyle"],["impl Clone for OrOr"],["impl Clone for EqEq"],["impl Clone for Constraint"],["impl Clone for AndEq"],["impl Clone for SelfType"],["impl Clone for Lt"],["impl Clone for Index"],["impl Clone for UnOp"],["impl Clone for Box"],["impl Clone for Continue"],["impl Clone for Error"],["impl Clone for Shr"],["impl Clone for PredicateType"],["impl Clone for Unsafe"],["impl Clone for DotDotEq"],["impl Clone for BoundLifetimes"],["impl Clone for Binding"],["impl<'a> Clone for TypeGenerics<'a>"],["impl Clone for While"],["impl Clone for TypeNever"],["impl Clone for TypeReference"],["impl Clone for Rem"],["impl Clone for SubEq"],["impl Clone for Macro"],["impl Clone for MacroDelimiter"],["impl Clone for LitStr"],["impl Clone for PredicateLifetime"],["impl Clone for Impl"],["impl Clone for ExprParen"],["impl Clone for TypeParam"],["impl Clone for Struct"],["impl Clone for Tilde"],["impl<T, P> Clone for IntoPairs<T, P>where\n T: Clone,\n P: Clone,"],["impl Clone for VisRestricted"],["impl Clone for Brace"],["impl<'a> Clone for Cursor<'a>"],["impl Clone for Eq"],["impl Clone for TraitBoundModifier"],["impl Clone for Macro"],["impl Clone for Question"],["impl Clone for Move"],["impl<'a, T> Clone for Iter<'a, T>"],["impl Clone for DivEq"],["impl Clone for ExprBinary"],["impl Clone for RArrow"],["impl Clone for Else"],["impl Clone for Field"],["impl Clone for TypeParamBound"],["impl Clone for Comma"],["impl Clone for Data"],["impl Clone for Auto"],["impl Clone for Priv"],["impl Clone for LifetimeDef"],["impl Clone for CaretEq"],["impl Clone for Mod"],["impl Clone for Dyn"],["impl Clone for Unsized"],["impl Clone for Do"],["impl Clone for LitByteStr"],["impl Clone for MetaList"],["impl<T, P> Clone for Punctuated<T, P>where\n T: Clone,\n P: Clone,"],["impl Clone for Meta"],["impl Clone for VisPublic"],["impl Clone for Bang"],["impl Clone for Extern"],["impl Clone for Where"],["impl Clone for AddEq"],["impl Clone for Path"],["impl Clone for Override"],["impl<T> Clone for IntoIter<T>where\n T: Clone,"],["impl Clone for WhereClause"],["impl Clone for Variadic"],["impl Clone for ExprIndex"],["impl Clone for ConstParam"],["impl Clone for ExprUnary"],["impl<'a, T, P> Clone for Pairs<'a, T, P>"],["impl Clone for OrEq"],["impl Clone for Bracket"],["impl Clone for QSelf"],["impl Clone for Caret"],["impl Clone for Dot2"],["impl Clone for Fields"],["impl Clone for ReturnType"],["impl Clone for Ne"],["impl Clone for GenericParam"],["impl Clone for Let"],["impl Clone for Star"],["impl Clone for LitInt"],["impl Clone for Mut"],["impl Clone for PathArguments"],["impl Clone for In"],["impl Clone for TypeParen"],["impl Clone for DataUnion"],["impl Clone for Div"],["impl Clone for Try"],["impl Clone for Use"],["impl Clone for Sub"],["impl Clone for ShrEq"],["impl Clone for Semi"],["impl Clone for Match"],["impl Clone for TypeTuple"],["impl Clone for ParenthesizedGenericArguments"],["impl<'a> Clone for ImplGenerics<'a>"],["impl Clone for LitByte"],["impl Clone for Static"],["impl Clone for Ref"],["impl Clone for Break"],["impl Clone for NestedMeta"],["impl Clone for Pub"],["impl<T, P> Clone for Pair<T, P>where\n T: Clone,\n P: Clone,"],["impl Clone for Generics"],["impl Clone for Colon2"],["impl Clone for ExprLit"],["impl Clone for TypeImplTrait"],["impl Clone for Become"],["impl Clone for Ge"],["impl Clone for ExprPath"],["impl Clone for GenericArgument"],["impl Clone for Le"],["impl Clone for DataEnum"],["impl<'c, 'a> Clone for StepCursor<'c, 'a>"],["impl Clone for RemEq"],["impl Clone for MetaNameValue"],["impl Clone for Super"],["impl Clone for Abi"],["impl Clone for Async"],["impl Clone for Shl"],["impl Clone for Gt"],["impl Clone for At"],["impl Clone for Enum"],["impl Clone for MulEq"],["impl Clone for FieldsNamed"],["impl Clone for Default"],["impl Clone for Await"],["impl Clone for And"],["impl Clone for Abstract"],["impl Clone for Typeof"],["impl Clone for Member"],["impl Clone for SelfValue"],["impl Clone for TraitBound"],["impl Clone for If"],["impl Clone for FatArrow"],["impl Clone for LitFloat"],["impl Clone for Visibility"],["impl Clone for DataStruct"],["impl Clone for Const"],["impl Clone for TypeTraitObject"],["impl Clone for Colon"],["impl Clone for PathSegment"],["impl Clone for TypeBareFn"],["impl Clone for Paren"],["impl Clone for Trait"],["impl Clone for Expr"],["impl Clone for ExprCast"],["impl Clone for ExprField"],["impl Clone for Attribute"],["impl Clone for Return"],["impl Clone for TypePath"],["impl Clone for As"],["impl Clone for AngleBracketedGenericArguments"],["impl Clone for Dot3"],["impl Clone for TypeArray"],["impl Clone for TypeSlice"],["impl Clone for Union"],["impl Clone for For"],["impl Clone for TypeGroup"],["impl Clone for Type"],["impl Clone for ExprCall"],["impl Clone for TypePtr"],["impl Clone for LArrow"],["impl Clone for FieldsUnnamed"],["impl Clone for VisCrate"],["impl Clone for Virtual"],["impl Clone for ShlEq"],["impl Clone for TypeMacro"],["impl Clone for Fn"],["impl Clone for Underscore"],["impl Clone for Crate"],["impl Clone for Lifetime"],["impl Clone for TypeInfer"],["impl Clone for Dollar"],["impl Clone for BinOp"],["impl Clone for Variant"],["impl Clone for Dot"],["impl Clone for Loop"],["impl Clone for Yield"],["impl Clone for AndAnd"],["impl Clone for WherePredicate"],["impl Clone for Lit"],["impl Clone for Final"],["impl Clone for PredicateEq"],["impl Clone for Or"],["impl<'a> Clone for Turbofish<'a>"],["impl Clone for DeriveInput"]], -"synstructure":[["impl<'a> Clone for VariantInfo<'a>"],["impl Clone for AddBounds"],["impl Clone for BindStyle"],["impl<'a> Clone for BindingInfo<'a>"],["impl<'a> Clone for Structure<'a>"],["impl<'a> Clone for VariantAst<'a>"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/cmp/trait.Eq.js b/implementors/core/cmp/trait.Eq.js deleted file mode 100644 index 6ef0195..0000000 --- a/implementors/core/cmp/trait.Eq.js +++ /dev/null @@ -1,7 +0,0 @@ -(function() {var implementors = { -"flexiber":[["impl Eq for SimpleTag"],["impl Eq for Length"],["impl<'a> Eq for Slice<'a>"],["impl Eq for ErrorKind"],["impl<V: Eq, T: Eq> Eq for TaggedValue<V, T>"],["impl Eq for Tag"],["impl Eq for Error"],["impl Eq for Class"]], -"log":[["impl<'a> Eq for Metadata<'a>"],["impl Eq for LevelFilter"],["impl Eq for ParseLevelError"],["impl<'a> Eq for MetadataBuilder<'a>"],["impl Eq for Level"]], -"proc_macro2":[["impl Eq for Spacing"],["impl Eq for Ident"],["impl Eq for Delimiter"]], -"syn":[["impl Eq for PredicateEq"],["impl Eq for Variant"],["impl Eq for ExprPath"],["impl Eq for In"],["impl Eq for Mod"],["impl Eq for Macro"],["impl Eq for Constraint"],["impl Eq for Final"],["impl Eq for TypeSlice"],["impl Eq for PathArguments"],["impl<'a> Eq for Turbofish<'a>"],["impl Eq for Gt"],["impl Eq for AttrStyle"],["impl Eq for LitByte"],["impl Eq for Struct"],["impl Eq for DataUnion"],["impl Eq for Tilde"],["impl Eq for Shl"],["impl Eq for Visibility"],["impl Eq for TypeInfer"],["impl Eq for ExprUnary"],["impl Eq for TypeMacro"],["impl Eq for Dyn"],["impl Eq for TypeParamBound"],["impl Eq for Comma"],["impl Eq for Typeof"],["impl Eq for TypeTraitObject"],["impl Eq for TypeGroup"],["impl Eq for Path"],["impl Eq for DeriveInput"],["impl Eq for Return"],["impl Eq for TraitBound"],["impl Eq for PredicateType"],["impl Eq for Mut"],["impl Eq for MetaList"],["impl Eq for DivEq"],["impl Eq for Caret"],["impl Eq for Macro"],["impl Eq for FatArrow"],["impl Eq for QSelf"],["impl Eq for Ge"],["impl Eq for TypeArray"],["impl Eq for LifetimeDef"],["impl Eq for Where"],["impl Eq for Super"],["impl Eq for PathSegment"],["impl Eq for Become"],["impl Eq for ExprBinary"],["impl Eq for MulEq"],["impl Eq for GenericParam"],["impl Eq for ParenthesizedGenericArguments"],["impl Eq for Const"],["impl Eq for Paren"],["impl Eq for Meta"],["impl Eq for DataEnum"],["impl Eq for GenericArgument"],["impl Eq for TypeImplTrait"],["impl Eq for Default"],["impl Eq for Dot"],["impl Eq for ExprIndex"],["impl Eq for FieldsUnnamed"],["impl Eq for MacroDelimiter"],["impl Eq for AndEq"],["impl Eq for Binding"],["impl Eq for Question"],["impl Eq for TypeParen"],["impl Eq for Colon2"],["impl Eq for LitChar"],["impl Eq for LitByteStr"],["impl Eq for Sub"],["impl Eq for Group"],["impl Eq for Field"],["impl Eq for Dollar"],["impl Eq for Box"],["impl Eq for ReturnType"],["impl Eq for For"],["impl<'a> Eq for Cursor<'a>"],["impl Eq for MetaNameValue"],["impl Eq for Type"],["impl Eq for Override"],["impl Eq for TypePtr"],["impl Eq for Colon"],["impl Eq for DataStruct"],["impl Eq for ShlEq"],["impl Eq for ExprLit"],["impl Eq for Lt"],["impl Eq for Pub"],["impl Eq for BoundLifetimes"],["impl Eq for Async"],["impl Eq for ExprField"],["impl Eq for Do"],["impl Eq for AndAnd"],["impl Eq for Static"],["impl Eq for Attribute"],["impl Eq for Rem"],["impl Eq for Yield"],["impl Eq for Continue"],["impl Eq for Union"],["impl Eq for Crate"],["impl Eq for Variadic"],["impl Eq for UnOp"],["impl Eq for At"],["impl Eq for LitBool"],["impl Eq for TypePath"],["impl Eq for VisPublic"],["impl Eq for ConstParam"],["impl Eq for EqEq"],["impl Eq for OrEq"],["impl Eq for Ref"],["impl Eq for Use"],["impl Eq for Le"],["impl Eq for If"],["impl Eq for TypeNever"],["impl Eq for VisRestricted"],["impl Eq for BareFnArg"],["impl Eq for BinOp"],["impl Eq for TypeBareFn"],["impl Eq for Virtual"],["impl Eq for SelfValue"],["impl Eq for VisCrate"],["impl Eq for Dot3"],["impl Eq for TypeParam"],["impl<'a> Eq for ImplGenerics<'a>"],["impl Eq for Star"],["impl Eq for Bang"],["impl Eq for And"],["impl Eq for Brace"],["impl Eq for Lit"],["impl Eq for TypeReference"],["impl Eq for Shr"],["impl Eq for Unsafe"],["impl Eq for Unsized"],["impl Eq for AngleBracketedGenericArguments"],["impl Eq for Fields"],["impl Eq for CaretEq"],["impl Eq for Div"],["impl Eq for WherePredicate"],["impl Eq for Or"],["impl Eq for Await"],["impl Eq for TraitBoundModifier"],["impl Eq for TypeTuple"],["impl Eq for LitStr"],["impl Eq for Priv"],["impl Eq for AddEq"],["impl Eq for RemEq"],["impl<'a> Eq for TypeGenerics<'a>"],["impl Eq for SubEq"],["impl Eq for Generics"],["impl Eq for DotDotEq"],["impl Eq for FieldsNamed"],["impl Eq for Break"],["impl Eq for Extern"],["impl Eq for Lifetime"],["impl Eq for Auto"],["impl Eq for Nothing"],["impl Eq for Trait"],["impl Eq for Ne"],["impl Eq for While"],["impl Eq for LitFloat"],["impl Eq for LArrow"],["impl Eq for Move"],["impl Eq for ShrEq"],["impl Eq for As"],["impl Eq for Add"],["impl Eq for Else"],["impl Eq for Loop"],["impl Eq for Let"],["impl Eq for ExprParen"],["impl Eq for Index"],["impl Eq for Enum"],["impl Eq for Match"],["impl Eq for Expr"],["impl Eq for Dot2"],["impl Eq for SelfType"],["impl Eq for Underscore"],["impl Eq for Data"],["impl Eq for Semi"],["impl Eq for Abstract"],["impl Eq for Fn"],["impl Eq for Bracket"],["impl Eq for Type"],["impl Eq for Pound"],["impl Eq for WhereClause"],["impl Eq for RArrow"],["impl Eq for PredicateLifetime"],["impl Eq for Abi"],["impl Eq for OrOr"],["impl Eq for Member"],["impl Eq for LitInt"],["impl Eq for ExprCast"],["impl Eq for Eq"],["impl<T, P> Eq for Punctuated<T, P>where\n T: Eq,\n P: Eq,"],["impl Eq for ExprCall"],["impl Eq for Impl"],["impl Eq for Try"],["impl Eq for NestedMeta"]], -"synstructure":[["impl<'a> Eq for Structure<'a>"],["impl Eq for BindStyle"],["impl Eq for AddBounds"],["impl<'a> Eq for VariantInfo<'a>"],["impl<'a> Eq for BindingInfo<'a>"],["impl<'a> Eq for VariantAst<'a>"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/cmp/trait.Ord.js b/implementors/core/cmp/trait.Ord.js deleted file mode 100644 index bddd0a7..0000000 --- a/implementors/core/cmp/trait.Ord.js +++ /dev/null @@ -1,6 +0,0 @@ -(function() {var implementors = { -"flexiber":[["impl Ord for Length"]], -"log":[["impl<'a> Ord for Metadata<'a>"],["impl Ord for Level"],["impl<'a> Ord for MetadataBuilder<'a>"],["impl Ord for LevelFilter"]], -"proc_macro2":[["impl Ord for Ident"]], -"syn":[["impl Ord for Lifetime"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/cmp/trait.PartialEq.js b/implementors/core/cmp/trait.PartialEq.js deleted file mode 100644 index 87b395b..0000000 --- a/implementors/core/cmp/trait.PartialEq.js +++ /dev/null @@ -1,7 +0,0 @@ -(function() {var implementors = { -"flexiber":[["impl PartialEq<Tag> for Tag"],["impl PartialEq<Class> for Class"],["impl<'a> PartialEq<Slice<'a>> for Slice<'a>"],["impl PartialEq<Length> for Length"],["impl PartialEq<Error> for Error"],["impl PartialEq<SimpleTag> for SimpleTag"],["impl PartialEq<ErrorKind> for ErrorKind"],["impl<V: PartialEq, T: PartialEq> PartialEq<TaggedValue<V, T>> for TaggedValue<V, T>"]], -"log":[["impl PartialEq<LevelFilter> for LevelFilter"],["impl PartialEq<LevelFilter> for Level"],["impl<'a> PartialEq<MetadataBuilder<'a>> for MetadataBuilder<'a>"],["impl PartialEq<Level> for Level"],["impl<'a> PartialEq<Metadata<'a>> for Metadata<'a>"],["impl PartialEq<ParseLevelError> for ParseLevelError"],["impl PartialEq<Level> for LevelFilter"]], -"proc_macro2":[["impl<T> PartialEq<T> for Identwhere\n T: ?Sized + AsRef<str>,"],["impl PartialEq<Ident> for Ident"],["impl PartialEq<Delimiter> for Delimiter"],["impl PartialEq<Spacing> for Spacing"]], -"syn":[["impl PartialEq<Do> for Do"],["impl PartialEq<Shl> for Shl"],["impl PartialEq<ExprCast> for ExprCast"],["impl<'a> PartialEq<TypeGenerics<'a>> for TypeGenerics<'a>"],["impl PartialEq<Lt> for Lt"],["impl PartialEq<TypeParam> for TypeParam"],["impl PartialEq<Box> for Box"],["impl PartialEq<Where> for Where"],["impl PartialEq<VisCrate> for VisCrate"],["impl PartialEq<LitByteStr> for LitByteStr"],["impl PartialEq<Le> for Le"],["impl PartialEq<Visibility> for Visibility"],["impl PartialEq<NestedMeta> for NestedMeta"],["impl PartialEq<OrOr> for OrOr"],["impl PartialEq<Meta> for Meta"],["impl PartialEq<GenericParam> for GenericParam"],["impl PartialEq<As> for As"],["impl PartialEq<QSelf> for QSelf"],["impl PartialEq<Super> for Super"],["impl PartialEq<TypeGroup> for TypeGroup"],["impl PartialEq<TypeBareFn> for TypeBareFn"],["impl PartialEq<Use> for Use"],["impl PartialEq<Enum> for Enum"],["impl PartialEq<Type> for Type"],["impl PartialEq<Dot> for Dot"],["impl PartialEq<Priv> for Priv"],["impl PartialEq<WherePredicate> for WherePredicate"],["impl PartialEq<Break> for Break"],["impl PartialEq<LitStr> for LitStr"],["impl PartialEq<Continue> for Continue"],["impl PartialEq<ParenthesizedGenericArguments> for ParenthesizedGenericArguments"],["impl PartialEq<MetaList> for MetaList"],["impl PartialEq<ExprField> for ExprField"],["impl PartialEq<Index> for Index"],["impl PartialEq<UnOp> for UnOp"],["impl PartialEq<BoundLifetimes> for BoundLifetimes"],["impl PartialEq<And> for And"],["impl PartialEq<CaretEq> for CaretEq"],["impl PartialEq<DataEnum> for DataEnum"],["impl PartialEq<Attribute> for Attribute"],["impl PartialEq<TypeTuple> for TypeTuple"],["impl PartialEq<For> for For"],["impl PartialEq<If> for If"],["impl PartialEq<OrEq> for OrEq"],["impl PartialEq<Brace> for Brace"],["impl PartialEq<DeriveInput> for DeriveInput"],["impl PartialEq<PathArguments> for PathArguments"],["impl PartialEq<Impl> for Impl"],["impl PartialEq<Rem> for Rem"],["impl PartialEq<PathSegment> for PathSegment"],["impl PartialEq<TypeTraitObject> for TypeTraitObject"],["impl PartialEq<Try> for Try"],["impl PartialEq<Pound> for Pound"],["impl PartialEq<Variant> for Variant"],["impl PartialEq<DataUnion> for DataUnion"],["impl PartialEq<ShlEq> for ShlEq"],["impl PartialEq<Move> for Move"],["impl PartialEq<EqEq> for EqEq"],["impl PartialEq<PredicateType> for PredicateType"],["impl PartialEq<SelfValue> for SelfValue"],["impl PartialEq<Paren> for Paren"],["impl PartialEq<Dot3> for Dot3"],["impl PartialEq<Become> for Become"],["impl PartialEq<LitFloat> for LitFloat"],["impl PartialEq<Comma> for Comma"],["impl PartialEq<At> for At"],["impl PartialEq<Gt> for Gt"],["impl PartialEq<Constraint> for Constraint"],["impl PartialEq<Semi> for Semi"],["impl PartialEq<ExprLit> for ExprLit"],["impl PartialEq<ReturnType> for ReturnType"],["impl PartialEq<Field> for Field"],["impl PartialEq<RArrow> for RArrow"],["impl PartialEq<Add> for Add"],["impl PartialEq<Ne> for Ne"],["impl PartialEq<Variadic> for Variadic"],["impl PartialEq<AngleBracketedGenericArguments> for AngleBracketedGenericArguments"],["impl PartialEq<ExprCall> for ExprCall"],["impl PartialEq<Dollar> for Dollar"],["impl PartialEq<Yield> for Yield"],["impl PartialEq<Lit> for Lit"],["impl PartialEq<Typeof> for Typeof"],["impl PartialEq<ExprUnary> for ExprUnary"],["impl PartialEq<BareFnArg> for BareFnArg"],["impl PartialEq<LitByte> for LitByte"],["impl PartialEq<Union> for Union"],["impl PartialEq<ExprPath> for ExprPath"],["impl PartialEq<TypeMacro> for TypeMacro"],["impl PartialEq<Unsized> for Unsized"],["impl PartialEq<TypeSlice> for TypeSlice"],["impl PartialEq<DivEq> for DivEq"],["impl PartialEq<AndAnd> for AndAnd"],["impl PartialEq<Shr> for Shr"],["impl PartialEq<Or> for Or"],["impl PartialEq<Colon> for Colon"],["impl PartialEq<DotDotEq> for DotDotEq"],["impl PartialEq<TypeReference> for TypeReference"],["impl PartialEq<While> for While"],["impl PartialEq<Ge> for Ge"],["impl PartialEq<Path> for Path"],["impl PartialEq<LitInt> for LitInt"],["impl PartialEq<MacroDelimiter> for MacroDelimiter"],["impl PartialEq<Generics> for Generics"],["impl PartialEq<In> for In"],["impl PartialEq<Star> for Star"],["impl<'a> PartialEq<Cursor<'a>> for Cursor<'a>"],["impl PartialEq<TypeParen> for TypeParen"],["impl PartialEq<PredicateEq> for PredicateEq"],["impl PartialEq<Group> for Group"],["impl PartialEq<LArrow> for LArrow"],["impl PartialEq<FieldsNamed> for FieldsNamed"],["impl PartialEq<ExprBinary> for ExprBinary"],["impl PartialEq<Auto> for Auto"],["impl<'a> PartialEq<ImplGenerics<'a>> for ImplGenerics<'a>"],["impl PartialEq<Bang> for Bang"],["impl PartialEq<Await> for Await"],["impl PartialEq<Trait> for Trait"],["impl PartialEq<VisPublic> for VisPublic"],["impl PartialEq<Else> for Else"],["impl PartialEq<SelfType> for SelfType"],["impl PartialEq<MulEq> for MulEq"],["impl PartialEq<Mut> for Mut"],["impl PartialEq<FatArrow> for FatArrow"],["impl PartialEq<Macro> for Macro"],["impl PartialEq<DataStruct> for DataStruct"],["impl PartialEq<Abstract> for Abstract"],["impl PartialEq<Binding> for Binding"],["impl PartialEq<Match> for Match"],["impl PartialEq<Mod> for Mod"],["impl PartialEq<BinOp> for BinOp"],["impl PartialEq<Static> for Static"],["impl PartialEq<Data> for Data"],["impl PartialEq<ConstParam> for ConstParam"],["impl PartialEq<Async> for Async"],["impl PartialEq<Let> for Let"],["impl PartialEq<Bracket> for Bracket"],["impl PartialEq<WhereClause> for WhereClause"],["impl PartialEq<Struct> for Struct"],["impl PartialEq<Member> for Member"],["impl PartialEq<TraitBound> for TraitBound"],["impl PartialEq<TypeInfer> for TypeInfer"],["impl PartialEq<TraitBoundModifier> for TraitBoundModifier"],["impl PartialEq<Sub> for Sub"],["impl PartialEq<TypeImplTrait> for TypeImplTrait"],["impl PartialEq<Abi> for Abi"],["impl<'a> PartialEq<Turbofish<'a>> for Turbofish<'a>"],["impl PartialEq<ShrEq> for ShrEq"],["impl PartialEq<Const> for Const"],["impl PartialEq<Eq> for Eq"],["impl PartialEq<MetaNameValue> for MetaNameValue"],["impl<T, P> PartialEq<Punctuated<T, P>> for Punctuated<T, P>where\n T: PartialEq,\n P: PartialEq,"],["impl PartialEq<Unsafe> for Unsafe"],["impl PartialEq<FieldsUnnamed> for FieldsUnnamed"],["impl PartialEq<Default> for Default"],["impl PartialEq<Final> for Final"],["impl PartialEq<AttrStyle> for AttrStyle"],["impl PartialEq<PredicateLifetime> for PredicateLifetime"],["impl PartialEq<Ref> for Ref"],["impl PartialEq<TypeParamBound> for TypeParamBound"],["impl PartialEq<AddEq> for AddEq"],["impl PartialEq<Nothing> for Nothing"],["impl PartialEq<Crate> for Crate"],["impl PartialEq<RemEq> for RemEq"],["impl PartialEq<Colon2> for Colon2"],["impl PartialEq<TypeNever> for TypeNever"],["impl PartialEq<ExprParen> for ExprParen"],["impl PartialEq<Underscore> for Underscore"],["impl PartialEq<Expr> for Expr"],["impl PartialEq<LitChar> for LitChar"],["impl PartialEq<Return> for Return"],["impl PartialEq<TypePath> for TypePath"],["impl PartialEq<LitBool> for LitBool"],["impl PartialEq<GenericArgument> for GenericArgument"],["impl PartialEq<Caret> for Caret"],["impl PartialEq<Loop> for Loop"],["impl PartialEq<Dot2> for Dot2"],["impl PartialEq<Override> for Override"],["impl PartialEq<Virtual> for Virtual"],["impl PartialEq<Div> for Div"],["impl PartialEq<VisRestricted> for VisRestricted"],["impl PartialEq<Dyn> for Dyn"],["impl PartialEq<TypeArray> for TypeArray"],["impl PartialEq<LifetimeDef> for LifetimeDef"],["impl PartialEq<SubEq> for SubEq"],["impl PartialEq<Question> for Question"],["impl PartialEq<Fn> for Fn"],["impl PartialEq<Tilde> for Tilde"],["impl PartialEq<Extern> for Extern"],["impl PartialEq<Lifetime> for Lifetime"],["impl PartialEq<AndEq> for AndEq"],["impl PartialEq<Fields> for Fields"],["impl PartialEq<TypePtr> for TypePtr"],["impl PartialEq<Pub> for Pub"],["impl PartialEq<Type> for Type"],["impl PartialEq<Macro> for Macro"],["impl PartialEq<ExprIndex> for ExprIndex"]], -"synstructure":[["impl<'a> PartialEq<BindingInfo<'a>> for BindingInfo<'a>"],["impl PartialEq<BindStyle> for BindStyle"],["impl<'a> PartialEq<VariantAst<'a>> for VariantAst<'a>"],["impl<'a> PartialEq<VariantInfo<'a>> for VariantInfo<'a>"],["impl<'a> PartialEq<Structure<'a>> for Structure<'a>"],["impl PartialEq<AddBounds> for AddBounds"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/cmp/trait.PartialOrd.js b/implementors/core/cmp/trait.PartialOrd.js deleted file mode 100644 index 9c8d87d..0000000 --- a/implementors/core/cmp/trait.PartialOrd.js +++ /dev/null @@ -1,6 +0,0 @@ -(function() {var implementors = { -"flexiber":[["impl PartialOrd<Length> for Length"]], -"log":[["impl<'a> PartialOrd<Metadata<'a>> for Metadata<'a>"],["impl PartialOrd<Level> for LevelFilter"],["impl<'a> PartialOrd<MetadataBuilder<'a>> for MetadataBuilder<'a>"],["impl PartialOrd<LevelFilter> for Level"],["impl PartialOrd<Level> for Level"],["impl PartialOrd<LevelFilter> for LevelFilter"]], -"proc_macro2":[["impl PartialOrd<Ident> for Ident"]], -"syn":[["impl<'a> PartialOrd<Cursor<'a>> for Cursor<'a>"],["impl PartialOrd<Lifetime> for Lifetime"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/convert/trait.AsRef.js b/implementors/core/convert/trait.AsRef.js deleted file mode 100644 index 7f802d8..0000000 --- a/implementors/core/convert/trait.AsRef.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"flexiber":[["impl AsRef<[u8]> for Slice<'_>"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/convert/trait.From.js b/implementors/core/convert/trait.From.js deleted file mode 100644 index 95ab421..0000000 --- a/implementors/core/convert/trait.From.js +++ /dev/null @@ -1,5 +0,0 @@ -(function() {var implementors = { -"flexiber":[["impl From<Length> for u16"],["impl From<u8> for Length"],["impl<'a> From<&'a [u8]> for Decoder<'a>"],["impl From<ErrorKind> for Error"],["impl From<u16> for Length"],["impl From<Length> for usize"],["impl From<Infallible> for Error"]], -"proc_macro2":[["impl From<TokenTree> for TokenStream"],["impl From<TokenStream> for TokenStream"],["impl From<Group> for TokenTree"],["impl From<Span> for Span"],["impl From<Punct> for TokenTree"],["impl From<Literal> for TokenTree"],["impl From<TokenStream> for TokenStream"],["impl From<Ident> for TokenTree"]], -"syn":[["impl From<usize> for Member"],["impl From<LitBool> for Lit"],["impl From<LitByte> for Lit"],["impl From<ExprCall> for Expr"],["impl From<ExprTuple> for Expr"],["impl From<MetaList> for Meta"],["impl From<ExprBinary> for Expr"],["impl From<DataUnion> for Data"],["impl From<ExprIf> for Expr"],["impl From<ExprAsync> for Expr"],["impl From<PredicateType> for WherePredicate"],["impl From<ExprAssign> for Expr"],["impl From<ExprTryBlock> for Expr"],["impl<T> From<T> for PathSegmentwhere\n T: Into<Ident>,"],["impl From<ExprType> for Expr"],["impl From<Path> for Meta"],["impl From<TypeImplTrait> for Type"],["impl From<ExprUnary> for Expr"],["impl From<TypeNever> for Type"],["impl From<ExprLet> for Expr"],["impl From<LexError> for Error"],["impl From<ExprCast> for Expr"],["impl From<ExprMatch> for Expr"],["impl From<ExprBreak> for Expr"],["impl From<Index> for Member"],["impl From<Underscore> for Ident"],["impl From<TypePtr> for Type"],["impl From<TypeArray> for Type"],["impl From<ConstParam> for GenericParam"],["impl From<ExprArray> for Expr"],["impl From<ExprStruct> for Expr"],["impl From<LifetimeDef> for GenericParam"],["impl From<TypeTuple> for Type"],["impl From<TypeReference> for Type"],["impl From<Literal> for LitInt"],["impl From<Lit> for NestedMeta"],["impl From<ExprWhile> for Expr"],["impl From<ExprRepeat> for Expr"],["impl From<ExprField> for Expr"],["impl From<Literal> for LitFloat"],["impl From<TypeParam> for GenericParam"],["impl From<SelfValue> for Ident"],["impl From<ExprRange> for Expr"],["impl From<Ident> for Member"],["impl From<ExprReference> for Expr"],["impl From<FieldsUnnamed> for Fields"],["impl From<ExprGroup> for Expr"],["impl From<ExprContinue> for Expr"],["impl From<ExprIndex> for Expr"],["impl From<TypeBareFn> for Type"],["impl From<TypeTraitObject> for Type"],["impl From<ExprClosure> for Expr"],["impl From<LitFloat> for Lit"],["impl From<ExprBox> for Expr"],["impl From<ExprReturn> for Expr"],["impl From<TraitBound> for TypeParamBound"],["impl From<usize> for Index"],["impl From<ExprBlock> for Expr"],["impl From<MetaNameValue> for Meta"],["impl From<TypeGroup> for Type"],["impl From<Meta> for NestedMeta"],["impl From<TypeParen> for Type"],["impl From<ExprMacro> for Expr"],["impl From<ExprTry> for Expr"],["impl From<ExprLoop> for Expr"],["impl From<LitInt> for Lit"],["impl From<Super> for Ident"],["impl From<ExprYield> for Expr"],["impl From<ExprMethodCall> for Expr"],["impl From<ExprPath> for Expr"],["impl From<ExprAwait> for Expr"],["impl From<LitByteStr> for Lit"],["impl From<Extern> for Ident"],["impl From<ExprAssignOp> for Expr"],["impl From<ExprLit> for Expr"],["impl<T> From<T> for Pathwhere\n T: Into<PathSegment>,"],["impl From<Crate> for Ident"],["impl From<DataStruct> for Data"],["impl From<TypeInfer> for Type"],["impl From<ExprUnsafe> for Expr"],["impl From<ExprParen> for Expr"],["impl From<PredicateLifetime> for WherePredicate"],["impl From<Ident> for TypeParam"],["impl From<SelfType> for Ident"],["impl From<LitChar> for Lit"],["impl From<TypePath> for Type"],["impl From<TypeMacro> for Type"],["impl From<VisRestricted> for Visibility"],["impl From<ExprForLoop> for Expr"],["impl From<LitStr> for Lit"],["impl From<VisCrate> for Visibility"],["impl From<Lifetime> for TypeParamBound"],["impl From<TypeSlice> for Type"],["impl From<PredicateEq> for WherePredicate"],["impl From<DataEnum> for Data"],["impl From<VisPublic> for Visibility"],["impl From<FieldsNamed> for Fields"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/convert/trait.TryFrom.js b/implementors/core/convert/trait.TryFrom.js deleted file mode 100644 index f865f94..0000000 --- a/implementors/core/convert/trait.TryFrom.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"flexiber":[["impl<'a> TryFrom<&'a [&'a dyn Encodable]> for Length"],["impl TryFrom<u8> for SimpleTag"],["impl TryFrom<u8> for Class"],["impl TryFrom<&[u8]> for Tag"],["impl TryFrom<usize> for Length"],["impl TryFrom<u8> for Tag"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/default/trait.Default.js b/implementors/core/default/trait.Default.js deleted file mode 100644 index 82c35d8..0000000 --- a/implementors/core/default/trait.Default.js +++ /dev/null @@ -1,6 +0,0 @@ -(function() {var implementors = { -"flexiber":[["impl Default for Length"]], -"log":[["impl<'a> Default for RecordBuilder<'a>"],["impl<'a> Default for MetadataBuilder<'a>"]], -"proc_macro2":[["impl Default for TokenStream"]], -"syn":[["impl Default for Pub"],["impl Default for Auto"],["impl Default for OrEq"],["impl Default for Dot"],["impl Default for Union"],["impl Default for Priv"],["impl Default for Dollar"],["impl Default for Le"],["impl Default for Eq"],["impl Default for Semi"],["impl Default for OrOr"],["impl Default for For"],["impl Default for SelfType"],["impl Default for Enum"],["impl Default for Mut"],["impl Default for Dyn"],["impl Default for Break"],["impl Default for MulEq"],["impl Default for AndAnd"],["impl Default for Override"],["impl Default for Static"],["impl Default for Bracket"],["impl Default for Default"],["impl Default for Ne"],["impl Default for Virtual"],["impl Default for Where"],["impl Default for FatArrow"],["impl Default for Shl"],["impl Default for Abstract"],["impl Default for Const"],["impl Default for Crate"],["impl Default for Return"],["impl Default for Continue"],["impl Default for RemEq"],["impl<T, P> Default for Punctuated<T, P>"],["impl Default for BoundLifetimes"],["impl Default for Struct"],["impl Default for As"],["impl Default for Ge"],["impl Default for Colon"],["impl Default for Ref"],["impl Default for Add"],["impl Default for Typeof"],["impl Default for Await"],["impl Default for Match"],["impl Default for CaretEq"],["impl Default for Do"],["impl Default for Unsafe"],["impl Default for Try"],["impl Default for Loop"],["impl Default for DotDotEq"],["impl Default for SelfValue"],["impl Default for Type"],["impl Default for SubEq"],["impl Default for AddEq"],["impl Default for Unsized"],["impl Default for Fn"],["impl Default for If"],["impl Default for RArrow"],["impl Default for Bang"],["impl Default for Else"],["impl Default for EqEq"],["impl Default for Box"],["impl Default for Yield"],["impl Default for AndEq"],["impl Default for Async"],["impl Default for In"],["impl Default for Use"],["impl Default for Trait"],["impl Default for Super"],["impl Default for Final"],["impl Default for Underscore"],["impl Default for Extern"],["impl Default for Macro"],["impl Default for While"],["impl Default for Or"],["impl Default for Colon2"],["impl Default for DivEq"],["impl Default for Generics"],["impl Default for Group"],["impl Default for Let"],["impl Default for Sub"],["impl Default for Star"],["impl Default for Rem"],["impl Default for Question"],["impl Default for Mod"],["impl Default for Tilde"],["impl Default for LArrow"],["impl Default for Become"],["impl Default for Pound"],["impl Default for Brace"],["impl Default for Caret"],["impl Default for ShlEq"],["impl Default for ShrEq"],["impl Default for Paren"],["impl Default for Gt"],["impl Default for PathArguments"],["impl Default for And"],["impl Default for At"],["impl Default for Impl"],["impl Default for Move"],["impl Default for Div"],["impl Default for Shr"],["impl Default for Lt"],["impl Default for Dot2"],["impl Default for Dot3"],["impl Default for Comma"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/error/trait.Error.js b/implementors/core/error/trait.Error.js deleted file mode 100644 index a81b9f8..0000000 --- a/implementors/core/error/trait.Error.js +++ /dev/null @@ -1,4 +0,0 @@ -(function() {var implementors = { -"proc_macro2":[["impl Error for LexError"]], -"syn":[["impl Error for Error"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/fmt/trait.Debug.js b/implementors/core/fmt/trait.Debug.js deleted file mode 100644 index dd9bdcf..0000000 --- a/implementors/core/fmt/trait.Debug.js +++ /dev/null @@ -1,8 +0,0 @@ -(function() {var implementors = { -"delog":[["impl<T, S, U> Debug for HexStr<'_, T, U, S>where\n T: AsRef<[u8]> + ?Sized,\n U: Unsigned,\n S: Separator,"],["impl Debug for Statistics"]], -"flexiber":[["impl Debug for Tag"],["impl<'a> Debug for Decoder<'a>"],["impl<'a> Debug for Encoder<'a>"],["impl Debug for Length"],["impl<V: Debug, T: Debug> Debug for TaggedValue<V, T>"],["impl Debug for Class"],["impl Debug for Error"],["impl Debug for ErrorKind"],["impl<'a> Debug for Slice<'a>"]], -"log":[["impl Debug for SetLoggerError"],["impl Debug for ParseLevelError"],["impl<'a> Debug for MetadataBuilder<'a>"],["impl Debug for Level"],["impl<'a> Debug for RecordBuilder<'a>"],["impl Debug for LevelFilter"],["impl<'a> Debug for Metadata<'a>"],["impl<'a> Debug for Record<'a>"]], -"proc_macro2":[["impl Debug for Group"],["impl Debug for TokenTree"],["impl Debug for TokenStream"],["impl Debug for IntoIter"],["impl Debug for Span"],["impl Debug for Punct"],["impl Debug for Ident"],["impl Debug for Literal"],["impl Debug for Spacing"],["impl Debug for DelimSpan"],["impl Debug for Delimiter"],["impl Debug for LexError"]], -"syn":[["impl Debug for Dollar"],["impl Debug for TypeNever"],["impl Debug for Ge"],["impl Debug for Rem"],["impl Debug for AngleBracketedGenericArguments"],["impl Debug for QSelf"],["impl Debug for Return"],["impl Debug for Type"],["impl Debug for Visibility"],["impl Debug for Priv"],["impl Debug for NestedMeta"],["impl Debug for Star"],["impl<'a> Debug for ParseBuffer<'a>"],["impl Debug for Path"],["impl Debug for ExprIndex"],["impl Debug for Match"],["impl Debug for Macro"],["impl Debug for Virtual"],["impl Debug for Try"],["impl Debug for DataUnion"],["impl Debug for ReturnType"],["impl Debug for Macro"],["impl Debug for TypeBareFn"],["impl Debug for TypeGroup"],["impl Debug for TypeParen"],["impl Debug for PathArguments"],["impl Debug for Caret"],["impl Debug for Variadic"],["impl Debug for Override"],["impl Debug for Variant"],["impl Debug for PredicateLifetime"],["impl Debug for Const"],["impl Debug for Crate"],["impl<'a> Debug for Turbofish<'a>"],["impl Debug for Error"],["impl Debug for TypePath"],["impl Debug for Static"],["impl Debug for LitFloat"],["impl Debug for Ref"],["impl Debug for Union"],["impl Debug for Super"],["impl Debug for Enum"],["impl Debug for Lt"],["impl Debug for Abi"],["impl Debug for Dyn"],["impl Debug for Yield"],["impl Debug for TypeReference"],["impl Debug for Typeof"],["impl Debug for BareFnArg"],["impl Debug for WhereClause"],["impl Debug for VisRestricted"],["impl Debug for Bracket"],["impl Debug for Tilde"],["impl Debug for TypeParamBound"],["impl Debug for Fields"],["impl<T: Debug, P: Debug> Debug for Punctuated<T, P>"],["impl Debug for Attribute"],["impl Debug for TraitBound"],["impl Debug for Paren"],["impl Debug for SelfType"],["impl Debug for Colon"],["impl Debug for LitChar"],["impl Debug for MulEq"],["impl Debug for PathSegment"],["impl Debug for TypeTuple"],["impl Debug for DeriveInput"],["impl Debug for Abstract"],["impl Debug for TypeImplTrait"],["impl Debug for GenericParam"],["impl Debug for Bang"],["impl Debug for VisPublic"],["impl Debug for Where"],["impl Debug for Div"],["impl Debug for MetaNameValue"],["impl Debug for Data"],["impl Debug for Comma"],["impl Debug for Extern"],["impl Debug for ExprParen"],["impl Debug for Auto"],["impl Debug for Become"],["impl Debug for Default"],["impl<'a> Debug for TypeGenerics<'a>"],["impl Debug for MacroDelimiter"],["impl Debug for RArrow"],["impl Debug for RemEq"],["impl Debug for ShrEq"],["impl Debug for ExprCall"],["impl Debug for Box"],["impl Debug for TypePtr"],["impl Debug for DotDotEq"],["impl Debug for Continue"],["impl<'a> Debug for ImplGenerics<'a>"],["impl Debug for In"],["impl Debug for DataStruct"],["impl Debug for DataEnum"],["impl Debug for Mut"],["impl Debug for Group"],["impl Debug for BinOp"],["impl Debug for Member"],["impl Debug for As"],["impl Debug for Brace"],["impl Debug for Shl"],["impl Debug for Le"],["impl Debug for PredicateEq"],["impl Debug for Shr"],["impl Debug for PredicateType"],["impl Debug for FieldsUnnamed"],["impl Debug for GenericArgument"],["impl Debug for Lit"],["impl Debug for LitByteStr"],["impl Debug for CaretEq"],["impl Debug for Loop"],["impl Debug for LitBool"],["impl Debug for Let"],["impl Debug for AttrStyle"],["impl Debug for Unsafe"],["impl Debug for DivEq"],["impl Debug for Unsized"],["impl Debug for Field"],["impl Debug for ConstParam"],["impl Debug for Async"],["impl Debug for ParenthesizedGenericArguments"],["impl Debug for Colon2"],["impl Debug for FatArrow"],["impl Debug for Generics"],["impl Debug for Mod"],["impl Debug for Fn"],["impl Debug for EqEq"],["impl Debug for Else"],["impl Debug for TypeArray"],["impl Debug for AddEq"],["impl Debug for Use"],["impl Debug for Pound"],["impl Debug for Semi"],["impl Debug for Pub"],["impl Debug for Expr"],["impl Debug for LitInt"],["impl Debug for Add"],["impl Debug for Trait"],["impl Debug for Eq"],["impl Debug for Sub"],["impl Debug for Do"],["impl Debug for AndAnd"],["impl Debug for TypeParam"],["impl Debug for FieldsNamed"],["impl Debug for Gt"],["impl Debug for TypeSlice"],["impl Debug for Question"],["impl Debug for TypeInfer"],["impl Debug for ExprLit"],["impl Debug for Impl"],["impl Debug for ShlEq"],["impl Debug for Underscore"],["impl Debug for ExprBinary"],["impl Debug for Binding"],["impl Debug for Nothing"],["impl Debug for If"],["impl Debug for Or"],["impl Debug for LArrow"],["impl Debug for While"],["impl Debug for For"],["impl Debug for ExprField"],["impl Debug for Break"],["impl Debug for OrEq"],["impl Debug for Type"],["impl Debug for AndEq"],["impl Debug for Move"],["impl Debug for Dot3"],["impl Debug for TypeMacro"],["impl Debug for SelfValue"],["impl Debug for LitByte"],["impl Debug for SubEq"],["impl Debug for TypeTraitObject"],["impl Debug for LifetimeDef"],["impl Debug for Await"],["impl Debug for And"],["impl Debug for LitStr"],["impl Debug for Struct"],["impl Debug for Ne"],["impl Debug for ExprCast"],["impl Debug for ExprUnary"],["impl Debug for Dot2"],["impl Debug for VisCrate"],["impl Debug for Meta"],["impl Debug for WherePredicate"],["impl Debug for Final"],["impl Debug for UnOp"],["impl Debug for Dot"],["impl Debug for MetaList"],["impl Debug for TraitBoundModifier"],["impl Debug for BoundLifetimes"],["impl Debug for At"],["impl Debug for OrOr"],["impl Debug for ExprPath"],["impl Debug for Index"],["impl Debug for Constraint"],["impl Debug for Lifetime"]], -"synstructure":[["impl Debug for BindStyle"],["impl<'a> Debug for Structure<'a>"],["impl Debug for AddBounds"],["impl<'a> Debug for BindingInfo<'a>"],["impl<'a> Debug for VariantAst<'a>"],["impl<'a> Debug for VariantInfo<'a>"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/fmt/trait.Display.js b/implementors/core/fmt/trait.Display.js deleted file mode 100644 index d959688..0000000 --- a/implementors/core/fmt/trait.Display.js +++ /dev/null @@ -1,7 +0,0 @@ -(function() {var implementors = { -"delog":[["impl<T, U, S> Display for HexStr<'_, T, U, S>where\n T: AsRef<[u8]> + ?Sized,\n U: Unsigned,\n S: Separator,"]], -"flexiber":[["impl Display for Tag"],["impl Display for Error"],["impl Display for Length"],["impl Display for ErrorKind"]], -"log":[["impl Display for Level"],["impl Display for LevelFilter"],["impl Display for ParseLevelError"],["impl Display for SetLoggerError"]], -"proc_macro2":[["impl Display for Literal"],["impl Display for TokenTree"],["impl Display for Punct"],["impl Display for Ident"],["impl Display for TokenStream"],["impl Display for LexError"],["impl Display for Group"]], -"syn":[["impl Display for LitInt"],["impl Display for Lifetime"],["impl<'a> Display for ParseBuffer<'a>"],["impl Display for Error"],["impl Display for LitFloat"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/fmt/trait.LowerHex.js b/implementors/core/fmt/trait.LowerHex.js deleted file mode 100644 index 8d40b35..0000000 --- a/implementors/core/fmt/trait.LowerHex.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"delog":[["impl<'a, T, U, S> LowerHex for HexStr<'a, T, U, S>where\n T: AsRef<[u8]> + ?Sized,\n U: Unsigned,\n S: Separator,"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/fmt/trait.UpperHex.js b/implementors/core/fmt/trait.UpperHex.js deleted file mode 100644 index f3df264..0000000 --- a/implementors/core/fmt/trait.UpperHex.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"delog":[["impl<'a, T, U, S> UpperHex for HexStr<'a, T, U, S>where\n T: AsRef<[u8]> + ?Sized,\n U: Unsigned,\n S: Separator,"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/hash/trait.Hash.js b/implementors/core/hash/trait.Hash.js deleted file mode 100644 index 320f550..0000000 --- a/implementors/core/hash/trait.Hash.js +++ /dev/null @@ -1,6 +0,0 @@ -(function() {var implementors = { -"log":[["impl Hash for Level"],["impl<'a> Hash for MetadataBuilder<'a>"],["impl Hash for LevelFilter"],["impl<'a> Hash for Metadata<'a>"]], -"proc_macro2":[["impl Hash for Ident"]], -"syn":[["impl Hash for Gt"],["impl Hash for MulEq"],["impl Hash for ShrEq"],["impl Hash for Or"],["impl<'a> Hash for Turbofish<'a>"],["impl Hash for Auto"],["impl Hash for UnOp"],["impl Hash for ReturnType"],["impl Hash for TypeInfer"],["impl Hash for PredicateLifetime"],["impl Hash for WherePredicate"],["impl Hash for Attribute"],["impl Hash for VisPublic"],["impl Hash for Match"],["impl Hash for Await"],["impl Hash for If"],["impl Hash for Virtual"],["impl Hash for Return"],["impl Hash for Unsized"],["impl Hash for ExprCast"],["impl Hash for LitStr"],["impl Hash for AndEq"],["impl Hash for TraitBound"],["impl Hash for TypePtr"],["impl Hash for While"],["impl Hash for TypeParamBound"],["impl Hash for Const"],["impl Hash for PredicateEq"],["impl Hash for Pub"],["impl Hash for ExprIndex"],["impl Hash for Ne"],["impl Hash for LitByteStr"],["impl Hash for Do"],["impl Hash for Super"],["impl Hash for OrEq"],["impl Hash for Mod"],["impl Hash for Index"],["impl Hash for TypeGroup"],["impl Hash for MetaList"],["impl Hash for SelfType"],["impl Hash for Static"],["impl Hash for Become"],["impl Hash for GenericParam"],["impl Hash for Mut"],["impl Hash for Colon2"],["impl Hash for Path"],["impl Hash for Member"],["impl Hash for Dyn"],["impl Hash for TypeReference"],["impl Hash for FieldsUnnamed"],["impl Hash for Ge"],["impl Hash for ExprPath"],["impl Hash for AndAnd"],["impl Hash for Le"],["impl Hash for Let"],["impl Hash for TypeImplTrait"],["impl Hash for GenericArgument"],["impl Hash for Abi"],["impl<'a> Hash for ImplGenerics<'a>"],["impl Hash for Async"],["impl Hash for Abstract"],["impl Hash for DataEnum"],["impl Hash for Bang"],["impl Hash for NestedMeta"],["impl Hash for MetaNameValue"],["impl Hash for DataStruct"],["impl Hash for Crate"],["impl Hash for Binding"],["impl Hash for Group"],["impl Hash for ExprParen"],["impl<T, P> Hash for Punctuated<T, P>where\n T: Hash,\n P: Hash,"],["impl<'a> Hash for TypeGenerics<'a>"],["impl Hash for Yield"],["impl Hash for EqEq"],["impl Hash for LifetimeDef"],["impl Hash for PathSegment"],["impl Hash for Shr"],["impl Hash for FatArrow"],["impl Hash for Break"],["impl Hash for Fields"],["impl Hash for BoundLifetimes"],["impl Hash for Colon"],["impl Hash for Data"],["impl Hash for VisRestricted"],["impl Hash for ConstParam"],["impl Hash for TypeNever"],["impl Hash for AttrStyle"],["impl Hash for Enum"],["impl Hash for DeriveInput"],["impl Hash for ExprBinary"],["impl Hash for FieldsNamed"],["impl Hash for In"],["impl Hash for Semi"],["impl Hash for AngleBracketedGenericArguments"],["impl Hash for Dot2"],["impl Hash for Struct"],["impl Hash for TypeBareFn"],["impl Hash for TypeTuple"],["impl Hash for BareFnArg"],["impl Hash for ExprCall"],["impl Hash for Constraint"],["impl Hash for Default"],["impl Hash for Extern"],["impl Hash for AddEq"],["impl Hash for And"],["impl Hash for OrOr"],["impl Hash for Div"],["impl Hash for MacroDelimiter"],["impl Hash for Continue"],["impl Hash for TypeSlice"],["impl Hash for Try"],["impl Hash for Eq"],["impl Hash for Dot3"],["impl Hash for Where"],["impl Hash for For"],["impl Hash for PredicateType"],["impl Hash for Macro"],["impl Hash for Loop"],["impl Hash for Pound"],["impl Hash for Lt"],["impl Hash for Ref"],["impl Hash for ExprUnary"],["impl Hash for Star"],["impl Hash for Generics"],["impl Hash for Brace"],["impl Hash for BinOp"],["impl Hash for WhereClause"],["impl Hash for Dollar"],["impl Hash for ParenthesizedGenericArguments"],["impl Hash for Sub"],["impl Hash for Comma"],["impl Hash for Final"],["impl Hash for Type"],["impl Hash for DotDotEq"],["impl Hash for SubEq"],["impl Hash for LArrow"],["impl Hash for Fn"],["impl Hash for Type"],["impl Hash for Typeof"],["impl Hash for ShlEq"],["impl Hash for CaretEq"],["impl Hash for LitInt"],["impl Hash for Unsafe"],["impl Hash for Dot"],["impl Hash for Variadic"],["impl Hash for Impl"],["impl Hash for Lit"],["impl Hash for TraitBoundModifier"],["impl Hash for Nothing"],["impl Hash for Add"],["impl Hash for Field"],["impl Hash for Move"],["impl Hash for Lifetime"],["impl Hash for Union"],["impl Hash for TypeMacro"],["impl Hash for Override"],["impl Hash for Caret"],["impl Hash for DataUnion"],["impl Hash for RemEq"],["impl Hash for TypeArray"],["impl Hash for Visibility"],["impl Hash for Meta"],["impl Hash for Else"],["impl Hash for SelfValue"],["impl Hash for Question"],["impl Hash for Expr"],["impl Hash for TypeParam"],["impl Hash for QSelf"],["impl Hash for Variant"],["impl Hash for RArrow"],["impl Hash for ExprField"],["impl Hash for Bracket"],["impl Hash for VisCrate"],["impl Hash for DivEq"],["impl Hash for Use"],["impl Hash for Paren"],["impl Hash for At"],["impl Hash for As"],["impl Hash for Rem"],["impl Hash for Priv"],["impl Hash for LitByte"],["impl Hash for Underscore"],["impl Hash for ExprLit"],["impl Hash for Shl"],["impl Hash for Box"],["impl Hash for Tilde"],["impl Hash for Trait"],["impl Hash for Macro"],["impl Hash for TypePath"],["impl Hash for TypeTraitObject"],["impl Hash for LitFloat"],["impl Hash for LitChar"],["impl Hash for PathArguments"],["impl Hash for TypeParen"],["impl Hash for LitBool"]], -"synstructure":[["impl Hash for BindStyle"],["impl<'a> Hash for VariantAst<'a>"],["impl<'a> Hash for VariantInfo<'a>"],["impl<'a> Hash for Structure<'a>"],["impl<'a> Hash for BindingInfo<'a>"],["impl Hash for AddBounds"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/iter/traits/collect/trait.Extend.js b/implementors/core/iter/traits/collect/trait.Extend.js deleted file mode 100644 index cac055d..0000000 --- a/implementors/core/iter/traits/collect/trait.Extend.js +++ /dev/null @@ -1,4 +0,0 @@ -(function() {var implementors = { -"proc_macro2":[["impl Extend<TokenTree> for TokenStream"],["impl Extend<TokenStream> for TokenStream"]], -"syn":[["impl<T, P> Extend<Pair<T, P>> for Punctuated<T, P>"],["impl<T, P> Extend<T> for Punctuated<T, P>where\n P: Default,"],["impl Extend<Error> for Error"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/iter/traits/collect/trait.FromIterator.js b/implementors/core/iter/traits/collect/trait.FromIterator.js deleted file mode 100644 index b002816..0000000 --- a/implementors/core/iter/traits/collect/trait.FromIterator.js +++ /dev/null @@ -1,4 +0,0 @@ -(function() {var implementors = { -"proc_macro2":[["impl FromIterator<TokenStream> for TokenStream"],["impl FromIterator<TokenTree> for TokenStream"]], -"syn":[["impl<T, P> FromIterator<Pair<T, P>> for Punctuated<T, P>"],["impl<T, P> FromIterator<T> for Punctuated<T, P>where\n P: Default,"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/iter/traits/collect/trait.IntoIterator.js b/implementors/core/iter/traits/collect/trait.IntoIterator.js deleted file mode 100644 index 83bf501..0000000 --- a/implementors/core/iter/traits/collect/trait.IntoIterator.js +++ /dev/null @@ -1,4 +0,0 @@ -(function() {var implementors = { -"proc_macro2":[["impl IntoIterator for TokenStream"]], -"syn":[["impl<'a> IntoIterator for &'a Error"],["impl<'a> IntoIterator for &'a mut Fields"],["impl<'a, T, P> IntoIterator for &'a Punctuated<T, P>"],["impl IntoIterator for Fields"],["impl<T, P> IntoIterator for Punctuated<T, P>"],["impl<'a, T, P> IntoIterator for &'a mut Punctuated<T, P>"],["impl IntoIterator for Error"],["impl<'a> IntoIterator for &'a Fields"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/iter/traits/double_ended/trait.DoubleEndedIterator.js b/implementors/core/iter/traits/double_ended/trait.DoubleEndedIterator.js deleted file mode 100644 index f1e1094..0000000 --- a/implementors/core/iter/traits/double_ended/trait.DoubleEndedIterator.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"syn":[["impl<'a, T, P> DoubleEndedIterator for PairsMut<'a, T, P>"],["impl<'a, T> DoubleEndedIterator for Iter<'a, T>"],["impl<T> DoubleEndedIterator for IntoIter<T>"],["impl<T, P> DoubleEndedIterator for IntoPairs<T, P>"],["impl<'a, T> DoubleEndedIterator for IterMut<'a, T>"],["impl<'a, T, P> DoubleEndedIterator for Pairs<'a, T, P>"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/iter/traits/exact_size/trait.ExactSizeIterator.js b/implementors/core/iter/traits/exact_size/trait.ExactSizeIterator.js deleted file mode 100644 index 9d0b477..0000000 --- a/implementors/core/iter/traits/exact_size/trait.ExactSizeIterator.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"syn":[["impl<'a, T> ExactSizeIterator for Iter<'a, T>"],["impl<'a, T, P> ExactSizeIterator for PairsMut<'a, T, P>"],["impl<T> ExactSizeIterator for IntoIter<T>"],["impl<T, P> ExactSizeIterator for IntoPairs<T, P>"],["impl<'a, T, P> ExactSizeIterator for Pairs<'a, T, P>"],["impl<'a, T> ExactSizeIterator for IterMut<'a, T>"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/iter/traits/iterator/trait.Iterator.js b/implementors/core/iter/traits/iterator/trait.Iterator.js deleted file mode 100644 index b5ad8eb..0000000 --- a/implementors/core/iter/traits/iterator/trait.Iterator.js +++ /dev/null @@ -1,4 +0,0 @@ -(function() {var implementors = { -"proc_macro2":[["impl Iterator for IntoIter"]], -"syn":[["impl<T> Iterator for IntoIter<T>"],["impl<'a, T, P> Iterator for Pairs<'a, T, P>"],["impl<'a, T, P> Iterator for PairsMut<'a, T, P>"],["impl<'a, T> Iterator for Iter<'a, T>"],["impl<'a, T> Iterator for IterMut<'a, T>"],["impl<T, P> Iterator for IntoPairs<T, P>"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/marker/trait.Copy.js b/implementors/core/marker/trait.Copy.js deleted file mode 100644 index 2e7e290..0000000 --- a/implementors/core/marker/trait.Copy.js +++ /dev/null @@ -1,8 +0,0 @@ -(function() {var implementors = { -"delog":[["impl Copy for Statistics"],["impl Copy for RipgrepRenderer"],["impl Copy for DefaultRenderer"]], -"flexiber":[["impl Copy for ErrorKind"],["impl Copy for Tag"],["impl Copy for Class"],["impl Copy for Length"],["impl<V: Copy, T: Copy> Copy for TaggedValue<V, T>"],["impl Copy for SimpleTag"],["impl Copy for Error"],["impl<'a> Copy for Slice<'a>"]], -"log":[["impl Copy for Level"],["impl Copy for LevelFilter"]], -"proc_macro2":[["impl Copy for Spacing"],["impl Copy for Span"],["impl Copy for DelimSpan"],["impl Copy for Delimiter"]], -"syn":[["impl Copy for ShrEq"],["impl Copy for Box"],["impl Copy for Ge"],["impl Copy for Comma"],["impl Copy for Else"],["impl Copy for SelfType"],["impl Copy for MulEq"],["impl Copy for Colon"],["impl Copy for At"],["impl Copy for Let"],["impl Copy for Lt"],["impl Copy for Caret"],["impl Copy for For"],["impl Copy for Sub"],["impl Copy for As"],["impl Copy for Macro"],["impl Copy for Unsafe"],["impl Copy for Static"],["impl Copy for Where"],["impl Copy for Dot2"],["impl Copy for Virtual"],["impl Copy for If"],["impl Copy for Pound"],["impl Copy for SubEq"],["impl Copy for Tilde"],["impl<'a> Copy for Cursor<'a>"],["impl Copy for Shr"],["impl Copy for Ref"],["impl Copy for While"],["impl Copy for AddEq"],["impl Copy for Await"],["impl Copy for Enum"],["impl Copy for Become"],["impl Copy for Struct"],["impl Copy for AndEq"],["impl Copy for And"],["impl Copy for Colon2"],["impl Copy for Dot"],["impl Copy for Abstract"],["impl Copy for UnOp"],["impl Copy for RArrow"],["impl Copy for OrOr"],["impl Copy for Dollar"],["impl Copy for Async"],["impl Copy for Le"],["impl Copy for ShlEq"],["impl Copy for Yield"],["impl Copy for Paren"],["impl Copy for Continue"],["impl Copy for Dyn"],["impl Copy for Bang"],["impl Copy for Use"],["impl Copy for AndAnd"],["impl Copy for Mut"],["impl Copy for DotDotEq"],["impl Copy for RemEq"],["impl Copy for Mod"],["impl Copy for SelfValue"],["impl Copy for LArrow"],["impl Copy for Unsized"],["impl Copy for DivEq"],["impl Copy for Loop"],["impl Copy for OrEq"],["impl Copy for Break"],["impl Copy for Brace"],["impl Copy for In"],["impl Copy for Ne"],["impl Copy for FatArrow"],["impl Copy for Or"],["impl Copy for Move"],["impl Copy for Override"],["impl Copy for Fn"],["impl Copy for Bracket"],["impl Copy for Gt"],["impl Copy for Type"],["impl Copy for Question"],["impl Copy for Impl"],["impl Copy for Group"],["impl Copy for BinOp"],["impl Copy for Div"],["impl Copy for Underscore"],["impl Copy for Union"],["impl Copy for Extern"],["impl Copy for Final"],["impl<'c, 'a> Copy for StepCursor<'c, 'a>"],["impl Copy for Dot3"],["impl Copy for Shl"],["impl Copy for AttrStyle"],["impl Copy for Star"],["impl Copy for Priv"],["impl Copy for Try"],["impl Copy for Default"],["impl Copy for Auto"],["impl Copy for Super"],["impl Copy for Const"],["impl Copy for Semi"],["impl Copy for Pub"],["impl Copy for Trait"],["impl Copy for EqEq"],["impl Copy for Rem"],["impl Copy for CaretEq"],["impl Copy for Eq"],["impl Copy for TraitBoundModifier"],["impl Copy for Crate"],["impl Copy for Typeof"],["impl Copy for Do"],["impl Copy for Return"],["impl Copy for Add"],["impl Copy for Match"]], -"synstructure":[["impl Copy for BindStyle"],["impl<'a> Copy for VariantAst<'a>"],["impl Copy for AddBounds"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/marker/trait.Freeze.js b/implementors/core/marker/trait.Freeze.js deleted file mode 100644 index 55bcbe9..0000000 --- a/implementors/core/marker/trait.Freeze.js +++ /dev/null @@ -1,8 +0,0 @@ -(function() {var implementors = { -"delog":[["impl Freeze for U1",1,["delog::hex::U1"]],["impl<'a, T: ?Sized, U, S> Freeze for HexStr<'a, T, U, S>",1,["delog::hex::HexStr"]],["impl Freeze for Statistics",1,["delog::logger::Statistics"]],["impl Freeze for DefaultRenderer",1,["delog::render::DefaultRenderer"]],["impl Freeze for RipgrepRenderer",1,["delog::render::RipgrepRenderer"]]], -"flexiber":[["impl<'a> Freeze for Decoder<'a>",1,["flexiber::decoder::Decoder"]],["impl<'a> Freeze for Encoder<'a>",1,["flexiber::encoder::Encoder"]],["impl Freeze for Error",1,["flexiber::error::Error"]],["impl Freeze for ErrorKind",1,["flexiber::error::ErrorKind"]],["impl Freeze for Length",1,["flexiber::length::Length"]],["impl Freeze for SimpleTag",1,["flexiber::simpletag::SimpleTag"]],["impl<'a> Freeze for Slice<'a>",1,["flexiber::slice::Slice"]],["impl Freeze for Class",1,["flexiber::tag::Class"]],["impl Freeze for Tag",1,["flexiber::tag::Tag"]],["impl<V, T> Freeze for TaggedValue<V, T>where\n T: Freeze,\n V: Freeze,",1,["flexiber::tagged::TaggedValue"]]], -"log":[["impl Freeze for Level",1,["log::Level"]],["impl Freeze for LevelFilter",1,["log::LevelFilter"]],["impl<'a> Freeze for Record<'a>",1,["log::Record"]],["impl<'a> Freeze for RecordBuilder<'a>",1,["log::RecordBuilder"]],["impl<'a> Freeze for Metadata<'a>",1,["log::Metadata"]],["impl<'a> Freeze for MetadataBuilder<'a>",1,["log::MetadataBuilder"]],["impl Freeze for SetLoggerError",1,["log::SetLoggerError"]],["impl Freeze for ParseLevelError",1,["log::ParseLevelError"]]], -"proc_macro2":[["impl Freeze for DelimSpan",1,["proc_macro2::extra::DelimSpan"]],["impl Freeze for IntoIter",1,["proc_macro2::token_stream::IntoIter"]],["impl Freeze for TokenStream",1,["proc_macro2::TokenStream"]],["impl Freeze for LexError",1,["proc_macro2::LexError"]],["impl Freeze for Span",1,["proc_macro2::Span"]],["impl Freeze for TokenTree",1,["proc_macro2::TokenTree"]],["impl Freeze for Group",1,["proc_macro2::Group"]],["impl Freeze for Delimiter",1,["proc_macro2::Delimiter"]],["impl Freeze for Punct",1,["proc_macro2::Punct"]],["impl Freeze for Spacing",1,["proc_macro2::Spacing"]],["impl Freeze for Ident",1,["proc_macro2::Ident"]],["impl Freeze for Literal",1,["proc_macro2::Literal"]]], -"syn":[["impl Freeze for Underscore",1,["syn::token::Underscore"]],["impl Freeze for Abstract",1,["syn::token::Abstract"]],["impl Freeze for As",1,["syn::token::As"]],["impl Freeze for Async",1,["syn::token::Async"]],["impl Freeze for Auto",1,["syn::token::Auto"]],["impl Freeze for Await",1,["syn::token::Await"]],["impl Freeze for Become",1,["syn::token::Become"]],["impl Freeze for Box",1,["syn::token::Box"]],["impl Freeze for Break",1,["syn::token::Break"]],["impl Freeze for Const",1,["syn::token::Const"]],["impl Freeze for Continue",1,["syn::token::Continue"]],["impl Freeze for Crate",1,["syn::token::Crate"]],["impl Freeze for Default",1,["syn::token::Default"]],["impl Freeze for Do",1,["syn::token::Do"]],["impl Freeze for Dyn",1,["syn::token::Dyn"]],["impl Freeze for Else",1,["syn::token::Else"]],["impl Freeze for Enum",1,["syn::token::Enum"]],["impl Freeze for Extern",1,["syn::token::Extern"]],["impl Freeze for Final",1,["syn::token::Final"]],["impl Freeze for Fn",1,["syn::token::Fn"]],["impl Freeze for For",1,["syn::token::For"]],["impl Freeze for If",1,["syn::token::If"]],["impl Freeze for Impl",1,["syn::token::Impl"]],["impl Freeze for In",1,["syn::token::In"]],["impl Freeze for Let",1,["syn::token::Let"]],["impl Freeze for Loop",1,["syn::token::Loop"]],["impl Freeze for Macro",1,["syn::token::Macro"]],["impl Freeze for Match",1,["syn::token::Match"]],["impl Freeze for Mod",1,["syn::token::Mod"]],["impl Freeze for Move",1,["syn::token::Move"]],["impl Freeze for Mut",1,["syn::token::Mut"]],["impl Freeze for Override",1,["syn::token::Override"]],["impl Freeze for Priv",1,["syn::token::Priv"]],["impl Freeze for Pub",1,["syn::token::Pub"]],["impl Freeze for Ref",1,["syn::token::Ref"]],["impl Freeze for Return",1,["syn::token::Return"]],["impl Freeze for SelfType",1,["syn::token::SelfType"]],["impl Freeze for SelfValue",1,["syn::token::SelfValue"]],["impl Freeze for Static",1,["syn::token::Static"]],["impl Freeze for Struct",1,["syn::token::Struct"]],["impl Freeze for Super",1,["syn::token::Super"]],["impl Freeze for Trait",1,["syn::token::Trait"]],["impl Freeze for Try",1,["syn::token::Try"]],["impl Freeze for Type",1,["syn::token::Type"]],["impl Freeze for Typeof",1,["syn::token::Typeof"]],["impl Freeze for Union",1,["syn::token::Union"]],["impl Freeze for Unsafe",1,["syn::token::Unsafe"]],["impl Freeze for Unsized",1,["syn::token::Unsized"]],["impl Freeze for Use",1,["syn::token::Use"]],["impl Freeze for Virtual",1,["syn::token::Virtual"]],["impl Freeze for Where",1,["syn::token::Where"]],["impl Freeze for While",1,["syn::token::While"]],["impl Freeze for Yield",1,["syn::token::Yield"]],["impl Freeze for Add",1,["syn::token::Add"]],["impl Freeze for AddEq",1,["syn::token::AddEq"]],["impl Freeze for And",1,["syn::token::And"]],["impl Freeze for AndAnd",1,["syn::token::AndAnd"]],["impl Freeze for AndEq",1,["syn::token::AndEq"]],["impl Freeze for At",1,["syn::token::At"]],["impl Freeze for Bang",1,["syn::token::Bang"]],["impl Freeze for Caret",1,["syn::token::Caret"]],["impl Freeze for CaretEq",1,["syn::token::CaretEq"]],["impl Freeze for Colon",1,["syn::token::Colon"]],["impl Freeze for Colon2",1,["syn::token::Colon2"]],["impl Freeze for Comma",1,["syn::token::Comma"]],["impl Freeze for Div",1,["syn::token::Div"]],["impl Freeze for DivEq",1,["syn::token::DivEq"]],["impl Freeze for Dollar",1,["syn::token::Dollar"]],["impl Freeze for Dot",1,["syn::token::Dot"]],["impl Freeze for Dot2",1,["syn::token::Dot2"]],["impl Freeze for Dot3",1,["syn::token::Dot3"]],["impl Freeze for DotDotEq",1,["syn::token::DotDotEq"]],["impl Freeze for Eq",1,["syn::token::Eq"]],["impl Freeze for EqEq",1,["syn::token::EqEq"]],["impl Freeze for Ge",1,["syn::token::Ge"]],["impl Freeze for Gt",1,["syn::token::Gt"]],["impl Freeze for Le",1,["syn::token::Le"]],["impl Freeze for Lt",1,["syn::token::Lt"]],["impl Freeze for MulEq",1,["syn::token::MulEq"]],["impl Freeze for Ne",1,["syn::token::Ne"]],["impl Freeze for Or",1,["syn::token::Or"]],["impl Freeze for OrEq",1,["syn::token::OrEq"]],["impl Freeze for OrOr",1,["syn::token::OrOr"]],["impl Freeze for Pound",1,["syn::token::Pound"]],["impl Freeze for Question",1,["syn::token::Question"]],["impl Freeze for RArrow",1,["syn::token::RArrow"]],["impl Freeze for LArrow",1,["syn::token::LArrow"]],["impl Freeze for Rem",1,["syn::token::Rem"]],["impl Freeze for RemEq",1,["syn::token::RemEq"]],["impl Freeze for FatArrow",1,["syn::token::FatArrow"]],["impl Freeze for Semi",1,["syn::token::Semi"]],["impl Freeze for Shl",1,["syn::token::Shl"]],["impl Freeze for ShlEq",1,["syn::token::ShlEq"]],["impl Freeze for Shr",1,["syn::token::Shr"]],["impl Freeze for ShrEq",1,["syn::token::ShrEq"]],["impl Freeze for Star",1,["syn::token::Star"]],["impl Freeze for Sub",1,["syn::token::Sub"]],["impl Freeze for SubEq",1,["syn::token::SubEq"]],["impl Freeze for Tilde",1,["syn::token::Tilde"]],["impl Freeze for Brace",1,["syn::token::Brace"]],["impl Freeze for Bracket",1,["syn::token::Bracket"]],["impl Freeze for Paren",1,["syn::token::Paren"]],["impl Freeze for Group",1,["syn::token::Group"]],["impl Freeze for Attribute",1,["syn::attr::Attribute"]],["impl Freeze for AttrStyle",1,["syn::attr::AttrStyle"]],["impl Freeze for Meta",1,["syn::attr::Meta"]],["impl Freeze for MetaList",1,["syn::attr::MetaList"]],["impl Freeze for MetaNameValue",1,["syn::attr::MetaNameValue"]],["impl Freeze for NestedMeta",1,["syn::attr::NestedMeta"]],["impl Freeze for Variant",1,["syn::data::Variant"]],["impl Freeze for Fields",1,["syn::data::Fields"]],["impl Freeze for FieldsNamed",1,["syn::data::FieldsNamed"]],["impl Freeze for FieldsUnnamed",1,["syn::data::FieldsUnnamed"]],["impl Freeze for Field",1,["syn::data::Field"]],["impl Freeze for Visibility",1,["syn::data::Visibility"]],["impl Freeze for VisPublic",1,["syn::data::VisPublic"]],["impl Freeze for VisCrate",1,["syn::data::VisCrate"]],["impl Freeze for VisRestricted",1,["syn::data::VisRestricted"]],["impl Freeze for Expr",1,["syn::expr::Expr"]],["impl Freeze for ExprArray",1,["syn::expr::ExprArray"]],["impl Freeze for ExprAssign",1,["syn::expr::ExprAssign"]],["impl Freeze for ExprAssignOp",1,["syn::expr::ExprAssignOp"]],["impl Freeze for ExprAsync",1,["syn::expr::ExprAsync"]],["impl Freeze for ExprAwait",1,["syn::expr::ExprAwait"]],["impl Freeze for ExprBinary",1,["syn::expr::ExprBinary"]],["impl Freeze for ExprBlock",1,["syn::expr::ExprBlock"]],["impl Freeze for ExprBox",1,["syn::expr::ExprBox"]],["impl Freeze for ExprBreak",1,["syn::expr::ExprBreak"]],["impl Freeze for ExprCall",1,["syn::expr::ExprCall"]],["impl Freeze for ExprCast",1,["syn::expr::ExprCast"]],["impl Freeze for ExprClosure",1,["syn::expr::ExprClosure"]],["impl Freeze for ExprContinue",1,["syn::expr::ExprContinue"]],["impl Freeze for ExprField",1,["syn::expr::ExprField"]],["impl Freeze for ExprForLoop",1,["syn::expr::ExprForLoop"]],["impl Freeze for ExprGroup",1,["syn::expr::ExprGroup"]],["impl Freeze for ExprIf",1,["syn::expr::ExprIf"]],["impl Freeze for ExprIndex",1,["syn::expr::ExprIndex"]],["impl Freeze for ExprLet",1,["syn::expr::ExprLet"]],["impl Freeze for ExprLit",1,["syn::expr::ExprLit"]],["impl Freeze for ExprLoop",1,["syn::expr::ExprLoop"]],["impl Freeze for ExprMacro",1,["syn::expr::ExprMacro"]],["impl Freeze for ExprMatch",1,["syn::expr::ExprMatch"]],["impl Freeze for ExprMethodCall",1,["syn::expr::ExprMethodCall"]],["impl Freeze for ExprParen",1,["syn::expr::ExprParen"]],["impl Freeze for ExprPath",1,["syn::expr::ExprPath"]],["impl Freeze for ExprRange",1,["syn::expr::ExprRange"]],["impl Freeze for ExprReference",1,["syn::expr::ExprReference"]],["impl Freeze for ExprRepeat",1,["syn::expr::ExprRepeat"]],["impl Freeze for ExprReturn",1,["syn::expr::ExprReturn"]],["impl Freeze for ExprStruct",1,["syn::expr::ExprStruct"]],["impl Freeze for ExprTry",1,["syn::expr::ExprTry"]],["impl Freeze for ExprTryBlock",1,["syn::expr::ExprTryBlock"]],["impl Freeze for ExprTuple",1,["syn::expr::ExprTuple"]],["impl Freeze for ExprType",1,["syn::expr::ExprType"]],["impl Freeze for ExprUnary",1,["syn::expr::ExprUnary"]],["impl Freeze for ExprUnsafe",1,["syn::expr::ExprUnsafe"]],["impl Freeze for ExprWhile",1,["syn::expr::ExprWhile"]],["impl Freeze for ExprYield",1,["syn::expr::ExprYield"]],["impl Freeze for Member",1,["syn::expr::Member"]],["impl Freeze for Index",1,["syn::expr::Index"]],["impl Freeze for Generics",1,["syn::generics::Generics"]],["impl Freeze for GenericParam",1,["syn::generics::GenericParam"]],["impl Freeze for TypeParam",1,["syn::generics::TypeParam"]],["impl Freeze for LifetimeDef",1,["syn::generics::LifetimeDef"]],["impl Freeze for ConstParam",1,["syn::generics::ConstParam"]],["impl<'a> Freeze for ImplGenerics<'a>",1,["syn::generics::ImplGenerics"]],["impl<'a> Freeze for TypeGenerics<'a>",1,["syn::generics::TypeGenerics"]],["impl<'a> Freeze for Turbofish<'a>",1,["syn::generics::Turbofish"]],["impl Freeze for BoundLifetimes",1,["syn::generics::BoundLifetimes"]],["impl Freeze for TypeParamBound",1,["syn::generics::TypeParamBound"]],["impl Freeze for TraitBound",1,["syn::generics::TraitBound"]],["impl Freeze for TraitBoundModifier",1,["syn::generics::TraitBoundModifier"]],["impl Freeze for WhereClause",1,["syn::generics::WhereClause"]],["impl Freeze for WherePredicate",1,["syn::generics::WherePredicate"]],["impl Freeze for PredicateType",1,["syn::generics::PredicateType"]],["impl Freeze for PredicateLifetime",1,["syn::generics::PredicateLifetime"]],["impl Freeze for PredicateEq",1,["syn::generics::PredicateEq"]],["impl Freeze for Lifetime",1,["syn::lifetime::Lifetime"]],["impl Freeze for Lit",1,["syn::lit::Lit"]],["impl Freeze for LitStr",1,["syn::lit::LitStr"]],["impl Freeze for LitByteStr",1,["syn::lit::LitByteStr"]],["impl Freeze for LitByte",1,["syn::lit::LitByte"]],["impl Freeze for LitChar",1,["syn::lit::LitChar"]],["impl Freeze for LitInt",1,["syn::lit::LitInt"]],["impl Freeze for LitFloat",1,["syn::lit::LitFloat"]],["impl Freeze for LitBool",1,["syn::lit::LitBool"]],["impl Freeze for StrStyle",1,["syn::lit::StrStyle"]],["impl Freeze for Macro",1,["syn::mac::Macro"]],["impl Freeze for MacroDelimiter",1,["syn::mac::MacroDelimiter"]],["impl Freeze for DeriveInput",1,["syn::derive::DeriveInput"]],["impl Freeze for Data",1,["syn::derive::Data"]],["impl Freeze for DataStruct",1,["syn::derive::DataStruct"]],["impl Freeze for DataEnum",1,["syn::derive::DataEnum"]],["impl Freeze for DataUnion",1,["syn::derive::DataUnion"]],["impl Freeze for BinOp",1,["syn::op::BinOp"]],["impl Freeze for UnOp",1,["syn::op::UnOp"]],["impl Freeze for Type",1,["syn::ty::Type"]],["impl Freeze for TypeArray",1,["syn::ty::TypeArray"]],["impl Freeze for TypeBareFn",1,["syn::ty::TypeBareFn"]],["impl Freeze for TypeGroup",1,["syn::ty::TypeGroup"]],["impl Freeze for TypeImplTrait",1,["syn::ty::TypeImplTrait"]],["impl Freeze for TypeInfer",1,["syn::ty::TypeInfer"]],["impl Freeze for TypeMacro",1,["syn::ty::TypeMacro"]],["impl Freeze for TypeNever",1,["syn::ty::TypeNever"]],["impl Freeze for TypeParen",1,["syn::ty::TypeParen"]],["impl Freeze for TypePath",1,["syn::ty::TypePath"]],["impl Freeze for TypePtr",1,["syn::ty::TypePtr"]],["impl Freeze for TypeReference",1,["syn::ty::TypeReference"]],["impl Freeze for TypeSlice",1,["syn::ty::TypeSlice"]],["impl Freeze for TypeTraitObject",1,["syn::ty::TypeTraitObject"]],["impl Freeze for TypeTuple",1,["syn::ty::TypeTuple"]],["impl Freeze for Abi",1,["syn::ty::Abi"]],["impl Freeze for BareFnArg",1,["syn::ty::BareFnArg"]],["impl Freeze for Variadic",1,["syn::ty::Variadic"]],["impl Freeze for ReturnType",1,["syn::ty::ReturnType"]],["impl Freeze for Path",1,["syn::path::Path"]],["impl Freeze for PathSegment",1,["syn::path::PathSegment"]],["impl Freeze for PathArguments",1,["syn::path::PathArguments"]],["impl Freeze for GenericArgument",1,["syn::path::GenericArgument"]],["impl Freeze for AngleBracketedGenericArguments",1,["syn::path::AngleBracketedGenericArguments"]],["impl Freeze for Binding",1,["syn::path::Binding"]],["impl Freeze for Constraint",1,["syn::path::Constraint"]],["impl Freeze for ParenthesizedGenericArguments",1,["syn::path::ParenthesizedGenericArguments"]],["impl Freeze for QSelf",1,["syn::path::QSelf"]],["impl Freeze for TokenBuffer",1,["syn::buffer::TokenBuffer"]],["impl<'a> Freeze for Cursor<'a>",1,["syn::buffer::Cursor"]],["impl<T, P> Freeze for Punctuated<T, P>",1,["syn::punctuated::Punctuated"]],["impl<'a, T, P> Freeze for Pairs<'a, T, P>",1,["syn::punctuated::Pairs"]],["impl<'a, T, P> Freeze for PairsMut<'a, T, P>",1,["syn::punctuated::PairsMut"]],["impl<T, P> Freeze for IntoPairs<T, P>where\n T: Freeze,",1,["syn::punctuated::IntoPairs"]],["impl<T> Freeze for IntoIter<T>",1,["syn::punctuated::IntoIter"]],["impl<'a, T> Freeze for Iter<'a, T>",1,["syn::punctuated::Iter"]],["impl<'a, T> Freeze for IterMut<'a, T>",1,["syn::punctuated::IterMut"]],["impl<T, P> Freeze for Pair<T, P>where\n P: Freeze,\n T: Freeze,",1,["syn::punctuated::Pair"]],["impl<'a> !Freeze for Lookahead1<'a>",1,["syn::lookahead::Lookahead1"]],["impl Freeze for Error",1,["syn::error::Error"]],["impl<'a> !Freeze for ParseBuffer<'a>",1,["syn::parse::ParseBuffer"]],["impl<'c, 'a> Freeze for StepCursor<'c, 'a>",1,["syn::parse::StepCursor"]],["impl Freeze for Nothing",1,["syn::parse::Nothing"]]], -"synstructure":[["impl Freeze for AddBounds",1,["synstructure::AddBounds"]],["impl Freeze for BindStyle",1,["synstructure::BindStyle"]],["impl<'a> Freeze for BindingInfo<'a>",1,["synstructure::BindingInfo"]],["impl<'a> Freeze for VariantAst<'a>",1,["synstructure::VariantAst"]],["impl<'a> Freeze for VariantInfo<'a>",1,["synstructure::VariantInfo"]],["impl<'a> Freeze for Structure<'a>",1,["synstructure::Structure"]]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/marker/trait.Send.js b/implementors/core/marker/trait.Send.js deleted file mode 100644 index 7dbf556..0000000 --- a/implementors/core/marker/trait.Send.js +++ /dev/null @@ -1,8 +0,0 @@ -(function() {var implementors = { -"delog":[["impl Send for U1",1,["delog::hex::U1"]],["impl<'a, T: ?Sized, U, S> Send for HexStr<'a, T, U, S>where\n S: Send,\n T: Sync,\n U: Send,",1,["delog::hex::HexStr"]],["impl Send for Statistics",1,["delog::logger::Statistics"]],["impl Send for RipgrepRenderer",1,["delog::render::RipgrepRenderer"]],["impl Send for DefaultRenderer"]], -"flexiber":[["impl<'a> Send for Decoder<'a>",1,["flexiber::decoder::Decoder"]],["impl<'a> Send for Encoder<'a>",1,["flexiber::encoder::Encoder"]],["impl Send for Error",1,["flexiber::error::Error"]],["impl Send for ErrorKind",1,["flexiber::error::ErrorKind"]],["impl Send for Length",1,["flexiber::length::Length"]],["impl Send for SimpleTag",1,["flexiber::simpletag::SimpleTag"]],["impl<'a> Send for Slice<'a>",1,["flexiber::slice::Slice"]],["impl Send for Class",1,["flexiber::tag::Class"]],["impl Send for Tag",1,["flexiber::tag::Tag"]],["impl<V, T> Send for TaggedValue<V, T>where\n T: Send,\n V: Send,",1,["flexiber::tagged::TaggedValue"]]], -"log":[["impl Send for Level",1,["log::Level"]],["impl Send for LevelFilter",1,["log::LevelFilter"]],["impl<'a> !Send for Record<'a>",1,["log::Record"]],["impl<'a> !Send for RecordBuilder<'a>",1,["log::RecordBuilder"]],["impl<'a> Send for Metadata<'a>",1,["log::Metadata"]],["impl<'a> Send for MetadataBuilder<'a>",1,["log::MetadataBuilder"]],["impl Send for SetLoggerError",1,["log::SetLoggerError"]],["impl Send for ParseLevelError",1,["log::ParseLevelError"]]], -"proc_macro2":[["impl !Send for DelimSpan",1,["proc_macro2::extra::DelimSpan"]],["impl !Send for IntoIter",1,["proc_macro2::token_stream::IntoIter"]],["impl !Send for TokenStream",1,["proc_macro2::TokenStream"]],["impl !Send for LexError",1,["proc_macro2::LexError"]],["impl !Send for Span",1,["proc_macro2::Span"]],["impl !Send for TokenTree",1,["proc_macro2::TokenTree"]],["impl !Send for Group",1,["proc_macro2::Group"]],["impl Send for Delimiter",1,["proc_macro2::Delimiter"]],["impl !Send for Punct",1,["proc_macro2::Punct"]],["impl Send for Spacing",1,["proc_macro2::Spacing"]],["impl !Send for Ident",1,["proc_macro2::Ident"]],["impl !Send for Literal",1,["proc_macro2::Literal"]]], -"syn":[["impl !Send for Underscore",1,["syn::token::Underscore"]],["impl !Send for Abstract",1,["syn::token::Abstract"]],["impl !Send for As",1,["syn::token::As"]],["impl !Send for Async",1,["syn::token::Async"]],["impl !Send for Auto",1,["syn::token::Auto"]],["impl !Send for Await",1,["syn::token::Await"]],["impl !Send for Become",1,["syn::token::Become"]],["impl !Send for Box",1,["syn::token::Box"]],["impl !Send for Break",1,["syn::token::Break"]],["impl !Send for Const",1,["syn::token::Const"]],["impl !Send for Continue",1,["syn::token::Continue"]],["impl !Send for Crate",1,["syn::token::Crate"]],["impl !Send for Default",1,["syn::token::Default"]],["impl !Send for Do",1,["syn::token::Do"]],["impl !Send for Dyn",1,["syn::token::Dyn"]],["impl !Send for Else",1,["syn::token::Else"]],["impl !Send for Enum",1,["syn::token::Enum"]],["impl !Send for Extern",1,["syn::token::Extern"]],["impl !Send for Final",1,["syn::token::Final"]],["impl !Send for Fn",1,["syn::token::Fn"]],["impl !Send for For",1,["syn::token::For"]],["impl !Send for If",1,["syn::token::If"]],["impl !Send for Impl",1,["syn::token::Impl"]],["impl !Send for In",1,["syn::token::In"]],["impl !Send for Let",1,["syn::token::Let"]],["impl !Send for Loop",1,["syn::token::Loop"]],["impl !Send for Macro",1,["syn::token::Macro"]],["impl !Send for Match",1,["syn::token::Match"]],["impl !Send for Mod",1,["syn::token::Mod"]],["impl !Send for Move",1,["syn::token::Move"]],["impl !Send for Mut",1,["syn::token::Mut"]],["impl !Send for Override",1,["syn::token::Override"]],["impl !Send for Priv",1,["syn::token::Priv"]],["impl !Send for Pub",1,["syn::token::Pub"]],["impl !Send for Ref",1,["syn::token::Ref"]],["impl !Send for Return",1,["syn::token::Return"]],["impl !Send for SelfType",1,["syn::token::SelfType"]],["impl !Send for SelfValue",1,["syn::token::SelfValue"]],["impl !Send for Static",1,["syn::token::Static"]],["impl !Send for Struct",1,["syn::token::Struct"]],["impl !Send for Super",1,["syn::token::Super"]],["impl !Send for Trait",1,["syn::token::Trait"]],["impl !Send for Try",1,["syn::token::Try"]],["impl !Send for Type",1,["syn::token::Type"]],["impl !Send for Typeof",1,["syn::token::Typeof"]],["impl !Send for Union",1,["syn::token::Union"]],["impl !Send for Unsafe",1,["syn::token::Unsafe"]],["impl !Send for Unsized",1,["syn::token::Unsized"]],["impl !Send for Use",1,["syn::token::Use"]],["impl !Send for Virtual",1,["syn::token::Virtual"]],["impl !Send for Where",1,["syn::token::Where"]],["impl !Send for While",1,["syn::token::While"]],["impl !Send for Yield",1,["syn::token::Yield"]],["impl !Send for Add",1,["syn::token::Add"]],["impl !Send for AddEq",1,["syn::token::AddEq"]],["impl !Send for And",1,["syn::token::And"]],["impl !Send for AndAnd",1,["syn::token::AndAnd"]],["impl !Send for AndEq",1,["syn::token::AndEq"]],["impl !Send for At",1,["syn::token::At"]],["impl !Send for Bang",1,["syn::token::Bang"]],["impl !Send for Caret",1,["syn::token::Caret"]],["impl !Send for CaretEq",1,["syn::token::CaretEq"]],["impl !Send for Colon",1,["syn::token::Colon"]],["impl !Send for Colon2",1,["syn::token::Colon2"]],["impl !Send for Comma",1,["syn::token::Comma"]],["impl !Send for Div",1,["syn::token::Div"]],["impl !Send for DivEq",1,["syn::token::DivEq"]],["impl !Send for Dollar",1,["syn::token::Dollar"]],["impl !Send for Dot",1,["syn::token::Dot"]],["impl !Send for Dot2",1,["syn::token::Dot2"]],["impl !Send for Dot3",1,["syn::token::Dot3"]],["impl !Send for DotDotEq",1,["syn::token::DotDotEq"]],["impl !Send for Eq",1,["syn::token::Eq"]],["impl !Send for EqEq",1,["syn::token::EqEq"]],["impl !Send for Ge",1,["syn::token::Ge"]],["impl !Send for Gt",1,["syn::token::Gt"]],["impl !Send for Le",1,["syn::token::Le"]],["impl !Send for Lt",1,["syn::token::Lt"]],["impl !Send for MulEq",1,["syn::token::MulEq"]],["impl !Send for Ne",1,["syn::token::Ne"]],["impl !Send for Or",1,["syn::token::Or"]],["impl !Send for OrEq",1,["syn::token::OrEq"]],["impl !Send for OrOr",1,["syn::token::OrOr"]],["impl !Send for Pound",1,["syn::token::Pound"]],["impl !Send for Question",1,["syn::token::Question"]],["impl !Send for RArrow",1,["syn::token::RArrow"]],["impl !Send for LArrow",1,["syn::token::LArrow"]],["impl !Send for Rem",1,["syn::token::Rem"]],["impl !Send for RemEq",1,["syn::token::RemEq"]],["impl !Send for FatArrow",1,["syn::token::FatArrow"]],["impl !Send for Semi",1,["syn::token::Semi"]],["impl !Send for Shl",1,["syn::token::Shl"]],["impl !Send for ShlEq",1,["syn::token::ShlEq"]],["impl !Send for Shr",1,["syn::token::Shr"]],["impl !Send for ShrEq",1,["syn::token::ShrEq"]],["impl !Send for Star",1,["syn::token::Star"]],["impl !Send for Sub",1,["syn::token::Sub"]],["impl !Send for SubEq",1,["syn::token::SubEq"]],["impl !Send for Tilde",1,["syn::token::Tilde"]],["impl !Send for Brace",1,["syn::token::Brace"]],["impl !Send for Bracket",1,["syn::token::Bracket"]],["impl !Send for Paren",1,["syn::token::Paren"]],["impl !Send for Group",1,["syn::token::Group"]],["impl !Send for Attribute",1,["syn::attr::Attribute"]],["impl !Send for AttrStyle",1,["syn::attr::AttrStyle"]],["impl !Send for Meta",1,["syn::attr::Meta"]],["impl !Send for MetaList",1,["syn::attr::MetaList"]],["impl !Send for MetaNameValue",1,["syn::attr::MetaNameValue"]],["impl !Send for NestedMeta",1,["syn::attr::NestedMeta"]],["impl !Send for Variant",1,["syn::data::Variant"]],["impl !Send for Fields",1,["syn::data::Fields"]],["impl !Send for FieldsNamed",1,["syn::data::FieldsNamed"]],["impl !Send for FieldsUnnamed",1,["syn::data::FieldsUnnamed"]],["impl !Send for Field",1,["syn::data::Field"]],["impl !Send for Visibility",1,["syn::data::Visibility"]],["impl !Send for VisPublic",1,["syn::data::VisPublic"]],["impl !Send for VisCrate",1,["syn::data::VisCrate"]],["impl !Send for VisRestricted",1,["syn::data::VisRestricted"]],["impl !Send for Expr",1,["syn::expr::Expr"]],["impl !Send for ExprArray",1,["syn::expr::ExprArray"]],["impl !Send for ExprAssign",1,["syn::expr::ExprAssign"]],["impl !Send for ExprAssignOp",1,["syn::expr::ExprAssignOp"]],["impl !Send for ExprAsync",1,["syn::expr::ExprAsync"]],["impl !Send for ExprAwait",1,["syn::expr::ExprAwait"]],["impl !Send for ExprBinary",1,["syn::expr::ExprBinary"]],["impl !Send for ExprBlock",1,["syn::expr::ExprBlock"]],["impl !Send for ExprBox",1,["syn::expr::ExprBox"]],["impl !Send for ExprBreak",1,["syn::expr::ExprBreak"]],["impl !Send for ExprCall",1,["syn::expr::ExprCall"]],["impl !Send for ExprCast",1,["syn::expr::ExprCast"]],["impl !Send for ExprClosure",1,["syn::expr::ExprClosure"]],["impl !Send for ExprContinue",1,["syn::expr::ExprContinue"]],["impl !Send for ExprField",1,["syn::expr::ExprField"]],["impl !Send for ExprForLoop",1,["syn::expr::ExprForLoop"]],["impl !Send for ExprGroup",1,["syn::expr::ExprGroup"]],["impl !Send for ExprIf",1,["syn::expr::ExprIf"]],["impl !Send for ExprIndex",1,["syn::expr::ExprIndex"]],["impl !Send for ExprLet",1,["syn::expr::ExprLet"]],["impl !Send for ExprLit",1,["syn::expr::ExprLit"]],["impl !Send for ExprLoop",1,["syn::expr::ExprLoop"]],["impl !Send for ExprMacro",1,["syn::expr::ExprMacro"]],["impl !Send for ExprMatch",1,["syn::expr::ExprMatch"]],["impl !Send for ExprMethodCall",1,["syn::expr::ExprMethodCall"]],["impl !Send for ExprParen",1,["syn::expr::ExprParen"]],["impl !Send for ExprPath",1,["syn::expr::ExprPath"]],["impl !Send for ExprRange",1,["syn::expr::ExprRange"]],["impl !Send for ExprReference",1,["syn::expr::ExprReference"]],["impl !Send for ExprRepeat",1,["syn::expr::ExprRepeat"]],["impl !Send for ExprReturn",1,["syn::expr::ExprReturn"]],["impl !Send for ExprStruct",1,["syn::expr::ExprStruct"]],["impl !Send for ExprTry",1,["syn::expr::ExprTry"]],["impl !Send for ExprTryBlock",1,["syn::expr::ExprTryBlock"]],["impl !Send for ExprTuple",1,["syn::expr::ExprTuple"]],["impl !Send for ExprType",1,["syn::expr::ExprType"]],["impl !Send for ExprUnary",1,["syn::expr::ExprUnary"]],["impl !Send for ExprUnsafe",1,["syn::expr::ExprUnsafe"]],["impl !Send for ExprWhile",1,["syn::expr::ExprWhile"]],["impl !Send for ExprYield",1,["syn::expr::ExprYield"]],["impl !Send for Member",1,["syn::expr::Member"]],["impl !Send for Index",1,["syn::expr::Index"]],["impl !Send for Generics",1,["syn::generics::Generics"]],["impl !Send for GenericParam",1,["syn::generics::GenericParam"]],["impl !Send for TypeParam",1,["syn::generics::TypeParam"]],["impl !Send for LifetimeDef",1,["syn::generics::LifetimeDef"]],["impl !Send for ConstParam",1,["syn::generics::ConstParam"]],["impl<'a> !Send for ImplGenerics<'a>",1,["syn::generics::ImplGenerics"]],["impl<'a> !Send for TypeGenerics<'a>",1,["syn::generics::TypeGenerics"]],["impl<'a> !Send for Turbofish<'a>",1,["syn::generics::Turbofish"]],["impl !Send for BoundLifetimes",1,["syn::generics::BoundLifetimes"]],["impl !Send for TypeParamBound",1,["syn::generics::TypeParamBound"]],["impl !Send for TraitBound",1,["syn::generics::TraitBound"]],["impl !Send for TraitBoundModifier",1,["syn::generics::TraitBoundModifier"]],["impl !Send for WhereClause",1,["syn::generics::WhereClause"]],["impl !Send for WherePredicate",1,["syn::generics::WherePredicate"]],["impl !Send for PredicateType",1,["syn::generics::PredicateType"]],["impl !Send for PredicateLifetime",1,["syn::generics::PredicateLifetime"]],["impl !Send for PredicateEq",1,["syn::generics::PredicateEq"]],["impl !Send for Lifetime",1,["syn::lifetime::Lifetime"]],["impl !Send for Lit",1,["syn::lit::Lit"]],["impl !Send for LitStr",1,["syn::lit::LitStr"]],["impl !Send for LitByteStr",1,["syn::lit::LitByteStr"]],["impl !Send for LitByte",1,["syn::lit::LitByte"]],["impl !Send for LitChar",1,["syn::lit::LitChar"]],["impl !Send for LitInt",1,["syn::lit::LitInt"]],["impl !Send for LitFloat",1,["syn::lit::LitFloat"]],["impl !Send for LitBool",1,["syn::lit::LitBool"]],["impl Send for StrStyle",1,["syn::lit::StrStyle"]],["impl !Send for Macro",1,["syn::mac::Macro"]],["impl !Send for MacroDelimiter",1,["syn::mac::MacroDelimiter"]],["impl !Send for DeriveInput",1,["syn::derive::DeriveInput"]],["impl !Send for Data",1,["syn::derive::Data"]],["impl !Send for DataStruct",1,["syn::derive::DataStruct"]],["impl !Send for DataEnum",1,["syn::derive::DataEnum"]],["impl !Send for DataUnion",1,["syn::derive::DataUnion"]],["impl !Send for BinOp",1,["syn::op::BinOp"]],["impl !Send for UnOp",1,["syn::op::UnOp"]],["impl !Send for Type",1,["syn::ty::Type"]],["impl !Send for TypeArray",1,["syn::ty::TypeArray"]],["impl !Send for TypeBareFn",1,["syn::ty::TypeBareFn"]],["impl !Send for TypeGroup",1,["syn::ty::TypeGroup"]],["impl !Send for TypeImplTrait",1,["syn::ty::TypeImplTrait"]],["impl !Send for TypeInfer",1,["syn::ty::TypeInfer"]],["impl !Send for TypeMacro",1,["syn::ty::TypeMacro"]],["impl !Send for TypeNever",1,["syn::ty::TypeNever"]],["impl !Send for TypeParen",1,["syn::ty::TypeParen"]],["impl !Send for TypePath",1,["syn::ty::TypePath"]],["impl !Send for TypePtr",1,["syn::ty::TypePtr"]],["impl !Send for TypeReference",1,["syn::ty::TypeReference"]],["impl !Send for TypeSlice",1,["syn::ty::TypeSlice"]],["impl !Send for TypeTraitObject",1,["syn::ty::TypeTraitObject"]],["impl !Send for TypeTuple",1,["syn::ty::TypeTuple"]],["impl !Send for Abi",1,["syn::ty::Abi"]],["impl !Send for BareFnArg",1,["syn::ty::BareFnArg"]],["impl !Send for Variadic",1,["syn::ty::Variadic"]],["impl !Send for ReturnType",1,["syn::ty::ReturnType"]],["impl !Send for Path",1,["syn::path::Path"]],["impl !Send for PathSegment",1,["syn::path::PathSegment"]],["impl !Send for PathArguments",1,["syn::path::PathArguments"]],["impl !Send for GenericArgument",1,["syn::path::GenericArgument"]],["impl !Send for AngleBracketedGenericArguments",1,["syn::path::AngleBracketedGenericArguments"]],["impl !Send for Binding",1,["syn::path::Binding"]],["impl !Send for Constraint",1,["syn::path::Constraint"]],["impl !Send for ParenthesizedGenericArguments",1,["syn::path::ParenthesizedGenericArguments"]],["impl !Send for QSelf",1,["syn::path::QSelf"]],["impl !Send for TokenBuffer",1,["syn::buffer::TokenBuffer"]],["impl<'a> !Send for Cursor<'a>",1,["syn::buffer::Cursor"]],["impl<T, P> Send for Punctuated<T, P>where\n P: Send,\n T: Send,",1,["syn::punctuated::Punctuated"]],["impl<'a, T, P> Send for Pairs<'a, T, P>where\n P: Sync,\n T: Sync,",1,["syn::punctuated::Pairs"]],["impl<'a, T, P> Send for PairsMut<'a, T, P>where\n P: Send,\n T: Send,",1,["syn::punctuated::PairsMut"]],["impl<T, P> Send for IntoPairs<T, P>where\n P: Send,\n T: Send,",1,["syn::punctuated::IntoPairs"]],["impl<T> Send for IntoIter<T>where\n T: Send,",1,["syn::punctuated::IntoIter"]],["impl<'a, T> !Send for Iter<'a, T>",1,["syn::punctuated::Iter"]],["impl<'a, T> !Send for IterMut<'a, T>",1,["syn::punctuated::IterMut"]],["impl<T, P> Send for Pair<T, P>where\n P: Send,\n T: Send,",1,["syn::punctuated::Pair"]],["impl<'a> !Send for Lookahead1<'a>",1,["syn::lookahead::Lookahead1"]],["impl Send for Error",1,["syn::error::Error"]],["impl<'a> !Send for ParseBuffer<'a>",1,["syn::parse::ParseBuffer"]],["impl<'c, 'a> !Send for StepCursor<'c, 'a>",1,["syn::parse::StepCursor"]],["impl Send for Nothing",1,["syn::parse::Nothing"]]], -"synstructure":[["impl Send for AddBounds",1,["synstructure::AddBounds"]],["impl Send for BindStyle",1,["synstructure::BindStyle"]],["impl<'a> !Send for BindingInfo<'a>",1,["synstructure::BindingInfo"]],["impl<'a> !Send for VariantAst<'a>",1,["synstructure::VariantAst"]],["impl<'a> !Send for VariantInfo<'a>",1,["synstructure::VariantInfo"]],["impl<'a> !Send for Structure<'a>",1,["synstructure::Structure"]]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/marker/trait.StructuralEq.js b/implementors/core/marker/trait.StructuralEq.js deleted file mode 100644 index f4fbd69..0000000 --- a/implementors/core/marker/trait.StructuralEq.js +++ /dev/null @@ -1,6 +0,0 @@ -(function() {var implementors = { -"flexiber":[["impl StructuralEq for Length"],["impl<V, T> StructuralEq for TaggedValue<V, T>"],["impl StructuralEq for ErrorKind"],["impl StructuralEq for SimpleTag"],["impl StructuralEq for Class"],["impl StructuralEq for Error"],["impl StructuralEq for Tag"],["impl<'a> StructuralEq for Slice<'a>"]], -"log":[["impl StructuralEq for ParseLevelError"],["impl StructuralEq for Level"],["impl<'a> StructuralEq for MetadataBuilder<'a>"],["impl StructuralEq for LevelFilter"],["impl<'a> StructuralEq for Metadata<'a>"]], -"proc_macro2":[["impl StructuralEq for Spacing"],["impl StructuralEq for Delimiter"]], -"synstructure":[["impl<'a> StructuralEq for Structure<'a>"],["impl<'a> StructuralEq for VariantAst<'a>"],["impl StructuralEq for AddBounds"],["impl StructuralEq for BindStyle"],["impl<'a> StructuralEq for BindingInfo<'a>"],["impl<'a> StructuralEq for VariantInfo<'a>"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/marker/trait.StructuralPartialEq.js b/implementors/core/marker/trait.StructuralPartialEq.js deleted file mode 100644 index dbd8930..0000000 --- a/implementors/core/marker/trait.StructuralPartialEq.js +++ /dev/null @@ -1,6 +0,0 @@ -(function() {var implementors = { -"flexiber":[["impl StructuralPartialEq for SimpleTag"],["impl<V, T> StructuralPartialEq for TaggedValue<V, T>"],["impl<'a> StructuralPartialEq for Slice<'a>"],["impl StructuralPartialEq for Length"],["impl StructuralPartialEq for Error"],["impl StructuralPartialEq for Class"],["impl StructuralPartialEq for ErrorKind"],["impl StructuralPartialEq for Tag"]], -"log":[["impl StructuralPartialEq for ParseLevelError"],["impl<'a> StructuralPartialEq for MetadataBuilder<'a>"],["impl<'a> StructuralPartialEq for Metadata<'a>"],["impl StructuralPartialEq for LevelFilter"],["impl StructuralPartialEq for Level"]], -"proc_macro2":[["impl StructuralPartialEq for Delimiter"],["impl StructuralPartialEq for Spacing"]], -"synstructure":[["impl<'a> StructuralPartialEq for VariantAst<'a>"],["impl StructuralPartialEq for BindStyle"],["impl<'a> StructuralPartialEq for VariantInfo<'a>"],["impl StructuralPartialEq for AddBounds"],["impl<'a> StructuralPartialEq for Structure<'a>"],["impl<'a> StructuralPartialEq for BindingInfo<'a>"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/marker/trait.Sync.js b/implementors/core/marker/trait.Sync.js deleted file mode 100644 index 86479e7..0000000 --- a/implementors/core/marker/trait.Sync.js +++ /dev/null @@ -1,8 +0,0 @@ -(function() {var implementors = { -"delog":[["impl Sync for U1",1,["delog::hex::U1"]],["impl<'a, T: ?Sized, U, S> Sync for HexStr<'a, T, U, S>where\n S: Sync,\n T: Sync,\n U: Sync,",1,["delog::hex::HexStr"]],["impl Sync for Statistics",1,["delog::logger::Statistics"]],["impl Sync for RipgrepRenderer",1,["delog::render::RipgrepRenderer"]],["impl Sync for DefaultRenderer"]], -"flexiber":[["impl<'a> Sync for Decoder<'a>",1,["flexiber::decoder::Decoder"]],["impl<'a> Sync for Encoder<'a>",1,["flexiber::encoder::Encoder"]],["impl Sync for Error",1,["flexiber::error::Error"]],["impl Sync for ErrorKind",1,["flexiber::error::ErrorKind"]],["impl Sync for Length",1,["flexiber::length::Length"]],["impl Sync for SimpleTag",1,["flexiber::simpletag::SimpleTag"]],["impl<'a> Sync for Slice<'a>",1,["flexiber::slice::Slice"]],["impl Sync for Class",1,["flexiber::tag::Class"]],["impl Sync for Tag",1,["flexiber::tag::Tag"]],["impl<V, T> Sync for TaggedValue<V, T>where\n T: Sync,\n V: Sync,",1,["flexiber::tagged::TaggedValue"]]], -"log":[["impl Sync for Level",1,["log::Level"]],["impl Sync for LevelFilter",1,["log::LevelFilter"]],["impl<'a> !Sync for Record<'a>",1,["log::Record"]],["impl<'a> !Sync for RecordBuilder<'a>",1,["log::RecordBuilder"]],["impl<'a> Sync for Metadata<'a>",1,["log::Metadata"]],["impl<'a> Sync for MetadataBuilder<'a>",1,["log::MetadataBuilder"]],["impl Sync for SetLoggerError",1,["log::SetLoggerError"]],["impl Sync for ParseLevelError",1,["log::ParseLevelError"]]], -"proc_macro2":[["impl !Sync for DelimSpan",1,["proc_macro2::extra::DelimSpan"]],["impl !Sync for IntoIter",1,["proc_macro2::token_stream::IntoIter"]],["impl !Sync for TokenStream",1,["proc_macro2::TokenStream"]],["impl !Sync for LexError",1,["proc_macro2::LexError"]],["impl !Sync for Span",1,["proc_macro2::Span"]],["impl !Sync for TokenTree",1,["proc_macro2::TokenTree"]],["impl !Sync for Group",1,["proc_macro2::Group"]],["impl Sync for Delimiter",1,["proc_macro2::Delimiter"]],["impl !Sync for Punct",1,["proc_macro2::Punct"]],["impl Sync for Spacing",1,["proc_macro2::Spacing"]],["impl !Sync for Ident",1,["proc_macro2::Ident"]],["impl !Sync for Literal",1,["proc_macro2::Literal"]]], -"syn":[["impl !Sync for Underscore",1,["syn::token::Underscore"]],["impl !Sync for Abstract",1,["syn::token::Abstract"]],["impl !Sync for As",1,["syn::token::As"]],["impl !Sync for Async",1,["syn::token::Async"]],["impl !Sync for Auto",1,["syn::token::Auto"]],["impl !Sync for Await",1,["syn::token::Await"]],["impl !Sync for Become",1,["syn::token::Become"]],["impl !Sync for Box",1,["syn::token::Box"]],["impl !Sync for Break",1,["syn::token::Break"]],["impl !Sync for Const",1,["syn::token::Const"]],["impl !Sync for Continue",1,["syn::token::Continue"]],["impl !Sync for Crate",1,["syn::token::Crate"]],["impl !Sync for Default",1,["syn::token::Default"]],["impl !Sync for Do",1,["syn::token::Do"]],["impl !Sync for Dyn",1,["syn::token::Dyn"]],["impl !Sync for Else",1,["syn::token::Else"]],["impl !Sync for Enum",1,["syn::token::Enum"]],["impl !Sync for Extern",1,["syn::token::Extern"]],["impl !Sync for Final",1,["syn::token::Final"]],["impl !Sync for Fn",1,["syn::token::Fn"]],["impl !Sync for For",1,["syn::token::For"]],["impl !Sync for If",1,["syn::token::If"]],["impl !Sync for Impl",1,["syn::token::Impl"]],["impl !Sync for In",1,["syn::token::In"]],["impl !Sync for Let",1,["syn::token::Let"]],["impl !Sync for Loop",1,["syn::token::Loop"]],["impl !Sync for Macro",1,["syn::token::Macro"]],["impl !Sync for Match",1,["syn::token::Match"]],["impl !Sync for Mod",1,["syn::token::Mod"]],["impl !Sync for Move",1,["syn::token::Move"]],["impl !Sync for Mut",1,["syn::token::Mut"]],["impl !Sync for Override",1,["syn::token::Override"]],["impl !Sync for Priv",1,["syn::token::Priv"]],["impl !Sync for Pub",1,["syn::token::Pub"]],["impl !Sync for Ref",1,["syn::token::Ref"]],["impl !Sync for Return",1,["syn::token::Return"]],["impl !Sync for SelfType",1,["syn::token::SelfType"]],["impl !Sync for SelfValue",1,["syn::token::SelfValue"]],["impl !Sync for Static",1,["syn::token::Static"]],["impl !Sync for Struct",1,["syn::token::Struct"]],["impl !Sync for Super",1,["syn::token::Super"]],["impl !Sync for Trait",1,["syn::token::Trait"]],["impl !Sync for Try",1,["syn::token::Try"]],["impl !Sync for Type",1,["syn::token::Type"]],["impl !Sync for Typeof",1,["syn::token::Typeof"]],["impl !Sync for Union",1,["syn::token::Union"]],["impl !Sync for Unsafe",1,["syn::token::Unsafe"]],["impl !Sync for Unsized",1,["syn::token::Unsized"]],["impl !Sync for Use",1,["syn::token::Use"]],["impl !Sync for Virtual",1,["syn::token::Virtual"]],["impl !Sync for Where",1,["syn::token::Where"]],["impl !Sync for While",1,["syn::token::While"]],["impl !Sync for Yield",1,["syn::token::Yield"]],["impl !Sync for Add",1,["syn::token::Add"]],["impl !Sync for AddEq",1,["syn::token::AddEq"]],["impl !Sync for And",1,["syn::token::And"]],["impl !Sync for AndAnd",1,["syn::token::AndAnd"]],["impl !Sync for AndEq",1,["syn::token::AndEq"]],["impl !Sync for At",1,["syn::token::At"]],["impl !Sync for Bang",1,["syn::token::Bang"]],["impl !Sync for Caret",1,["syn::token::Caret"]],["impl !Sync for CaretEq",1,["syn::token::CaretEq"]],["impl !Sync for Colon",1,["syn::token::Colon"]],["impl !Sync for Colon2",1,["syn::token::Colon2"]],["impl !Sync for Comma",1,["syn::token::Comma"]],["impl !Sync for Div",1,["syn::token::Div"]],["impl !Sync for DivEq",1,["syn::token::DivEq"]],["impl !Sync for Dollar",1,["syn::token::Dollar"]],["impl !Sync for Dot",1,["syn::token::Dot"]],["impl !Sync for Dot2",1,["syn::token::Dot2"]],["impl !Sync for Dot3",1,["syn::token::Dot3"]],["impl !Sync for DotDotEq",1,["syn::token::DotDotEq"]],["impl !Sync for Eq",1,["syn::token::Eq"]],["impl !Sync for EqEq",1,["syn::token::EqEq"]],["impl !Sync for Ge",1,["syn::token::Ge"]],["impl !Sync for Gt",1,["syn::token::Gt"]],["impl !Sync for Le",1,["syn::token::Le"]],["impl !Sync for Lt",1,["syn::token::Lt"]],["impl !Sync for MulEq",1,["syn::token::MulEq"]],["impl !Sync for Ne",1,["syn::token::Ne"]],["impl !Sync for Or",1,["syn::token::Or"]],["impl !Sync for OrEq",1,["syn::token::OrEq"]],["impl !Sync for OrOr",1,["syn::token::OrOr"]],["impl !Sync for Pound",1,["syn::token::Pound"]],["impl !Sync for Question",1,["syn::token::Question"]],["impl !Sync for RArrow",1,["syn::token::RArrow"]],["impl !Sync for LArrow",1,["syn::token::LArrow"]],["impl !Sync for Rem",1,["syn::token::Rem"]],["impl !Sync for RemEq",1,["syn::token::RemEq"]],["impl !Sync for FatArrow",1,["syn::token::FatArrow"]],["impl !Sync for Semi",1,["syn::token::Semi"]],["impl !Sync for Shl",1,["syn::token::Shl"]],["impl !Sync for ShlEq",1,["syn::token::ShlEq"]],["impl !Sync for Shr",1,["syn::token::Shr"]],["impl !Sync for ShrEq",1,["syn::token::ShrEq"]],["impl !Sync for Star",1,["syn::token::Star"]],["impl !Sync for Sub",1,["syn::token::Sub"]],["impl !Sync for SubEq",1,["syn::token::SubEq"]],["impl !Sync for Tilde",1,["syn::token::Tilde"]],["impl !Sync for Brace",1,["syn::token::Brace"]],["impl !Sync for Bracket",1,["syn::token::Bracket"]],["impl !Sync for Paren",1,["syn::token::Paren"]],["impl !Sync for Group",1,["syn::token::Group"]],["impl !Sync for Attribute",1,["syn::attr::Attribute"]],["impl !Sync for AttrStyle",1,["syn::attr::AttrStyle"]],["impl !Sync for Meta",1,["syn::attr::Meta"]],["impl !Sync for MetaList",1,["syn::attr::MetaList"]],["impl !Sync for MetaNameValue",1,["syn::attr::MetaNameValue"]],["impl !Sync for NestedMeta",1,["syn::attr::NestedMeta"]],["impl !Sync for Variant",1,["syn::data::Variant"]],["impl !Sync for Fields",1,["syn::data::Fields"]],["impl !Sync for FieldsNamed",1,["syn::data::FieldsNamed"]],["impl !Sync for FieldsUnnamed",1,["syn::data::FieldsUnnamed"]],["impl !Sync for Field",1,["syn::data::Field"]],["impl !Sync for Visibility",1,["syn::data::Visibility"]],["impl !Sync for VisPublic",1,["syn::data::VisPublic"]],["impl !Sync for VisCrate",1,["syn::data::VisCrate"]],["impl !Sync for VisRestricted",1,["syn::data::VisRestricted"]],["impl !Sync for Expr",1,["syn::expr::Expr"]],["impl !Sync for ExprArray",1,["syn::expr::ExprArray"]],["impl !Sync for ExprAssign",1,["syn::expr::ExprAssign"]],["impl !Sync for ExprAssignOp",1,["syn::expr::ExprAssignOp"]],["impl !Sync for ExprAsync",1,["syn::expr::ExprAsync"]],["impl !Sync for ExprAwait",1,["syn::expr::ExprAwait"]],["impl !Sync for ExprBinary",1,["syn::expr::ExprBinary"]],["impl !Sync for ExprBlock",1,["syn::expr::ExprBlock"]],["impl !Sync for ExprBox",1,["syn::expr::ExprBox"]],["impl !Sync for ExprBreak",1,["syn::expr::ExprBreak"]],["impl !Sync for ExprCall",1,["syn::expr::ExprCall"]],["impl !Sync for ExprCast",1,["syn::expr::ExprCast"]],["impl !Sync for ExprClosure",1,["syn::expr::ExprClosure"]],["impl !Sync for ExprContinue",1,["syn::expr::ExprContinue"]],["impl !Sync for ExprField",1,["syn::expr::ExprField"]],["impl !Sync for ExprForLoop",1,["syn::expr::ExprForLoop"]],["impl !Sync for ExprGroup",1,["syn::expr::ExprGroup"]],["impl !Sync for ExprIf",1,["syn::expr::ExprIf"]],["impl !Sync for ExprIndex",1,["syn::expr::ExprIndex"]],["impl !Sync for ExprLet",1,["syn::expr::ExprLet"]],["impl !Sync for ExprLit",1,["syn::expr::ExprLit"]],["impl !Sync for ExprLoop",1,["syn::expr::ExprLoop"]],["impl !Sync for ExprMacro",1,["syn::expr::ExprMacro"]],["impl !Sync for ExprMatch",1,["syn::expr::ExprMatch"]],["impl !Sync for ExprMethodCall",1,["syn::expr::ExprMethodCall"]],["impl !Sync for ExprParen",1,["syn::expr::ExprParen"]],["impl !Sync for ExprPath",1,["syn::expr::ExprPath"]],["impl !Sync for ExprRange",1,["syn::expr::ExprRange"]],["impl !Sync for ExprReference",1,["syn::expr::ExprReference"]],["impl !Sync for ExprRepeat",1,["syn::expr::ExprRepeat"]],["impl !Sync for ExprReturn",1,["syn::expr::ExprReturn"]],["impl !Sync for ExprStruct",1,["syn::expr::ExprStruct"]],["impl !Sync for ExprTry",1,["syn::expr::ExprTry"]],["impl !Sync for ExprTryBlock",1,["syn::expr::ExprTryBlock"]],["impl !Sync for ExprTuple",1,["syn::expr::ExprTuple"]],["impl !Sync for ExprType",1,["syn::expr::ExprType"]],["impl !Sync for ExprUnary",1,["syn::expr::ExprUnary"]],["impl !Sync for ExprUnsafe",1,["syn::expr::ExprUnsafe"]],["impl !Sync for ExprWhile",1,["syn::expr::ExprWhile"]],["impl !Sync for ExprYield",1,["syn::expr::ExprYield"]],["impl !Sync for Member",1,["syn::expr::Member"]],["impl !Sync for Index",1,["syn::expr::Index"]],["impl !Sync for Generics",1,["syn::generics::Generics"]],["impl !Sync for GenericParam",1,["syn::generics::GenericParam"]],["impl !Sync for TypeParam",1,["syn::generics::TypeParam"]],["impl !Sync for LifetimeDef",1,["syn::generics::LifetimeDef"]],["impl !Sync for ConstParam",1,["syn::generics::ConstParam"]],["impl<'a> !Sync for ImplGenerics<'a>",1,["syn::generics::ImplGenerics"]],["impl<'a> !Sync for TypeGenerics<'a>",1,["syn::generics::TypeGenerics"]],["impl<'a> !Sync for Turbofish<'a>",1,["syn::generics::Turbofish"]],["impl !Sync for BoundLifetimes",1,["syn::generics::BoundLifetimes"]],["impl !Sync for TypeParamBound",1,["syn::generics::TypeParamBound"]],["impl !Sync for TraitBound",1,["syn::generics::TraitBound"]],["impl !Sync for TraitBoundModifier",1,["syn::generics::TraitBoundModifier"]],["impl !Sync for WhereClause",1,["syn::generics::WhereClause"]],["impl !Sync for WherePredicate",1,["syn::generics::WherePredicate"]],["impl !Sync for PredicateType",1,["syn::generics::PredicateType"]],["impl !Sync for PredicateLifetime",1,["syn::generics::PredicateLifetime"]],["impl !Sync for PredicateEq",1,["syn::generics::PredicateEq"]],["impl !Sync for Lifetime",1,["syn::lifetime::Lifetime"]],["impl !Sync for Lit",1,["syn::lit::Lit"]],["impl !Sync for LitStr",1,["syn::lit::LitStr"]],["impl !Sync for LitByteStr",1,["syn::lit::LitByteStr"]],["impl !Sync for LitByte",1,["syn::lit::LitByte"]],["impl !Sync for LitChar",1,["syn::lit::LitChar"]],["impl !Sync for LitInt",1,["syn::lit::LitInt"]],["impl !Sync for LitFloat",1,["syn::lit::LitFloat"]],["impl !Sync for LitBool",1,["syn::lit::LitBool"]],["impl Sync for StrStyle",1,["syn::lit::StrStyle"]],["impl !Sync for Macro",1,["syn::mac::Macro"]],["impl !Sync for MacroDelimiter",1,["syn::mac::MacroDelimiter"]],["impl !Sync for DeriveInput",1,["syn::derive::DeriveInput"]],["impl !Sync for Data",1,["syn::derive::Data"]],["impl !Sync for DataStruct",1,["syn::derive::DataStruct"]],["impl !Sync for DataEnum",1,["syn::derive::DataEnum"]],["impl !Sync for DataUnion",1,["syn::derive::DataUnion"]],["impl !Sync for BinOp",1,["syn::op::BinOp"]],["impl !Sync for UnOp",1,["syn::op::UnOp"]],["impl !Sync for Type",1,["syn::ty::Type"]],["impl !Sync for TypeArray",1,["syn::ty::TypeArray"]],["impl !Sync for TypeBareFn",1,["syn::ty::TypeBareFn"]],["impl !Sync for TypeGroup",1,["syn::ty::TypeGroup"]],["impl !Sync for TypeImplTrait",1,["syn::ty::TypeImplTrait"]],["impl !Sync for TypeInfer",1,["syn::ty::TypeInfer"]],["impl !Sync for TypeMacro",1,["syn::ty::TypeMacro"]],["impl !Sync for TypeNever",1,["syn::ty::TypeNever"]],["impl !Sync for TypeParen",1,["syn::ty::TypeParen"]],["impl !Sync for TypePath",1,["syn::ty::TypePath"]],["impl !Sync for TypePtr",1,["syn::ty::TypePtr"]],["impl !Sync for TypeReference",1,["syn::ty::TypeReference"]],["impl !Sync for TypeSlice",1,["syn::ty::TypeSlice"]],["impl !Sync for TypeTraitObject",1,["syn::ty::TypeTraitObject"]],["impl !Sync for TypeTuple",1,["syn::ty::TypeTuple"]],["impl !Sync for Abi",1,["syn::ty::Abi"]],["impl !Sync for BareFnArg",1,["syn::ty::BareFnArg"]],["impl !Sync for Variadic",1,["syn::ty::Variadic"]],["impl !Sync for ReturnType",1,["syn::ty::ReturnType"]],["impl !Sync for Path",1,["syn::path::Path"]],["impl !Sync for PathSegment",1,["syn::path::PathSegment"]],["impl !Sync for PathArguments",1,["syn::path::PathArguments"]],["impl !Sync for GenericArgument",1,["syn::path::GenericArgument"]],["impl !Sync for AngleBracketedGenericArguments",1,["syn::path::AngleBracketedGenericArguments"]],["impl !Sync for Binding",1,["syn::path::Binding"]],["impl !Sync for Constraint",1,["syn::path::Constraint"]],["impl !Sync for ParenthesizedGenericArguments",1,["syn::path::ParenthesizedGenericArguments"]],["impl !Sync for QSelf",1,["syn::path::QSelf"]],["impl !Sync for TokenBuffer",1,["syn::buffer::TokenBuffer"]],["impl<'a> !Sync for Cursor<'a>",1,["syn::buffer::Cursor"]],["impl<T, P> Sync for Punctuated<T, P>where\n P: Sync,\n T: Sync,",1,["syn::punctuated::Punctuated"]],["impl<'a, T, P> Sync for Pairs<'a, T, P>where\n P: Sync,\n T: Sync,",1,["syn::punctuated::Pairs"]],["impl<'a, T, P> Sync for PairsMut<'a, T, P>where\n P: Sync,\n T: Sync,",1,["syn::punctuated::PairsMut"]],["impl<T, P> Sync for IntoPairs<T, P>where\n P: Sync,\n T: Sync,",1,["syn::punctuated::IntoPairs"]],["impl<T> Sync for IntoIter<T>where\n T: Sync,",1,["syn::punctuated::IntoIter"]],["impl<'a, T> !Sync for Iter<'a, T>",1,["syn::punctuated::Iter"]],["impl<'a, T> !Sync for IterMut<'a, T>",1,["syn::punctuated::IterMut"]],["impl<T, P> Sync for Pair<T, P>where\n P: Sync,\n T: Sync,",1,["syn::punctuated::Pair"]],["impl<'a> !Sync for Lookahead1<'a>",1,["syn::lookahead::Lookahead1"]],["impl Sync for Error",1,["syn::error::Error"]],["impl<'a> !Sync for ParseBuffer<'a>",1,["syn::parse::ParseBuffer"]],["impl<'c, 'a> !Sync for StepCursor<'c, 'a>",1,["syn::parse::StepCursor"]],["impl Sync for Nothing",1,["syn::parse::Nothing"]]], -"synstructure":[["impl Sync for AddBounds",1,["synstructure::AddBounds"]],["impl Sync for BindStyle",1,["synstructure::BindStyle"]],["impl<'a> !Sync for BindingInfo<'a>",1,["synstructure::BindingInfo"]],["impl<'a> !Sync for VariantAst<'a>",1,["synstructure::VariantAst"]],["impl<'a> !Sync for VariantInfo<'a>",1,["synstructure::VariantInfo"]],["impl<'a> !Sync for Structure<'a>",1,["synstructure::Structure"]]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/marker/trait.Unpin.js b/implementors/core/marker/trait.Unpin.js deleted file mode 100644 index e3de0a6..0000000 --- a/implementors/core/marker/trait.Unpin.js +++ /dev/null @@ -1,8 +0,0 @@ -(function() {var implementors = { -"delog":[["impl Unpin for U1",1,["delog::hex::U1"]],["impl<'a, T: ?Sized, U, S> Unpin for HexStr<'a, T, U, S>where\n S: Unpin,\n U: Unpin,",1,["delog::hex::HexStr"]],["impl Unpin for Statistics",1,["delog::logger::Statistics"]],["impl Unpin for DefaultRenderer",1,["delog::render::DefaultRenderer"]],["impl Unpin for RipgrepRenderer",1,["delog::render::RipgrepRenderer"]]], -"flexiber":[["impl<'a> Unpin for Decoder<'a>",1,["flexiber::decoder::Decoder"]],["impl<'a> Unpin for Encoder<'a>",1,["flexiber::encoder::Encoder"]],["impl Unpin for Error",1,["flexiber::error::Error"]],["impl Unpin for ErrorKind",1,["flexiber::error::ErrorKind"]],["impl Unpin for Length",1,["flexiber::length::Length"]],["impl Unpin for SimpleTag",1,["flexiber::simpletag::SimpleTag"]],["impl<'a> Unpin for Slice<'a>",1,["flexiber::slice::Slice"]],["impl Unpin for Class",1,["flexiber::tag::Class"]],["impl Unpin for Tag",1,["flexiber::tag::Tag"]],["impl<V, T> Unpin for TaggedValue<V, T>where\n T: Unpin,\n V: Unpin,",1,["flexiber::tagged::TaggedValue"]]], -"log":[["impl Unpin for Level",1,["log::Level"]],["impl Unpin for LevelFilter",1,["log::LevelFilter"]],["impl<'a> Unpin for Record<'a>",1,["log::Record"]],["impl<'a> Unpin for RecordBuilder<'a>",1,["log::RecordBuilder"]],["impl<'a> Unpin for Metadata<'a>",1,["log::Metadata"]],["impl<'a> Unpin for MetadataBuilder<'a>",1,["log::MetadataBuilder"]],["impl Unpin for SetLoggerError",1,["log::SetLoggerError"]],["impl Unpin for ParseLevelError",1,["log::ParseLevelError"]]], -"proc_macro2":[["impl Unpin for DelimSpan",1,["proc_macro2::extra::DelimSpan"]],["impl Unpin for IntoIter",1,["proc_macro2::token_stream::IntoIter"]],["impl Unpin for TokenStream",1,["proc_macro2::TokenStream"]],["impl Unpin for LexError",1,["proc_macro2::LexError"]],["impl Unpin for Span",1,["proc_macro2::Span"]],["impl Unpin for TokenTree",1,["proc_macro2::TokenTree"]],["impl Unpin for Group",1,["proc_macro2::Group"]],["impl Unpin for Delimiter",1,["proc_macro2::Delimiter"]],["impl Unpin for Punct",1,["proc_macro2::Punct"]],["impl Unpin for Spacing",1,["proc_macro2::Spacing"]],["impl Unpin for Ident",1,["proc_macro2::Ident"]],["impl Unpin for Literal",1,["proc_macro2::Literal"]]], -"syn":[["impl Unpin for Underscore",1,["syn::token::Underscore"]],["impl Unpin for Abstract",1,["syn::token::Abstract"]],["impl Unpin for As",1,["syn::token::As"]],["impl Unpin for Async",1,["syn::token::Async"]],["impl Unpin for Auto",1,["syn::token::Auto"]],["impl Unpin for Await",1,["syn::token::Await"]],["impl Unpin for Become",1,["syn::token::Become"]],["impl Unpin for Box",1,["syn::token::Box"]],["impl Unpin for Break",1,["syn::token::Break"]],["impl Unpin for Const",1,["syn::token::Const"]],["impl Unpin for Continue",1,["syn::token::Continue"]],["impl Unpin for Crate",1,["syn::token::Crate"]],["impl Unpin for Default",1,["syn::token::Default"]],["impl Unpin for Do",1,["syn::token::Do"]],["impl Unpin for Dyn",1,["syn::token::Dyn"]],["impl Unpin for Else",1,["syn::token::Else"]],["impl Unpin for Enum",1,["syn::token::Enum"]],["impl Unpin for Extern",1,["syn::token::Extern"]],["impl Unpin for Final",1,["syn::token::Final"]],["impl Unpin for Fn",1,["syn::token::Fn"]],["impl Unpin for For",1,["syn::token::For"]],["impl Unpin for If",1,["syn::token::If"]],["impl Unpin for Impl",1,["syn::token::Impl"]],["impl Unpin for In",1,["syn::token::In"]],["impl Unpin for Let",1,["syn::token::Let"]],["impl Unpin for Loop",1,["syn::token::Loop"]],["impl Unpin for Macro",1,["syn::token::Macro"]],["impl Unpin for Match",1,["syn::token::Match"]],["impl Unpin for Mod",1,["syn::token::Mod"]],["impl Unpin for Move",1,["syn::token::Move"]],["impl Unpin for Mut",1,["syn::token::Mut"]],["impl Unpin for Override",1,["syn::token::Override"]],["impl Unpin for Priv",1,["syn::token::Priv"]],["impl Unpin for Pub",1,["syn::token::Pub"]],["impl Unpin for Ref",1,["syn::token::Ref"]],["impl Unpin for Return",1,["syn::token::Return"]],["impl Unpin for SelfType",1,["syn::token::SelfType"]],["impl Unpin for SelfValue",1,["syn::token::SelfValue"]],["impl Unpin for Static",1,["syn::token::Static"]],["impl Unpin for Struct",1,["syn::token::Struct"]],["impl Unpin for Super",1,["syn::token::Super"]],["impl Unpin for Trait",1,["syn::token::Trait"]],["impl Unpin for Try",1,["syn::token::Try"]],["impl Unpin for Type",1,["syn::token::Type"]],["impl Unpin for Typeof",1,["syn::token::Typeof"]],["impl Unpin for Union",1,["syn::token::Union"]],["impl Unpin for Unsafe",1,["syn::token::Unsafe"]],["impl Unpin for Unsized",1,["syn::token::Unsized"]],["impl Unpin for Use",1,["syn::token::Use"]],["impl Unpin for Virtual",1,["syn::token::Virtual"]],["impl Unpin for Where",1,["syn::token::Where"]],["impl Unpin for While",1,["syn::token::While"]],["impl Unpin for Yield",1,["syn::token::Yield"]],["impl Unpin for Add",1,["syn::token::Add"]],["impl Unpin for AddEq",1,["syn::token::AddEq"]],["impl Unpin for And",1,["syn::token::And"]],["impl Unpin for AndAnd",1,["syn::token::AndAnd"]],["impl Unpin for AndEq",1,["syn::token::AndEq"]],["impl Unpin for At",1,["syn::token::At"]],["impl Unpin for Bang",1,["syn::token::Bang"]],["impl Unpin for Caret",1,["syn::token::Caret"]],["impl Unpin for CaretEq",1,["syn::token::CaretEq"]],["impl Unpin for Colon",1,["syn::token::Colon"]],["impl Unpin for Colon2",1,["syn::token::Colon2"]],["impl Unpin for Comma",1,["syn::token::Comma"]],["impl Unpin for Div",1,["syn::token::Div"]],["impl Unpin for DivEq",1,["syn::token::DivEq"]],["impl Unpin for Dollar",1,["syn::token::Dollar"]],["impl Unpin for Dot",1,["syn::token::Dot"]],["impl Unpin for Dot2",1,["syn::token::Dot2"]],["impl Unpin for Dot3",1,["syn::token::Dot3"]],["impl Unpin for DotDotEq",1,["syn::token::DotDotEq"]],["impl Unpin for Eq",1,["syn::token::Eq"]],["impl Unpin for EqEq",1,["syn::token::EqEq"]],["impl Unpin for Ge",1,["syn::token::Ge"]],["impl Unpin for Gt",1,["syn::token::Gt"]],["impl Unpin for Le",1,["syn::token::Le"]],["impl Unpin for Lt",1,["syn::token::Lt"]],["impl Unpin for MulEq",1,["syn::token::MulEq"]],["impl Unpin for Ne",1,["syn::token::Ne"]],["impl Unpin for Or",1,["syn::token::Or"]],["impl Unpin for OrEq",1,["syn::token::OrEq"]],["impl Unpin for OrOr",1,["syn::token::OrOr"]],["impl Unpin for Pound",1,["syn::token::Pound"]],["impl Unpin for Question",1,["syn::token::Question"]],["impl Unpin for RArrow",1,["syn::token::RArrow"]],["impl Unpin for LArrow",1,["syn::token::LArrow"]],["impl Unpin for Rem",1,["syn::token::Rem"]],["impl Unpin for RemEq",1,["syn::token::RemEq"]],["impl Unpin for FatArrow",1,["syn::token::FatArrow"]],["impl Unpin for Semi",1,["syn::token::Semi"]],["impl Unpin for Shl",1,["syn::token::Shl"]],["impl Unpin for ShlEq",1,["syn::token::ShlEq"]],["impl Unpin for Shr",1,["syn::token::Shr"]],["impl Unpin for ShrEq",1,["syn::token::ShrEq"]],["impl Unpin for Star",1,["syn::token::Star"]],["impl Unpin for Sub",1,["syn::token::Sub"]],["impl Unpin for SubEq",1,["syn::token::SubEq"]],["impl Unpin for Tilde",1,["syn::token::Tilde"]],["impl Unpin for Brace",1,["syn::token::Brace"]],["impl Unpin for Bracket",1,["syn::token::Bracket"]],["impl Unpin for Paren",1,["syn::token::Paren"]],["impl Unpin for Group",1,["syn::token::Group"]],["impl Unpin for Attribute",1,["syn::attr::Attribute"]],["impl Unpin for AttrStyle",1,["syn::attr::AttrStyle"]],["impl Unpin for Meta",1,["syn::attr::Meta"]],["impl Unpin for MetaList",1,["syn::attr::MetaList"]],["impl Unpin for MetaNameValue",1,["syn::attr::MetaNameValue"]],["impl Unpin for NestedMeta",1,["syn::attr::NestedMeta"]],["impl Unpin for Variant",1,["syn::data::Variant"]],["impl Unpin for Fields",1,["syn::data::Fields"]],["impl Unpin for FieldsNamed",1,["syn::data::FieldsNamed"]],["impl Unpin for FieldsUnnamed",1,["syn::data::FieldsUnnamed"]],["impl Unpin for Field",1,["syn::data::Field"]],["impl Unpin for Visibility",1,["syn::data::Visibility"]],["impl Unpin for VisPublic",1,["syn::data::VisPublic"]],["impl Unpin for VisCrate",1,["syn::data::VisCrate"]],["impl Unpin for VisRestricted",1,["syn::data::VisRestricted"]],["impl Unpin for Expr",1,["syn::expr::Expr"]],["impl Unpin for ExprArray",1,["syn::expr::ExprArray"]],["impl Unpin for ExprAssign",1,["syn::expr::ExprAssign"]],["impl Unpin for ExprAssignOp",1,["syn::expr::ExprAssignOp"]],["impl Unpin for ExprAsync",1,["syn::expr::ExprAsync"]],["impl Unpin for ExprAwait",1,["syn::expr::ExprAwait"]],["impl Unpin for ExprBinary",1,["syn::expr::ExprBinary"]],["impl Unpin for ExprBlock",1,["syn::expr::ExprBlock"]],["impl Unpin for ExprBox",1,["syn::expr::ExprBox"]],["impl Unpin for ExprBreak",1,["syn::expr::ExprBreak"]],["impl Unpin for ExprCall",1,["syn::expr::ExprCall"]],["impl Unpin for ExprCast",1,["syn::expr::ExprCast"]],["impl Unpin for ExprClosure",1,["syn::expr::ExprClosure"]],["impl Unpin for ExprContinue",1,["syn::expr::ExprContinue"]],["impl Unpin for ExprField",1,["syn::expr::ExprField"]],["impl Unpin for ExprForLoop",1,["syn::expr::ExprForLoop"]],["impl Unpin for ExprGroup",1,["syn::expr::ExprGroup"]],["impl Unpin for ExprIf",1,["syn::expr::ExprIf"]],["impl Unpin for ExprIndex",1,["syn::expr::ExprIndex"]],["impl Unpin for ExprLet",1,["syn::expr::ExprLet"]],["impl Unpin for ExprLit",1,["syn::expr::ExprLit"]],["impl Unpin for ExprLoop",1,["syn::expr::ExprLoop"]],["impl Unpin for ExprMacro",1,["syn::expr::ExprMacro"]],["impl Unpin for ExprMatch",1,["syn::expr::ExprMatch"]],["impl Unpin for ExprMethodCall",1,["syn::expr::ExprMethodCall"]],["impl Unpin for ExprParen",1,["syn::expr::ExprParen"]],["impl Unpin for ExprPath",1,["syn::expr::ExprPath"]],["impl Unpin for ExprRange",1,["syn::expr::ExprRange"]],["impl Unpin for ExprReference",1,["syn::expr::ExprReference"]],["impl Unpin for ExprRepeat",1,["syn::expr::ExprRepeat"]],["impl Unpin for ExprReturn",1,["syn::expr::ExprReturn"]],["impl Unpin for ExprStruct",1,["syn::expr::ExprStruct"]],["impl Unpin for ExprTry",1,["syn::expr::ExprTry"]],["impl Unpin for ExprTryBlock",1,["syn::expr::ExprTryBlock"]],["impl Unpin for ExprTuple",1,["syn::expr::ExprTuple"]],["impl Unpin for ExprType",1,["syn::expr::ExprType"]],["impl Unpin for ExprUnary",1,["syn::expr::ExprUnary"]],["impl Unpin for ExprUnsafe",1,["syn::expr::ExprUnsafe"]],["impl Unpin for ExprWhile",1,["syn::expr::ExprWhile"]],["impl Unpin for ExprYield",1,["syn::expr::ExprYield"]],["impl Unpin for Member",1,["syn::expr::Member"]],["impl Unpin for Index",1,["syn::expr::Index"]],["impl Unpin for Generics",1,["syn::generics::Generics"]],["impl Unpin for GenericParam",1,["syn::generics::GenericParam"]],["impl Unpin for TypeParam",1,["syn::generics::TypeParam"]],["impl Unpin for LifetimeDef",1,["syn::generics::LifetimeDef"]],["impl Unpin for ConstParam",1,["syn::generics::ConstParam"]],["impl<'a> Unpin for ImplGenerics<'a>",1,["syn::generics::ImplGenerics"]],["impl<'a> Unpin for TypeGenerics<'a>",1,["syn::generics::TypeGenerics"]],["impl<'a> Unpin for Turbofish<'a>",1,["syn::generics::Turbofish"]],["impl Unpin for BoundLifetimes",1,["syn::generics::BoundLifetimes"]],["impl Unpin for TypeParamBound",1,["syn::generics::TypeParamBound"]],["impl Unpin for TraitBound",1,["syn::generics::TraitBound"]],["impl Unpin for TraitBoundModifier",1,["syn::generics::TraitBoundModifier"]],["impl Unpin for WhereClause",1,["syn::generics::WhereClause"]],["impl Unpin for WherePredicate",1,["syn::generics::WherePredicate"]],["impl Unpin for PredicateType",1,["syn::generics::PredicateType"]],["impl Unpin for PredicateLifetime",1,["syn::generics::PredicateLifetime"]],["impl Unpin for PredicateEq",1,["syn::generics::PredicateEq"]],["impl Unpin for Lifetime",1,["syn::lifetime::Lifetime"]],["impl Unpin for Lit",1,["syn::lit::Lit"]],["impl Unpin for LitStr",1,["syn::lit::LitStr"]],["impl Unpin for LitByteStr",1,["syn::lit::LitByteStr"]],["impl Unpin for LitByte",1,["syn::lit::LitByte"]],["impl Unpin for LitChar",1,["syn::lit::LitChar"]],["impl Unpin for LitInt",1,["syn::lit::LitInt"]],["impl Unpin for LitFloat",1,["syn::lit::LitFloat"]],["impl Unpin for LitBool",1,["syn::lit::LitBool"]],["impl Unpin for StrStyle",1,["syn::lit::StrStyle"]],["impl Unpin for Macro",1,["syn::mac::Macro"]],["impl Unpin for MacroDelimiter",1,["syn::mac::MacroDelimiter"]],["impl Unpin for DeriveInput",1,["syn::derive::DeriveInput"]],["impl Unpin for Data",1,["syn::derive::Data"]],["impl Unpin for DataStruct",1,["syn::derive::DataStruct"]],["impl Unpin for DataEnum",1,["syn::derive::DataEnum"]],["impl Unpin for DataUnion",1,["syn::derive::DataUnion"]],["impl Unpin for BinOp",1,["syn::op::BinOp"]],["impl Unpin for UnOp",1,["syn::op::UnOp"]],["impl Unpin for Type",1,["syn::ty::Type"]],["impl Unpin for TypeArray",1,["syn::ty::TypeArray"]],["impl Unpin for TypeBareFn",1,["syn::ty::TypeBareFn"]],["impl Unpin for TypeGroup",1,["syn::ty::TypeGroup"]],["impl Unpin for TypeImplTrait",1,["syn::ty::TypeImplTrait"]],["impl Unpin for TypeInfer",1,["syn::ty::TypeInfer"]],["impl Unpin for TypeMacro",1,["syn::ty::TypeMacro"]],["impl Unpin for TypeNever",1,["syn::ty::TypeNever"]],["impl Unpin for TypeParen",1,["syn::ty::TypeParen"]],["impl Unpin for TypePath",1,["syn::ty::TypePath"]],["impl Unpin for TypePtr",1,["syn::ty::TypePtr"]],["impl Unpin for TypeReference",1,["syn::ty::TypeReference"]],["impl Unpin for TypeSlice",1,["syn::ty::TypeSlice"]],["impl Unpin for TypeTraitObject",1,["syn::ty::TypeTraitObject"]],["impl Unpin for TypeTuple",1,["syn::ty::TypeTuple"]],["impl Unpin for Abi",1,["syn::ty::Abi"]],["impl Unpin for BareFnArg",1,["syn::ty::BareFnArg"]],["impl Unpin for Variadic",1,["syn::ty::Variadic"]],["impl Unpin for ReturnType",1,["syn::ty::ReturnType"]],["impl Unpin for Path",1,["syn::path::Path"]],["impl Unpin for PathSegment",1,["syn::path::PathSegment"]],["impl Unpin for PathArguments",1,["syn::path::PathArguments"]],["impl Unpin for GenericArgument",1,["syn::path::GenericArgument"]],["impl Unpin for AngleBracketedGenericArguments",1,["syn::path::AngleBracketedGenericArguments"]],["impl Unpin for Binding",1,["syn::path::Binding"]],["impl Unpin for Constraint",1,["syn::path::Constraint"]],["impl Unpin for ParenthesizedGenericArguments",1,["syn::path::ParenthesizedGenericArguments"]],["impl Unpin for QSelf",1,["syn::path::QSelf"]],["impl Unpin for TokenBuffer",1,["syn::buffer::TokenBuffer"]],["impl<'a> Unpin for Cursor<'a>",1,["syn::buffer::Cursor"]],["impl<T, P> Unpin for Punctuated<T, P>where\n P: Unpin,\n T: Unpin,",1,["syn::punctuated::Punctuated"]],["impl<'a, T, P> Unpin for Pairs<'a, T, P>",1,["syn::punctuated::Pairs"]],["impl<'a, T, P> Unpin for PairsMut<'a, T, P>",1,["syn::punctuated::PairsMut"]],["impl<T, P> Unpin for IntoPairs<T, P>where\n P: Unpin,\n T: Unpin,",1,["syn::punctuated::IntoPairs"]],["impl<T> Unpin for IntoIter<T>where\n T: Unpin,",1,["syn::punctuated::IntoIter"]],["impl<'a, T> Unpin for Iter<'a, T>",1,["syn::punctuated::Iter"]],["impl<'a, T> Unpin for IterMut<'a, T>",1,["syn::punctuated::IterMut"]],["impl<T, P> Unpin for Pair<T, P>where\n P: Unpin,\n T: Unpin,",1,["syn::punctuated::Pair"]],["impl<'a> Unpin for Lookahead1<'a>",1,["syn::lookahead::Lookahead1"]],["impl Unpin for Error",1,["syn::error::Error"]],["impl<'a> Unpin for ParseBuffer<'a>",1,["syn::parse::ParseBuffer"]],["impl<'c, 'a> Unpin for StepCursor<'c, 'a>",1,["syn::parse::StepCursor"]],["impl Unpin for Nothing",1,["syn::parse::Nothing"]]], -"synstructure":[["impl Unpin for AddBounds",1,["synstructure::AddBounds"]],["impl Unpin for BindStyle",1,["synstructure::BindStyle"]],["impl<'a> Unpin for BindingInfo<'a>",1,["synstructure::BindingInfo"]],["impl<'a> Unpin for VariantAst<'a>",1,["synstructure::VariantAst"]],["impl<'a> Unpin for VariantInfo<'a>",1,["synstructure::VariantInfo"]],["impl<'a> Unpin for Structure<'a>",1,["synstructure::Structure"]]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/ops/arith/trait.Add.js b/implementors/core/ops/arith/trait.Add.js deleted file mode 100644 index eabdf97..0000000 --- a/implementors/core/ops/arith/trait.Add.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"flexiber":[["impl Add<Length> for Length"],["impl Add<u8> for Length"],["impl Add<usize> for Length"],["impl Add<Length> for Result<Length>"],["impl Add<u16> for Length"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/ops/deref/trait.Deref.js b/implementors/core/ops/deref/trait.Deref.js deleted file mode 100644 index 7b1bfba..0000000 --- a/implementors/core/ops/deref/trait.Deref.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"syn":[["impl Deref for Caret"],["impl Deref for Div"],["impl Deref for Dollar"],["impl Deref for Dot"],["impl Deref for Bang"],["impl Deref for Question"],["impl Deref for Underscore"],["impl Deref for Eq"],["impl Deref for Gt"],["impl Deref for Colon"],["impl Deref for Or"],["impl<'c, 'a> Deref for StepCursor<'c, 'a>"],["impl Deref for Lt"],["impl Deref for Semi"],["impl Deref for And"],["impl Deref for Tilde"],["impl Deref for At"],["impl Deref for Sub"],["impl Deref for Add"],["impl Deref for Pound"],["impl Deref for Star"],["impl Deref for Rem"],["impl Deref for Comma"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/ops/deref/trait.DerefMut.js b/implementors/core/ops/deref/trait.DerefMut.js deleted file mode 100644 index 46f4aa3..0000000 --- a/implementors/core/ops/deref/trait.DerefMut.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"syn":[["impl DerefMut for Star"],["impl DerefMut for Bang"],["impl DerefMut for Add"],["impl DerefMut for Semi"],["impl DerefMut for Dollar"],["impl DerefMut for Or"],["impl DerefMut for And"],["impl DerefMut for Question"],["impl DerefMut for Rem"],["impl DerefMut for Sub"],["impl DerefMut for At"],["impl DerefMut for Lt"],["impl DerefMut for Colon"],["impl DerefMut for Dot"],["impl DerefMut for Gt"],["impl DerefMut for Pound"],["impl DerefMut for Eq"],["impl DerefMut for Underscore"],["impl DerefMut for Tilde"],["impl DerefMut for Comma"],["impl DerefMut for Caret"],["impl DerefMut for Div"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/ops/drop/trait.Drop.js b/implementors/core/ops/drop/trait.Drop.js deleted file mode 100644 index d2d914b..0000000 --- a/implementors/core/ops/drop/trait.Drop.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"syn":[["impl<'a> Drop for ParseBuffer<'a>"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/ops/index/trait.Index.js b/implementors/core/ops/index/trait.Index.js deleted file mode 100644 index 675dbf8..0000000 --- a/implementors/core/ops/index/trait.Index.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"syn":[["impl<T, P> Index<usize> for Punctuated<T, P>"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/ops/index/trait.IndexMut.js b/implementors/core/ops/index/trait.IndexMut.js deleted file mode 100644 index 50b1533..0000000 --- a/implementors/core/ops/index/trait.IndexMut.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"syn":[["impl<T, P> IndexMut<usize> for Punctuated<T, P>"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js b/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js deleted file mode 100644 index 8662e3b..0000000 --- a/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js +++ /dev/null @@ -1,8 +0,0 @@ -(function() {var implementors = { -"delog":[["impl RefUnwindSafe for U1",1,["delog::hex::U1"]],["impl<'a, T: ?Sized, U, S> RefUnwindSafe for HexStr<'a, T, U, S>where\n S: RefUnwindSafe,\n T: RefUnwindSafe,\n U: RefUnwindSafe,",1,["delog::hex::HexStr"]],["impl RefUnwindSafe for Statistics",1,["delog::logger::Statistics"]],["impl RefUnwindSafe for DefaultRenderer",1,["delog::render::DefaultRenderer"]],["impl RefUnwindSafe for RipgrepRenderer",1,["delog::render::RipgrepRenderer"]]], -"flexiber":[["impl<'a> RefUnwindSafe for Decoder<'a>",1,["flexiber::decoder::Decoder"]],["impl<'a> RefUnwindSafe for Encoder<'a>",1,["flexiber::encoder::Encoder"]],["impl RefUnwindSafe for Error",1,["flexiber::error::Error"]],["impl RefUnwindSafe for ErrorKind",1,["flexiber::error::ErrorKind"]],["impl RefUnwindSafe for Length",1,["flexiber::length::Length"]],["impl RefUnwindSafe for SimpleTag",1,["flexiber::simpletag::SimpleTag"]],["impl<'a> RefUnwindSafe for Slice<'a>",1,["flexiber::slice::Slice"]],["impl RefUnwindSafe for Class",1,["flexiber::tag::Class"]],["impl RefUnwindSafe for Tag",1,["flexiber::tag::Tag"]],["impl<V, T> RefUnwindSafe for TaggedValue<V, T>where\n T: RefUnwindSafe,\n V: RefUnwindSafe,",1,["flexiber::tagged::TaggedValue"]]], -"log":[["impl RefUnwindSafe for Level",1,["log::Level"]],["impl RefUnwindSafe for LevelFilter",1,["log::LevelFilter"]],["impl<'a> !RefUnwindSafe for Record<'a>",1,["log::Record"]],["impl<'a> !RefUnwindSafe for RecordBuilder<'a>",1,["log::RecordBuilder"]],["impl<'a> RefUnwindSafe for Metadata<'a>",1,["log::Metadata"]],["impl<'a> RefUnwindSafe for MetadataBuilder<'a>",1,["log::MetadataBuilder"]],["impl RefUnwindSafe for SetLoggerError",1,["log::SetLoggerError"]],["impl RefUnwindSafe for ParseLevelError",1,["log::ParseLevelError"]]], -"proc_macro2":[["impl RefUnwindSafe for DelimSpan",1,["proc_macro2::extra::DelimSpan"]],["impl RefUnwindSafe for IntoIter",1,["proc_macro2::token_stream::IntoIter"]],["impl RefUnwindSafe for TokenStream",1,["proc_macro2::TokenStream"]],["impl RefUnwindSafe for LexError",1,["proc_macro2::LexError"]],["impl RefUnwindSafe for Span",1,["proc_macro2::Span"]],["impl RefUnwindSafe for TokenTree",1,["proc_macro2::TokenTree"]],["impl RefUnwindSafe for Group",1,["proc_macro2::Group"]],["impl RefUnwindSafe for Delimiter",1,["proc_macro2::Delimiter"]],["impl RefUnwindSafe for Punct",1,["proc_macro2::Punct"]],["impl RefUnwindSafe for Spacing",1,["proc_macro2::Spacing"]],["impl RefUnwindSafe for Ident",1,["proc_macro2::Ident"]],["impl RefUnwindSafe for Literal",1,["proc_macro2::Literal"]]], -"syn":[["impl RefUnwindSafe for Underscore",1,["syn::token::Underscore"]],["impl RefUnwindSafe for Abstract",1,["syn::token::Abstract"]],["impl RefUnwindSafe for As",1,["syn::token::As"]],["impl RefUnwindSafe for Async",1,["syn::token::Async"]],["impl RefUnwindSafe for Auto",1,["syn::token::Auto"]],["impl RefUnwindSafe for Await",1,["syn::token::Await"]],["impl RefUnwindSafe for Become",1,["syn::token::Become"]],["impl RefUnwindSafe for Box",1,["syn::token::Box"]],["impl RefUnwindSafe for Break",1,["syn::token::Break"]],["impl RefUnwindSafe for Const",1,["syn::token::Const"]],["impl RefUnwindSafe for Continue",1,["syn::token::Continue"]],["impl RefUnwindSafe for Crate",1,["syn::token::Crate"]],["impl RefUnwindSafe for Default",1,["syn::token::Default"]],["impl RefUnwindSafe for Do",1,["syn::token::Do"]],["impl RefUnwindSafe for Dyn",1,["syn::token::Dyn"]],["impl RefUnwindSafe for Else",1,["syn::token::Else"]],["impl RefUnwindSafe for Enum",1,["syn::token::Enum"]],["impl RefUnwindSafe for Extern",1,["syn::token::Extern"]],["impl RefUnwindSafe for Final",1,["syn::token::Final"]],["impl RefUnwindSafe for Fn",1,["syn::token::Fn"]],["impl RefUnwindSafe for For",1,["syn::token::For"]],["impl RefUnwindSafe for If",1,["syn::token::If"]],["impl RefUnwindSafe for Impl",1,["syn::token::Impl"]],["impl RefUnwindSafe for In",1,["syn::token::In"]],["impl RefUnwindSafe for Let",1,["syn::token::Let"]],["impl RefUnwindSafe for Loop",1,["syn::token::Loop"]],["impl RefUnwindSafe for Macro",1,["syn::token::Macro"]],["impl RefUnwindSafe for Match",1,["syn::token::Match"]],["impl RefUnwindSafe for Mod",1,["syn::token::Mod"]],["impl RefUnwindSafe for Move",1,["syn::token::Move"]],["impl RefUnwindSafe for Mut",1,["syn::token::Mut"]],["impl RefUnwindSafe for Override",1,["syn::token::Override"]],["impl RefUnwindSafe for Priv",1,["syn::token::Priv"]],["impl RefUnwindSafe for Pub",1,["syn::token::Pub"]],["impl RefUnwindSafe for Ref",1,["syn::token::Ref"]],["impl RefUnwindSafe for Return",1,["syn::token::Return"]],["impl RefUnwindSafe for SelfType",1,["syn::token::SelfType"]],["impl RefUnwindSafe for SelfValue",1,["syn::token::SelfValue"]],["impl RefUnwindSafe for Static",1,["syn::token::Static"]],["impl RefUnwindSafe for Struct",1,["syn::token::Struct"]],["impl RefUnwindSafe for Super",1,["syn::token::Super"]],["impl RefUnwindSafe for Trait",1,["syn::token::Trait"]],["impl RefUnwindSafe for Try",1,["syn::token::Try"]],["impl RefUnwindSafe for Type",1,["syn::token::Type"]],["impl RefUnwindSafe for Typeof",1,["syn::token::Typeof"]],["impl RefUnwindSafe for Union",1,["syn::token::Union"]],["impl RefUnwindSafe for Unsafe",1,["syn::token::Unsafe"]],["impl RefUnwindSafe for Unsized",1,["syn::token::Unsized"]],["impl RefUnwindSafe for Use",1,["syn::token::Use"]],["impl RefUnwindSafe for Virtual",1,["syn::token::Virtual"]],["impl RefUnwindSafe for Where",1,["syn::token::Where"]],["impl RefUnwindSafe for While",1,["syn::token::While"]],["impl RefUnwindSafe for Yield",1,["syn::token::Yield"]],["impl RefUnwindSafe for Add",1,["syn::token::Add"]],["impl RefUnwindSafe for AddEq",1,["syn::token::AddEq"]],["impl RefUnwindSafe for And",1,["syn::token::And"]],["impl RefUnwindSafe for AndAnd",1,["syn::token::AndAnd"]],["impl RefUnwindSafe for AndEq",1,["syn::token::AndEq"]],["impl RefUnwindSafe for At",1,["syn::token::At"]],["impl RefUnwindSafe for Bang",1,["syn::token::Bang"]],["impl RefUnwindSafe for Caret",1,["syn::token::Caret"]],["impl RefUnwindSafe for CaretEq",1,["syn::token::CaretEq"]],["impl RefUnwindSafe for Colon",1,["syn::token::Colon"]],["impl RefUnwindSafe for Colon2",1,["syn::token::Colon2"]],["impl RefUnwindSafe for Comma",1,["syn::token::Comma"]],["impl RefUnwindSafe for Div",1,["syn::token::Div"]],["impl RefUnwindSafe for DivEq",1,["syn::token::DivEq"]],["impl RefUnwindSafe for Dollar",1,["syn::token::Dollar"]],["impl RefUnwindSafe for Dot",1,["syn::token::Dot"]],["impl RefUnwindSafe for Dot2",1,["syn::token::Dot2"]],["impl RefUnwindSafe for Dot3",1,["syn::token::Dot3"]],["impl RefUnwindSafe for DotDotEq",1,["syn::token::DotDotEq"]],["impl RefUnwindSafe for Eq",1,["syn::token::Eq"]],["impl RefUnwindSafe for EqEq",1,["syn::token::EqEq"]],["impl RefUnwindSafe for Ge",1,["syn::token::Ge"]],["impl RefUnwindSafe for Gt",1,["syn::token::Gt"]],["impl RefUnwindSafe for Le",1,["syn::token::Le"]],["impl RefUnwindSafe for Lt",1,["syn::token::Lt"]],["impl RefUnwindSafe for MulEq",1,["syn::token::MulEq"]],["impl RefUnwindSafe for Ne",1,["syn::token::Ne"]],["impl RefUnwindSafe for Or",1,["syn::token::Or"]],["impl RefUnwindSafe for OrEq",1,["syn::token::OrEq"]],["impl RefUnwindSafe for OrOr",1,["syn::token::OrOr"]],["impl RefUnwindSafe for Pound",1,["syn::token::Pound"]],["impl RefUnwindSafe for Question",1,["syn::token::Question"]],["impl RefUnwindSafe for RArrow",1,["syn::token::RArrow"]],["impl RefUnwindSafe for LArrow",1,["syn::token::LArrow"]],["impl RefUnwindSafe for Rem",1,["syn::token::Rem"]],["impl RefUnwindSafe for RemEq",1,["syn::token::RemEq"]],["impl RefUnwindSafe for FatArrow",1,["syn::token::FatArrow"]],["impl RefUnwindSafe for Semi",1,["syn::token::Semi"]],["impl RefUnwindSafe for Shl",1,["syn::token::Shl"]],["impl RefUnwindSafe for ShlEq",1,["syn::token::ShlEq"]],["impl RefUnwindSafe for Shr",1,["syn::token::Shr"]],["impl RefUnwindSafe for ShrEq",1,["syn::token::ShrEq"]],["impl RefUnwindSafe for Star",1,["syn::token::Star"]],["impl RefUnwindSafe for Sub",1,["syn::token::Sub"]],["impl RefUnwindSafe for SubEq",1,["syn::token::SubEq"]],["impl RefUnwindSafe for Tilde",1,["syn::token::Tilde"]],["impl RefUnwindSafe for Brace",1,["syn::token::Brace"]],["impl RefUnwindSafe for Bracket",1,["syn::token::Bracket"]],["impl RefUnwindSafe for Paren",1,["syn::token::Paren"]],["impl RefUnwindSafe for Group",1,["syn::token::Group"]],["impl RefUnwindSafe for Attribute",1,["syn::attr::Attribute"]],["impl RefUnwindSafe for AttrStyle",1,["syn::attr::AttrStyle"]],["impl RefUnwindSafe for Meta",1,["syn::attr::Meta"]],["impl RefUnwindSafe for MetaList",1,["syn::attr::MetaList"]],["impl RefUnwindSafe for MetaNameValue",1,["syn::attr::MetaNameValue"]],["impl RefUnwindSafe for NestedMeta",1,["syn::attr::NestedMeta"]],["impl RefUnwindSafe for Variant",1,["syn::data::Variant"]],["impl RefUnwindSafe for Fields",1,["syn::data::Fields"]],["impl RefUnwindSafe for FieldsNamed",1,["syn::data::FieldsNamed"]],["impl RefUnwindSafe for FieldsUnnamed",1,["syn::data::FieldsUnnamed"]],["impl RefUnwindSafe for Field",1,["syn::data::Field"]],["impl RefUnwindSafe for Visibility",1,["syn::data::Visibility"]],["impl RefUnwindSafe for VisPublic",1,["syn::data::VisPublic"]],["impl RefUnwindSafe for VisCrate",1,["syn::data::VisCrate"]],["impl RefUnwindSafe for VisRestricted",1,["syn::data::VisRestricted"]],["impl RefUnwindSafe for Expr",1,["syn::expr::Expr"]],["impl RefUnwindSafe for ExprArray",1,["syn::expr::ExprArray"]],["impl RefUnwindSafe for ExprAssign",1,["syn::expr::ExprAssign"]],["impl RefUnwindSafe for ExprAssignOp",1,["syn::expr::ExprAssignOp"]],["impl RefUnwindSafe for ExprAsync",1,["syn::expr::ExprAsync"]],["impl RefUnwindSafe for ExprAwait",1,["syn::expr::ExprAwait"]],["impl RefUnwindSafe for ExprBinary",1,["syn::expr::ExprBinary"]],["impl RefUnwindSafe for ExprBlock",1,["syn::expr::ExprBlock"]],["impl RefUnwindSafe for ExprBox",1,["syn::expr::ExprBox"]],["impl RefUnwindSafe for ExprBreak",1,["syn::expr::ExprBreak"]],["impl RefUnwindSafe for ExprCall",1,["syn::expr::ExprCall"]],["impl RefUnwindSafe for ExprCast",1,["syn::expr::ExprCast"]],["impl RefUnwindSafe for ExprClosure",1,["syn::expr::ExprClosure"]],["impl RefUnwindSafe for ExprContinue",1,["syn::expr::ExprContinue"]],["impl RefUnwindSafe for ExprField",1,["syn::expr::ExprField"]],["impl RefUnwindSafe for ExprForLoop",1,["syn::expr::ExprForLoop"]],["impl RefUnwindSafe for ExprGroup",1,["syn::expr::ExprGroup"]],["impl RefUnwindSafe for ExprIf",1,["syn::expr::ExprIf"]],["impl RefUnwindSafe for ExprIndex",1,["syn::expr::ExprIndex"]],["impl RefUnwindSafe for ExprLet",1,["syn::expr::ExprLet"]],["impl RefUnwindSafe for ExprLit",1,["syn::expr::ExprLit"]],["impl RefUnwindSafe for ExprLoop",1,["syn::expr::ExprLoop"]],["impl RefUnwindSafe for ExprMacro",1,["syn::expr::ExprMacro"]],["impl RefUnwindSafe for ExprMatch",1,["syn::expr::ExprMatch"]],["impl RefUnwindSafe for ExprMethodCall",1,["syn::expr::ExprMethodCall"]],["impl RefUnwindSafe for ExprParen",1,["syn::expr::ExprParen"]],["impl RefUnwindSafe for ExprPath",1,["syn::expr::ExprPath"]],["impl RefUnwindSafe for ExprRange",1,["syn::expr::ExprRange"]],["impl RefUnwindSafe for ExprReference",1,["syn::expr::ExprReference"]],["impl RefUnwindSafe for ExprRepeat",1,["syn::expr::ExprRepeat"]],["impl RefUnwindSafe for ExprReturn",1,["syn::expr::ExprReturn"]],["impl RefUnwindSafe for ExprStruct",1,["syn::expr::ExprStruct"]],["impl RefUnwindSafe for ExprTry",1,["syn::expr::ExprTry"]],["impl RefUnwindSafe for ExprTryBlock",1,["syn::expr::ExprTryBlock"]],["impl RefUnwindSafe for ExprTuple",1,["syn::expr::ExprTuple"]],["impl RefUnwindSafe for ExprType",1,["syn::expr::ExprType"]],["impl RefUnwindSafe for ExprUnary",1,["syn::expr::ExprUnary"]],["impl RefUnwindSafe for ExprUnsafe",1,["syn::expr::ExprUnsafe"]],["impl RefUnwindSafe for ExprWhile",1,["syn::expr::ExprWhile"]],["impl RefUnwindSafe for ExprYield",1,["syn::expr::ExprYield"]],["impl RefUnwindSafe for Member",1,["syn::expr::Member"]],["impl RefUnwindSafe for Index",1,["syn::expr::Index"]],["impl RefUnwindSafe for Generics",1,["syn::generics::Generics"]],["impl RefUnwindSafe for GenericParam",1,["syn::generics::GenericParam"]],["impl RefUnwindSafe for TypeParam",1,["syn::generics::TypeParam"]],["impl RefUnwindSafe for LifetimeDef",1,["syn::generics::LifetimeDef"]],["impl RefUnwindSafe for ConstParam",1,["syn::generics::ConstParam"]],["impl<'a> RefUnwindSafe for ImplGenerics<'a>",1,["syn::generics::ImplGenerics"]],["impl<'a> RefUnwindSafe for TypeGenerics<'a>",1,["syn::generics::TypeGenerics"]],["impl<'a> RefUnwindSafe for Turbofish<'a>",1,["syn::generics::Turbofish"]],["impl RefUnwindSafe for BoundLifetimes",1,["syn::generics::BoundLifetimes"]],["impl RefUnwindSafe for TypeParamBound",1,["syn::generics::TypeParamBound"]],["impl RefUnwindSafe for TraitBound",1,["syn::generics::TraitBound"]],["impl RefUnwindSafe for TraitBoundModifier",1,["syn::generics::TraitBoundModifier"]],["impl RefUnwindSafe for WhereClause",1,["syn::generics::WhereClause"]],["impl RefUnwindSafe for WherePredicate",1,["syn::generics::WherePredicate"]],["impl RefUnwindSafe for PredicateType",1,["syn::generics::PredicateType"]],["impl RefUnwindSafe for PredicateLifetime",1,["syn::generics::PredicateLifetime"]],["impl RefUnwindSafe for PredicateEq",1,["syn::generics::PredicateEq"]],["impl RefUnwindSafe for Lifetime",1,["syn::lifetime::Lifetime"]],["impl RefUnwindSafe for Lit",1,["syn::lit::Lit"]],["impl RefUnwindSafe for LitStr",1,["syn::lit::LitStr"]],["impl RefUnwindSafe for LitByteStr",1,["syn::lit::LitByteStr"]],["impl RefUnwindSafe for LitByte",1,["syn::lit::LitByte"]],["impl RefUnwindSafe for LitChar",1,["syn::lit::LitChar"]],["impl RefUnwindSafe for LitInt",1,["syn::lit::LitInt"]],["impl RefUnwindSafe for LitFloat",1,["syn::lit::LitFloat"]],["impl RefUnwindSafe for LitBool",1,["syn::lit::LitBool"]],["impl RefUnwindSafe for StrStyle",1,["syn::lit::StrStyle"]],["impl RefUnwindSafe for Macro",1,["syn::mac::Macro"]],["impl RefUnwindSafe for MacroDelimiter",1,["syn::mac::MacroDelimiter"]],["impl RefUnwindSafe for DeriveInput",1,["syn::derive::DeriveInput"]],["impl RefUnwindSafe for Data",1,["syn::derive::Data"]],["impl RefUnwindSafe for DataStruct",1,["syn::derive::DataStruct"]],["impl RefUnwindSafe for DataEnum",1,["syn::derive::DataEnum"]],["impl RefUnwindSafe for DataUnion",1,["syn::derive::DataUnion"]],["impl RefUnwindSafe for BinOp",1,["syn::op::BinOp"]],["impl RefUnwindSafe for UnOp",1,["syn::op::UnOp"]],["impl RefUnwindSafe for Type",1,["syn::ty::Type"]],["impl RefUnwindSafe for TypeArray",1,["syn::ty::TypeArray"]],["impl RefUnwindSafe for TypeBareFn",1,["syn::ty::TypeBareFn"]],["impl RefUnwindSafe for TypeGroup",1,["syn::ty::TypeGroup"]],["impl RefUnwindSafe for TypeImplTrait",1,["syn::ty::TypeImplTrait"]],["impl RefUnwindSafe for TypeInfer",1,["syn::ty::TypeInfer"]],["impl RefUnwindSafe for TypeMacro",1,["syn::ty::TypeMacro"]],["impl RefUnwindSafe for TypeNever",1,["syn::ty::TypeNever"]],["impl RefUnwindSafe for TypeParen",1,["syn::ty::TypeParen"]],["impl RefUnwindSafe for TypePath",1,["syn::ty::TypePath"]],["impl RefUnwindSafe for TypePtr",1,["syn::ty::TypePtr"]],["impl RefUnwindSafe for TypeReference",1,["syn::ty::TypeReference"]],["impl RefUnwindSafe for TypeSlice",1,["syn::ty::TypeSlice"]],["impl RefUnwindSafe for TypeTraitObject",1,["syn::ty::TypeTraitObject"]],["impl RefUnwindSafe for TypeTuple",1,["syn::ty::TypeTuple"]],["impl RefUnwindSafe for Abi",1,["syn::ty::Abi"]],["impl RefUnwindSafe for BareFnArg",1,["syn::ty::BareFnArg"]],["impl RefUnwindSafe for Variadic",1,["syn::ty::Variadic"]],["impl RefUnwindSafe for ReturnType",1,["syn::ty::ReturnType"]],["impl RefUnwindSafe for Path",1,["syn::path::Path"]],["impl RefUnwindSafe for PathSegment",1,["syn::path::PathSegment"]],["impl RefUnwindSafe for PathArguments",1,["syn::path::PathArguments"]],["impl RefUnwindSafe for GenericArgument",1,["syn::path::GenericArgument"]],["impl RefUnwindSafe for AngleBracketedGenericArguments",1,["syn::path::AngleBracketedGenericArguments"]],["impl RefUnwindSafe for Binding",1,["syn::path::Binding"]],["impl RefUnwindSafe for Constraint",1,["syn::path::Constraint"]],["impl RefUnwindSafe for ParenthesizedGenericArguments",1,["syn::path::ParenthesizedGenericArguments"]],["impl RefUnwindSafe for QSelf",1,["syn::path::QSelf"]],["impl RefUnwindSafe for TokenBuffer",1,["syn::buffer::TokenBuffer"]],["impl<'a> RefUnwindSafe for Cursor<'a>",1,["syn::buffer::Cursor"]],["impl<T, P> RefUnwindSafe for Punctuated<T, P>where\n P: RefUnwindSafe,\n T: RefUnwindSafe,",1,["syn::punctuated::Punctuated"]],["impl<'a, T, P> RefUnwindSafe for Pairs<'a, T, P>where\n P: RefUnwindSafe,\n T: RefUnwindSafe,",1,["syn::punctuated::Pairs"]],["impl<'a, T, P> RefUnwindSafe for PairsMut<'a, T, P>where\n P: RefUnwindSafe,\n T: RefUnwindSafe,",1,["syn::punctuated::PairsMut"]],["impl<T, P> RefUnwindSafe for IntoPairs<T, P>where\n P: RefUnwindSafe,\n T: RefUnwindSafe,",1,["syn::punctuated::IntoPairs"]],["impl<T> RefUnwindSafe for IntoIter<T>where\n T: RefUnwindSafe,",1,["syn::punctuated::IntoIter"]],["impl<'a, T> !RefUnwindSafe for Iter<'a, T>",1,["syn::punctuated::Iter"]],["impl<'a, T> !RefUnwindSafe for IterMut<'a, T>",1,["syn::punctuated::IterMut"]],["impl<T, P> RefUnwindSafe for Pair<T, P>where\n P: RefUnwindSafe,\n T: RefUnwindSafe,",1,["syn::punctuated::Pair"]],["impl<'a> !RefUnwindSafe for Lookahead1<'a>",1,["syn::lookahead::Lookahead1"]],["impl RefUnwindSafe for Error",1,["syn::error::Error"]],["impl<'a> !RefUnwindSafe for ParseBuffer<'a>",1,["syn::parse::ParseBuffer"]],["impl<'c, 'a> RefUnwindSafe for StepCursor<'c, 'a>",1,["syn::parse::StepCursor"]],["impl RefUnwindSafe for Nothing",1,["syn::parse::Nothing"]]], -"synstructure":[["impl RefUnwindSafe for AddBounds",1,["synstructure::AddBounds"]],["impl RefUnwindSafe for BindStyle",1,["synstructure::BindStyle"]],["impl<'a> RefUnwindSafe for BindingInfo<'a>",1,["synstructure::BindingInfo"]],["impl<'a> RefUnwindSafe for VariantAst<'a>",1,["synstructure::VariantAst"]],["impl<'a> RefUnwindSafe for VariantInfo<'a>",1,["synstructure::VariantInfo"]],["impl<'a> RefUnwindSafe for Structure<'a>",1,["synstructure::Structure"]]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/panic/unwind_safe/trait.UnwindSafe.js b/implementors/core/panic/unwind_safe/trait.UnwindSafe.js deleted file mode 100644 index 31b2b78..0000000 --- a/implementors/core/panic/unwind_safe/trait.UnwindSafe.js +++ /dev/null @@ -1,8 +0,0 @@ -(function() {var implementors = { -"delog":[["impl UnwindSafe for U1",1,["delog::hex::U1"]],["impl<'a, T: ?Sized, U, S> UnwindSafe for HexStr<'a, T, U, S>where\n S: UnwindSafe,\n T: RefUnwindSafe,\n U: UnwindSafe,",1,["delog::hex::HexStr"]],["impl UnwindSafe for Statistics",1,["delog::logger::Statistics"]],["impl UnwindSafe for DefaultRenderer",1,["delog::render::DefaultRenderer"]],["impl UnwindSafe for RipgrepRenderer",1,["delog::render::RipgrepRenderer"]]], -"flexiber":[["impl<'a> UnwindSafe for Decoder<'a>",1,["flexiber::decoder::Decoder"]],["impl<'a> !UnwindSafe for Encoder<'a>",1,["flexiber::encoder::Encoder"]],["impl UnwindSafe for Error",1,["flexiber::error::Error"]],["impl UnwindSafe for ErrorKind",1,["flexiber::error::ErrorKind"]],["impl UnwindSafe for Length",1,["flexiber::length::Length"]],["impl UnwindSafe for SimpleTag",1,["flexiber::simpletag::SimpleTag"]],["impl<'a> UnwindSafe for Slice<'a>",1,["flexiber::slice::Slice"]],["impl UnwindSafe for Class",1,["flexiber::tag::Class"]],["impl UnwindSafe for Tag",1,["flexiber::tag::Tag"]],["impl<V, T> UnwindSafe for TaggedValue<V, T>where\n T: UnwindSafe,\n V: UnwindSafe,",1,["flexiber::tagged::TaggedValue"]]], -"log":[["impl UnwindSafe for Level",1,["log::Level"]],["impl UnwindSafe for LevelFilter",1,["log::LevelFilter"]],["impl<'a> !UnwindSafe for Record<'a>",1,["log::Record"]],["impl<'a> !UnwindSafe for RecordBuilder<'a>",1,["log::RecordBuilder"]],["impl<'a> UnwindSafe for Metadata<'a>",1,["log::Metadata"]],["impl<'a> UnwindSafe for MetadataBuilder<'a>",1,["log::MetadataBuilder"]],["impl UnwindSafe for SetLoggerError",1,["log::SetLoggerError"]],["impl UnwindSafe for ParseLevelError",1,["log::ParseLevelError"]]], -"proc_macro2":[["impl UnwindSafe for DelimSpan",1,["proc_macro2::extra::DelimSpan"]],["impl UnwindSafe for IntoIter",1,["proc_macro2::token_stream::IntoIter"]],["impl UnwindSafe for TokenStream",1,["proc_macro2::TokenStream"]],["impl UnwindSafe for LexError",1,["proc_macro2::LexError"]],["impl UnwindSafe for Span",1,["proc_macro2::Span"]],["impl UnwindSafe for TokenTree",1,["proc_macro2::TokenTree"]],["impl UnwindSafe for Group",1,["proc_macro2::Group"]],["impl UnwindSafe for Delimiter",1,["proc_macro2::Delimiter"]],["impl UnwindSafe for Punct",1,["proc_macro2::Punct"]],["impl UnwindSafe for Spacing",1,["proc_macro2::Spacing"]],["impl UnwindSafe for Ident",1,["proc_macro2::Ident"]],["impl UnwindSafe for Literal",1,["proc_macro2::Literal"]]], -"syn":[["impl UnwindSafe for Underscore",1,["syn::token::Underscore"]],["impl UnwindSafe for Abstract",1,["syn::token::Abstract"]],["impl UnwindSafe for As",1,["syn::token::As"]],["impl UnwindSafe for Async",1,["syn::token::Async"]],["impl UnwindSafe for Auto",1,["syn::token::Auto"]],["impl UnwindSafe for Await",1,["syn::token::Await"]],["impl UnwindSafe for Become",1,["syn::token::Become"]],["impl UnwindSafe for Box",1,["syn::token::Box"]],["impl UnwindSafe for Break",1,["syn::token::Break"]],["impl UnwindSafe for Const",1,["syn::token::Const"]],["impl UnwindSafe for Continue",1,["syn::token::Continue"]],["impl UnwindSafe for Crate",1,["syn::token::Crate"]],["impl UnwindSafe for Default",1,["syn::token::Default"]],["impl UnwindSafe for Do",1,["syn::token::Do"]],["impl UnwindSafe for Dyn",1,["syn::token::Dyn"]],["impl UnwindSafe for Else",1,["syn::token::Else"]],["impl UnwindSafe for Enum",1,["syn::token::Enum"]],["impl UnwindSafe for Extern",1,["syn::token::Extern"]],["impl UnwindSafe for Final",1,["syn::token::Final"]],["impl UnwindSafe for Fn",1,["syn::token::Fn"]],["impl UnwindSafe for For",1,["syn::token::For"]],["impl UnwindSafe for If",1,["syn::token::If"]],["impl UnwindSafe for Impl",1,["syn::token::Impl"]],["impl UnwindSafe for In",1,["syn::token::In"]],["impl UnwindSafe for Let",1,["syn::token::Let"]],["impl UnwindSafe for Loop",1,["syn::token::Loop"]],["impl UnwindSafe for Macro",1,["syn::token::Macro"]],["impl UnwindSafe for Match",1,["syn::token::Match"]],["impl UnwindSafe for Mod",1,["syn::token::Mod"]],["impl UnwindSafe for Move",1,["syn::token::Move"]],["impl UnwindSafe for Mut",1,["syn::token::Mut"]],["impl UnwindSafe for Override",1,["syn::token::Override"]],["impl UnwindSafe for Priv",1,["syn::token::Priv"]],["impl UnwindSafe for Pub",1,["syn::token::Pub"]],["impl UnwindSafe for Ref",1,["syn::token::Ref"]],["impl UnwindSafe for Return",1,["syn::token::Return"]],["impl UnwindSafe for SelfType",1,["syn::token::SelfType"]],["impl UnwindSafe for SelfValue",1,["syn::token::SelfValue"]],["impl UnwindSafe for Static",1,["syn::token::Static"]],["impl UnwindSafe for Struct",1,["syn::token::Struct"]],["impl UnwindSafe for Super",1,["syn::token::Super"]],["impl UnwindSafe for Trait",1,["syn::token::Trait"]],["impl UnwindSafe for Try",1,["syn::token::Try"]],["impl UnwindSafe for Type",1,["syn::token::Type"]],["impl UnwindSafe for Typeof",1,["syn::token::Typeof"]],["impl UnwindSafe for Union",1,["syn::token::Union"]],["impl UnwindSafe for Unsafe",1,["syn::token::Unsafe"]],["impl UnwindSafe for Unsized",1,["syn::token::Unsized"]],["impl UnwindSafe for Use",1,["syn::token::Use"]],["impl UnwindSafe for Virtual",1,["syn::token::Virtual"]],["impl UnwindSafe for Where",1,["syn::token::Where"]],["impl UnwindSafe for While",1,["syn::token::While"]],["impl UnwindSafe for Yield",1,["syn::token::Yield"]],["impl UnwindSafe for Add",1,["syn::token::Add"]],["impl UnwindSafe for AddEq",1,["syn::token::AddEq"]],["impl UnwindSafe for And",1,["syn::token::And"]],["impl UnwindSafe for AndAnd",1,["syn::token::AndAnd"]],["impl UnwindSafe for AndEq",1,["syn::token::AndEq"]],["impl UnwindSafe for At",1,["syn::token::At"]],["impl UnwindSafe for Bang",1,["syn::token::Bang"]],["impl UnwindSafe for Caret",1,["syn::token::Caret"]],["impl UnwindSafe for CaretEq",1,["syn::token::CaretEq"]],["impl UnwindSafe for Colon",1,["syn::token::Colon"]],["impl UnwindSafe for Colon2",1,["syn::token::Colon2"]],["impl UnwindSafe for Comma",1,["syn::token::Comma"]],["impl UnwindSafe for Div",1,["syn::token::Div"]],["impl UnwindSafe for DivEq",1,["syn::token::DivEq"]],["impl UnwindSafe for Dollar",1,["syn::token::Dollar"]],["impl UnwindSafe for Dot",1,["syn::token::Dot"]],["impl UnwindSafe for Dot2",1,["syn::token::Dot2"]],["impl UnwindSafe for Dot3",1,["syn::token::Dot3"]],["impl UnwindSafe for DotDotEq",1,["syn::token::DotDotEq"]],["impl UnwindSafe for Eq",1,["syn::token::Eq"]],["impl UnwindSafe for EqEq",1,["syn::token::EqEq"]],["impl UnwindSafe for Ge",1,["syn::token::Ge"]],["impl UnwindSafe for Gt",1,["syn::token::Gt"]],["impl UnwindSafe for Le",1,["syn::token::Le"]],["impl UnwindSafe for Lt",1,["syn::token::Lt"]],["impl UnwindSafe for MulEq",1,["syn::token::MulEq"]],["impl UnwindSafe for Ne",1,["syn::token::Ne"]],["impl UnwindSafe for Or",1,["syn::token::Or"]],["impl UnwindSafe for OrEq",1,["syn::token::OrEq"]],["impl UnwindSafe for OrOr",1,["syn::token::OrOr"]],["impl UnwindSafe for Pound",1,["syn::token::Pound"]],["impl UnwindSafe for Question",1,["syn::token::Question"]],["impl UnwindSafe for RArrow",1,["syn::token::RArrow"]],["impl UnwindSafe for LArrow",1,["syn::token::LArrow"]],["impl UnwindSafe for Rem",1,["syn::token::Rem"]],["impl UnwindSafe for RemEq",1,["syn::token::RemEq"]],["impl UnwindSafe for FatArrow",1,["syn::token::FatArrow"]],["impl UnwindSafe for Semi",1,["syn::token::Semi"]],["impl UnwindSafe for Shl",1,["syn::token::Shl"]],["impl UnwindSafe for ShlEq",1,["syn::token::ShlEq"]],["impl UnwindSafe for Shr",1,["syn::token::Shr"]],["impl UnwindSafe for ShrEq",1,["syn::token::ShrEq"]],["impl UnwindSafe for Star",1,["syn::token::Star"]],["impl UnwindSafe for Sub",1,["syn::token::Sub"]],["impl UnwindSafe for SubEq",1,["syn::token::SubEq"]],["impl UnwindSafe for Tilde",1,["syn::token::Tilde"]],["impl UnwindSafe for Brace",1,["syn::token::Brace"]],["impl UnwindSafe for Bracket",1,["syn::token::Bracket"]],["impl UnwindSafe for Paren",1,["syn::token::Paren"]],["impl UnwindSafe for Group",1,["syn::token::Group"]],["impl UnwindSafe for Attribute",1,["syn::attr::Attribute"]],["impl UnwindSafe for AttrStyle",1,["syn::attr::AttrStyle"]],["impl UnwindSafe for Meta",1,["syn::attr::Meta"]],["impl UnwindSafe for MetaList",1,["syn::attr::MetaList"]],["impl UnwindSafe for MetaNameValue",1,["syn::attr::MetaNameValue"]],["impl UnwindSafe for NestedMeta",1,["syn::attr::NestedMeta"]],["impl UnwindSafe for Variant",1,["syn::data::Variant"]],["impl UnwindSafe for Fields",1,["syn::data::Fields"]],["impl UnwindSafe for FieldsNamed",1,["syn::data::FieldsNamed"]],["impl UnwindSafe for FieldsUnnamed",1,["syn::data::FieldsUnnamed"]],["impl UnwindSafe for Field",1,["syn::data::Field"]],["impl UnwindSafe for Visibility",1,["syn::data::Visibility"]],["impl UnwindSafe for VisPublic",1,["syn::data::VisPublic"]],["impl UnwindSafe for VisCrate",1,["syn::data::VisCrate"]],["impl UnwindSafe for VisRestricted",1,["syn::data::VisRestricted"]],["impl UnwindSafe for Expr",1,["syn::expr::Expr"]],["impl UnwindSafe for ExprArray",1,["syn::expr::ExprArray"]],["impl UnwindSafe for ExprAssign",1,["syn::expr::ExprAssign"]],["impl UnwindSafe for ExprAssignOp",1,["syn::expr::ExprAssignOp"]],["impl UnwindSafe for ExprAsync",1,["syn::expr::ExprAsync"]],["impl UnwindSafe for ExprAwait",1,["syn::expr::ExprAwait"]],["impl UnwindSafe for ExprBinary",1,["syn::expr::ExprBinary"]],["impl UnwindSafe for ExprBlock",1,["syn::expr::ExprBlock"]],["impl UnwindSafe for ExprBox",1,["syn::expr::ExprBox"]],["impl UnwindSafe for ExprBreak",1,["syn::expr::ExprBreak"]],["impl UnwindSafe for ExprCall",1,["syn::expr::ExprCall"]],["impl UnwindSafe for ExprCast",1,["syn::expr::ExprCast"]],["impl UnwindSafe for ExprClosure",1,["syn::expr::ExprClosure"]],["impl UnwindSafe for ExprContinue",1,["syn::expr::ExprContinue"]],["impl UnwindSafe for ExprField",1,["syn::expr::ExprField"]],["impl UnwindSafe for ExprForLoop",1,["syn::expr::ExprForLoop"]],["impl UnwindSafe for ExprGroup",1,["syn::expr::ExprGroup"]],["impl UnwindSafe for ExprIf",1,["syn::expr::ExprIf"]],["impl UnwindSafe for ExprIndex",1,["syn::expr::ExprIndex"]],["impl UnwindSafe for ExprLet",1,["syn::expr::ExprLet"]],["impl UnwindSafe for ExprLit",1,["syn::expr::ExprLit"]],["impl UnwindSafe for ExprLoop",1,["syn::expr::ExprLoop"]],["impl UnwindSafe for ExprMacro",1,["syn::expr::ExprMacro"]],["impl UnwindSafe for ExprMatch",1,["syn::expr::ExprMatch"]],["impl UnwindSafe for ExprMethodCall",1,["syn::expr::ExprMethodCall"]],["impl UnwindSafe for ExprParen",1,["syn::expr::ExprParen"]],["impl UnwindSafe for ExprPath",1,["syn::expr::ExprPath"]],["impl UnwindSafe for ExprRange",1,["syn::expr::ExprRange"]],["impl UnwindSafe for ExprReference",1,["syn::expr::ExprReference"]],["impl UnwindSafe for ExprRepeat",1,["syn::expr::ExprRepeat"]],["impl UnwindSafe for ExprReturn",1,["syn::expr::ExprReturn"]],["impl UnwindSafe for ExprStruct",1,["syn::expr::ExprStruct"]],["impl UnwindSafe for ExprTry",1,["syn::expr::ExprTry"]],["impl UnwindSafe for ExprTryBlock",1,["syn::expr::ExprTryBlock"]],["impl UnwindSafe for ExprTuple",1,["syn::expr::ExprTuple"]],["impl UnwindSafe for ExprType",1,["syn::expr::ExprType"]],["impl UnwindSafe for ExprUnary",1,["syn::expr::ExprUnary"]],["impl UnwindSafe for ExprUnsafe",1,["syn::expr::ExprUnsafe"]],["impl UnwindSafe for ExprWhile",1,["syn::expr::ExprWhile"]],["impl UnwindSafe for ExprYield",1,["syn::expr::ExprYield"]],["impl UnwindSafe for Member",1,["syn::expr::Member"]],["impl UnwindSafe for Index",1,["syn::expr::Index"]],["impl UnwindSafe for Generics",1,["syn::generics::Generics"]],["impl UnwindSafe for GenericParam",1,["syn::generics::GenericParam"]],["impl UnwindSafe for TypeParam",1,["syn::generics::TypeParam"]],["impl UnwindSafe for LifetimeDef",1,["syn::generics::LifetimeDef"]],["impl UnwindSafe for ConstParam",1,["syn::generics::ConstParam"]],["impl<'a> UnwindSafe for ImplGenerics<'a>",1,["syn::generics::ImplGenerics"]],["impl<'a> UnwindSafe for TypeGenerics<'a>",1,["syn::generics::TypeGenerics"]],["impl<'a> UnwindSafe for Turbofish<'a>",1,["syn::generics::Turbofish"]],["impl UnwindSafe for BoundLifetimes",1,["syn::generics::BoundLifetimes"]],["impl UnwindSafe for TypeParamBound",1,["syn::generics::TypeParamBound"]],["impl UnwindSafe for TraitBound",1,["syn::generics::TraitBound"]],["impl UnwindSafe for TraitBoundModifier",1,["syn::generics::TraitBoundModifier"]],["impl UnwindSafe for WhereClause",1,["syn::generics::WhereClause"]],["impl UnwindSafe for WherePredicate",1,["syn::generics::WherePredicate"]],["impl UnwindSafe for PredicateType",1,["syn::generics::PredicateType"]],["impl UnwindSafe for PredicateLifetime",1,["syn::generics::PredicateLifetime"]],["impl UnwindSafe for PredicateEq",1,["syn::generics::PredicateEq"]],["impl UnwindSafe for Lifetime",1,["syn::lifetime::Lifetime"]],["impl UnwindSafe for Lit",1,["syn::lit::Lit"]],["impl UnwindSafe for LitStr",1,["syn::lit::LitStr"]],["impl UnwindSafe for LitByteStr",1,["syn::lit::LitByteStr"]],["impl UnwindSafe for LitByte",1,["syn::lit::LitByte"]],["impl UnwindSafe for LitChar",1,["syn::lit::LitChar"]],["impl UnwindSafe for LitInt",1,["syn::lit::LitInt"]],["impl UnwindSafe for LitFloat",1,["syn::lit::LitFloat"]],["impl UnwindSafe for LitBool",1,["syn::lit::LitBool"]],["impl UnwindSafe for StrStyle",1,["syn::lit::StrStyle"]],["impl UnwindSafe for Macro",1,["syn::mac::Macro"]],["impl UnwindSafe for MacroDelimiter",1,["syn::mac::MacroDelimiter"]],["impl UnwindSafe for DeriveInput",1,["syn::derive::DeriveInput"]],["impl UnwindSafe for Data",1,["syn::derive::Data"]],["impl UnwindSafe for DataStruct",1,["syn::derive::DataStruct"]],["impl UnwindSafe for DataEnum",1,["syn::derive::DataEnum"]],["impl UnwindSafe for DataUnion",1,["syn::derive::DataUnion"]],["impl UnwindSafe for BinOp",1,["syn::op::BinOp"]],["impl UnwindSafe for UnOp",1,["syn::op::UnOp"]],["impl UnwindSafe for Type",1,["syn::ty::Type"]],["impl UnwindSafe for TypeArray",1,["syn::ty::TypeArray"]],["impl UnwindSafe for TypeBareFn",1,["syn::ty::TypeBareFn"]],["impl UnwindSafe for TypeGroup",1,["syn::ty::TypeGroup"]],["impl UnwindSafe for TypeImplTrait",1,["syn::ty::TypeImplTrait"]],["impl UnwindSafe for TypeInfer",1,["syn::ty::TypeInfer"]],["impl UnwindSafe for TypeMacro",1,["syn::ty::TypeMacro"]],["impl UnwindSafe for TypeNever",1,["syn::ty::TypeNever"]],["impl UnwindSafe for TypeParen",1,["syn::ty::TypeParen"]],["impl UnwindSafe for TypePath",1,["syn::ty::TypePath"]],["impl UnwindSafe for TypePtr",1,["syn::ty::TypePtr"]],["impl UnwindSafe for TypeReference",1,["syn::ty::TypeReference"]],["impl UnwindSafe for TypeSlice",1,["syn::ty::TypeSlice"]],["impl UnwindSafe for TypeTraitObject",1,["syn::ty::TypeTraitObject"]],["impl UnwindSafe for TypeTuple",1,["syn::ty::TypeTuple"]],["impl UnwindSafe for Abi",1,["syn::ty::Abi"]],["impl UnwindSafe for BareFnArg",1,["syn::ty::BareFnArg"]],["impl UnwindSafe for Variadic",1,["syn::ty::Variadic"]],["impl UnwindSafe for ReturnType",1,["syn::ty::ReturnType"]],["impl UnwindSafe for Path",1,["syn::path::Path"]],["impl UnwindSafe for PathSegment",1,["syn::path::PathSegment"]],["impl UnwindSafe for PathArguments",1,["syn::path::PathArguments"]],["impl UnwindSafe for GenericArgument",1,["syn::path::GenericArgument"]],["impl UnwindSafe for AngleBracketedGenericArguments",1,["syn::path::AngleBracketedGenericArguments"]],["impl UnwindSafe for Binding",1,["syn::path::Binding"]],["impl UnwindSafe for Constraint",1,["syn::path::Constraint"]],["impl UnwindSafe for ParenthesizedGenericArguments",1,["syn::path::ParenthesizedGenericArguments"]],["impl UnwindSafe for QSelf",1,["syn::path::QSelf"]],["impl UnwindSafe for TokenBuffer",1,["syn::buffer::TokenBuffer"]],["impl<'a> UnwindSafe for Cursor<'a>",1,["syn::buffer::Cursor"]],["impl<T, P> UnwindSafe for Punctuated<T, P>where\n P: UnwindSafe,\n T: UnwindSafe,",1,["syn::punctuated::Punctuated"]],["impl<'a, T, P> UnwindSafe for Pairs<'a, T, P>where\n P: RefUnwindSafe,\n T: RefUnwindSafe,",1,["syn::punctuated::Pairs"]],["impl<'a, T, P> !UnwindSafe for PairsMut<'a, T, P>",1,["syn::punctuated::PairsMut"]],["impl<T, P> UnwindSafe for IntoPairs<T, P>where\n P: UnwindSafe + RefUnwindSafe,\n T: UnwindSafe + RefUnwindSafe,",1,["syn::punctuated::IntoPairs"]],["impl<T> UnwindSafe for IntoIter<T>where\n T: UnwindSafe + RefUnwindSafe,",1,["syn::punctuated::IntoIter"]],["impl<'a, T> !UnwindSafe for Iter<'a, T>",1,["syn::punctuated::Iter"]],["impl<'a, T> !UnwindSafe for IterMut<'a, T>",1,["syn::punctuated::IterMut"]],["impl<T, P> UnwindSafe for Pair<T, P>where\n P: UnwindSafe,\n T: UnwindSafe,",1,["syn::punctuated::Pair"]],["impl<'a> UnwindSafe for Lookahead1<'a>",1,["syn::lookahead::Lookahead1"]],["impl UnwindSafe for Error",1,["syn::error::Error"]],["impl<'a> !UnwindSafe for ParseBuffer<'a>",1,["syn::parse::ParseBuffer"]],["impl<'c, 'a> UnwindSafe for StepCursor<'c, 'a>",1,["syn::parse::StepCursor"]],["impl UnwindSafe for Nothing",1,["syn::parse::Nothing"]]], -"synstructure":[["impl UnwindSafe for AddBounds",1,["synstructure::AddBounds"]],["impl UnwindSafe for BindStyle",1,["synstructure::BindStyle"]],["impl<'a> UnwindSafe for BindingInfo<'a>",1,["synstructure::BindingInfo"]],["impl<'a> UnwindSafe for VariantAst<'a>",1,["synstructure::VariantAst"]],["impl<'a> UnwindSafe for VariantInfo<'a>",1,["synstructure::VariantInfo"]],["impl<'a> UnwindSafe for Structure<'a>",1,["synstructure::Structure"]]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/str/traits/trait.FromStr.js b/implementors/core/str/traits/trait.FromStr.js deleted file mode 100644 index 3b97a3c..0000000 --- a/implementors/core/str/traits/trait.FromStr.js +++ /dev/null @@ -1,4 +0,0 @@ -(function() {var implementors = { -"log":[["impl FromStr for Level"],["impl FromStr for LevelFilter"]], -"proc_macro2":[["impl FromStr for TokenStream"],["impl FromStr for Literal"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/delog/hex/trait.Unsigned.js b/implementors/delog/hex/trait.Unsigned.js deleted file mode 100644 index aa3ba63..0000000 --- a/implementors/delog/hex/trait.Unsigned.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"delog":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/delog/trait.Renderer.js b/implementors/delog/trait.Renderer.js deleted file mode 100644 index aa3ba63..0000000 --- a/implementors/delog/trait.Renderer.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"delog":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/flexiber/tag/trait.TagLike.js b/implementors/flexiber/tag/trait.TagLike.js deleted file mode 100644 index 511b258..0000000 --- a/implementors/flexiber/tag/trait.TagLike.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"flexiber":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/flexiber/traits/trait.Decodable.js b/implementors/flexiber/traits/trait.Decodable.js deleted file mode 100644 index 511b258..0000000 --- a/implementors/flexiber/traits/trait.Decodable.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"flexiber":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/flexiber/traits/trait.Encodable.js b/implementors/flexiber/traits/trait.Encodable.js deleted file mode 100644 index 511b258..0000000 --- a/implementors/flexiber/traits/trait.Encodable.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"flexiber":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/log/trait.Log.js b/implementors/log/trait.Log.js deleted file mode 100644 index e35e11d..0000000 --- a/implementors/log/trait.Log.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"log":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/quote/ext/trait.TokenStreamExt.js b/implementors/quote/ext/trait.TokenStreamExt.js deleted file mode 100644 index 05ee4dc..0000000 --- a/implementors/quote/ext/trait.TokenStreamExt.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"quote":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/quote/ident_fragment/trait.IdentFragment.js b/implementors/quote/ident_fragment/trait.IdentFragment.js deleted file mode 100644 index ee4dddc..0000000 --- a/implementors/quote/ident_fragment/trait.IdentFragment.js +++ /dev/null @@ -1,4 +0,0 @@ -(function() {var implementors = { -"quote":[], -"syn":[["impl IdentFragment for Index"],["impl IdentFragment for Member"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/quote/to_tokens/trait.ToTokens.js b/implementors/quote/to_tokens/trait.ToTokens.js deleted file mode 100644 index a84501d..0000000 --- a/implementors/quote/to_tokens/trait.ToTokens.js +++ /dev/null @@ -1,5 +0,0 @@ -(function() {var implementors = { -"quote":[], -"syn":[["impl ToTokens for And"],["impl ToTokens for Member"],["impl ToTokens for Generics"],["impl ToTokens for Lt"],["impl ToTokens for TypeNever"],["impl ToTokens for TypeParamBound"],["impl ToTokens for ShrEq"],["impl ToTokens for Colon"],["impl ToTokens for Move"],["impl ToTokens for Comma"],["impl ToTokens for Use"],["impl ToTokens for FieldsNamed"],["impl ToTokens for ExprIndex"],["impl ToTokens for AngleBracketedGenericArguments"],["impl ToTokens for Constraint"],["impl ToTokens for TypePtr"],["impl ToTokens for Ne"],["impl ToTokens for TypeInfer"],["impl ToTokens for RemEq"],["impl ToTokens for SubEq"],["impl ToTokens for ExprLit"],["impl ToTokens for Become"],["impl ToTokens for MetaNameValue"],["impl ToTokens for LitChar"],["impl ToTokens for TypeMacro"],["impl ToTokens for Default"],["impl ToTokens for Type"],["impl ToTokens for Visibility"],["impl ToTokens for Do"],["impl ToTokens for EqEq"],["impl ToTokens for Yield"],["impl ToTokens for ConstParam"],["impl ToTokens for DeriveInput"],["impl ToTokens for ExprYield"],["impl ToTokens for Async"],["impl ToTokens for PathArguments"],["impl ToTokens for FieldsUnnamed"],["impl ToTokens for Gt"],["impl ToTokens for Star"],["impl ToTokens for ExprTry"],["impl ToTokens for Mut"],["impl ToTokens for AndAnd"],["impl ToTokens for Semi"],["impl ToTokens for LitInt"],["impl ToTokens for Ge"],["impl ToTokens for Dot2"],["impl ToTokens for ExprContinue"],["impl ToTokens for Enum"],["impl ToTokens for For"],["impl ToTokens for Priv"],["impl ToTokens for GenericParam"],["impl ToTokens for Pub"],["impl ToTokens for Add"],["impl ToTokens for ExprStruct"],["impl ToTokens for ExprMethodCall"],["impl ToTokens for LifetimeDef"],["impl ToTokens for OrOr"],["impl ToTokens for Abstract"],["impl ToTokens for Dot"],["impl ToTokens for PredicateType"],["impl ToTokens for LitStr"],["impl ToTokens for Box"],["impl ToTokens for Impl"],["impl ToTokens for LitBool"],["impl ToTokens for ExprReturn"],["impl ToTokens for Mod"],["impl ToTokens for ExprAwait"],["impl ToTokens for NestedMeta"],["impl ToTokens for WherePredicate"],["impl ToTokens for Index"],["impl ToTokens for Else"],["impl ToTokens for TraitBound"],["impl ToTokens for Binding"],["impl<'a> ToTokens for TypeGenerics<'a>"],["impl ToTokens for ExprBreak"],["impl ToTokens for ExprBox"],["impl ToTokens for ExprParen"],["impl ToTokens for Div"],["impl ToTokens for Caret"],["impl ToTokens for TraitBoundModifier"],["impl ToTokens for ShlEq"],["impl<T, P> ToTokens for Pair<T, P>where\n T: ToTokens,\n P: ToTokens,"],["impl ToTokens for ExprReference"],["impl ToTokens for Trait"],["impl ToTokens for Abi"],["impl ToTokens for ExprUnary"],["impl ToTokens for WhereClause"],["impl ToTokens for Question"],["impl ToTokens for ExprIf"],["impl ToTokens for Static"],["impl ToTokens for UnOp"],["impl ToTokens for Typeof"],["impl ToTokens for TypeParam"],["impl ToTokens for Extern"],["impl ToTokens for Super"],["impl ToTokens for Le"],["impl ToTokens for Underscore"],["impl ToTokens for BareFnArg"],["impl ToTokens for ExprPath"],["impl ToTokens for ExprAssign"],["impl ToTokens for ExprAsync"],["impl ToTokens for Break"],["impl ToTokens for TypeImplTrait"],["impl ToTokens for Match"],["impl ToTokens for Const"],["impl ToTokens for VisCrate"],["impl ToTokens for Path"],["impl ToTokens for Macro"],["impl ToTokens for AndEq"],["impl ToTokens for ExprMatch"],["impl ToTokens for ReturnType"],["impl ToTokens for Dyn"],["impl ToTokens for ExprField"],["impl ToTokens for Field"],["impl ToTokens for Union"],["impl ToTokens for OrEq"],["impl ToTokens for Shl"],["impl ToTokens for TypeTraitObject"],["impl ToTokens for ExprLet"],["impl ToTokens for ExprCast"],["impl ToTokens for Override"],["impl ToTokens for RArrow"],["impl ToTokens for ParenthesizedGenericArguments"],["impl ToTokens for Fields"],["impl ToTokens for Lit"],["impl ToTokens for DivEq"],["impl ToTokens for VisRestricted"],["impl ToTokens for AddEq"],["impl ToTokens for Virtual"],["impl ToTokens for TypeTuple"],["impl ToTokens for Unsized"],["impl ToTokens for Attribute"],["impl ToTokens for ExprBlock"],["impl ToTokens for LitByteStr"],["impl ToTokens for Eq"],["impl<'a> ToTokens for ImplGenerics<'a>"],["impl ToTokens for LitFloat"],["impl ToTokens for MulEq"],["impl ToTokens for Dot3"],["impl ToTokens for Tilde"],["impl ToTokens for ExprTryBlock"],["impl ToTokens for SelfType"],["impl ToTokens for Type"],["impl ToTokens for Or"],["impl ToTokens for At"],["impl ToTokens for Fn"],["impl ToTokens for Expr"],["impl ToTokens for TypeSlice"],["impl ToTokens for Ref"],["impl ToTokens for PathSegment"],["impl ToTokens for TypeParen"],["impl ToTokens for ExprGroup"],["impl ToTokens for ExprWhile"],["impl ToTokens for ExprCall"],["impl ToTokens for Shr"],["impl ToTokens for Variadic"],["impl<'a> ToTokens for Turbofish<'a>"],["impl ToTokens for FatArrow"],["impl ToTokens for BoundLifetimes"],["impl ToTokens for Continue"],["impl ToTokens for Colon2"],["impl ToTokens for Meta"],["impl ToTokens for Sub"],["impl ToTokens for Variant"],["impl ToTokens for MetaList"],["impl ToTokens for ExprAssignOp"],["impl ToTokens for DotDotEq"],["impl ToTokens for ExprArray"],["impl ToTokens for ExprMacro"],["impl ToTokens for Bang"],["impl ToTokens for VisPublic"],["impl ToTokens for TypeReference"],["impl ToTokens for SelfValue"],["impl ToTokens for As"],["impl ToTokens for ExprRange"],["impl ToTokens for Return"],["impl ToTokens for ExprRepeat"],["impl ToTokens for Pound"],["impl ToTokens for ExprClosure"],["impl ToTokens for Rem"],["impl ToTokens for TypeBareFn"],["impl ToTokens for If"],["impl ToTokens for ExprBinary"],["impl ToTokens for Crate"],["impl ToTokens for Lifetime"],["impl ToTokens for PredicateEq"],["impl ToTokens for ExprUnsafe"],["impl ToTokens for ExprTuple"],["impl ToTokens for TypeArray"],["impl ToTokens for In"],["impl ToTokens for Let"],["impl ToTokens for Unsafe"],["impl ToTokens for Try"],["impl ToTokens for LArrow"],["impl ToTokens for Dollar"],["impl ToTokens for GenericArgument"],["impl ToTokens for Macro"],["impl ToTokens for ExprType"],["impl ToTokens for ExprForLoop"],["impl ToTokens for TypePath"],["impl ToTokens for Final"],["impl ToTokens for CaretEq"],["impl ToTokens for Await"],["impl ToTokens for Struct"],["impl ToTokens for LitByte"],["impl ToTokens for BinOp"],["impl ToTokens for ExprLoop"],["impl<T, P> ToTokens for Punctuated<T, P>where\n T: ToTokens,\n P: ToTokens,"],["impl ToTokens for PredicateLifetime"],["impl ToTokens for Auto"],["impl ToTokens for Loop"],["impl ToTokens for Where"],["impl ToTokens for While"],["impl ToTokens for TypeGroup"]], -"synstructure":[["impl ToTokens for BindStyle"],["impl<'a> ToTokens for BindingInfo<'a>"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/syn/ext/trait.IdentExt.js b/implementors/syn/ext/trait.IdentExt.js deleted file mode 100644 index a0219ef..0000000 --- a/implementors/syn/ext/trait.IdentExt.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"syn":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/syn/lookahead/trait.Peek.js b/implementors/syn/lookahead/trait.Peek.js deleted file mode 100644 index a0219ef..0000000 --- a/implementors/syn/lookahead/trait.Peek.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"syn":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/syn/parse/discouraged/trait.Speculative.js b/implementors/syn/parse/discouraged/trait.Speculative.js deleted file mode 100644 index a0219ef..0000000 --- a/implementors/syn/parse/discouraged/trait.Speculative.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"syn":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/syn/parse/trait.Parse.js b/implementors/syn/parse/trait.Parse.js deleted file mode 100644 index a0219ef..0000000 --- a/implementors/syn/parse/trait.Parse.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"syn":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/syn/parse/trait.Parser.js b/implementors/syn/parse/trait.Parser.js deleted file mode 100644 index a0219ef..0000000 --- a/implementors/syn/parse/trait.Parser.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"syn":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/syn/spanned/trait.Spanned.js b/implementors/syn/spanned/trait.Spanned.js deleted file mode 100644 index a0219ef..0000000 --- a/implementors/syn/spanned/trait.Spanned.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"syn":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/syn/token/trait.Token.js b/implementors/syn/token/trait.Token.js deleted file mode 100644 index a0219ef..0000000 --- a/implementors/syn/token/trait.Token.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"syn":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/synstructure/trait.MacroResult.js b/implementors/synstructure/trait.MacroResult.js deleted file mode 100644 index 231c5b1..0000000 --- a/implementors/synstructure/trait.MacroResult.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"synstructure":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/unicode_xid/trait.UnicodeXID.js b/implementors/unicode_xid/trait.UnicodeXID.js deleted file mode 100644 index 7575ffa..0000000 --- a/implementors/unicode_xid/trait.UnicodeXID.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"unicode_xid":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/log/all.html b/log/all.html index 4ddb030..5312ded 100644 --- a/log/all.html +++ b/log/all.html @@ -1 +1 @@ -List of all items in this crate
\ No newline at end of file +List of all items in this crate
\ No newline at end of file diff --git a/log/constant.STATIC_MAX_LEVEL.html b/log/constant.STATIC_MAX_LEVEL.html index c4abd1f..cc13bde 100644 --- a/log/constant.STATIC_MAX_LEVEL.html +++ b/log/constant.STATIC_MAX_LEVEL.html @@ -1,4 +1,4 @@ -STATIC_MAX_LEVEL in log - Rust

Constant log::STATIC_MAX_LEVEL

source ·
pub const STATIC_MAX_LEVEL: LevelFilter;
Expand description

The statically resolved maximum log level.

+STATIC_MAX_LEVEL in log - Rust
log

Constant STATIC_MAX_LEVEL

source
pub const STATIC_MAX_LEVEL: LevelFilter;
Expand description

The statically resolved maximum log level.

See the crate level documentation for information on how to configure this.

This value is checked by the log macros, but not by the Logger returned by the logger function. Code that manually calls functions on that value diff --git a/log/enum.Level.html b/log/enum.Level.html index b8924d6..834cae8 100644 --- a/log/enum.Level.html +++ b/log/enum.Level.html @@ -1,62 +1,63 @@ -Level in log - Rust

Enum log::Level

source ·
#[repr(usize)]
pub enum Level { - Error, - Warn, - Info, - Debug, - Trace, +Level in log - Rust
log

Enum Level

source
#[repr(usize)]
pub enum Level { + Error = 1, + Warn = 2, + Info = 3, + Debug = 4, + Trace = 5, }
Expand description

An enum representing the available verbosity levels of the logger.

Typical usage includes: checking if a certain Level is enabled with log_enabled!, specifying the Level of log!, and comparing a Level directly to a LevelFilter.

-

Variants§

§

Error

The “error” level.

+

Variants§

§

Error = 1

The “error” level.

Designates very serious errors.

-
§

Warn

The “warn” level.

+
§

Warn = 2

The “warn” level.

Designates hazardous situations.

-
§

Info

The “info” level.

+
§

Info = 3

The “info” level.

Designates useful information.

-
§

Debug

The “debug” level.

+
§

Debug = 4

The “debug” level.

Designates lower priority information.

-
§

Trace

The “trace” level.

+
§

Trace = 5

The “trace” level.

Designates very low priority, often extremely verbose, information.

-

Implementations§

source§

impl Level

source

pub fn max() -> Level

Returns the most verbose logging level.

-
source

pub fn to_level_filter(&self) -> LevelFilter

Converts the Level to the equivalent LevelFilter.

-
source

pub fn as_str(&self) -> &'static str

Returns the string representation of the Level.

+

Implementations§

source§

impl Level

source

pub fn max() -> Level

Returns the most verbose logging level.

+
source

pub fn to_level_filter(&self) -> LevelFilter

Converts the Level to the equivalent LevelFilter.

+
source

pub fn as_str(&self) -> &'static str

Returns the string representation of the Level.

This returns the same string as the fmt::Display implementation.

-
source

pub fn iter() -> impl Iterator<Item = Self>

Iterate through all supported logging levels.

+
source

pub fn iter() -> impl Iterator<Item = Self>

Iterate through all supported logging levels.

The order of iteration is from more severe to less severe log messages.

-
Examples
+
§Examples
use log::Level;
 
 let mut levels = Level::iter();
 
 assert_eq!(Some(Level::Error), levels.next());
 assert_eq!(Some(Level::Trace), levels.last());
-

Trait Implementations§

source§

impl Clone for Level

source§

fn clone(&self) -> Level

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Level

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Level

source§

fn fmt(&self, fmt: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl FromStr for Level

§

type Err = ParseLevelError

The associated error which can be returned from parsing.
source§

fn from_str(level: &str) -> Result<Level, Self::Err>

Parses a string s to return a value of this type. Read more
source§

impl Hash for Level

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for Level

source§

fn cmp(&self, other: &Level) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

Restrict a value to a certain interval. Read more
source§

impl PartialEq<Level> for Level

source§

fn eq(&self, other: &Level) -> bool

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl PartialEq<Level> for LevelFilter

source§

fn eq(&self, other: &Level) -> bool

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl PartialEq<LevelFilter> for Level

source§

fn eq(&self, other: &LevelFilter) -> bool

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd<Level> for Level

source§

fn partial_cmp(&self, other: &Level) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
source§

impl PartialOrd<Level> for LevelFilter

source§

fn partial_cmp(&self, other: &Level) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
source§

impl PartialOrd<LevelFilter> for Level

source§

fn partial_cmp(&self, other: &LevelFilter) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
source§

impl Copy for Level

source§

impl Eq for Level

source§

impl StructuralEq for Level

source§

impl StructuralPartialEq for Level

Auto Trait Implementations§

§

impl RefUnwindSafe for Level

§

impl Send for Level

§

impl Sync for Level

§

impl Unpin for Level

§

impl UnwindSafe for Level

Blanket Implementations§

source§

impl<T> Any for Twhere - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Trait Implementations§

source§

impl Clone for Level

source§

fn clone(&self) -> Level

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Level

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Level

source§

fn fmt(&self, fmt: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl FromStr for Level

source§

type Err = ParseLevelError

The associated error which can be returned from parsing.
source§

fn from_str(level: &str) -> Result<Level, Self::Err>

Parses a string s to return a value of this type. Read more
source§

impl Hash for Level

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where + H: Hasher, + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for Level

source§

fn cmp(&self, other: &Level) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where + Self: Sized,

Restrict a value to a certain interval. Read more
source§

impl PartialEq<Level> for LevelFilter

source§

fn eq(&self, other: &Level) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl PartialEq<LevelFilter> for Level

source§

fn eq(&self, other: &LevelFilter) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl PartialEq for Level

source§

fn eq(&self, other: &Level) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl PartialOrd<Level> for LevelFilter

source§

fn partial_cmp(&self, other: &Level) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the +<= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > +operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by +the >= operator. Read more
source§

impl PartialOrd<LevelFilter> for Level

source§

fn partial_cmp(&self, other: &LevelFilter) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the +<= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > +operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by +the >= operator. Read more
source§

impl PartialOrd for Level

source§

fn partial_cmp(&self, other: &Level) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the +<= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > +operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by +the >= operator. Read more
source§

impl Copy for Level

source§

impl Eq for Level

source§

impl StructuralPartialEq for Level

Auto Trait Implementations§

§

impl Freeze for Level

§

impl RefUnwindSafe for Level

§

impl Send for Level

§

impl Sync for Level

§

impl Unpin for Level

§

impl UnwindSafe for Level

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where + T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/log/enum.LevelFilter.html b/log/enum.LevelFilter.html index 389c42b..9e54b16 100644 --- a/log/enum.LevelFilter.html +++ b/log/enum.LevelFilter.html @@ -1,58 +1,59 @@ -LevelFilter in log - Rust

Enum log::LevelFilter

source ·
#[repr(usize)]
pub enum LevelFilter { - Off, - Error, - Warn, - Info, - Debug, - Trace, +LevelFilter in log - Rust
log

Enum LevelFilter

source
#[repr(usize)]
pub enum LevelFilter { + Off = 0, + Error = 1, + Warn = 2, + Info = 3, + Debug = 4, + Trace = 5, }
Expand description

An enum representing the available verbosity level filters of the logger.

A LevelFilter may be compared directly to a Level. Use this type to get and set the maximum log level with max_level() and set_max_level.

-

Variants§

§

Off

A level lower than all log levels.

-
§

Error

Corresponds to the Error log level.

-
§

Warn

Corresponds to the Warn log level.

-
§

Info

Corresponds to the Info log level.

-
§

Debug

Corresponds to the Debug log level.

-
§

Trace

Corresponds to the Trace log level.

-

Implementations§

source§

impl LevelFilter

source

pub fn max() -> LevelFilter

Returns the most verbose logging level filter.

-
source

pub fn to_level(&self) -> Option<Level>

Converts self to the equivalent Level.

+

Variants§

§

Off = 0

A level lower than all log levels.

+
§

Error = 1

Corresponds to the Error log level.

+
§

Warn = 2

Corresponds to the Warn log level.

+
§

Info = 3

Corresponds to the Info log level.

+
§

Debug = 4

Corresponds to the Debug log level.

+
§

Trace = 5

Corresponds to the Trace log level.

+

Implementations§

source§

impl LevelFilter

source

pub fn max() -> LevelFilter

Returns the most verbose logging level filter.

+
source

pub fn to_level(&self) -> Option<Level>

Converts self to the equivalent Level.

Returns None if self is LevelFilter::Off.

-
source

pub fn as_str(&self) -> &'static str

Returns the string representation of the LevelFilter.

+
source

pub fn as_str(&self) -> &'static str

Returns the string representation of the LevelFilter.

This returns the same string as the fmt::Display implementation.

-
source

pub fn iter() -> impl Iterator<Item = Self>

Iterate through all supported filtering levels.

+
source

pub fn iter() -> impl Iterator<Item = Self>

Iterate through all supported filtering levels.

The order of iteration is from less to more verbose filtering.

-
Examples
+
§Examples
use log::LevelFilter;
 
 let mut levels = LevelFilter::iter();
 
 assert_eq!(Some(LevelFilter::Off), levels.next());
 assert_eq!(Some(LevelFilter::Trace), levels.last());
-

Trait Implementations§

source§

impl Clone for LevelFilter

source§

fn clone(&self) -> LevelFilter

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for LevelFilter

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for LevelFilter

source§

fn fmt(&self, fmt: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl FromStr for LevelFilter

§

type Err = ParseLevelError

The associated error which can be returned from parsing.
source§

fn from_str(level: &str) -> Result<LevelFilter, Self::Err>

Parses a string s to return a value of this type. Read more
source§

impl Hash for LevelFilter

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for LevelFilter

source§

fn cmp(&self, other: &LevelFilter) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

Restrict a value to a certain interval. Read more
source§

impl PartialEq<Level> for LevelFilter

source§

fn eq(&self, other: &Level) -> bool

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl PartialEq<LevelFilter> for Level

source§

fn eq(&self, other: &LevelFilter) -> bool

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl PartialEq<LevelFilter> for LevelFilter

source§

fn eq(&self, other: &LevelFilter) -> bool

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd<Level> for LevelFilter

source§

fn partial_cmp(&self, other: &Level) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
source§

impl PartialOrd<LevelFilter> for Level

source§

fn partial_cmp(&self, other: &LevelFilter) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
source§

impl PartialOrd<LevelFilter> for LevelFilter

source§

fn partial_cmp(&self, other: &LevelFilter) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
source§

impl Copy for LevelFilter

source§

impl Eq for LevelFilter

source§

impl StructuralEq for LevelFilter

source§

impl StructuralPartialEq for LevelFilter

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Trait Implementations§

source§

impl Clone for LevelFilter

source§

fn clone(&self) -> LevelFilter

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for LevelFilter

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for LevelFilter

source§

fn fmt(&self, fmt: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl FromStr for LevelFilter

source§

type Err = ParseLevelError

The associated error which can be returned from parsing.
source§

fn from_str(level: &str) -> Result<LevelFilter, Self::Err>

Parses a string s to return a value of this type. Read more
source§

impl Hash for LevelFilter

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where + H: Hasher, + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for LevelFilter

source§

fn cmp(&self, other: &LevelFilter) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where + Self: Sized,

Restrict a value to a certain interval. Read more
source§

impl PartialEq<Level> for LevelFilter

source§

fn eq(&self, other: &Level) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl PartialEq<LevelFilter> for Level

source§

fn eq(&self, other: &LevelFilter) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl PartialEq for LevelFilter

source§

fn eq(&self, other: &LevelFilter) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl PartialOrd<Level> for LevelFilter

source§

fn partial_cmp(&self, other: &Level) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the +<= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > +operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by +the >= operator. Read more
source§

impl PartialOrd<LevelFilter> for Level

source§

fn partial_cmp(&self, other: &LevelFilter) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the +<= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > +operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by +the >= operator. Read more
source§

impl PartialOrd for LevelFilter

source§

fn partial_cmp(&self, other: &LevelFilter) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the +<= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > +operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by +the >= operator. Read more
source§

impl Copy for LevelFilter

source§

impl Eq for LevelFilter

source§

impl StructuralPartialEq for LevelFilter

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where + T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/log/fn.logger.html b/log/fn.logger.html index 090f269..a991729 100644 --- a/log/fn.logger.html +++ b/log/fn.logger.html @@ -1,3 +1,3 @@ -logger in log - Rust

Function log::logger

source ·
pub fn logger() -> &'static dyn Log
Expand description

Returns a reference to the logger.

+logger in log - Rust
log

Function logger

source
pub fn logger() -> &'static dyn Log
Expand description

Returns a reference to the logger.

If a logger has not been set, a no-op implementation is returned.

\ No newline at end of file diff --git a/log/fn.max_level.html b/log/fn.max_level.html index 3fb2c78..6ac6681 100644 --- a/log/fn.max_level.html +++ b/log/fn.max_level.html @@ -1,4 +1,4 @@ -max_level in log - Rust

Function log::max_level

source ·
pub fn max_level() -> LevelFilter
Expand description

Returns the current maximum log level.

+max_level in log - Rust
log

Function max_level

source
pub fn max_level() -> LevelFilter
Expand description

Returns the current maximum log level.

The log!, error!, warn!, info!, debug!, and trace! macros check this value and discard any message logged at a higher level. The maximum log level is set by the set_max_level function.

diff --git a/log/fn.set_logger.html b/log/fn.set_logger.html index 4ac10c2..0d5276c 100644 --- a/log/fn.set_logger.html +++ b/log/fn.set_logger.html @@ -1,18 +1,18 @@ -set_logger in log - Rust

Function log::set_logger

source ·
pub fn set_logger(logger: &'static dyn Log) -> Result<(), SetLoggerError>
Expand description

Sets the global logger to a &'static Log.

+set_logger in log - Rust
log

Function set_logger

source
pub fn set_logger(logger: &'static dyn Log) -> Result<(), SetLoggerError>
Expand description

Sets the global logger to a &'static Log.

This function may only be called once in the lifetime of a program. Any log events that occur before the call to set_logger completes will be ignored.

This function does not typically need to be called manually. Logger implementations should provide an initialization method that installs the logger internally.

-

Availability

+

§Availability

This method is available even when the std feature is disabled. However, it is currently unavailable on thumbv6 targets, which lack support for some atomic operations which are used by this function. Even on those targets, set_logger_racy will be available.

-

Errors

+

§Errors

An error is returned if a logger has already been set.

-

Examples

-
use log::{error, info, warn, Record, Level, Metadata, LevelFilter};
+

§Examples

+
use log::{error, info, warn, Record, Level, Metadata, LevelFilter};
 
 static MY_LOGGER: MyLogger = MyLogger;
 
@@ -25,7 +25,7 @@ targets, set_logger_racy will
 
     fn log(&self, record: &Record) {
         if self.enabled(record.metadata()) {
-            println!("{} - {}", record.level(), record.args());
+            println!("{} - {}", record.level(), record.args());
         }
     }
     fn flush(&self) {}
@@ -34,7 +34,7 @@ targets, set_logger_racy will
 log::set_logger(&MY_LOGGER).unwrap();
 log::set_max_level(LevelFilter::Info);
 
-info!("hello log");
-warn!("warning");
-error!("oops");
+info!("hello log"); +warn!("warning"); +error!("oops");
\ No newline at end of file diff --git a/log/fn.set_logger_racy.html b/log/fn.set_logger_racy.html index 56fe3f1..b32fa05 100644 --- a/log/fn.set_logger_racy.html +++ b/log/fn.set_logger_racy.html @@ -1,12 +1,12 @@ -set_logger_racy in log - Rust

Function log::set_logger_racy

source ·
pub unsafe fn set_logger_racy(
-    logger: &'static dyn Log
-) -> Result<(), SetLoggerError>
Expand description

A thread-unsafe version of set_logger.

+set_logger_racy in log - Rust
log

Function set_logger_racy

source
pub unsafe fn set_logger_racy(
+    logger: &'static dyn Log,
+) -> Result<(), SetLoggerError>
Expand description

A thread-unsafe version of set_logger.

This function is available on all platforms, even those that do not have support for atomics that is needed by set_logger.

In almost all cases, set_logger should be preferred.

-

Safety

-

This function is only safe to call when no other logger initialization -function is called while this function still executes.

+

§Safety

+

This function is only safe to call when it cannot race with any other +calls to set_logger or set_logger_racy.

This can be upheld by (for example) making sure that there are no other threads, and (on embedded) that interrupts are disabled.

It is safe to use other logging functions while this function runs diff --git a/log/fn.set_max_level.html b/log/fn.set_max_level.html index dea0e3e..b8d0833 100644 --- a/log/fn.set_max_level.html +++ b/log/fn.set_max_level.html @@ -1,4 +1,4 @@ -set_max_level in log - Rust

Function log::set_max_level

source ·
pub fn set_max_level(level: LevelFilter)
Expand description

Sets the global maximum log level.

+set_max_level in log - Rust
log

Function set_max_level

source
pub fn set_max_level(level: LevelFilter)
Expand description

Sets the global maximum log level.

Generally, this should only be called by the active logging implementation.

Note that Trace is the maximum level, because it provides the maximum amount of detail in the emitted logs.

\ No newline at end of file diff --git a/log/fn.set_max_level_racy.html b/log/fn.set_max_level_racy.html index b740d34..004432a 100644 --- a/log/fn.set_max_level_racy.html +++ b/log/fn.set_max_level_racy.html @@ -1,12 +1,12 @@ -set_max_level_racy in log - Rust

Function log::set_max_level_racy

source ·
pub unsafe fn set_max_level_racy(level: LevelFilter)
Expand description

A thread-unsafe version of set_max_level.

+set_max_level_racy in log - Rust
log

Function set_max_level_racy

source
pub unsafe fn set_max_level_racy(level: LevelFilter)
Expand description

A thread-unsafe version of set_max_level.

This function is available on all platforms, even those that do not have support for atomics that is needed by set_max_level.

In almost all cases, set_max_level should be preferred.

-

Safety

-

This function is only safe to call when no other level setting function is -called while this function still executes.

+

§Safety

+

This function is only safe to call when it cannot race with any other +calls to set_max_level or set_max_level_racy.

This can be upheld by (for example) making sure that there are no other threads, and (on embedded) that interrupts are disabled.

-

Is is safe to use all other logging functions while this function runs +

It is safe to use all other logging functions while this function runs (including all logging macros).

\ No newline at end of file diff --git a/log/index.html b/log/index.html index 85e5c62..50eec3c 100644 --- a/log/index.html +++ b/log/index.html @@ -1,4 +1,4 @@ -log - Rust

Crate log

source ·
Expand description

A lightweight logging facade.

+log - Rust

Crate log

source
Expand description

A lightweight logging facade.

The log crate provides a single logging API that abstracts over the actual logging implementation. Libraries can use the logging API provided by this crate, and the consumer of those libraries can choose the logging @@ -10,67 +10,69 @@ is very small - just an integer load, comparison and jump.

string which defaults to the module path of the location of the log request, though that default may be overridden. Logger implementations typically use the target to filter requests based on some user configuration.

-

Usage

+

§Usage

The basic use of the log crate is through the five logging macros: error!, warn!, info!, debug! and trace! where error! represents the highest-priority log messages and trace! the lowest. The log messages are filtered by configuring the log level to exclude messages with a lower priority. Each of these macros accept format strings similarly to println!.

-

In libraries

+

Avoid writing expressions with side-effects in log statements. They may not be evaluated.

+

§In libraries

Libraries should link only to the log crate, and use the provided macros to log whatever information will be useful to downstream consumers.

-

Examples

-
use log::{info, warn};
+

§Examples

+
use log::{info, warn};
 
 pub fn shave_the_yak(yak: &mut Yak) {
-    info!(target: "yak_events", "Commencing yak shaving for {:?}", yak);
+    info!(target: "yak_events", "Commencing yak shaving for {yak:?}");
 
     loop {
         match find_a_razor() {
             Ok(razor) => {
-                info!("Razor located: {}", razor);
+                info!("Razor located: {razor}");
                 yak.shave(razor);
                 break;
             }
             Err(err) => {
-                warn!("Unable to locate a razor: {}, retrying", err);
+                warn!("Unable to locate a razor: {err}, retrying");
             }
         }
     }
 }
-

In executables

+

§In executables

Executables should choose a logging implementation and initialize it early in the runtime of the program. Logging implementations will typically include a function to do this. Any log messages generated before the implementation is initialized will be ignored.

The executable itself may use the log crate to log as well.

-

Warning

+

§Warning

The logging system may only be initialized once.

-

Structured logging

-

If you enable the kv_unstable feature you can associate structured values +

§Structured logging

+

If you enable the kv feature you can associate structured values with your log records. If we take the example from before, we can include some additional context besides what’s in the formatted message:

-
use log::{info, warn, as_serde, as_error};
+
use log::{info, warn};
 
 pub fn shave_the_yak(yak: &mut Yak) {
-    info!(target: "yak_events", yak = as_serde!(yak); "Commencing yak shaving");
+    info!(target: "yak_events", yak:serde; "Commencing yak shaving");
 
     loop {
         match find_a_razor() {
             Ok(razor) => {
-                info!(razor = razor; "Razor located");
+                info!(razor; "Razor located");
                 yak.shave(razor);
                 break;
             }
-            Err(err) => {
-                warn!(err = as_error!(err); "Unable to locate a razor, retrying");
+            Err(e) => {
+                warn!(e:err; "Unable to locate a razor, retrying");
             }
         }
     }
 }
-

Available logging implementations

+

See the [kv] module documentation for more details.

+

§Available logging implementations

In order to produce log output executables have to use a logger implementation compatible with the facade. There are many available implementations to choose from, @@ -79,6 +81,7 @@ here are some of the most popular ones:

  • Simple minimal loggers:
  • For WebAssembly binaries: @@ -115,13 +119,19 @@ here are some of the most popular ones:

  • You may need to construct an FFI-safe wrapper over log to initialize in your libraries
  • +
  • Utilities: + -

    Implementing a Logger

    +
  • + +

    §Implementing a Logger

    Loggers implement the Log trait. Here’s a very basic example that simply logs all messages at the Error, Warn or Info levels to stdout:

    -
    use log::{Record, Level, Metadata};
    +
    use log::{Record, Level, Metadata};
     
     struct SimpleLogger;
     
    @@ -132,7 +142,7 @@ logs all messages at the Error, fn log(&self, record: &Record) {
             if self.enabled(record.metadata()) {
    -            println!("{} - {}", record.level(), record.args());
    +            println!("{} - {}", record.level(), record.args());
             }
         }
     
    @@ -150,7 +160,7 @@ to Info, since we ignore any set_logger and
     set_max_level, handling initialization of the logger:

    -
    use log::{SetLoggerError, LevelFilter};
    +
    use log::{SetLoggerError, LevelFilter};
     
     static LOGGER: SimpleLogger = SimpleLogger;
     
    @@ -160,21 +170,19 @@ provide a function that wraps a call to set_l
     }

    Implementations that adjust their configurations at runtime should take care to adjust the maximum log level as well.

    -

    Use with std

    +

    §Use with std

    set_logger requires you to provide a &'static Log, which can be hard to obtain if your logger depends on some runtime configuration. The set_boxed_logger function is available with the std Cargo feature. It is identical to set_logger except that it takes a Box<Log> rather than a &'static Log:

    -
    pub fn init() -> Result<(), SetLoggerError> {
    +
    pub fn init() -> Result<(), SetLoggerError> {
         log::set_boxed_logger(Box::new(SimpleLogger))
             .map(|()| log::set_max_level(LevelFilter::Info))
     }
    -

    Compile time filters

    -

    Log levels can be statically disabled at compile time via Cargo features. Log invocations at -disabled levels will be skipped and will not even be present in the resulting binary. -This level is configured separately for release and debug builds. The features are:

    +

    §Compile time filters

    +

    Log levels can be statically disabled at compile time by enabling one of these Cargo features:

    • max_level_off
    • max_level_error
    • @@ -182,6 +190,12 @@ This level is configured separately for release and debug builds. The features a
    • max_level_info
    • max_level_debug
    • max_level_trace
    • +
    +

    Log invocations at disabled levels will be skipped and will not even be present in the +resulting binary. These features control the value of the STATIC_MAX_LEVEL constant. The +logging macros check this value before logging a message. By default, no levels are disabled.

    +

    It is possible to override this level for release builds only with the following features:

    +
    • release_max_level_off
    • release_max_level_error
    • release_max_level_warn
    • @@ -189,15 +203,12 @@ This level is configured separately for release and debug builds. The features a
    • release_max_level_debug
    • release_max_level_trace
    -

    These features control the value of the STATIC_MAX_LEVEL constant. The logging macros check -this value before logging a message. By default, no levels are disabled.

    Libraries should avoid using the max level features because they’re global and can’t be changed once they’re set.

    For example, a crate can disable trace level logs in debug builds and trace, debug, and info level logs in release builds with the following configuration:

    [dependencies]
    -log = { version = "0.4", features = ["max_level_debug", "release_max_level_warn"] }
    -

    Crate Feature Flags

    +log = { version = "0.4", features = ["max_level_debug", "release_max_level_warn"] }

    §Crate Feature Flags

    The following crate feature flags are available in addition to the filters. They are configured in your Cargo.toml.

      @@ -206,11 +217,10 @@ configured in your Cargo.toml.

    • serde enables support for serialization and deserialization of Level and LevelFilter.
    [dependencies]
    -log = { version = "0.4", features = ["std", "serde"] }
    -

    Version compatibility

    +log = { version = "0.4", features = ["std", "serde"] }

    §Version compatibility

    The 0.3 and 0.4 versions of the log crate are almost entirely compatible. Log messages made using log 0.3 will forward transparently to a logger implementation using log 0.4. Log messages made using log 0.4 will forward to a logger implementation using log 0.3, but the module path and file name information associated with the message will unfortunately be lost.

    -

    Macros

    • Logs a message at the debug level.
    • Logs a message at the error level.
    • Logs a message at the info level.
    • The standard logging macro.
    • Determines if a message logged at the specified level in that module will -be logged.
    • Logs a message at the trace level.
    • Logs a message at the warn level.

    Structs

    Enums

    • An enum representing the available verbosity levels of the logger.
    • An enum representing the available verbosity level filters of the logger.

    Constants

    Traits

    • A trait encapsulating the operations required of a logger.

    Functions

    \ No newline at end of file +

    Macros§

    • Logs a message at the debug level.
    • Logs a message at the error level.
    • Logs a message at the info level.
    • The standard logging macro.
    • Determines if a message logged at the specified level in that module will +be logged.
    • Logs a message at the trace level.
    • Logs a message at the warn level.

    Structs§

    Enums§

    • An enum representing the available verbosity levels of the logger.
    • An enum representing the available verbosity level filters of the logger.

    Constants§

    Traits§

    • A trait encapsulating the operations required of a logger.

    Functions§

    \ No newline at end of file diff --git a/log/macro.debug.html b/log/macro.debug.html index 2ec3850..a1dfed9 100644 --- a/log/macro.debug.html +++ b/log/macro.debug.html @@ -1,12 +1,12 @@ -debug in log - Rust

    Macro log::debug

    source ·
    macro_rules! debug {
    +debug in log - Rust
    log

    Macro debug

    source
    macro_rules! debug {
         (target: $target:expr, $($arg:tt)+) => { ... };
         ($($arg:tt)+) => { ... };
     }
    Expand description

    Logs a message at the debug level.

    -

    Examples

    -
    use log::debug;
    +

    §Examples

    +
    use log::debug;
     
     let pos = Position { x: 3.234, y: -1.223 };
     
    -debug!("New position: x: {}, y: {}", pos.x, pos.y);
    -debug!(target: "app_events", "New position: x: {}, y: {}", pos.x, pos.y);
    +debug!("New position: x: {}, y: {}", pos.x, pos.y); +debug!(target: "app_events", "New position: x: {}, y: {}", pos.x, pos.y);
    \ No newline at end of file diff --git a/log/macro.error.html b/log/macro.error.html index fcdabb7..95c0b9e 100644 --- a/log/macro.error.html +++ b/log/macro.error.html @@ -1,12 +1,12 @@ -error in log - Rust

    Macro log::error

    source ·
    macro_rules! error {
    +error in log - Rust
    log

    Macro error

    source
    macro_rules! error {
         (target: $target:expr, $($arg:tt)+) => { ... };
         ($($arg:tt)+) => { ... };
     }
    Expand description

    Logs a message at the error level.

    -

    Examples

    -
    use log::error;
    +

    §Examples

    +
    use log::error;
     
    -let (err_info, port) = ("No connection", 22);
    +let (err_info, port) = ("No connection", 22);
     
    -error!("Error: {} on port {}", err_info, port);
    -error!(target: "app_events", "App Error: {}, Port: {}", err_info, 22);
    +error!("Error: {err_info} on port {port}"); +error!(target: "app_events", "App Error: {err_info}, Port: {port}");
    \ No newline at end of file diff --git a/log/macro.info.html b/log/macro.info.html index 43cef05..00a59a5 100644 --- a/log/macro.info.html +++ b/log/macro.info.html @@ -1,13 +1,13 @@ -info in log - Rust

    Macro log::info

    source ·
    macro_rules! info {
    +info in log - Rust
    log

    Macro info

    source
    macro_rules! info {
         (target: $target:expr, $($arg:tt)+) => { ... };
         ($($arg:tt)+) => { ... };
     }
    Expand description

    Logs a message at the info level.

    -

    Examples

    -
    use log::info;
    +

    §Examples

    +
    use log::info;
     
     let conn_info = Connection { port: 40, speed: 3.20 };
     
    -info!("Connected to port {} at {} Mb/s", conn_info.port, conn_info.speed);
    -info!(target: "connection_events", "Successful connection, port: {}, speed: {}",
    +info!("Connected to port {} at {} Mb/s", conn_info.port, conn_info.speed);
    +info!(target: "connection_events", "Successful connection, port: {}, speed: {}",
           conn_info.port, conn_info.speed);
    \ No newline at end of file diff --git a/log/macro.log.html b/log/macro.log.html index 1a7353d..ea5cabf 100644 --- a/log/macro.log.html +++ b/log/macro.log.html @@ -1,17 +1,17 @@ -log in log - Rust

    Macro log::log

    source ·
    macro_rules! log {
    -    (target: $target:expr, $lvl:expr, $($key:tt = $value:expr),+; $($arg:tt)+) => { ... };
    +log in log - Rust
    log

    Macro log

    source
    macro_rules! log {
    +    (target: $target:expr, $lvl:expr, $($key:tt $(:$capture:tt)? $(= $value:expr)?),+; $($arg:tt)+) => { ... };
         (target: $target:expr, $lvl:expr, $($arg:tt)+) => { ... };
         ($lvl:expr, $($arg:tt)+) => { ... };
     }
    Expand description

    The standard logging macro.

    This macro will generically log with the specified Level and format! based argument list.

    -

    Examples

    -
    use log::{log, Level};
    +

    §Examples

    +
    use log::{log, Level};
     
    -let data = (42, "Forty-two");
    -let private_data = "private";
    +let data = (42, "Forty-two");
    +let private_data = "private";
     
    -log!(Level::Error, "Received errors: {}, {}", data.0, data.1);
    -log!(target: "app_events", Level::Warn, "App warning: {}, {}, {}",
    +log!(Level::Error, "Received errors: {}, {}", data.0, data.1);
    +log!(target: "app_events", Level::Warn, "App warning: {}, {}, {}",
         data.0, data.1, private_data);
    \ No newline at end of file diff --git a/log/macro.log_enabled.html b/log/macro.log_enabled.html index 6053817..3bcbe1a 100644 --- a/log/macro.log_enabled.html +++ b/log/macro.log_enabled.html @@ -1,20 +1,20 @@ -log_enabled in log - Rust

    Macro log::log_enabled

    source ·
    macro_rules! log_enabled {
    +log_enabled in log - Rust
    log

    Macro log_enabled

    source
    macro_rules! log_enabled {
         (target: $target:expr, $lvl:expr) => { ... };
         ($lvl:expr) => { ... };
     }
    Expand description

    Determines if a message logged at the specified level in that module will be logged.

    This can be used to avoid expensive computation of log message arguments if the message would be ignored anyway.

    -

    Examples

    -
    use log::Level::Debug;
    +

    §Examples

    +
    use log::Level::Debug;
     use log::{debug, log_enabled};
     
     if log_enabled!(Debug) {
         let data = expensive_call();
    -    debug!("expensive debug data: {} {}", data.x, data.y);
    +    debug!("expensive debug data: {} {}", data.x, data.y);
     }
    -if log_enabled!(target: "Global", Debug) {
    +if log_enabled!(target: "Global", Debug) {
        let data = expensive_call();
    -   debug!(target: "Global", "expensive debug data: {} {}", data.x, data.y);
    +   debug!(target: "Global", "expensive debug data: {} {}", data.x, data.y);
     }
    \ No newline at end of file diff --git a/log/macro.trace.html b/log/macro.trace.html index a4c996c..904785f 100644 --- a/log/macro.trace.html +++ b/log/macro.trace.html @@ -1,14 +1,14 @@ -trace in log - Rust

    Macro log::trace

    source ·
    macro_rules! trace {
    +trace in log - Rust
    log

    Macro trace

    source
    macro_rules! trace {
         (target: $target:expr, $($arg:tt)+) => { ... };
         ($($arg:tt)+) => { ... };
     }
    Expand description

    Logs a message at the trace level.

    -

    Examples

    -
    use log::trace;
    +

    §Examples

    +
    use log::trace;
     
     let pos = Position { x: 3.234, y: -1.223 };
     
    -trace!("Position is: x: {}, y: {}", pos.x, pos.y);
    -trace!(target: "app_events", "x is {} and y is {}",
    -       if pos.x >= 0.0 { "positive" } else { "negative" },
    -       if pos.y >= 0.0 { "positive" } else { "negative" });
    +trace!("Position is: x: {}, y: {}", pos.x, pos.y); +trace!(target: "app_events", "x is {} and y is {}", + if pos.x >= 0.0 { "positive" } else { "negative" }, + if pos.y >= 0.0 { "positive" } else { "negative" });
    \ No newline at end of file diff --git a/log/macro.warn.html b/log/macro.warn.html index 1467ac6..2940284 100644 --- a/log/macro.warn.html +++ b/log/macro.warn.html @@ -1,12 +1,12 @@ -warn in log - Rust

    Macro log::warn

    source ·
    macro_rules! warn {
    +warn in log - Rust
    log

    Macro warn

    source
    macro_rules! warn {
         (target: $target:expr, $($arg:tt)+) => { ... };
         ($($arg:tt)+) => { ... };
     }
    Expand description

    Logs a message at the warn level.

    -

    Examples

    -
    use log::warn;
    +

    §Examples

    +
    use log::warn;
     
    -let warn_description = "Invalid Input";
    +let warn_description = "Invalid Input";
     
    -warn!("Warning! {}!", warn_description);
    -warn!(target: "input_events", "App received warning: {}", warn_description);
    +warn!("Warning! {warn_description}!"); +warn!(target: "input_events", "App received warning: {warn_description}");
    \ No newline at end of file diff --git a/log/struct.Metadata.html b/log/struct.Metadata.html index 065c654..edfa3ad 100644 --- a/log/struct.Metadata.html +++ b/log/struct.Metadata.html @@ -1,5 +1,5 @@ -Metadata in log - Rust

    Struct log::Metadata

    source ·
    pub struct Metadata<'a> { /* private fields */ }
    Expand description

    Metadata about a log message.

    -

    Use

    +Metadata in log - Rust
    log

    Struct Metadata

    source
    pub struct Metadata<'a> { /* private fields */ }
    Expand description

    Metadata about a log message.

    +

    §Use

    Metadata structs are created when users of the library use logging macros.

    They are consumed by implementations of the Log trait in the @@ -8,8 +8,8 @@ logging macros.

    and target.

    Users should use the log_enabled! macro in their code to avoid constructing expensive log messages.

    -

    Examples

    -
    use log::{Record, Level, Metadata};
    +

    §Examples

    +
    use log::{Record, Level, Metadata};
     
     struct MyLogger;
     
    @@ -20,32 +20,33 @@ constructing expensive log messages.

    fn log(&self, record: &Record) { if self.enabled(record.metadata()) { - println!("{} - {}", record.level(), record.args()); + println!("{} - {}", record.level(), record.args()); } } fn flush(&self) {} }
    -

    Implementations§

    source§

    impl<'a> Metadata<'a>

    source

    pub fn builder() -> MetadataBuilder<'a>

    Returns a new builder.

    -
    source

    pub fn level(&self) -> Level

    The verbosity level of the message.

    -
    source

    pub fn target(&self) -> &'a str

    The name of the target of the directive.

    -

    Trait Implementations§

    source§

    impl<'a> Clone for Metadata<'a>

    source§

    fn clone(&self) -> Metadata<'a>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a> Debug for Metadata<'a>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a> Hash for Metadata<'a>

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<'a> Ord for Metadata<'a>

    source§

    fn cmp(&self, other: &Metadata<'a>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere - Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Selfwhere - Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

    Restrict a value to a certain interval. Read more
    source§

    impl<'a> PartialEq<Metadata<'a>> for Metadata<'a>

    source§

    fn eq(&self, other: &Metadata<'a>) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialOrd<Metadata<'a>> for Metadata<'a>

    source§

    fn partial_cmp(&self, other: &Metadata<'a>) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    source§

    impl<'a> Eq for Metadata<'a>

    source§

    impl<'a> StructuralEq for Metadata<'a>

    source§

    impl<'a> StructuralPartialEq for Metadata<'a>

    Auto Trait Implementations§

    §

    impl<'a> RefUnwindSafe for Metadata<'a>

    §

    impl<'a> Send for Metadata<'a>

    §

    impl<'a> Sync for Metadata<'a>

    §

    impl<'a> Unpin for Metadata<'a>

    §

    impl<'a> UnwindSafe for Metadata<'a>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Implementations§

    source§

    impl<'a> Metadata<'a>

    source

    pub fn builder() -> MetadataBuilder<'a>

    Returns a new builder.

    +
    source

    pub fn level(&self) -> Level

    The verbosity level of the message.

    +
    source

    pub fn target(&self) -> &'a str

    The name of the target of the directive.

    +

    Trait Implementations§

    source§

    impl<'a> Clone for Metadata<'a>

    source§

    fn clone(&self) -> Metadata<'a>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a> Debug for Metadata<'a>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a> Hash for Metadata<'a>

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<'a> Ord for Metadata<'a>

    source§

    fn cmp(&self, other: &Metadata<'a>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where + Self: Sized,

    Restrict a value to a certain interval. Read more
    source§

    impl<'a> PartialEq for Metadata<'a>

    source§

    fn eq(&self, other: &Metadata<'a>) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl<'a> PartialOrd for Metadata<'a>

    source§

    fn partial_cmp(&self, other: &Metadata<'a>) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    Tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    Tests less than or equal to (for self and other) and is used by the +<= operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    Tests greater than (for self and other) and is used by the > +operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    Tests greater than or equal to (for self and other) and is used by +the >= operator. Read more
    source§

    impl<'a> Eq for Metadata<'a>

    source§

    impl<'a> StructuralPartialEq for Metadata<'a>

    Auto Trait Implementations§

    §

    impl<'a> Freeze for Metadata<'a>

    §

    impl<'a> RefUnwindSafe for Metadata<'a>

    §

    impl<'a> Send for Metadata<'a>

    §

    impl<'a> Sync for Metadata<'a>

    §

    impl<'a> Unpin for Metadata<'a>

    §

    impl<'a> UnwindSafe for Metadata<'a>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/log/struct.MetadataBuilder.html b/log/struct.MetadataBuilder.html index 6232fa1..4623cde 100644 --- a/log/struct.MetadataBuilder.html +++ b/log/struct.MetadataBuilder.html @@ -1,40 +1,40 @@ -MetadataBuilder in log - Rust

    Struct log::MetadataBuilder

    source ·
    pub struct MetadataBuilder<'a> { /* private fields */ }
    Expand description

    Builder for Metadata.

    +MetadataBuilder in log - Rust
    log

    Struct MetadataBuilder

    source
    pub struct MetadataBuilder<'a> { /* private fields */ }
    Expand description

    Builder for Metadata.

    Typically should only be used by log library creators or for testing and “shim loggers”. The MetadataBuilder can set the different parameters of a Metadata object, and returns the created object when build is called.

    -

    Example

    -
    let target = "myApp";
    +

    §Example

    +
    let target = "myApp";
     use log::{Level, MetadataBuilder};
     let metadata = MetadataBuilder::new()
                         .level(Level::Debug)
                         .target(target)
                         .build();
    -

    Implementations§

    source§

    impl<'a> MetadataBuilder<'a>

    source

    pub fn new() -> MetadataBuilder<'a>

    Construct a new MetadataBuilder.

    +

    Implementations§

    source§

    impl<'a> MetadataBuilder<'a>

    source

    pub fn new() -> MetadataBuilder<'a>

    Construct a new MetadataBuilder.

    The default options are:

    • level: Level::Info
    • -
    • target: ""
    • +
    • target: ""
    -
    source

    pub fn level(&mut self, arg: Level) -> &mut MetadataBuilder<'a>

    Setter for level.

    -
    source

    pub fn target(&mut self, target: &'a str) -> &mut MetadataBuilder<'a>

    Setter for target.

    -
    source

    pub fn build(&self) -> Metadata<'a>

    Returns a Metadata object.

    -

    Trait Implementations§

    source§

    impl<'a> Debug for MetadataBuilder<'a>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a> Default for MetadataBuilder<'a>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<'a> Hash for MetadataBuilder<'a>

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<'a> Ord for MetadataBuilder<'a>

    source§

    fn cmp(&self, other: &MetadataBuilder<'a>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere - Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Selfwhere - Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

    Restrict a value to a certain interval. Read more
    source§

    impl<'a> PartialEq<MetadataBuilder<'a>> for MetadataBuilder<'a>

    source§

    fn eq(&self, other: &MetadataBuilder<'a>) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialOrd<MetadataBuilder<'a>> for MetadataBuilder<'a>

    source§

    fn partial_cmp(&self, other: &MetadataBuilder<'a>) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    source§

    impl<'a> Eq for MetadataBuilder<'a>

    source§

    impl<'a> StructuralEq for MetadataBuilder<'a>

    source§

    impl<'a> StructuralPartialEq for MetadataBuilder<'a>

    Auto Trait Implementations§

    §

    impl<'a> RefUnwindSafe for MetadataBuilder<'a>

    §

    impl<'a> Send for MetadataBuilder<'a>

    §

    impl<'a> Sync for MetadataBuilder<'a>

    §

    impl<'a> Unpin for MetadataBuilder<'a>

    §

    impl<'a> UnwindSafe for MetadataBuilder<'a>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    source

    pub fn level(&mut self, arg: Level) -> &mut MetadataBuilder<'a>

    Setter for level.

    +
    source

    pub fn target(&mut self, target: &'a str) -> &mut MetadataBuilder<'a>

    Setter for target.

    +
    source

    pub fn build(&self) -> Metadata<'a>

    Returns a Metadata object.

    +

    Trait Implementations§

    source§

    impl<'a> Debug for MetadataBuilder<'a>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a> Default for MetadataBuilder<'a>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<'a> Hash for MetadataBuilder<'a>

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<'a> Ord for MetadataBuilder<'a>

    source§

    fn cmp(&self, other: &MetadataBuilder<'a>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where + Self: Sized,

    Restrict a value to a certain interval. Read more
    source§

    impl<'a> PartialEq for MetadataBuilder<'a>

    source§

    fn eq(&self, other: &MetadataBuilder<'a>) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl<'a> PartialOrd for MetadataBuilder<'a>

    source§

    fn partial_cmp(&self, other: &MetadataBuilder<'a>) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    Tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    Tests less than or equal to (for self and other) and is used by the +<= operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    Tests greater than (for self and other) and is used by the > +operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    Tests greater than or equal to (for self and other) and is used by +the >= operator. Read more
    source§

    impl<'a> Eq for MetadataBuilder<'a>

    source§

    impl<'a> StructuralPartialEq for MetadataBuilder<'a>

    Auto Trait Implementations§

    §

    impl<'a> Freeze for MetadataBuilder<'a>

    §

    impl<'a> RefUnwindSafe for MetadataBuilder<'a>

    §

    impl<'a> Send for MetadataBuilder<'a>

    §

    impl<'a> Sync for MetadataBuilder<'a>

    §

    impl<'a> Unpin for MetadataBuilder<'a>

    §

    impl<'a> UnwindSafe for MetadataBuilder<'a>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/log/struct.ParseLevelError.html b/log/struct.ParseLevelError.html index bd214a3..30aadec 100644 --- a/log/struct.ParseLevelError.html +++ b/log/struct.ParseLevelError.html @@ -1,14 +1,13 @@ -ParseLevelError in log - Rust

    Struct log::ParseLevelError

    source ·
    pub struct ParseLevelError(/* private fields */);
    Expand description

    The type returned by from_str when the string doesn’t match any of the log levels.

    -

    Trait Implementations§

    source§

    impl Debug for ParseLevelError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for ParseLevelError

    source§

    fn fmt(&self, fmt: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq<ParseLevelError> for ParseLevelError

    source§

    fn eq(&self, other: &ParseLevelError) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for ParseLevelError

    source§

    impl StructuralEq for ParseLevelError

    source§

    impl StructuralPartialEq for ParseLevelError

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +ParseLevelError in log - Rust
    log

    Struct ParseLevelError

    source
    pub struct ParseLevelError(/* private fields */);
    Expand description

    The type returned by from_str when the string doesn’t match any of the log levels.

    +

    Trait Implementations§

    source§

    impl Debug for ParseLevelError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for ParseLevelError

    source§

    fn fmt(&self, fmt: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq for ParseLevelError

    source§

    fn eq(&self, other: &ParseLevelError) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Eq for ParseLevelError

    source§

    impl StructuralPartialEq for ParseLevelError

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/log/struct.Record.html b/log/struct.Record.html index dd49e7b..5f4f93a 100644 --- a/log/struct.Record.html +++ b/log/struct.Record.html @@ -1,5 +1,5 @@ -Record in log - Rust

    Struct log::Record

    source ·
    pub struct Record<'a> { /* private fields */ }
    Expand description

    The “payload” of a log message.

    -

    Use

    +Record in log - Rust
    log

    Struct Record

    source
    pub struct Record<'a> { /* private fields */ }
    Expand description

    The “payload” of a log message.

    +

    §Use

    Record structures are passed as parameters to the log method of the Log trait. Logger implementors manipulate these structures in order to display log messages. Records are automatically @@ -7,11 +7,11 @@ created by the log! macro and so are n

    Note that the level() and target() accessors are equivalent to self.metadata().level() and self.metadata().target() respectively. These methods are provided as a convenience for users of this structure.

    -

    Example

    +

    §Example

    The following example shows a simple logger that displays the level, module path, and message of any Record that is passed to it.

    -
    struct SimpleLogger;
    +
    struct SimpleLogger;
     
     impl log::Log for SimpleLogger {
        fn enabled(&self, _metadata: &log::Metadata) -> bool {
    @@ -23,31 +23,32 @@ module path, and message of any Record that is passed to it.

    return; } - println!("{}:{} -- {}", + println!("{}:{} -- {}", record.level(), record.target(), record.args()); } fn flush(&self) {} }
    -

    Implementations§

    source§

    impl<'a> Record<'a>

    source

    pub fn builder() -> RecordBuilder<'a>

    Returns a new builder.

    -
    source

    pub fn args(&self) -> &Arguments<'a>

    The message body.

    -
    source

    pub fn metadata(&self) -> &Metadata<'a>

    Metadata about the log directive.

    -
    source

    pub fn level(&self) -> Level

    The verbosity level of the message.

    -
    source

    pub fn target(&self) -> &'a str

    The name of the target of the directive.

    -
    source

    pub fn module_path(&self) -> Option<&'a str>

    The module path of the message.

    -
    source

    pub fn module_path_static(&self) -> Option<&'static str>

    The module path of the message, if it is a 'static string.

    -
    source

    pub fn file(&self) -> Option<&'a str>

    The source file containing the message.

    -
    source

    pub fn file_static(&self) -> Option<&'static str>

    The module path of the message, if it is a 'static string.

    -
    source

    pub fn line(&self) -> Option<u32>

    The line containing the message.

    -

    Trait Implementations§

    source§

    impl<'a> Clone for Record<'a>

    source§

    fn clone(&self) -> Record<'a>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a> Debug for Record<'a>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    §

    impl<'a> !RefUnwindSafe for Record<'a>

    §

    impl<'a> !Send for Record<'a>

    §

    impl<'a> !Sync for Record<'a>

    §

    impl<'a> Unpin for Record<'a>

    §

    impl<'a> !UnwindSafe for Record<'a>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Implementations§

    source§

    impl<'a> Record<'a>

    source

    pub fn builder() -> RecordBuilder<'a>

    Returns a new builder.

    +
    source

    pub fn args(&self) -> &Arguments<'a>

    The message body.

    +
    source

    pub fn metadata(&self) -> &Metadata<'a>

    Metadata about the log directive.

    +
    source

    pub fn level(&self) -> Level

    The verbosity level of the message.

    +
    source

    pub fn target(&self) -> &'a str

    The name of the target of the directive.

    +
    source

    pub fn module_path(&self) -> Option<&'a str>

    The module path of the message.

    +
    source

    pub fn module_path_static(&self) -> Option<&'static str>

    The module path of the message, if it is a 'static string.

    +
    source

    pub fn file(&self) -> Option<&'a str>

    The source file containing the message.

    +
    source

    pub fn file_static(&self) -> Option<&'static str>

    The source file containing the message, if it is a 'static string.

    +
    source

    pub fn line(&self) -> Option<u32>

    The line containing the message.

    +

    Trait Implementations§

    source§

    impl<'a> Clone for Record<'a>

    source§

    fn clone(&self) -> Record<'a>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a> Debug for Record<'a>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    §

    impl<'a> Freeze for Record<'a>

    §

    impl<'a> RefUnwindSafe for Record<'a>

    §

    impl<'a> !Send for Record<'a>

    §

    impl<'a> !Sync for Record<'a>

    §

    impl<'a> Unpin for Record<'a>

    §

    impl<'a> UnwindSafe for Record<'a>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/log/struct.RecordBuilder.html b/log/struct.RecordBuilder.html index 4eb9e01..e2ad856 100644 --- a/log/struct.RecordBuilder.html +++ b/log/struct.RecordBuilder.html @@ -1,67 +1,67 @@ -RecordBuilder in log - Rust

    Struct log::RecordBuilder

    source ·
    pub struct RecordBuilder<'a> { /* private fields */ }
    Expand description

    Builder for Record.

    +RecordBuilder in log - Rust
    log

    Struct RecordBuilder

    source
    pub struct RecordBuilder<'a> { /* private fields */ }
    Expand description

    Builder for Record.

    Typically should only be used by log library creators or for testing and “shim loggers”. The RecordBuilder can set the different parameters of Record object, and returns the created object when build is called.

    -

    Examples

    -
    use log::{Level, Record};
    +

    §Examples

    +
    use log::{Level, Record};
     
     let record = Record::builder()
    -                .args(format_args!("Error!"))
    +                .args(format_args!("Error!"))
                     .level(Level::Error)
    -                .target("myApp")
    -                .file(Some("server.rs"))
    +                .target("myApp")
    +                .file(Some("server.rs"))
                     .line(Some(144))
    -                .module_path(Some("server"))
    +                .module_path(Some("server"))
                     .build();

    Alternatively, use MetadataBuilder:

    -
    use log::{Record, Level, MetadataBuilder};
    +
    use log::{Record, Level, MetadataBuilder};
     
     let error_metadata = MetadataBuilder::new()
    -                        .target("myApp")
    +                        .target("myApp")
                             .level(Level::Error)
                             .build();
     
     let record = Record::builder()
                     .metadata(error_metadata)
    -                .args(format_args!("Error!"))
    +                .args(format_args!("Error!"))
                     .line(Some(433))
    -                .file(Some("app.rs"))
    -                .module_path(Some("server"))
    +                .file(Some("app.rs"))
    +                .module_path(Some("server"))
                     .build();
    -

    Implementations§

    source§

    impl<'a> RecordBuilder<'a>

    source

    pub fn new() -> RecordBuilder<'a>

    Construct new RecordBuilder.

    +

    Implementations§

    source§

    impl<'a> RecordBuilder<'a>

    source

    pub fn new() -> RecordBuilder<'a>

    Construct new RecordBuilder.

    The default options are:

    -
    source

    pub fn args(&mut self, args: Arguments<'a>) -> &mut RecordBuilder<'a>

    Set args.

    -
    source

    pub fn metadata(&mut self, metadata: Metadata<'a>) -> &mut RecordBuilder<'a>

    Set metadata. Construct a Metadata object with MetadataBuilder.

    -
    source

    pub fn level(&mut self, level: Level) -> &mut RecordBuilder<'a>

    source

    pub fn target(&mut self, target: &'a str) -> &mut RecordBuilder<'a>

    source

    pub fn module_path(&mut self, path: Option<&'a str>) -> &mut RecordBuilder<'a>

    source

    pub fn module_path_static( +

    source

    pub fn args(&mut self, args: Arguments<'a>) -> &mut RecordBuilder<'a>

    Set args.

    +
    source

    pub fn metadata(&mut self, metadata: Metadata<'a>) -> &mut RecordBuilder<'a>

    Set metadata. Construct a Metadata object with MetadataBuilder.

    +
    source

    pub fn level(&mut self, level: Level) -> &mut RecordBuilder<'a>

    source

    pub fn target(&mut self, target: &'a str) -> &mut RecordBuilder<'a>

    source

    pub fn module_path(&mut self, path: Option<&'a str>) -> &mut RecordBuilder<'a>

    source

    pub fn module_path_static( &mut self, - path: Option<&'static str> + path: Option<&'static str>, ) -> &mut RecordBuilder<'a>

    Set module_path to a 'static string

    -
    source

    pub fn file(&mut self, file: Option<&'a str>) -> &mut RecordBuilder<'a>

    Set file

    -
    source

    pub fn file_static( +

    source

    pub fn file(&mut self, file: Option<&'a str>) -> &mut RecordBuilder<'a>

    Set file

    +
    source

    pub fn file_static( &mut self, - file: Option<&'static str> + file: Option<&'static str>, ) -> &mut RecordBuilder<'a>

    Set file to a 'static string.

    -
    source

    pub fn line(&mut self, line: Option<u32>) -> &mut RecordBuilder<'a>

    Set line

    -
    source

    pub fn build(&self) -> Record<'a>

    Invoke the builder and return a Record

    -

    Trait Implementations§

    source§

    impl<'a> Debug for RecordBuilder<'a>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a> Default for RecordBuilder<'a>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    §

    impl<'a> !RefUnwindSafe for RecordBuilder<'a>

    §

    impl<'a> !Send for RecordBuilder<'a>

    §

    impl<'a> !Sync for RecordBuilder<'a>

    §

    impl<'a> Unpin for RecordBuilder<'a>

    §

    impl<'a> !UnwindSafe for RecordBuilder<'a>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    source

    pub fn line(&mut self, line: Option<u32>) -> &mut RecordBuilder<'a>

    Set line

    +
    source

    pub fn build(&self) -> Record<'a>

    Invoke the builder and return a Record

    +

    Trait Implementations§

    source§

    impl<'a> Debug for RecordBuilder<'a>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a> Default for RecordBuilder<'a>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    §

    impl<'a> Freeze for RecordBuilder<'a>

    §

    impl<'a> RefUnwindSafe for RecordBuilder<'a>

    §

    impl<'a> !Send for RecordBuilder<'a>

    §

    impl<'a> !Sync for RecordBuilder<'a>

    §

    impl<'a> Unpin for RecordBuilder<'a>

    §

    impl<'a> UnwindSafe for RecordBuilder<'a>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/log/struct.SetLoggerError.html b/log/struct.SetLoggerError.html index 38505fe..6c86948 100644 --- a/log/struct.SetLoggerError.html +++ b/log/struct.SetLoggerError.html @@ -1,12 +1,12 @@ -SetLoggerError in log - Rust

    Struct log::SetLoggerError

    source ·
    pub struct SetLoggerError(/* private fields */);
    Expand description

    The type returned by set_logger if set_logger has already been called.

    -

    Trait Implementations§

    source§

    impl Debug for SetLoggerError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for SetLoggerError

    source§

    fn fmt(&self, fmt: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +SetLoggerError in log - Rust
    log

    Struct SetLoggerError

    source
    pub struct SetLoggerError(/* private fields */);
    Expand description

    The type returned by set_logger if set_logger has already been called.

    +

    Trait Implementations§

    source§

    impl Debug for SetLoggerError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for SetLoggerError

    source§

    fn fmt(&self, fmt: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/log/trait.Log.html b/log/trait.Log.html index c4940cf..8349505 100644 --- a/log/trait.Log.html +++ b/log/trait.Log.html @@ -1,23 +1,26 @@ -Log in log - Rust

    Trait log::Log

    source ·
    pub trait Log: Sync + Send {
    +Log in log - Rust
    log

    Trait Log

    source
    pub trait Log: Sync + Send {
         // Required methods
    -    fn enabled(&self, metadata: &Metadata<'_>) -> bool;
    +    fn enabled(&self, metadata: &Metadata<'_>) -> bool;
         fn log(&self, record: &Record<'_>);
         fn flush(&self);
     }
    Expand description

    A trait encapsulating the operations required of a logger.

    -

    Required Methods§

    source

    fn enabled(&self, metadata: &Metadata<'_>) -> bool

    Determines if a log message with the specified metadata would be +

    Required Methods§

    source

    fn enabled(&self, metadata: &Metadata<'_>) -> bool

    Determines if a log message with the specified metadata would be logged.

    This is used by the log_enabled! macro to allow callers to avoid expensive computation of log message arguments if the message would be discarded anyway.

    -
    For implementors
    +
    §For implementors

    This method isn’t called automatically by the log! macros. It’s up to an implementation of the Log trait to call enabled in its own log method implementation to guarantee that filtering is applied.

    -
    source

    fn log(&self, record: &Record<'_>)

    Logs the Record.

    -
    For implementors
    +
    source

    fn log(&self, record: &Record<'_>)

    Logs the Record.

    +
    §For implementors

    Note that enabled is not necessarily called before this method. Implementations of log should perform all necessary filtering internally.

    -
    source

    fn flush(&self)

    Flushes any buffered records.

    -

    Implementations on Foreign Types§

    source§

    impl<T> Log for &Twhere - T: ?Sized + Log,

    source§

    fn enabled(&self, metadata: &Metadata<'_>) -> bool

    source§

    fn log(&self, record: &Record<'_>)

    source§

    fn flush(&self)

    Implementors§

    \ No newline at end of file +
    source

    fn flush(&self)

    Flushes any buffered records.

    +
    §For implementors
    +

    This method isn’t called automatically by the log! macros. +It can be called manually on shut-down to ensure any in-flight records are flushed.

    +

    Implementations on Foreign Types§

    source§

    impl<T> Log for &T
    where + T: ?Sized + Log,

    source§

    fn enabled(&self, metadata: &Metadata<'_>) -> bool

    source§

    fn log(&self, record: &Record<'_>)

    source§

    fn flush(&self)

    Implementors§

    \ No newline at end of file diff --git a/proc_macro2/all.html b/proc_macro2/all.html index e90fb5d..ac0d7d0 100644 --- a/proc_macro2/all.html +++ b/proc_macro2/all.html @@ -1 +1 @@ -List of all items in this crate
    \ No newline at end of file +List of all items in this crate
    \ No newline at end of file diff --git a/proc_macro2/enum.Delimiter.html b/proc_macro2/enum.Delimiter.html index 105b2fc..6f22446 100644 --- a/proc_macro2/enum.Delimiter.html +++ b/proc_macro2/enum.Delimiter.html @@ -1,29 +1,37 @@ -Delimiter in proc_macro2 - Rust
    pub enum Delimiter {
    +Delimiter in proc_macro2 - Rust
    proc_macro2

    Enum Delimiter

    source
    pub enum Delimiter {
         Parenthesis,
         Brace,
         Bracket,
         None,
     }
    Expand description

    Describes how a sequence of token trees is delimited.

    -

    Variants§

    §

    Parenthesis

    ( ... )

    +

    Variants§

    §

    Parenthesis

    ( ... )

    §

    Brace

    { ... }

    §

    Bracket

    [ ... ]

    -
    §

    None

    Ø ... Ø

    -

    An implicit delimiter, that may, for example, appear around tokens +

    §

    None

    ∅ ... ∅

    +

    An invisible delimiter, that may, for example, appear around tokens coming from a “macro variable” $var. It is important to preserve operator priorities in cases like $var * 3 where $var is 1 + 2. -Implicit delimiters may not survive roundtrip of a token stream through +Invisible delimiters may not survive roundtrip of a token stream through a string.

    -

    Trait Implementations§

    source§

    impl Clone for Delimiter

    source§

    fn clone(&self) -> Delimiter

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Delimiter

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq<Delimiter> for Delimiter

    source§

    fn eq(&self, other: &Delimiter) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for Delimiter

    source§

    impl Eq for Delimiter

    source§

    impl StructuralEq for Delimiter

    source§

    impl StructuralPartialEq for Delimiter

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    +

    Note: rustc currently can ignore the grouping of tokens delimited by None in the output +of a proc_macro. Only None-delimited groups created by a macro_rules macro in the input +of a proc_macro macro are preserved, and only in very specific circumstances. +Any None-delimited groups (re)created by a proc_macro will therefore not preserve +operator priorities as indicated above. The other Delimiter variants should be used +instead in this context. This is a rustc bug. For details, see +rust-lang/rust#67062.

    +

    Trait Implementations§

    source§

    impl Clone for Delimiter

    source§

    fn clone(&self) -> Delimiter

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Delimiter

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq for Delimiter

    source§

    fn eq(&self, other: &Delimiter) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Copy for Delimiter

    source§

    impl Eq for Delimiter

    source§

    impl StructuralPartialEq for Delimiter

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/proc_macro2/enum.Spacing.html b/proc_macro2/enum.Spacing.html index b19d596..1a130b0 100644 --- a/proc_macro2/enum.Spacing.html +++ b/proc_macro2/enum.Spacing.html @@ -1,23 +1,23 @@ -Spacing in proc_macro2 - Rust

    Enum proc_macro2::Spacing

    source ·
    pub enum Spacing {
    +Spacing in proc_macro2 - Rust
    proc_macro2

    Enum Spacing

    source
    pub enum Spacing {
         Alone,
         Joint,
     }
    Expand description

    Whether a Punct is followed immediately by another Punct or followed by another token or whitespace.

    -

    Variants§

    §

    Alone

    E.g. + is Alone in + =, +ident or +().

    +

    Variants§

    §

    Alone

    E.g. + is Alone in + =, +ident or +().

    §

    Joint

    E.g. + is Joint in += or ' is Joint in '#.

    Additionally, single quote ' can join with identifiers to form lifetimes 'ident.

    -

    Trait Implementations§

    source§

    impl Clone for Spacing

    source§

    fn clone(&self) -> Spacing

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Spacing

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq<Spacing> for Spacing

    source§

    fn eq(&self, other: &Spacing) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for Spacing

    source§

    impl Eq for Spacing

    source§

    impl StructuralEq for Spacing

    source§

    impl StructuralPartialEq for Spacing

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for Spacing

    source§

    fn clone(&self) -> Spacing

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Spacing

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq for Spacing

    source§

    fn eq(&self, other: &Spacing) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Copy for Spacing

    source§

    impl Eq for Spacing

    source§

    impl StructuralPartialEq for Spacing

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/proc_macro2/enum.TokenTree.html b/proc_macro2/enum.TokenTree.html index 4920e43..8092d90 100644 --- a/proc_macro2/enum.TokenTree.html +++ b/proc_macro2/enum.TokenTree.html @@ -1,35 +1,36 @@ -TokenTree in proc_macro2 - Rust
    pub enum TokenTree {
    +TokenTree in proc_macro2 - Rust
    proc_macro2

    Enum TokenTree

    source
    pub enum TokenTree {
         Group(Group),
         Ident(Ident),
         Punct(Punct),
         Literal(Literal),
     }
    Expand description

    A single token or a delimited sequence of token trees (e.g. [1, (), ..]).

    -

    Variants§

    §

    Group(Group)

    A token stream surrounded by bracket delimiters.

    +

    Variants§

    §

    Group(Group)

    A token stream surrounded by bracket delimiters.

    §

    Ident(Ident)

    An identifier.

    §

    Punct(Punct)

    A single punctuation character (+, ,, $, etc.).

    -
    §

    Literal(Literal)

    A literal character ('a'), string ("hello"), number (2.3), etc.

    -

    Implementations§

    source§

    impl TokenTree

    source

    pub fn span(&self) -> Span

    Returns the span of this tree, delegating to the span method of +

    §

    Literal(Literal)

    A literal character ('a'), string ("hello"), number (2.3), etc.

    +

    Implementations§

    source§

    impl TokenTree

    source

    pub fn span(&self) -> Span

    Returns the span of this tree, delegating to the span method of the contained token or a delimited stream.

    -
    source

    pub fn set_span(&mut self, span: Span)

    Configures the span for only this token.

    +
    source

    pub fn set_span(&mut self, span: Span)

    Configures the span for only this token.

    Note that if this token is a Group then this method will not configure the span of each of the internal tokens, this will simply delegate to the set_span method of each variant.

    -

    Trait Implementations§

    source§

    impl Clone for TokenTree

    source§

    fn clone(&self) -> TokenTree

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TokenTree

    Prints token tree in a form convenient for debugging.

    -
    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for TokenTree

    Prints the token tree as a string that is supposed to be losslessly +

    Trait Implementations§

    source§

    impl Clone for TokenTree

    source§

    fn clone(&self) -> TokenTree

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TokenTree

    Prints token tree in a form convenient for debugging.

    +
    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for TokenTree

    Prints the token tree as a string that is supposed to be losslessly convertible back into the same token tree (modulo spans), except for possibly TokenTree::Groups with Delimiter::None delimiters and negative numeric literals.

    -
    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Extend<TokenTree> for TokenStream

    source§

    fn extend<I: IntoIterator<Item = TokenTree>>(&mut self, streams: I)

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, item: A)

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    source§

    impl From<Group> for TokenTree

    source§

    fn from(g: Group) -> Self

    Converts to this type from the input type.
    source§

    impl From<Ident> for TokenTree

    source§

    fn from(g: Ident) -> Self

    Converts to this type from the input type.
    source§

    impl From<Literal> for TokenTree

    source§

    fn from(g: Literal) -> Self

    Converts to this type from the input type.
    source§

    impl From<Punct> for TokenTree

    source§

    fn from(g: Punct) -> Self

    Converts to this type from the input type.
    source§

    impl From<TokenTree> for TokenStream

    source§

    fn from(token: TokenTree) -> Self

    Converts to this type from the input type.
    source§

    impl FromIterator<TokenTree> for TokenStream

    Collects a number of token trees into a single stream.

    -
    source§

    fn from_iter<I: IntoIterator<Item = TokenTree>>(streams: I) -> Self

    Creates a value from an iterator. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Extend<TokenTree> for TokenStream

    source§

    fn extend<I: IntoIterator<Item = TokenTree>>(&mut self, streams: I)

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, item: A)

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    source§

    impl From<Group> for TokenTree

    source§

    fn from(g: Group) -> Self

    Converts to this type from the input type.
    source§

    impl From<Ident> for TokenTree

    source§

    fn from(g: Ident) -> Self

    Converts to this type from the input type.
    source§

    impl From<Literal> for TokenTree

    source§

    fn from(g: Literal) -> Self

    Converts to this type from the input type.
    source§

    impl From<Punct> for TokenTree

    source§

    fn from(g: Punct) -> Self

    Converts to this type from the input type.
    source§

    impl From<TokenTree> for TokenStream

    source§

    fn from(token: TokenTree) -> Self

    Converts to this type from the input type.
    source§

    impl FromIterator<TokenTree> for TokenStream

    Collects a number of token trees into a single stream.

    +
    source§

    fn from_iter<I: IntoIterator<Item = TokenTree>>(streams: I) -> Self

    Creates a value from an iterator. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for Twhere - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/proc_macro2/extra/index.html b/proc_macro2/extra/index.html index 9c8ee70..eab43b7 100644 --- a/proc_macro2/extra/index.html +++ b/proc_macro2/extra/index.html @@ -1,4 +1,4 @@ -proc_macro2::extra - Rust

    Module proc_macro2::extra

    source ·
    Expand description

    Items which do not have a correspondence to any API in the proc_macro crate, +proc_macro2::extra - Rust

    proc_macro2

    Module extra

    source
    Expand description

    Items which do not have a correspondence to any API in the proc_macro crate, but are necessary to include in proc-macro2.

    -

    Structs

    • An object that holds a Group’s span_open() and span_close() together -(in a more compact representation than holding those 2 spans individually.
    \ No newline at end of file +

    Structs§

    • An object that holds a Group’s span_open() and span_close() together +in a more compact representation than holding those 2 spans individually.
    \ No newline at end of file diff --git a/proc_macro2/extra/struct.DelimSpan.html b/proc_macro2/extra/struct.DelimSpan.html index 050a2df..1360a30 100644 --- a/proc_macro2/extra/struct.DelimSpan.html +++ b/proc_macro2/extra/struct.DelimSpan.html @@ -1,17 +1,18 @@ -DelimSpan in proc_macro2::extra - Rust
    pub struct DelimSpan { /* private fields */ }
    Expand description

    An object that holds a Group’s span_open() and span_close() together -(in a more compact representation than holding those 2 spans individually.

    -

    Implementations§

    source§

    impl DelimSpan

    source

    pub fn join(&self) -> Span

    Returns a span covering the entire delimited group.

    -
    source

    pub fn open(&self) -> Span

    Returns a span for the opening punctuation of the group only.

    -
    source

    pub fn close(&self) -> Span

    Returns a span for the closing punctuation of the group only.

    -

    Trait Implementations§

    source§

    impl Clone for DelimSpan

    source§

    fn clone(&self) -> DelimSpan

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for DelimSpan

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Copy for DelimSpan

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +DelimSpan in proc_macro2::extra - Rust
    proc_macro2::extra

    Struct DelimSpan

    source
    pub struct DelimSpan { /* private fields */ }
    Expand description

    An object that holds a Group’s span_open() and span_close() together +in a more compact representation than holding those 2 spans individually.

    +

    Implementations§

    source§

    impl DelimSpan

    source

    pub fn join(&self) -> Span

    Returns a span covering the entire delimited group.

    +
    source

    pub fn open(&self) -> Span

    Returns a span for the opening punctuation of the group only.

    +
    source

    pub fn close(&self) -> Span

    Returns a span for the closing punctuation of the group only.

    +

    Trait Implementations§

    source§

    impl Clone for DelimSpan

    source§

    fn clone(&self) -> DelimSpan

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for DelimSpan

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Copy for DelimSpan

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/proc_macro2/index.html b/proc_macro2/index.html index fa60d2c..a2d411e 100644 --- a/proc_macro2/index.html +++ b/proc_macro2/index.html @@ -1,4 +1,4 @@ -proc_macro2 - Rust

    Crate proc_macro2

    source ·
    Expand description

    githubcrates-iodocs-rs

    +proc_macro2 - Rust

    Crate proc_macro2

    source
    Expand description

    githubcrates-iodocs-rs


    A wrapper around the procedural macro API of the compiler’s proc_macro crate. This library serves two purposes:

    @@ -21,7 +21,7 @@ a macro to be testable in isolation, they must be implemented using proc_macro2.

    -

    Usage

    +

    §Usage

    The skeleton of a typical procedural macro typically looks like this:

    extern crate proc_macro;
    @@ -38,7 +38,7 @@ a macro to be testable in isolation, they must be implemented using
     }

    If parsing with Syn, you’ll use parse_macro_input! instead to propagate parse errors correctly back to the compiler when parsing fails.

    -

    Unstable features

    +

    §Unstable features

    The default feature set of proc-macro2 tracks the most recent stable compiler API. Functionality in proc_macro that is not yet stable is not exposed by proc-macro2 by default.

    @@ -47,18 +47,17 @@ compiler, the procmacro2_semver_exempt config flag must be passed t rustc. We will polyfill those nightly-only APIs back to Rust 1.56.0. As these are unstable APIs that track the nightly compiler, minor versions of proc-macro2 may make breaking changes to them at any time.

    -
    RUSTFLAGS='--cfg procmacro2_semver_exempt' cargo build
    -
    +
    RUSTFLAGS='--cfg procmacro2_semver_exempt' cargo build

    Note that this must not only be done for your crate, but for any crate that depends on your crate. This infectious nature is intentional, as it serves as a reminder that you are outside of the normal semver guarantees.

    Semver exempt methods are marked as such in the proc-macro2 documentation.

    -

    Thread-Safety

    +

    §Thread-Safety

    Most types in this crate are !Sync because the underlying compiler types make use of thread-local memory, meaning they cannot be accessed from a different thread.

    -

    Modules

    • Items which do not have a correspondence to any API in the proc_macro crate, -but are necessary to include in proc-macro2.
    • Public implementation details for the TokenStream type, such as iterators.

    Structs

    • A delimited token stream.
    • A word of Rust code, which may be a keyword or legal variable name.
    • Error returned from TokenStream::from_str.
    • A literal string ("hello"), byte string (b"hello"), character ('a'), +

    Modules§

    • Items which do not have a correspondence to any API in the proc_macro crate, +but are necessary to include in proc-macro2.
    • Public implementation details for the TokenStream type, such as iterators.

    Structs§

    • A delimited token stream.
    • A word of Rust code, which may be a keyword or legal variable name.
    • Error returned from TokenStream::from_str.
    • A literal string ("hello"), byte string (b"hello"), character ('a'), byte character (b'a'), an integer or floating point number with or without -a suffix (1, 1u8, 2.3, 2.3f32).
    • A Punct is a single punctuation character like +, - or #.
    • A region of source code, along with macro expansion information.
    • An abstract stream of tokens, or more concretely a sequence of token trees.

    Enums

    • Describes how a sequence of token trees is delimited.
    • Whether a Punct is followed immediately by another Punct or followed by -another token or whitespace.
    • A single token or a delimited sequence of token trees (e.g. [1, (), ..]).
    \ No newline at end of file +a suffix (1, 1u8, 2.3, 2.3f32).
  • A Punct is a single punctuation character like +, - or #.
  • A region of source code, along with macro expansion information.
  • An abstract stream of tokens, or more concretely a sequence of token trees.
  • Enums§

    • Describes how a sequence of token trees is delimited.
    • Whether a Punct is followed immediately by another Punct or followed by +another token or whitespace.
    • A single token or a delimited sequence of token trees (e.g. [1, (), ..]).
    \ No newline at end of file diff --git a/proc_macro2/struct.Group.html b/proc_macro2/struct.Group.html index 3cff770..ba5507e 100644 --- a/proc_macro2/struct.Group.html +++ b/proc_macro2/struct.Group.html @@ -1,46 +1,44 @@ -Group in proc_macro2 - Rust

    Struct proc_macro2::Group

    source ·
    pub struct Group { /* private fields */ }
    Expand description

    A delimited token stream.

    +Group in proc_macro2 - Rust
    proc_macro2

    Struct Group

    source
    pub struct Group { /* private fields */ }
    Expand description

    A delimited token stream.

    A Group internally contains a TokenStream which is surrounded by Delimiters.

    -

    Implementations§

    source§

    impl Group

    source

    pub fn new(delimiter: Delimiter, stream: TokenStream) -> Self

    Creates a new Group with the given delimiter and token stream.

    +

    Implementations§

    source§

    impl Group

    source

    pub fn new(delimiter: Delimiter, stream: TokenStream) -> Self

    Creates a new Group with the given delimiter and token stream.

    This constructor will set the span for this group to Span::call_site(). To change the span you can use the set_span method below.

    -
    source

    pub fn delimiter(&self) -> Delimiter

    Returns the punctuation used as the delimiter for this group: a set of +

    source

    pub fn delimiter(&self) -> Delimiter

    Returns the punctuation used as the delimiter for this group: a set of parentheses, square brackets, or curly braces.

    -
    source

    pub fn stream(&self) -> TokenStream

    Returns the TokenStream of tokens that are delimited in this Group.

    +
    source

    pub fn stream(&self) -> TokenStream

    Returns the TokenStream of tokens that are delimited in this Group.

    Note that the returned token stream does not include the delimiter returned above.

    -
    source

    pub fn span(&self) -> Span

    Returns the span for the delimiters of this token stream, spanning the +

    source

    pub fn span(&self) -> Span

    Returns the span for the delimiters of this token stream, spanning the entire Group.

    pub fn span(&self) -> Span {
    -           ^^^^^^^
    -
    source

    pub fn span_open(&self) -> Span

    Returns the span pointing to the opening delimiter of this group.

    + ^^^^^^^
    source

    pub fn span_open(&self) -> Span

    Returns the span pointing to the opening delimiter of this group.

    pub fn span_open(&self) -> Span {
    -                ^
    -
    source

    pub fn span_close(&self) -> Span

    Returns the span pointing to the closing delimiter of this group.

    + ^
    source

    pub fn span_close(&self) -> Span

    Returns the span pointing to the closing delimiter of this group.

    pub fn span_close(&self) -> Span {
    -                       ^
    -
    source

    pub fn delim_span(&self) -> DelimSpan

    Returns an object that holds this group’s span_open() and + ^

    source

    pub fn delim_span(&self) -> DelimSpan

    Returns an object that holds this group’s span_open() and span_close() together (in a more compact representation than holding those 2 spans individually).

    -
    source

    pub fn set_span(&mut self, span: Span)

    Configures the span for this Group’s delimiters, but not its internal +

    source

    pub fn set_span(&mut self, span: Span)

    Configures the span for this Group’s delimiters, but not its internal tokens.

    This method will not set the span of all the internal tokens spanned by this group, but rather it will only set the span of the delimiter tokens at the level of the Group.

    -

    Trait Implementations§

    source§

    impl Clone for Group

    source§

    fn clone(&self) -> Group

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Group

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for Group

    Prints the group as a string that should be losslessly convertible back +

    Trait Implementations§

    source§

    impl Clone for Group

    source§

    fn clone(&self) -> Group

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Group

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for Group

    Prints the group as a string that should be losslessly convertible back into the same group (modulo spans), except for possibly TokenTree::Groups with Delimiter::None delimiters.

    -
    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Group> for TokenTree

    source§

    fn from(g: Group) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Group

    §

    impl !Send for Group

    §

    impl !Sync for Group

    §

    impl Unpin for Group

    §

    impl UnwindSafe for Group

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Group> for TokenTree

    source§

    fn from(g: Group) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    §

    impl Freeze for Group

    §

    impl RefUnwindSafe for Group

    §

    impl !Send for Group

    §

    impl !Sync for Group

    §

    impl Unpin for Group

    §

    impl UnwindSafe for Group

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for Twhere - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/proc_macro2/struct.Ident.html b/proc_macro2/struct.Ident.html index 4421a08..297a802 100644 --- a/proc_macro2/struct.Ident.html +++ b/proc_macro2/struct.Ident.html @@ -1,4 +1,4 @@ -Ident in proc_macro2 - Rust

    Struct proc_macro2::Ident

    source ·
    pub struct Ident { /* private fields */ }
    Expand description

    A word of Rust code, which may be a keyword or legal variable name.

    +Ident in proc_macro2 - Rust
    proc_macro2

    Struct Ident

    source
    pub struct Ident { /* private fields */ }
    Expand description

    A word of Rust code, which may be a keyword or legal variable name.

    An identifier consists of at least one Unicode code point, the first of which has the XID_Start property and the rest of which have the XID_Continue property.

    @@ -10,7 +10,7 @@ property.

    keyword, though parsing one through its Parse implementation rejects Rust keywords. Use input.call(Ident::parse_any) when parsing to match the behaviour of Ident::new.

    -

    Examples

    +

    §Examples

    A new ident can be created from a string using the Ident::new function. A span must be provided explicitly which governs the name resolution behavior of the resulting identifier.

    @@ -18,9 +18,9 @@ behavior of the resulting identifier.

    use proc_macro2::{Ident, Span};
     
     fn main() {
    -    let call_ident = Ident::new("calligraphy", Span::call_site());
    +    let call_ident = Ident::new("calligraphy", Span::call_site());
     
    -    println!("{}", call_ident);
    +    println!("{}", call_ident);
     }

    An ident can be interpolated into a token stream using the quote! macro.

    @@ -28,14 +28,14 @@ behavior of the resulting identifier.

    use quote::quote; fn main() { - let ident = Ident::new("demo", Span::call_site()); + let ident = Ident::new("demo", Span::call_site()); // Create a variable binding whose name is this ident. - let expanded = quote! { let #ident = 10; }; + let expanded = quote! { let #ident = 10; }; // Create a variable binding with a slightly different name. - let temp_ident = Ident::new(&format!("new_{}", ident), Span::call_site()); - let expanded = quote! { let #temp_ident = 10; }; + let temp_ident = Ident::new(&format!("new_{}", ident), Span::call_site()); + let expanded = quote! { let #temp_ident = 10; }; }

    A string representation of the ident is available through the to_string() method.

    @@ -43,9 +43,9 @@ method.

    // Examine the ident as a string.
     let ident_string = ident.to_string();
     if ident_string.len() > 60 {
    -    println!("Very long identifier: {}", ident_string)
    +    println!("Very long identifier: {}", ident_string)
     }
    -

    Implementations§

    source§

    impl Ident

    source

    pub fn new(string: &str, span: Span) -> Self

    Creates a new Ident with the given string as well as the specified +

    Implementations§

    source§

    impl Ident

    source

    pub fn new(string: &str, span: Span) -> Self

    Creates a new Ident with the given string as well as the specified span.

    The string argument must be a valid identifier permitted by the language, otherwise the function will panic.

    @@ -61,7 +61,7 @@ span will be resolved at the location of the macro definition and other code at the macro call site will not be able to refer to them.

    Due to the current importance of hygiene this constructor, unlike other tokens, requires a Span to be specified at construction.

    -
    Panics
    +
    §Panics

    Panics if the input string is neither a keyword nor a legal variable name. If you are not sure whether the string contains an identifier and need to handle an error case, use @@ -69,38 +69,38 @@ need to handle an error case, use style="padding-right:0;">syn::parse_str::<Ident> rather than Ident::new.

    -
    source

    pub fn new_raw(string: &str, span: Span) -> Self

    Same as Ident::new, but creates a raw identifier (r#ident). The +

    source

    pub fn new_raw(string: &str, span: Span) -> Self

    Same as Ident::new, but creates a raw identifier (r#ident). The string argument must be a valid identifier permitted by the language (including keywords, e.g. fn). Keywords which are usable in path segments (e.g. self, super) are not supported, and will cause a panic.

    -
    source

    pub fn span(&self) -> Span

    Returns the span of this Ident.

    -
    source

    pub fn set_span(&mut self, span: Span)

    Configures the span of this Ident, possibly changing its hygiene +

    source

    pub fn span(&self) -> Span

    Returns the span of this Ident.

    +
    source

    pub fn set_span(&mut self, span: Span)

    Configures the span of this Ident, possibly changing its hygiene context.

    -

    Trait Implementations§

    source§

    impl Clone for Ident

    source§

    fn clone(&self) -> Ident

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Ident

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for Ident

    Prints the identifier as a string that should be losslessly convertible back +

    Trait Implementations§

    source§

    impl Clone for Ident

    source§

    fn clone(&self) -> Ident

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Ident

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for Ident

    Prints the identifier as a string that should be losslessly convertible back into the same identifier.

    -
    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Ident> for TokenTree

    source§

    fn from(g: Ident) -> Self

    Converts to this type from the input type.
    source§

    impl Hash for Ident

    source§

    fn hash<H: Hasher>(&self, hasher: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Ord for Ident

    source§

    fn cmp(&self, other: &Ident) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere - Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Selfwhere - Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

    Restrict a value to a certain interval. Read more
    source§

    impl PartialEq<Ident> for Ident

    source§

    fn eq(&self, other: &Ident) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl<T> PartialEq<T> for Identwhere - T: ?Sized + AsRef<str>,

    source§

    fn eq(&self, other: &T) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd<Ident> for Ident

    source§

    fn partial_cmp(&self, other: &Ident) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    source§

    impl Eq for Ident

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Ident

    §

    impl !Send for Ident

    §

    impl !Sync for Ident

    §

    impl Unpin for Ident

    §

    impl UnwindSafe for Ident

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Ident> for TokenTree

    source§

    fn from(g: Ident) -> Self

    Converts to this type from the input type.
    source§

    impl Hash for Ident

    source§

    fn hash<H: Hasher>(&self, hasher: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Ord for Ident

    source§

    fn cmp(&self, other: &Ident) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where + Self: Sized,

    Restrict a value to a certain interval. Read more
    source§

    impl<T> PartialEq<T> for Ident
    where + T: ?Sized + AsRef<str>,

    source§

    fn eq(&self, other: &T) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl PartialEq for Ident

    source§

    fn eq(&self, other: &Ident) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl PartialOrd for Ident

    source§

    fn partial_cmp(&self, other: &Ident) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    Tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    Tests less than or equal to (for self and other) and is used by the +<= operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    Tests greater than (for self and other) and is used by the > +operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    Tests greater than or equal to (for self and other) and is used by +the >= operator. Read more
    source§

    impl Eq for Ident

    Auto Trait Implementations§

    §

    impl Freeze for Ident

    §

    impl RefUnwindSafe for Ident

    §

    impl !Send for Ident

    §

    impl !Sync for Ident

    §

    impl Unpin for Ident

    §

    impl UnwindSafe for Ident

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for Twhere - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/proc_macro2/struct.LexError.html b/proc_macro2/struct.LexError.html index 6b30a87..3dd3563 100644 --- a/proc_macro2/struct.LexError.html +++ b/proc_macro2/struct.LexError.html @@ -1,13 +1,13 @@ -LexError in proc_macro2 - Rust

    Struct proc_macro2::LexError

    source ·
    pub struct LexError { /* private fields */ }
    Expand description

    Error returned from TokenStream::from_str.

    -

    Implementations§

    source§

    impl LexError

    source

    pub fn span(&self) -> Span

    Trait Implementations§

    source§

    impl Debug for LexError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for LexError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for LexError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +LexError in proc_macro2 - Rust
    proc_macro2

    Struct LexError

    source
    pub struct LexError { /* private fields */ }
    Expand description

    Error returned from TokenStream::from_str.

    +

    Implementations§

    source§

    impl LexError

    source

    pub fn span(&self) -> Span

    Trait Implementations§

    source§

    impl Debug for LexError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for LexError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for LexError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    Returns the lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type-based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToString for Twhere - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/proc_macro2/struct.Literal.html b/proc_macro2/struct.Literal.html index b9a38dc..83f36c0 100644 --- a/proc_macro2/struct.Literal.html +++ b/proc_macro2/struct.Literal.html @@ -1,9 +1,9 @@ -Literal in proc_macro2 - Rust

    Struct proc_macro2::Literal

    source ·
    pub struct Literal { /* private fields */ }
    Expand description

    A literal string ("hello"), byte string (b"hello"), character ('a'), +Literal in proc_macro2 - Rust

    proc_macro2

    Struct Literal

    source
    pub struct Literal { /* private fields */ }
    Expand description

    A literal string ("hello"), byte string (b"hello"), character ('a'), byte character (b'a'), an integer or floating point number with or without a suffix (1, 1u8, 2.3, 2.3f32).

    Boolean literals like true and false do not belong here, they are Idents.

    -

    Implementations§

    source§

    impl Literal

    source

    pub fn u8_suffixed(n: u8) -> Literal

    Creates a new suffixed integer literal with the specified value.

    +

    Implementations§

    source§

    impl Literal

    source

    pub fn u8_suffixed(n: u8) -> Literal

    Creates a new suffixed integer literal with the specified value.

    This function will create an integer like 1u32 where the integer value specified is the first part of the token and the integral is also suffixed at the end. Literals created from negative numbers may @@ -12,7 +12,7 @@ broken into two tokens (- and positive literal).

    Literals created through this method have the Span::call_site() span by default, which can be configured with the set_span method below.

    -
    source

    pub fn u16_suffixed(n: u16) -> Literal

    Creates a new suffixed integer literal with the specified value.

    +
    source

    pub fn u16_suffixed(n: u16) -> Literal

    Creates a new suffixed integer literal with the specified value.

    This function will create an integer like 1u32 where the integer value specified is the first part of the token and the integral is also suffixed at the end. Literals created from negative numbers may @@ -21,7 +21,7 @@ broken into two tokens (- and positive literal).

    Literals created through this method have the Span::call_site() span by default, which can be configured with the set_span method below.

    -
    source

    pub fn u32_suffixed(n: u32) -> Literal

    Creates a new suffixed integer literal with the specified value.

    +
    source

    pub fn u32_suffixed(n: u32) -> Literal

    Creates a new suffixed integer literal with the specified value.

    This function will create an integer like 1u32 where the integer value specified is the first part of the token and the integral is also suffixed at the end. Literals created from negative numbers may @@ -30,7 +30,7 @@ broken into two tokens (- and positive literal).

    Literals created through this method have the Span::call_site() span by default, which can be configured with the set_span method below.

    -
    source

    pub fn u64_suffixed(n: u64) -> Literal

    Creates a new suffixed integer literal with the specified value.

    +
    source

    pub fn u64_suffixed(n: u64) -> Literal

    Creates a new suffixed integer literal with the specified value.

    This function will create an integer like 1u32 where the integer value specified is the first part of the token and the integral is also suffixed at the end. Literals created from negative numbers may @@ -39,7 +39,7 @@ broken into two tokens (- and positive literal).

    Literals created through this method have the Span::call_site() span by default, which can be configured with the set_span method below.

    -
    source

    pub fn u128_suffixed(n: u128) -> Literal

    Creates a new suffixed integer literal with the specified value.

    +
    source

    pub fn u128_suffixed(n: u128) -> Literal

    Creates a new suffixed integer literal with the specified value.

    This function will create an integer like 1u32 where the integer value specified is the first part of the token and the integral is also suffixed at the end. Literals created from negative numbers may @@ -48,7 +48,7 @@ broken into two tokens (- and positive literal).

    Literals created through this method have the Span::call_site() span by default, which can be configured with the set_span method below.

    -
    source

    pub fn usize_suffixed(n: usize) -> Literal

    Creates a new suffixed integer literal with the specified value.

    +
    source

    pub fn usize_suffixed(n: usize) -> Literal

    Creates a new suffixed integer literal with the specified value.

    This function will create an integer like 1u32 where the integer value specified is the first part of the token and the integral is also suffixed at the end. Literals created from negative numbers may @@ -57,7 +57,7 @@ broken into two tokens (- and positive literal).

    Literals created through this method have the Span::call_site() span by default, which can be configured with the set_span method below.

    -
    source

    pub fn i8_suffixed(n: i8) -> Literal

    Creates a new suffixed integer literal with the specified value.

    +
    source

    pub fn i8_suffixed(n: i8) -> Literal

    Creates a new suffixed integer literal with the specified value.

    This function will create an integer like 1u32 where the integer value specified is the first part of the token and the integral is also suffixed at the end. Literals created from negative numbers may @@ -66,7 +66,7 @@ broken into two tokens (- and positive literal).

    Literals created through this method have the Span::call_site() span by default, which can be configured with the set_span method below.

    -
    source

    pub fn i16_suffixed(n: i16) -> Literal

    Creates a new suffixed integer literal with the specified value.

    +
    source

    pub fn i16_suffixed(n: i16) -> Literal

    Creates a new suffixed integer literal with the specified value.

    This function will create an integer like 1u32 where the integer value specified is the first part of the token and the integral is also suffixed at the end. Literals created from negative numbers may @@ -75,7 +75,7 @@ broken into two tokens (- and positive literal).

    Literals created through this method have the Span::call_site() span by default, which can be configured with the set_span method below.

    -
    source

    pub fn i32_suffixed(n: i32) -> Literal

    Creates a new suffixed integer literal with the specified value.

    +
    source

    pub fn i32_suffixed(n: i32) -> Literal

    Creates a new suffixed integer literal with the specified value.

    This function will create an integer like 1u32 where the integer value specified is the first part of the token and the integral is also suffixed at the end. Literals created from negative numbers may @@ -84,7 +84,7 @@ broken into two tokens (- and positive literal).

    Literals created through this method have the Span::call_site() span by default, which can be configured with the set_span method below.

    -
    source

    pub fn i64_suffixed(n: i64) -> Literal

    Creates a new suffixed integer literal with the specified value.

    +
    source

    pub fn i64_suffixed(n: i64) -> Literal

    Creates a new suffixed integer literal with the specified value.

    This function will create an integer like 1u32 where the integer value specified is the first part of the token and the integral is also suffixed at the end. Literals created from negative numbers may @@ -93,7 +93,7 @@ broken into two tokens (- and positive literal).

    Literals created through this method have the Span::call_site() span by default, which can be configured with the set_span method below.

    -
    source

    pub fn i128_suffixed(n: i128) -> Literal

    Creates a new suffixed integer literal with the specified value.

    +
    source

    pub fn i128_suffixed(n: i128) -> Literal

    Creates a new suffixed integer literal with the specified value.

    This function will create an integer like 1u32 where the integer value specified is the first part of the token and the integral is also suffixed at the end. Literals created from negative numbers may @@ -102,7 +102,7 @@ broken into two tokens (- and positive literal).

    Literals created through this method have the Span::call_site() span by default, which can be configured with the set_span method below.

    -
    source

    pub fn isize_suffixed(n: isize) -> Literal

    Creates a new suffixed integer literal with the specified value.

    +
    source

    pub fn isize_suffixed(n: isize) -> Literal

    Creates a new suffixed integer literal with the specified value.

    This function will create an integer like 1u32 where the integer value specified is the first part of the token and the integral is also suffixed at the end. Literals created from negative numbers may @@ -111,7 +111,7 @@ broken into two tokens (- and positive literal).

    Literals created through this method have the Span::call_site() span by default, which can be configured with the set_span method below.

    -
    source

    pub fn u8_unsuffixed(n: u8) -> Literal

    Creates a new unsuffixed integer literal with the specified value.

    +
    source

    pub fn u8_unsuffixed(n: u8) -> Literal

    Creates a new unsuffixed integer literal with the specified value.

    This function will create an integer like 1 where the integer value specified is the first part of the token. No suffix is specified on this token, meaning that invocations like @@ -122,7 +122,7 @@ be broken into two tokens (- and positive literal).

    Literals created through this method have the Span::call_site() span by default, which can be configured with the set_span method below.

    -
    source

    pub fn u16_unsuffixed(n: u16) -> Literal

    Creates a new unsuffixed integer literal with the specified value.

    +
    source

    pub fn u16_unsuffixed(n: u16) -> Literal

    Creates a new unsuffixed integer literal with the specified value.

    This function will create an integer like 1 where the integer value specified is the first part of the token. No suffix is specified on this token, meaning that invocations like @@ -133,7 +133,7 @@ be broken into two tokens (- and positive literal).

    Literals created through this method have the Span::call_site() span by default, which can be configured with the set_span method below.

    -
    source

    pub fn u32_unsuffixed(n: u32) -> Literal

    Creates a new unsuffixed integer literal with the specified value.

    +
    source

    pub fn u32_unsuffixed(n: u32) -> Literal

    Creates a new unsuffixed integer literal with the specified value.

    This function will create an integer like 1 where the integer value specified is the first part of the token. No suffix is specified on this token, meaning that invocations like @@ -144,7 +144,7 @@ be broken into two tokens (- and positive literal).

    Literals created through this method have the Span::call_site() span by default, which can be configured with the set_span method below.

    -
    source

    pub fn u64_unsuffixed(n: u64) -> Literal

    Creates a new unsuffixed integer literal with the specified value.

    +
    source

    pub fn u64_unsuffixed(n: u64) -> Literal

    Creates a new unsuffixed integer literal with the specified value.

    This function will create an integer like 1 where the integer value specified is the first part of the token. No suffix is specified on this token, meaning that invocations like @@ -155,7 +155,7 @@ be broken into two tokens (- and positive literal).

    Literals created through this method have the Span::call_site() span by default, which can be configured with the set_span method below.

    -
    source

    pub fn u128_unsuffixed(n: u128) -> Literal

    Creates a new unsuffixed integer literal with the specified value.

    +
    source

    pub fn u128_unsuffixed(n: u128) -> Literal

    Creates a new unsuffixed integer literal with the specified value.

    This function will create an integer like 1 where the integer value specified is the first part of the token. No suffix is specified on this token, meaning that invocations like @@ -166,7 +166,7 @@ be broken into two tokens (- and positive literal).

    Literals created through this method have the Span::call_site() span by default, which can be configured with the set_span method below.

    -
    source

    pub fn usize_unsuffixed(n: usize) -> Literal

    Creates a new unsuffixed integer literal with the specified value.

    +
    source

    pub fn usize_unsuffixed(n: usize) -> Literal

    Creates a new unsuffixed integer literal with the specified value.

    This function will create an integer like 1 where the integer value specified is the first part of the token. No suffix is specified on this token, meaning that invocations like @@ -177,7 +177,7 @@ be broken into two tokens (- and positive literal).

    Literals created through this method have the Span::call_site() span by default, which can be configured with the set_span method below.

    -
    source

    pub fn i8_unsuffixed(n: i8) -> Literal

    Creates a new unsuffixed integer literal with the specified value.

    +
    source

    pub fn i8_unsuffixed(n: i8) -> Literal

    Creates a new unsuffixed integer literal with the specified value.

    This function will create an integer like 1 where the integer value specified is the first part of the token. No suffix is specified on this token, meaning that invocations like @@ -188,7 +188,7 @@ be broken into two tokens (- and positive literal).

    Literals created through this method have the Span::call_site() span by default, which can be configured with the set_span method below.

    -
    source

    pub fn i16_unsuffixed(n: i16) -> Literal

    Creates a new unsuffixed integer literal with the specified value.

    +
    source

    pub fn i16_unsuffixed(n: i16) -> Literal

    Creates a new unsuffixed integer literal with the specified value.

    This function will create an integer like 1 where the integer value specified is the first part of the token. No suffix is specified on this token, meaning that invocations like @@ -199,7 +199,7 @@ be broken into two tokens (- and positive literal).

    Literals created through this method have the Span::call_site() span by default, which can be configured with the set_span method below.

    -
    source

    pub fn i32_unsuffixed(n: i32) -> Literal

    Creates a new unsuffixed integer literal with the specified value.

    +
    source

    pub fn i32_unsuffixed(n: i32) -> Literal

    Creates a new unsuffixed integer literal with the specified value.

    This function will create an integer like 1 where the integer value specified is the first part of the token. No suffix is specified on this token, meaning that invocations like @@ -210,7 +210,7 @@ be broken into two tokens (- and positive literal).

    Literals created through this method have the Span::call_site() span by default, which can be configured with the set_span method below.

    -
    source

    pub fn i64_unsuffixed(n: i64) -> Literal

    Creates a new unsuffixed integer literal with the specified value.

    +
    source

    pub fn i64_unsuffixed(n: i64) -> Literal

    Creates a new unsuffixed integer literal with the specified value.

    This function will create an integer like 1 where the integer value specified is the first part of the token. No suffix is specified on this token, meaning that invocations like @@ -221,7 +221,7 @@ be broken into two tokens (- and positive literal).

    Literals created through this method have the Span::call_site() span by default, which can be configured with the set_span method below.

    -
    source

    pub fn i128_unsuffixed(n: i128) -> Literal

    Creates a new unsuffixed integer literal with the specified value.

    +
    source

    pub fn i128_unsuffixed(n: i128) -> Literal

    Creates a new unsuffixed integer literal with the specified value.

    This function will create an integer like 1 where the integer value specified is the first part of the token. No suffix is specified on this token, meaning that invocations like @@ -232,7 +232,7 @@ be broken into two tokens (- and positive literal).

    Literals created through this method have the Span::call_site() span by default, which can be configured with the set_span method below.

    -
    source

    pub fn isize_unsuffixed(n: isize) -> Literal

    Creates a new unsuffixed integer literal with the specified value.

    +
    source

    pub fn isize_unsuffixed(n: isize) -> Literal

    Creates a new unsuffixed integer literal with the specified value.

    This function will create an integer like 1 where the integer value specified is the first part of the token. No suffix is specified on this token, meaning that invocations like @@ -243,67 +243,70 @@ be broken into two tokens (- and positive literal).

    Literals created through this method have the Span::call_site() span by default, which can be configured with the set_span method below.

    -
    source

    pub fn f64_unsuffixed(f: f64) -> Literal

    Creates a new unsuffixed floating-point literal.

    +
    source

    pub fn f64_unsuffixed(f: f64) -> Literal

    Creates a new unsuffixed floating-point literal.

    This constructor is similar to those like Literal::i8_unsuffixed where the float’s value is emitted directly into the token but no suffix is used, so it may be inferred to be a f64 later in the compiler. Literals created from negative numbers may not survive round-trips through TokenStream or strings and may be broken into two tokens (- and positive literal).

    -
    Panics
    +
    §Panics

    This function requires that the specified float is finite, for example if it is infinity or NaN this function will panic.

    -
    source

    pub fn f64_suffixed(f: f64) -> Literal

    Creates a new suffixed floating-point literal.

    +
    source

    pub fn f64_suffixed(f: f64) -> Literal

    Creates a new suffixed floating-point literal.

    This constructor will create a literal like 1.0f64 where the value specified is the preceding part of the token and f64 is the suffix of the token. This token will always be inferred to be an f64 in the compiler. Literals created from negative numbers may not survive round-trips through TokenStream or strings and may be broken into two tokens (- and positive literal).

    -
    Panics
    +
    §Panics

    This function requires that the specified float is finite, for example if it is infinity or NaN this function will panic.

    -
    source

    pub fn f32_unsuffixed(f: f32) -> Literal

    Creates a new unsuffixed floating-point literal.

    +
    source

    pub fn f32_unsuffixed(f: f32) -> Literal

    Creates a new unsuffixed floating-point literal.

    This constructor is similar to those like Literal::i8_unsuffixed where the float’s value is emitted directly into the token but no suffix is used, so it may be inferred to be a f64 later in the compiler. Literals created from negative numbers may not survive round-trips through TokenStream or strings and may be broken into two tokens (- and positive literal).

    -
    Panics
    +
    §Panics

    This function requires that the specified float is finite, for example if it is infinity or NaN this function will panic.

    -
    source

    pub fn f32_suffixed(f: f32) -> Literal

    Creates a new suffixed floating-point literal.

    +
    source

    pub fn f32_suffixed(f: f32) -> Literal

    Creates a new suffixed floating-point literal.

    This constructor will create a literal like 1.0f32 where the value specified is the preceding part of the token and f32 is the suffix of the token. This token will always be inferred to be an f32 in the compiler. Literals created from negative numbers may not survive round-trips through TokenStream or strings and may be broken into two tokens (- and positive literal).

    -
    Panics
    +
    §Panics

    This function requires that the specified float is finite, for example if it is infinity or NaN this function will panic.

    -
    source

    pub fn string(string: &str) -> Literal

    String literal.

    -
    source

    pub fn character(ch: char) -> Literal

    Character literal.

    -
    source

    pub fn byte_string(s: &[u8]) -> Literal

    Byte string literal.

    -
    source

    pub fn span(&self) -> Span

    Returns the span encompassing this literal.

    -
    source

    pub fn set_span(&mut self, span: Span)

    Configures the span associated for this literal.

    -
    source

    pub fn subspan<R: RangeBounds<usize>>(&self, range: R) -> Option<Span>

    Returns a Span that is a subset of self.span() containing only +

    source

    pub fn string(string: &str) -> Literal

    String literal.

    +
    source

    pub fn character(ch: char) -> Literal

    Character literal.

    +
    source

    pub fn byte_character(byte: u8) -> Literal

    Byte character literal.

    +
    source

    pub fn byte_string(bytes: &[u8]) -> Literal

    Byte string literal.

    +
    source

    pub fn c_string(string: &CStr) -> Literal

    C string literal.

    +
    source

    pub fn span(&self) -> Span

    Returns the span encompassing this literal.

    +
    source

    pub fn set_span(&mut self, span: Span)

    Configures the span associated for this literal.

    +
    source

    pub fn subspan<R: RangeBounds<usize>>(&self, range: R) -> Option<Span>

    Returns a Span that is a subset of self.span() containing only the source bytes in range range. Returns None if the would-be trimmed span is outside the bounds of self.

    Warning: the underlying proc_macro::Literal::subspan method is nightly-only. When called from within a procedural macro not using a nightly compiler, this method will always return None.

    -

    Trait Implementations§

    source§

    impl Clone for Literal

    source§

    fn clone(&self) -> Literal

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Literal

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for Literal

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Literal> for TokenTree

    source§

    fn from(g: Literal) -> Self

    Converts to this type from the input type.
    source§

    impl FromStr for Literal

    §

    type Err = LexError

    The associated error which can be returned from parsing.
    source§

    fn from_str(repr: &str) -> Result<Self, LexError>

    Parses a string s to return a value of this type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for Literal

    source§

    fn clone(&self) -> Literal

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Literal

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for Literal

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Literal> for TokenTree

    source§

    fn from(g: Literal) -> Self

    Converts to this type from the input type.
    source§

    impl FromStr for Literal

    source§

    type Err = LexError

    The associated error which can be returned from parsing.
    source§

    fn from_str(repr: &str) -> Result<Self, LexError>

    Parses a string s to return a value of this type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for Twhere - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/proc_macro2/struct.Punct.html b/proc_macro2/struct.Punct.html index d2ac655..1ea92cc 100644 --- a/proc_macro2/struct.Punct.html +++ b/proc_macro2/struct.Punct.html @@ -1,31 +1,32 @@ -Punct in proc_macro2 - Rust

    Struct proc_macro2::Punct

    source ·
    pub struct Punct { /* private fields */ }
    Expand description

    A Punct is a single punctuation character like +, - or #.

    +Punct in proc_macro2 - Rust
    proc_macro2

    Struct Punct

    source
    pub struct Punct { /* private fields */ }
    Expand description

    A Punct is a single punctuation character like +, - or #.

    Multicharacter operators like += are represented as two instances of Punct with different forms of Spacing returned.

    -

    Implementations§

    source§

    impl Punct

    source

    pub fn new(ch: char, spacing: Spacing) -> Self

    Creates a new Punct from the given character and spacing.

    +

    Implementations§

    source§

    impl Punct

    source

    pub fn new(ch: char, spacing: Spacing) -> Self

    Creates a new Punct from the given character and spacing.

    The ch argument must be a valid punctuation character permitted by the language, otherwise the function will panic.

    The returned Punct will have the default span of Span::call_site() which can be further configured with the set_span method below.

    -
    source

    pub fn as_char(&self) -> char

    Returns the value of this punctuation character as char.

    -
    source

    pub fn spacing(&self) -> Spacing

    Returns the spacing of this punctuation character, indicating whether +

    source

    pub fn as_char(&self) -> char

    Returns the value of this punctuation character as char.

    +
    source

    pub fn spacing(&self) -> Spacing

    Returns the spacing of this punctuation character, indicating whether it’s immediately followed by another Punct in the token stream, so they can potentially be combined into a multicharacter operator (Joint), or it’s followed by some other token or whitespace (Alone) so the operator has certainly ended.

    -
    source

    pub fn span(&self) -> Span

    Returns the span for this punctuation character.

    -
    source

    pub fn set_span(&mut self, span: Span)

    Configure the span for this punctuation character.

    -

    Trait Implementations§

    source§

    impl Clone for Punct

    source§

    fn clone(&self) -> Punct

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Punct

    source§

    fn fmt(&self, fmt: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for Punct

    Prints the punctuation character as a string that should be losslessly +

    source

    pub fn span(&self) -> Span

    Returns the span for this punctuation character.

    +
    source

    pub fn set_span(&mut self, span: Span)

    Configure the span for this punctuation character.

    +

    Trait Implementations§

    source§

    impl Clone for Punct

    source§

    fn clone(&self) -> Punct

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Punct

    source§

    fn fmt(&self, fmt: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for Punct

    Prints the punctuation character as a string that should be losslessly convertible back into the same character.

    -
    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Punct> for TokenTree

    source§

    fn from(g: Punct) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Punct

    §

    impl !Send for Punct

    §

    impl !Sync for Punct

    §

    impl Unpin for Punct

    §

    impl UnwindSafe for Punct

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Punct> for TokenTree

    source§

    fn from(g: Punct) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    §

    impl Freeze for Punct

    §

    impl RefUnwindSafe for Punct

    §

    impl !Send for Punct

    §

    impl !Sync for Punct

    §

    impl Unpin for Punct

    §

    impl UnwindSafe for Punct

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for Twhere - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/proc_macro2/struct.Span.html b/proc_macro2/struct.Span.html index 30ea5a4..3a9a807 100644 --- a/proc_macro2/struct.Span.html +++ b/proc_macro2/struct.Span.html @@ -1,43 +1,44 @@ -Span in proc_macro2 - Rust

    Struct proc_macro2::Span

    source ·
    pub struct Span { /* private fields */ }
    Expand description

    A region of source code, along with macro expansion information.

    -

    Implementations§

    source§

    impl Span

    source

    pub fn call_site() -> Self

    The span of the invocation of the current procedural macro.

    +Span in proc_macro2 - Rust
    proc_macro2

    Struct Span

    source
    pub struct Span { /* private fields */ }
    Expand description

    A region of source code, along with macro expansion information.

    +

    Implementations§

    source§

    impl Span

    source

    pub fn call_site() -> Self

    The span of the invocation of the current procedural macro.

    Identifiers created with this span will be resolved as if they were written directly at the macro call location (call-site hygiene) and other code at the macro call site will be able to refer to them as well.

    -
    source

    pub fn mixed_site() -> Self

    The span located at the invocation of the procedural macro, but with +

    source

    pub fn mixed_site() -> Self

    The span located at the invocation of the procedural macro, but with local variables, labels, and $crate resolved at the definition site of the macro. This is the same hygiene behavior as macro_rules.

    -
    source

    pub fn resolved_at(&self, other: Span) -> Span

    Creates a new span with the same line/column information as self but +

    source

    pub fn resolved_at(&self, other: Span) -> Span

    Creates a new span with the same line/column information as self but that resolves symbols as though it were at other.

    -
    source

    pub fn located_at(&self, other: Span) -> Span

    Creates a new span with the same name resolution behavior as self but +

    source

    pub fn located_at(&self, other: Span) -> Span

    Creates a new span with the same name resolution behavior as self but with the line/column information of other.

    -
    source

    pub fn unwrap(self) -> Span

    Convert proc_macro2::Span to proc_macro::Span.

    +
    source

    pub fn unwrap(self) -> Span

    Convert proc_macro2::Span to proc_macro::Span.

    This method is available when building with a nightly compiler, or when building with rustc 1.29+ without semver exempt features.

    -
    Panics
    +
    §Panics

    Panics if called from outside of a procedural macro. Unlike proc_macro2::Span, the proc_macro::Span type can only exist within the context of a procedural macro invocation.

    -
    source

    pub fn join(&self, other: Span) -> Option<Span>

    Create a new span encompassing self and other.

    +
    source

    pub fn join(&self, other: Span) -> Option<Span>

    Create a new span encompassing self and other.

    Returns None if self and other are from different files.

    Warning: the underlying proc_macro::Span::join method is nightly-only. When called from within a procedural macro not using a nightly compiler, this method will always return None.

    -
    source

    pub fn source_text(&self) -> Option<String>

    Returns the source text behind a span. This preserves the original +

    source

    pub fn source_text(&self) -> Option<String>

    Returns the source text behind a span. This preserves the original source code, including spaces and comments. It only returns a result if the span corresponds to real source code.

    Note: The observable result of a macro should only rely on the tokens and not on this source text. The result of this function is a best effort to be used for diagnostics only.

    -

    Trait Implementations§

    source§

    impl Clone for Span

    source§

    fn clone(&self) -> Span

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Span

    Prints a span in a form convenient for debugging.

    -
    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Span> for Span

    source§

    fn from(proc_span: Span) -> Self

    Converts to this type from the input type.
    source§

    impl Copy for Span

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Span

    §

    impl !Send for Span

    §

    impl !Sync for Span

    §

    impl Unpin for Span

    §

    impl UnwindSafe for Span

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for Span

    source§

    fn clone(&self) -> Span

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Span

    Prints a span in a form convenient for debugging.

    +
    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Span> for Span

    source§

    fn from(proc_span: Span) -> Self

    Converts to this type from the input type.
    source§

    impl Copy for Span

    Auto Trait Implementations§

    §

    impl Freeze for Span

    §

    impl RefUnwindSafe for Span

    §

    impl !Send for Span

    §

    impl !Sync for Span

    §

    impl Unpin for Span

    §

    impl UnwindSafe for Span

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/proc_macro2/struct.TokenStream.html b/proc_macro2/struct.TokenStream.html index 90506b8..828f12f 100644 --- a/proc_macro2/struct.TokenStream.html +++ b/proc_macro2/struct.TokenStream.html @@ -1,34 +1,35 @@ -TokenStream in proc_macro2 - Rust
    pub struct TokenStream { /* private fields */ }
    Expand description

    An abstract stream of tokens, or more concretely a sequence of token trees.

    +TokenStream in proc_macro2 - Rust
    proc_macro2

    Struct TokenStream

    source
    pub struct TokenStream { /* private fields */ }
    Expand description

    An abstract stream of tokens, or more concretely a sequence of token trees.

    This type provides interfaces for iterating over token trees and for collecting token trees into one stream.

    Token stream is both the input and output of #[proc_macro], #[proc_macro_attribute] and #[proc_macro_derive] definitions.

    -

    Implementations§

    source§

    impl TokenStream

    source

    pub fn new() -> Self

    Returns an empty TokenStream containing no token trees.

    -
    source

    pub fn is_empty(&self) -> bool

    Checks if this TokenStream is empty.

    -

    Trait Implementations§

    source§

    impl Clone for TokenStream

    source§

    fn clone(&self) -> TokenStream

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TokenStream

    Prints token in a form convenient for debugging.

    -
    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for TokenStream

    TokenStream::default() returns an empty stream, +

    Implementations§

    source§

    impl TokenStream

    source

    pub fn new() -> Self

    Returns an empty TokenStream containing no token trees.

    +
    source

    pub fn is_empty(&self) -> bool

    Checks if this TokenStream is empty.

    +

    Trait Implementations§

    source§

    impl Clone for TokenStream

    source§

    fn clone(&self) -> TokenStream

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TokenStream

    Prints token in a form convenient for debugging.

    +
    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for TokenStream

    TokenStream::default() returns an empty stream, i.e. this is equivalent with TokenStream::new().

    -
    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Display for TokenStream

    Prints the token stream as a string that is supposed to be losslessly +

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Display for TokenStream

    Prints the token stream as a string that is supposed to be losslessly convertible back into the same token stream (modulo spans), except for possibly TokenTree::Groups with Delimiter::None delimiters and negative numeric literals.

    -
    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Extend<TokenStream> for TokenStream

    source§

    fn extend<I: IntoIterator<Item = TokenStream>>(&mut self, streams: I)

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, item: A)

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    source§

    impl Extend<TokenTree> for TokenStream

    source§

    fn extend<I: IntoIterator<Item = TokenTree>>(&mut self, streams: I)

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, item: A)

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    source§

    impl From<TokenStream> for TokenStream

    source§

    fn from(inner: TokenStream) -> Self

    Converts to this type from the input type.
    source§

    impl From<TokenStream> for TokenStream

    source§

    fn from(inner: TokenStream) -> Self

    Converts to this type from the input type.
    source§

    impl From<TokenTree> for TokenStream

    source§

    fn from(token: TokenTree) -> Self

    Converts to this type from the input type.
    source§

    impl FromIterator<TokenStream> for TokenStream

    source§

    fn from_iter<I: IntoIterator<Item = TokenStream>>(streams: I) -> Self

    Creates a value from an iterator. Read more
    source§

    impl FromIterator<TokenTree> for TokenStream

    Collects a number of token trees into a single stream.

    -
    source§

    fn from_iter<I: IntoIterator<Item = TokenTree>>(streams: I) -> Self

    Creates a value from an iterator. Read more
    source§

    impl FromStr for TokenStream

    Attempts to break the string into tokens and parse those tokens into a token +

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Extend<TokenStream> for TokenStream

    source§

    fn extend<I: IntoIterator<Item = TokenStream>>(&mut self, streams: I)

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, item: A)

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    source§

    impl Extend<TokenTree> for TokenStream

    source§

    fn extend<I: IntoIterator<Item = TokenTree>>(&mut self, streams: I)

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, item: A)

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    source§

    impl From<TokenStream> for TokenStream

    source§

    fn from(inner: TokenStream) -> Self

    Converts to this type from the input type.
    source§

    impl From<TokenStream> for TokenStream

    source§

    fn from(inner: TokenStream) -> Self

    Converts to this type from the input type.
    source§

    impl From<TokenTree> for TokenStream

    source§

    fn from(token: TokenTree) -> Self

    Converts to this type from the input type.
    source§

    impl FromIterator<TokenStream> for TokenStream

    source§

    fn from_iter<I: IntoIterator<Item = TokenStream>>(streams: I) -> Self

    Creates a value from an iterator. Read more
    source§

    impl FromIterator<TokenTree> for TokenStream

    Collects a number of token trees into a single stream.

    +
    source§

    fn from_iter<I: IntoIterator<Item = TokenTree>>(streams: I) -> Self

    Creates a value from an iterator. Read more
    source§

    impl FromStr for TokenStream

    Attempts to break the string into tokens and parse those tokens into a token stream.

    May fail for a number of reasons, for example, if the string contains unbalanced delimiters or characters not existing in the language.

    NOTE: Some errors may cause panics instead of returning LexError. We reserve the right to change these errors into LexErrors later.

    -
    §

    type Err = LexError

    The associated error which can be returned from parsing.
    source§

    fn from_str(src: &str) -> Result<TokenStream, LexError>

    Parses a string s to return a value of this type. Read more
    source§

    impl IntoIterator for TokenStream

    §

    type Item = TokenTree

    The type of the elements being iterated over.
    §

    type IntoIter = IntoIter

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> IntoIter

    Creates an iterator from a value. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    source§

    type Err = LexError

    The associated error which can be returned from parsing.
    source§

    fn from_str(src: &str) -> Result<TokenStream, LexError>

    Parses a string s to return a value of this type. Read more
    source§

    impl IntoIterator for TokenStream

    source§

    type Item = TokenTree

    The type of the elements being iterated over.
    source§

    type IntoIter = IntoIter

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> IntoIter

    Creates an iterator from a value. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for Twhere - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/proc_macro2/token_stream/index.html b/proc_macro2/token_stream/index.html index 479bb14..a88f8ea 100644 --- a/proc_macro2/token_stream/index.html +++ b/proc_macro2/token_stream/index.html @@ -1,2 +1,2 @@ -proc_macro2::token_stream - Rust
    Expand description

    Public implementation details for the TokenStream type, such as iterators.

    -

    Re-exports

    Structs

    • An iterator over TokenStream’s TokenTrees.
    \ No newline at end of file +proc_macro2::token_stream - Rust
    proc_macro2

    Module token_stream

    source
    Expand description

    Public implementation details for the TokenStream type, such as iterators.

    +

    Re-exports§

    Structs§

    • An iterator over TokenStream’s TokenTrees.
    \ No newline at end of file diff --git a/proc_macro2/token_stream/struct.IntoIter.html b/proc_macro2/token_stream/struct.IntoIter.html index 3ad91b6..3d0b8ef 100644 --- a/proc_macro2/token_stream/struct.IntoIter.html +++ b/proc_macro2/token_stream/struct.IntoIter.html @@ -1,197 +1,196 @@ -IntoIter in proc_macro2::token_stream - Rust
    pub struct IntoIter { /* private fields */ }
    Expand description

    An iterator over TokenStream’s TokenTrees.

    +IntoIter in proc_macro2::token_stream - Rust
    proc_macro2::token_stream

    Struct IntoIter

    source
    pub struct IntoIter { /* private fields */ }
    Expand description

    An iterator over TokenStream’s TokenTrees.

    The iteration is “shallow”, e.g. the iterator doesn’t recurse into delimited groups, and returns whole groups as token trees.

    -

    Trait Implementations§

    source§

    impl Clone for IntoIter

    source§

    fn clone(&self) -> IntoIter

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for IntoIter

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Iterator for IntoIter

    §

    type Item = TokenTree

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<TokenTree>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn next_chunk<const N: usize>( - &mut self -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn count(self) -> usizewhere - Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>where - Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>where - Self: Sized,

    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where - Self: Sized, - U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse(self, separator: Self::Item) -> Intersperse<Self>where - Self: Sized, - Self::Item: Clone,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places a copy of separator between adjacent -items of the original iterator. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where - Self: Sized, - G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>where - Self: Sized, - F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each -element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)where - Self: Sized, - F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>where - Self: Sized,

    Creates an iterator which gives the current iteration count as well as -the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>where - Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods +

    Trait Implementations§

    source§

    impl Clone for IntoIter

    source§

    fn clone(&self) -> IntoIter

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for IntoIter

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Iterator for IntoIter

    source§

    type Item = TokenTree

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<TokenTree>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn next_chunk<const N: usize>( + &mut self, +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where + Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>
    where + Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where + Self: Sized,

    Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where + Self: Sized, + U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse(self, separator: Self::Item) -> Intersperse<Self>
    where + Self: Sized, + Self::Item: Clone,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places a copy of separator between adjacent +items of the original iterator. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where + Self: Sized, + G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where + Self: Sized, + F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each +element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where + Self: Sized, + F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where + Self: Sized,

    Creates an iterator which gives the current iteration count as well as +the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where + Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>where - Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>where - Self: Sized,

    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>where - Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>where - Self: Sized, - F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Selfwhere - Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> Bwhere - B: FromIterator<Self::Item>, - Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere - E: Extend<Self::Item>, - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> boolwhere - Self: Sized, - P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> Rwhere - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> Bwhere - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, -returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
    source§

    fn try_reduce<F, R>( +their documentation for more information. Read more

    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where + Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where + Self: Sized,

    Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where + Self: Sized, + F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over +self and returns an iterator over the outputs of f. Like slice::windows(), +the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where + Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where + Self: Sized, + F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where + Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where + B: FromIterator<Self::Item>, + Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where + E: Extend<Self::Item>, + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where + Self: Sized, + P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

    An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where + Self: Sized, + F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, +returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
    source§

    fn try_reduce<R>( &mut self, - f: F -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> R, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> boolwhere - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> boolwhere - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns -the first non-none result. Read more
    source§

    fn try_find<F, R>( + f: impl FnMut(Self::Item, Self::Item) -> R, +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where + Self: Sized, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns +the first non-none result. Read more
    source§

    fn try_find<R>( &mut self, - f: F -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere - Self: Sized, - F: FnMut(&Self::Item) -> R, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns -the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the -specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the -specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    1.0.0 · source§

    fn cycle(self) -> Cycle<Self>where - Self: Sized + Clone,

    Repeats an iterator endlessly. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> Swhere - Self: Sized, - S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> Pwhere - Self: Sized, - P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit + f: impl FnMut(&Self::Item) -> R, +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where + Self: Sized, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,
    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns +the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where + Self: Sized, + P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the +specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the +specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    1.0.0 · source§

    fn cycle(self) -> Cycle<Self>
    where + Self: Sized + Clone,

    Repeats an iterator endlessly. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where + Self: Sized, + S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where + Self: Sized, + P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are equal to those of -another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are not equal to those of -another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
    source§

    fn is_sorted_by<F>(self, compare: F) -> boolwhere - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    source§

    fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd<K>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are equal to those of +another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are not equal to those of +another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
    1.82.0 · source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> bool,

    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    1.82.0 · source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd,

    Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<I> IntoIterator for Iwhere - I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<I> IntoIterator for I
    where + I: Iterator,

    source§

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    source§

    type IntoIter = I

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/quote/all.html b/quote/all.html index fa43c03..2102fd4 100644 --- a/quote/all.html +++ b/quote/all.html @@ -1 +1 @@ -List of all items in this crate
    \ No newline at end of file +List of all items in this crate
    \ No newline at end of file diff --git a/quote/index.html b/quote/index.html index 0718344..340be5a 100644 --- a/quote/index.html +++ b/quote/index.html @@ -1,4 +1,4 @@ -quote - Rust

    Crate quote

    source ·
    Expand description

    githubcrates-iodocs-rs

    +quote - Rust

    Crate quote

    source
    Expand description

    githubcrates-iodocs-rs


    This crate provides the quote! macro for turning Rust syntax tree data structures into tokens of source code.

    @@ -18,9 +18,8 @@ to compile into the macro caller’s crate.

    general-purpose Rust quasi-quoting library and is not specific to procedural macros.

    [dependencies]
    -quote = "1.0"
    -

    -

    Example

    +quote = "1.0"

    +

    §Example

    The following quasi-quoted block of code is something you might find in a procedural macro having to do with data structure serialization. The #var syntax performs interpolation of runtime variables into the quoted tokens. @@ -28,9 +27,9 @@ Check out the documentation of the quote!quote_spanned! macro which is important for implementing hygienic procedural macros.

    -
    let tokens = quote! {
    +
    let tokens = quote! {
         struct SerializeWith #generics #where_clause {
    -        value: &'a #field_ty,
    +        value: &'a #field_ty,
             phantom: core::marker::PhantomData<#item_ty>,
         }
     
    @@ -49,10 +48,10 @@ implementing hygienic procedural macros.

    } };

    -

    Non-macro code generators

    +

    §Non-macro code generators

    When using quote in a build.rs or main.rs and writing the output out to a file, consider having the code generator pass the tokens through prettyplease before writing. This way if an error occurs in the generated code it is convenient for a human to read and debug.

    -

    Macros

    • Formatting macro for constructing Idents.
    • The whole point.
    • Same as quote!, but applies a given span to all tokens originating within -the macro invocation.

    Traits

    • Specialized formatting trait used by format_ident!.
    • Types that can be interpolated inside a quote! invocation.
    • TokenStream extension trait with methods for appending tokens.
    \ No newline at end of file +

    Macros§

    • Formatting macro for constructing Idents.
    • The whole point.
    • Same as quote!, but applies a given span to all tokens originating within +the macro invocation.

    Traits§

    • Specialized formatting trait used by format_ident!.
    • Types that can be interpolated inside a quote! invocation.
    • TokenStream extension trait with methods for appending tokens.
    \ No newline at end of file diff --git a/quote/macro.format_ident.html b/quote/macro.format_ident.html index 45542c3..aa4efda 100644 --- a/quote/macro.format_ident.html +++ b/quote/macro.format_ident.html @@ -1,23 +1,23 @@ -format_ident in quote - Rust

    Macro quote::format_ident

    source ·
    macro_rules! format_ident {
    +format_ident in quote - Rust
    quote

    Macro format_ident

    source
    macro_rules! format_ident {
         ($fmt:expr) => { ... };
         ($fmt:expr, $($rest:tt)*) => { ... };
     }
    Expand description

    Formatting macro for constructing Idents.


    -

    Syntax

    -

    Syntax is copied from the format! macro, supporting both positional and +

    §Syntax

    +

    Syntax is copied from the format! macro, supporting both positional and named arguments.

    Only a limited set of formatting traits are supported. The current mapping of format types to traits is:

    -

    See std::fmt for more information.

    +

    See std::fmt for more information.


    -

    IdentFragment

    +

    §IdentFragment

    Unlike format!, this macro uses the IdentFragment formatting trait by default. This trait is like Display, with a few differences:

      @@ -26,51 +26,51 @@ unsigned integers and strings.
    • Ident arguments will have their r# prefixes stripped, if present.

    -

    Hygiene

    +

    §Hygiene

    The Span of the first Ident argument is used as the span of the final identifier, falling back to Span::call_site when no identifiers are provided.

    // If `ident` is an Ident, the span of `my_ident` will be inherited from it.
    -let my_ident = format_ident!("My{}{}", ident, "IsCool");
    -assert_eq!(my_ident, "MyIdentIsCool");
    +let my_ident = format_ident!("My{}{}", ident, "IsCool"); +assert_eq!(my_ident, "MyIdentIsCool");

    Alternatively, the span can be overridden by passing the span named argument.

    let my_span = /* ... */;
    -format_ident!("MyIdent", span = my_span);
    +format_ident!("MyIdent", span = my_span);


    -

    Panics

    +

    §Panics

    This method will panic if the resulting formatted string is not a valid identifier.


    -

    Examples

    +

    §Examples

    Composing raw and non-raw identifiers:

    -
    let my_ident = format_ident!("My{}", "Ident");
    -assert_eq!(my_ident, "MyIdent");
    +
    let my_ident = format_ident!("My{}", "Ident");
    +assert_eq!(my_ident, "MyIdent");
     
    -let raw = format_ident!("r#Raw");
    -assert_eq!(raw, "r#Raw");
    +let raw = format_ident!("r#Raw");
    +assert_eq!(raw, "r#Raw");
     
    -let my_ident_raw = format_ident!("{}Is{}", my_ident, raw);
    -assert_eq!(my_ident_raw, "MyIdentIsRaw");
    +let my_ident_raw = format_ident!("{}Is{}", my_ident, raw); +assert_eq!(my_ident_raw, "MyIdentIsRaw");

    Integer formatting options:

    let num: u32 = 10;
     
    -let decimal = format_ident!("Id_{}", num);
    -assert_eq!(decimal, "Id_10");
    +let decimal = format_ident!("Id_{}", num);
    +assert_eq!(decimal, "Id_10");
     
    -let octal = format_ident!("Id_{:o}", num);
    -assert_eq!(octal, "Id_12");
    +let octal = format_ident!("Id_{:o}", num);
    +assert_eq!(octal, "Id_12");
     
    -let binary = format_ident!("Id_{:b}", num);
    -assert_eq!(binary, "Id_1010");
    +let binary = format_ident!("Id_{:b}", num);
    +assert_eq!(binary, "Id_1010");
     
    -let lower_hex = format_ident!("Id_{:x}", num);
    -assert_eq!(lower_hex, "Id_a");
    +let lower_hex = format_ident!("Id_{:x}", num);
    +assert_eq!(lower_hex, "Id_a");
     
    -let upper_hex = format_ident!("Id_{:X}", num);
    -assert_eq!(upper_hex, "Id_A");
    +let upper_hex = format_ident!("Id_{:X}", num); +assert_eq!(upper_hex, "Id_A");
    \ No newline at end of file diff --git a/quote/macro.quote.html b/quote/macro.quote.html index 1e52b9e..8c8ea3a 100644 --- a/quote/macro.quote.html +++ b/quote/macro.quote.html @@ -1,12 +1,12 @@ -quote in quote - Rust

    Macro quote::quote

    source ·
    macro_rules! quote {
    +quote in quote - Rust
    quote

    Macro quote

    source
    macro_rules! quote {
         ($($tt:tt)*) => { ... };
     }
    Expand description

    The whole point.

    Performs variable interpolation against the input and produces it as proc_macro2::TokenStream.

    Note: for returning tokens to the compiler in a procedural macro, use -.into() on the result to convert to proc_macro::TokenStream.

    +.into() on the result to convert to proc_macro::TokenStream.


    -

    Interpolation

    +

    §Interpolation

    Variable interpolation is done with #var (similar to $var in macro_rules! macros). This grabs the var variable that is currently in scope and inserts it in that location in the output tokens. Any type @@ -22,16 +22,16 @@ for each one. The variables in an interpolation may be a Vec, slice

  • #(#var)* — no separators
  • #(#var),* — the character before the asterisk is used as a separator
  • #( struct #var; )* — the repetition can contain other tokens
  • -
  • #( #k => println!("{}", #v), )* — even multiple interpolations
  • +
  • #( #k => println!("{}", #v), )* — even multiple interpolations

  • -

    Hygiene

    +

    §Hygiene

    Any interpolated tokens preserve the Span information provided by their ToTokens implementation. Tokens that originate within the quote! invocation are spanned with Span::call_site().

    A different span can be provided through the quote_spanned! macro.


    -

    Return type

    +

    §Return type

    The macro evaluates to an expression of type proc_macro2::TokenStream. Meanwhile Rust procedural macros are expected to return the type proc_macro::TokenStream.

    @@ -46,7 +46,7 @@ contexts.

    quote! from a procedural macro usually looks like tokens.into() or proc_macro::TokenStream::from(tokens).


    -

    Examples

    Procedural macro

    +

    §Examples

    §Procedural macro

    The structure of a basic procedural macro is as follows. Refer to the Syn crate for further useful guidance on using quote! as part of a procedural macro.

    @@ -62,7 +62,7 @@ macro.

    let name = /* ... */; let expr = /* ... */; - let expanded = quote! { + let expanded = quote! { // The generated impl. impl heapsize::HeapSize for #name { fn heap_size_of_children(&self) -> usize { @@ -75,21 +75,21 @@ macro.

    TokenStream::from(expanded) }


    -

    Combining quoted fragments

    +

    §Combining quoted fragments

    Usually you don’t end up constructing an entire final TokenStream in one piece. Different parts may come from different helper functions. The tokens produced by quote! themselves implement ToTokens and so can be interpolated into later quote! invocations to build up a final result.

    -
    let type_definition = quote! {...};
    -let methods = quote! {...};
    +
    let type_definition = quote! {...};
    +let methods = quote! {...};
     
    -let tokens = quote! {
    +let tokens = quote! {
         #type_definition
         #methods
     };


    -

    Constructing identifiers

    +

    §Constructing identifiers

    Suppose we have an identifier ident which came from somewhere in a macro input and we need to modify it in some way for the macro output. Let’s consider prepending the identifier with an underscore.

    @@ -98,34 +98,34 @@ behavior of concatenating them. The underscore and the identifier will continue to be two separate tokens as if you had written _ x.

    // incorrect
    -quote! {
    +quote! {
         let mut _#ident = 0;
     }

    The solution is to build a new identifier token with the correct value. As this is such a common case, the format_ident! macro provides a convenient utility for doing so correctly.

    -
    let varname = format_ident!("_{}", ident);
    -quote! {
    +
    let varname = format_ident!("_{}", ident);
    +quote! {
         let mut #varname = 0;
     }

    Alternatively, the APIs provided by Syn and proc-macro2 can be used to directly build the identifier. This is roughly equivalent to the above, but will not handle ident being a raw identifier.

    -
    let concatenated = format!("_{}", ident);
    +
    let concatenated = format!("_{}", ident);
     let varname = syn::Ident::new(&concatenated, ident.span());
    -quote! {
    +quote! {
         let mut #varname = 0;
     }


    -

    Making method calls

    +

    §Making method calls

    Let’s say our macro requires some type specified in the macro input to have a constructor called new. We have the type in a variable called field_type of type syn::Type and want to invoke the constructor.

    // incorrect
    -quote! {
    +quote! {
         let value = #field_type::new();
     }

    This works only sometimes. If field_type is String, the expanded code @@ -134,56 +134,56 @@ like Vec<i32> then the expanded code is Vec<i32>: syntax. Ordinarily in handwritten Rust we would write Vec::<i32>::new() but for macros often the following is more convenient.

    -
    quote! {
    +
    quote! {
         let value = <#field_type>::new();
     }

    This expands to <Vec<i32>>::new() which behaves correctly.

    A similar pattern is appropriate for trait methods.

    -
    quote! {
    +
    quote! {
         let value = <#field_type as core::default::Default>::default();
     }


    -

    Interpolating text inside of doc comments

    +

    §Interpolating text inside of doc comments

    Neither doc comments nor string literals get interpolation behavior in quote:

    -
    quote! {
    +
    quote! {
         /// try to interpolate: #ident
         ///
         /// ...
     }
    -
    quote! {
    -    #[doc = "try to interpolate: #ident"]
    +
    quote! {
    +    #[doc = "try to interpolate: #ident"]
     }

    Instead the best way to build doc comments that involve variables is by formatting the doc string literal outside of quote.

    let msg = format!(...);
    -quote! {
    +quote! {
         #[doc = #msg]
         ///
         /// ...
     }


    -

    Indexing into a tuple struct

    +

    §Indexing into a tuple struct

    When interpolating indices of a tuple or tuple struct, we need them not to -appears suffixed as integer literals by interpolating them as syn::Index +appears suffixed as integer literals by interpolating them as syn::Index instead.

    let i = 0usize..self.fields.len();
     
     // expands to 0 + self.0usize.heap_size() + self.1usize.heap_size() + ...
     // which is not valid syntax
    -quote! {
    +quote! {
         0 #( + self.#i.heap_size() )*
     }
    let i = (0..self.fields.len()).map(syn::Index::from);
     
     // expands to 0 + self.0.heap_size() + self.1.heap_size() + ...
    -quote! {
    +quote! {
         0 #( + self.#i.heap_size() )*
     }
    \ No newline at end of file diff --git a/quote/macro.quote_spanned.html b/quote/macro.quote_spanned.html index 07c0e41..539fbd1 100644 --- a/quote/macro.quote_spanned.html +++ b/quote/macro.quote_spanned.html @@ -1,9 +1,9 @@ -quote_spanned in quote - Rust

    Macro quote::quote_spanned

    source ·
    macro_rules! quote_spanned {
    +quote_spanned in quote - Rust
    quote

    Macro quote_spanned

    source
    macro_rules! quote_spanned {
         ($span:expr=> $($tt:tt)*) => { ... };
     }
    Expand description

    Same as quote!, but applies a given span to all tokens originating within the macro invocation.


    -

    Syntax

    +

    §Syntax

    A span expression of type Span, followed by =>, followed by the tokens to quote. The span expression should be brief — use a variable for anything more than a few characters. There should be no space before the @@ -15,7 +15,7 @@ anything more than a few characters. There should be no space before the let tokens = quote_spanned!(span=> Box::into_raw(Box::new(#init))); // On multiple lines, place the span at the top and use braces. -let tokens = quote_spanned! {span=> +let tokens = quote_spanned! {span=> Box::into_raw(Box::new(#init)) };

    The lack of space before the => should look jarring to Rust programmers @@ -24,18 +24,18 @@ off-balance and draw the eye a particular way, due to the span expression being evaluated in the context of the procedural macro and the remaining tokens being evaluated in the generated code.


    -

    Hygiene

    +

    §Hygiene

    Any interpolated tokens preserve the Span information provided by their ToTokens implementation. Tokens that originate within the quote_spanned! invocation are spanned with the given span argument.


    -

    Example

    +

    §Example

    The following procedural macro code uses quote_spanned! to assert that a particular Rust type implements the Sync trait so that references can be safely shared between threads.

    let ty_span = ty.span();
    -let assert_sync = quote_spanned! {ty_span=>
    +let assert_sync = quote_spanned! {ty_span=>
         struct _AssertSync where #ty: Sync;
     };

    If the assertion fails, the user will see an error like the following. The @@ -44,8 +44,7 @@ input span of their type is highlighted in the error.

    --> src/main.rs:10:21 | 10 | static ref PTR: *const () = &(); - | ^^^^^^^^^ `*const ()` cannot be shared between threads safely -
    + | ^^^^^^^^^ `*const ()` cannot be shared between threads safely

    In this example it is important for the where-clause to be spanned with the line/column information of the user’s input type so that error messages are placed appropriately by the compiler.

    diff --git a/quote/trait.IdentFragment.html b/quote/trait.IdentFragment.html index 1fac0ed..87bd54b 100644 --- a/quote/trait.IdentFragment.html +++ b/quote/trait.IdentFragment.html @@ -1,15 +1,15 @@ -IdentFragment in quote - Rust

    Trait quote::IdentFragment

    source ·
    pub trait IdentFragment {
    +IdentFragment in quote - Rust
    quote

    Trait IdentFragment

    source
    pub trait IdentFragment {
         // Required method
    -    fn fmt(&self, f: &mut Formatter<'_>) -> Result;
    +    fn fmt(&self, f: &mut Formatter<'_>) -> Result;
     
         // Provided method
    -    fn span(&self) -> Option<Span> { ... }
    +    fn span(&self) -> Option<Span> { ... }
     }
    Expand description

    Specialized formatting trait used by format_ident!.

    Ident arguments formatted using this trait will have their r# prefix stripped, if present.

    See format_ident! for more information.

    -

    Required Methods§

    source

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Format this value as an identifier fragment.

    -

    Provided Methods§

    source

    fn span(&self) -> Option<Span>

    Span associated with this IdentFragment.

    +

    Required Methods§

    source

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Format this value as an identifier fragment.

    +

    Provided Methods§

    source

    fn span(&self) -> Option<Span>

    Span associated with this IdentFragment.

    If non-None, may be inherited by formatted identifiers.

    -

    Implementations on Foreign Types§

    source§

    impl<T> IdentFragment for Cow<'_, T>where - T: IdentFragment + ToOwned + ?Sized,

    source§

    fn span(&self) -> Option<Span>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    source§

    impl<T: IdentFragment + ?Sized> IdentFragment for &T

    source§

    fn span(&self) -> Option<Span>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    source§

    impl IdentFragment for u16

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    source§

    impl IdentFragment for str

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    source§

    impl IdentFragment for bool

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    source§

    impl IdentFragment for u8

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    source§

    impl IdentFragment for u128

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    source§

    impl IdentFragment for String

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    source§

    impl IdentFragment for usize

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    source§

    impl IdentFragment for char

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    source§

    impl IdentFragment for u32

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    source§

    impl IdentFragment for Ident

    source§

    fn span(&self) -> Option<Span>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    source§

    impl IdentFragment for u64

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    source§

    impl<T: IdentFragment + ?Sized> IdentFragment for &mut T

    source§

    fn span(&self) -> Option<Span>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Implementors§

    \ No newline at end of file +

    Implementations on Foreign Types§

    source§

    impl IdentFragment for bool

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    source§

    impl IdentFragment for char

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    source§

    impl IdentFragment for str

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    source§

    impl IdentFragment for u8

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    source§

    impl IdentFragment for u16

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    source§

    impl IdentFragment for u32

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    source§

    impl IdentFragment for u64

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    source§

    impl IdentFragment for u128

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    source§

    impl IdentFragment for usize

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    source§

    impl IdentFragment for Ident

    source§

    fn span(&self) -> Option<Span>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    source§

    impl IdentFragment for String

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    source§

    impl<T> IdentFragment for Cow<'_, T>
    where + T: IdentFragment + ToOwned + ?Sized,

    source§

    fn span(&self) -> Option<Span>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    source§

    impl<T: IdentFragment + ?Sized> IdentFragment for &T

    source§

    fn span(&self) -> Option<Span>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    source§

    impl<T: IdentFragment + ?Sized> IdentFragment for &mut T

    source§

    fn span(&self) -> Option<Span>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Implementors§

    \ No newline at end of file diff --git a/quote/trait.ToTokens.html b/quote/trait.ToTokens.html index 2457856..9d4c9d8 100644 --- a/quote/trait.ToTokens.html +++ b/quote/trait.ToTokens.html @@ -1,16 +1,16 @@ -ToTokens in quote - Rust

    Trait quote::ToTokens

    source ·
    pub trait ToTokens {
    +ToTokens in quote - Rust
    quote

    Trait ToTokens

    source
    pub trait ToTokens {
         // Required method
         fn to_tokens(&self, tokens: &mut TokenStream);
     
         // Provided methods
         fn to_token_stream(&self) -> TokenStream { ... }
         fn into_token_stream(self) -> TokenStream
    -       where Self: Sized { ... }
    +       where Self: Sized { ... }
     }
    Expand description

    Types that can be interpolated inside a quote! invocation.

    -

    Required Methods§

    source

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream.

    +

    Required Methods§

    source

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream.

    The token append methods provided by the TokenStreamExt extension trait may be useful for implementing ToTokens.

    -
    Example
    +
    §Example

    Example implementation for a struct representing Rust paths like std::cmp::PartialEq:

    @@ -27,18 +27,18 @@ trait may be useful for implementing ToTokens.

    for (i, segment) in self.segments.iter().enumerate() { if i > 0 || self.global { // Double colon `::` - tokens.append(Punct::new(':', Spacing::Joint)); - tokens.append(Punct::new(':', Spacing::Alone)); + tokens.append(Punct::new(':', Spacing::Joint)); + tokens.append(Punct::new(':', Spacing::Alone)); } segment.to_tokens(tokens); } } }
    -

    Provided Methods§

    source

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object.

    +

    Provided Methods§

    source

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object.

    This method is implicitly implemented using to_tokens, and acts as a convenience method for consumers of the ToTokens trait.

    -
    source

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object.

    +
    source

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object.

    This method is implicitly implemented using to_tokens, and acts as a convenience method for consumers of the ToTokens trait.

    -

    Implementations on Foreign Types§

    source§

    impl ToTokens for u128

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for f32

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for u8

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for Punct

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for bool

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for f64

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for Ident

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for usize

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl<T: ToTokens> ToTokens for Option<T>

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for char

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for i16

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for Literal

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for TokenTree

    source§

    fn to_tokens(&self, dst: &mut TokenStream)

    source§

    impl ToTokens for u16

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for i64

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for String

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl<'a, T: ?Sized + ToTokens> ToTokens for &'a mut T

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for str

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for u32

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl<T: ?Sized + ToTokens> ToTokens for Rc<T>

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl<'a, T: ?Sized + ToTokens> ToTokens for &'a T

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for isize

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for i128

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl<'a, T: ?Sized + ToOwned + ToTokens> ToTokens for Cow<'a, T>

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for i8

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for TokenStream

    source§

    impl ToTokens for u64

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for i32

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for Group

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl<T: ?Sized + ToTokens> ToTokens for Box<T>

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Implementors§

    \ No newline at end of file +

    Implementations on Foreign Types§

    source§

    impl ToTokens for TokenTree

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for bool

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for char

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for f32

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for f64

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for i8

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for i16

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for i32

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for i64

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for i128

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for isize

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for str

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for u8

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for u16

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for u32

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for u64

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for u128

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for usize

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for Group

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for Ident

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for Literal

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for Punct

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for TokenStream

    source§

    impl ToTokens for CString

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for String

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl ToTokens for CStr

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl<'a, T: ?Sized + ToOwned + ToTokens> ToTokens for Cow<'a, T>

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl<'a, T: ?Sized + ToTokens> ToTokens for &'a T

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl<'a, T: ?Sized + ToTokens> ToTokens for &'a mut T

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl<T: ToTokens> ToTokens for Option<T>

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl<T: ?Sized + ToTokens> ToTokens for Box<T>

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    source§

    impl<T: ?Sized + ToTokens> ToTokens for Rc<T>

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Implementors§

    \ No newline at end of file diff --git a/quote/trait.TokenStreamExt.html b/quote/trait.TokenStreamExt.html index efe0db0..63a5cab 100644 --- a/quote/trait.TokenStreamExt.html +++ b/quote/trait.TokenStreamExt.html @@ -1,26 +1,26 @@ -TokenStreamExt in quote - Rust

    Trait quote::TokenStreamExt

    source ·
    pub trait TokenStreamExt: Sealed {
    +TokenStreamExt in quote - Rust
    quote

    Trait TokenStreamExt

    source
    pub trait TokenStreamExt: Sealed {
         // Required methods
         fn append<U>(&mut self, token: U)
    -       where U: Into<TokenTree>;
    +       where U: Into<TokenTree>;
         fn append_all<I>(&mut self, iter: I)
    -       where I: IntoIterator,
    -             I::Item: ToTokens;
    +       where I: IntoIterator,
    +             I::Item: ToTokens;
         fn append_separated<I, U>(&mut self, iter: I, op: U)
    -       where I: IntoIterator,
    -             I::Item: ToTokens,
    +       where I: IntoIterator,
    +             I::Item: ToTokens,
                  U: ToTokens;
         fn append_terminated<I, U>(&mut self, iter: I, term: U)
    -       where I: IntoIterator,
    -             I::Item: ToTokens,
    +       where I: IntoIterator,
    +             I::Item: ToTokens,
                  U: ToTokens;
     }
    Expand description

    TokenStream extension trait with methods for appending tokens.

    This trait is sealed and cannot be implemented outside of the quote crate.

    -

    Required Methods§

    source

    fn append<U>(&mut self, token: U)where - U: Into<TokenTree>,

    For use by ToTokens implementations.

    +

    Required Methods§

    source

    fn append<U>(&mut self, token: U)
    where + U: Into<TokenTree>,

    For use by ToTokens implementations.

    Appends the token specified to this list of tokens.

    -
    source

    fn append_all<I>(&mut self, iter: I)where - I: IntoIterator, - I::Item: ToTokens,

    For use by ToTokens implementations.

    +
    source

    fn append_all<I>(&mut self, iter: I)
    where + I: IntoIterator, + I::Item: ToTokens,

    For use by ToTokens implementations.

    struct X;
     
    @@ -31,26 +31,26 @@
     }
     
     let tokens = quote!(#X);
    -assert_eq!(tokens.to_string(), "true false");
    -
    source

    fn append_separated<I, U>(&mut self, iter: I, op: U)where - I: IntoIterator, - I::Item: ToTokens, - U: ToTokens,

    For use by ToTokens implementations.

    +assert_eq!(tokens.to_string(), "true false");
    +
    source

    fn append_separated<I, U>(&mut self, iter: I, op: U)
    where + I: IntoIterator, + I::Item: ToTokens, + U: ToTokens,

    For use by ToTokens implementations.

    Appends all of the items in the iterator I, separated by the tokens U.

    -
    source

    fn append_terminated<I, U>(&mut self, iter: I, term: U)where - I: IntoIterator, - I::Item: ToTokens, - U: ToTokens,

    For use by ToTokens implementations.

    +
    source

    fn append_terminated<I, U>(&mut self, iter: I, term: U)
    where + I: IntoIterator, + I::Item: ToTokens, + U: ToTokens,

    For use by ToTokens implementations.

    Appends all tokens in the iterator I, appending U after each element, including after the last element of the iterator.

    -

    Implementations on Foreign Types§

    source§

    impl TokenStreamExt for TokenStream

    source§

    fn append<U>(&mut self, token: U)where - U: Into<TokenTree>,

    source§

    fn append_all<I>(&mut self, iter: I)where - I: IntoIterator, - I::Item: ToTokens,

    source§

    fn append_separated<I, U>(&mut self, iter: I, op: U)where - I: IntoIterator, - I::Item: ToTokens, - U: ToTokens,

    source§

    fn append_terminated<I, U>(&mut self, iter: I, term: U)where - I: IntoIterator, - I::Item: ToTokens, - U: ToTokens,

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl TokenStreamExt for TokenStream

    source§

    fn append<U>(&mut self, token: U)
    where + U: Into<TokenTree>,

    source§

    fn append_all<I>(&mut self, iter: I)
    where + I: IntoIterator, + I::Item: ToTokens,

    source§

    fn append_separated<I, U>(&mut self, iter: I, op: U)
    where + I: IntoIterator, + I::Item: ToTokens, + U: ToTokens,

    source§

    fn append_terminated<I, U>(&mut self, iter: I, term: U)
    where + I: IntoIterator, + I::Item: ToTokens, + U: ToTokens,

    Implementors§

    \ No newline at end of file diff --git a/search-index.js b/search-index.js index 2afb298..15fcb5a 100644 --- a/search-index.js +++ b/search-index.js @@ -1,14 +1,4 @@ -var searchIndex = JSON.parse('{\ -"delog":{"doc":"Compile-time configurable deferred logging (for printf()…","t":"NNINNINNEENDIIDNNIINNLLLKMLLLLLLLLKLLLKLLLLLLOFFLLLLLLKKKMLLLLLLLLLLLLOLLAOOLLLLLLLLCFLLLLLLLLLKMAKKLLKMLLLFLLLLLLLLKLLLLKMDFSSIDILLLLLLLLLLLLLLLLLLMDDLLLLLLFLLLLLLFFLLLLLL","n":["Debug","Debug","Delogger","Error","Error","Flusher","Info","Info","Level","LevelFilter","Off","Record","Renderer","State","Statistics","Trace","Trace","TryLog","TryLogWithStatistics","Warn","Warn","args","as_str","as_str","attempts","attempts","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffer","builder","capacity","capacity","claimed","clone","clone","clone","clone","cmp","cmp","delog","dequeue","enqueue","eq","eq","eq","eq","file","file_static","flush","flush","flushes","flushes","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_str","from_str","generate_macros","hash","hash","hex","hex_str","hexstr","into","into","into","into","iter","iter","level","line","log","logger","max","max","metadata","module_path","module_path_static","partial_cmp","partial_cmp","partial_cmp","partial_cmp","read","read","render","render","render","statistics","statistics","successes","successes","target","to_level","to_level_filter","try_enqueue","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_log","type_id","type_id","type_id","type_id","written","written","HexStr","HexStr","N","SEPARATOR","Separator","U1","Unsigned","borrow","borrow","borrow_mut","borrow_mut","fmt","fmt","fmt","fmt","from","from","into","into","try_from","try_from","try_into","try_into","type_id","type_id","value","DefaultRenderer","RipgrepRenderer","borrow","borrow","borrow_mut","borrow_mut","clone","clone","default","from","from","into","into","render","render","render_arguments","render_record","try_from","try_from","try_into","try_into","type_id","type_id"],"q":[[0,"delog"],[123,"delog::hex"],[149,"delog::render"],[172,"core::fmt"],[173,"log"],[174,"core::sync::atomic"],[175,"core::cmp"],[176,"core::option"],[177,"core::fmt"],[178,"core::hash"],[179,"core::iter::traits::iterator"],[180,"log"],[181,"core::marker"],[182,"core::convert"]],"d":["The “debug” level.","Corresponds to the Debug log level.","Semi-abstract characterization of the deferred loggers …","The “error” level.","Corresponds to the Error log level.","A way to pass on logs, user supplied.","The “info” level.","Corresponds to the Info log level.","An enum representing the available verbosity levels of the …","An enum representing the available verbosity level filters …","A level lower than all log levels.","The “payload” of a log message.","A way to format logs, user supplied.","Trait for either state or statistics of loggers.","Statistics on logger usage.","The “trace” level.","Corresponds to the Trace log level.","Fallible, panic-free version of the log::Log trait.","TryLog with some usage statistics on top.","The “warn” level.","Corresponds to the Warn log level.","The message body.","Returns the string representation of the Level.","Returns the string representation of the LevelFilter.","How often was one of the logging macros called.","How often was one of the logging macros called.","","","","","","","","","the underlying buffer","Returns a new builder.","Capacity of circular buffer.","Capacity of circular buffer.","How many characters were claimed so far.","","","","","","","Generate a deferred logger with specified capacity and …","The core “read from circular buffer” method. Marked …","The core “write to circular buffer” method. Marked …","","","","","The source file containing the message.","The module path of the message, if it is a 'static string.","Call the flusher.","Implementor must handle passed log &str in some hopefully …","How often was the flusher called.","How often was the flusher called.","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Generate logging macros that can be gated by library.","","","Convenient Display and other traits for binary data.","Compactly format byte arrays and slices as hexadecimals.","More compactly format byte arrays and slices as …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Iterate through all supported logging levels.","Iterate through all supported filtering levels.","The verbosity level of the message.","The line containing the message.","","Returns a reference to the logger (as TryLogWithStatistics …","Returns the most verbose logging level.","Returns the most verbose logging level filter.","Metadata about the log directive.","The module path of the message.","The module path of the message, if it is a 'static string.","","","","","How many bytes were flushed so far.","How many bytes were flushed so far.","The default, minimal renderer, and some helper functions.","Actually render the arguments (via internal static buffer).","Implementor must render record into buf, returning the …","Read out statistics on logger usage.","Read out statistics on logger usage.","How often was one of the logging macros called without …","How often was one of the logging macros called without …","The name of the target of the directive.","Converts self to the equivalent Level.","Converts the Level to the equivalent LevelFilter.","The fallible “write to circular buffer” method. Marked …","","","","","","","","","Fallible logging call (fails when buffer is full)","","","","","How many bytes were logged so far.","How many bytes were logged so far.","Zero-sized wrapper newtype, allowing grouping bytes in …","Explicitly construct a newtype to format with.","The actual number.","The actual separator str.","A type that specifies a separator str.","A type that represents the integer 1.","A type that specifies an unsigned integer.","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","","","","","The value to be formatted.","Renders just the record.args().","Renders the record.args(), prefixed by level, target, and …","","","","","","","The default, minimal renderer.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","For some reason, there seems to be no existing method to …","Render record, based on feature flags.","","","","","",""],"i":[3,5,0,3,5,0,3,5,0,0,5,0,0,0,0,3,5,0,0,3,5,1,3,5,34,11,11,3,5,1,11,3,5,1,13,1,13,13,13,11,3,5,1,3,5,0,0,0,3,3,5,5,1,1,13,35,34,11,11,3,3,5,5,1,11,3,5,1,3,5,0,3,5,0,0,0,11,3,5,1,3,5,1,1,0,0,3,5,1,1,1,3,3,5,5,34,11,0,13,36,24,24,34,11,1,5,3,0,11,3,5,1,11,3,5,1,37,11,3,5,1,34,11,0,0,29,30,0,0,0,38,27,38,27,27,27,27,27,38,27,38,27,38,27,38,27,38,27,27,0,0,32,33,32,33,32,33,0,32,33,32,33,32,33,0,0,32,33,32,33,32,33],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[1,2],[3,4],[5,4],[-1,-2,[],[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[7,[6]]],[]],[[],8],[-1,9,[]],[-1,9,[]],[-1,10,[]],[11,11],[3,3],[5,5],[1,1],[[3,3],12],[[5,5],12],0,[[-1,[7,[6]]],4,13],[[-1,1],14,13],[[3,5],15],[[3,3],15],[[5,3],15],[[5,5],15],[1,[[16,[4]]]],[1,[[16,[4]]]],[[-1,4],14,[]],[[-1,4],14,[]],[-1,-2,[],[]],0,[[11,17],18],[[3,17],[[20,[14,19]]]],[[3,17],[[20,[14,19]]]],[[5,17],[[20,[14,19]]]],[[5,17],[[20,[14,19]]]],[[1,17],[[20,[14,19]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[4,[[20,[3]]]],[4,[[20,[5]]]],0,[[3,-1],14,21],[[5,-1],14,21],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],[[0,[22]]]],[[],[[0,[22]]]],[1,3],[1,[[16,[23]]]],0,[[],[[16,[24]]]],[[],3],[[],5],[1,25],[1,[[16,[4]]]],[1,[[16,[4]]]],[[3,3],[[16,[12]]]],[[3,5],[[16,[12]]]],[[5,5],[[16,[12]]]],[[5,3],[[16,[12]]]],[-1,-2,[],[]],0,0,[[-1,1],[[7,[6]]],[]],[[-1,[7,[6]],1],[[7,[6]]],[]],[-1,11,[]],[-1,11,[]],[-1,-2,[],[]],0,[1,4],[5,[[16,[3]]]],[3,5],[[-1,1],[[20,[14,14]]],13],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[[-1,1],[[20,[14,14]]],[]],[-1,26,[]],[-1,26,[]],[-1,26,[]],[-1,26,[]],[-1,-2,[],[]],0,0,[-1,[[27,[-1,-2,-3]]],28,29,30],0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[27,[-1,-2,-3]],17],[[20,[14,19]]],[[31,[[7,[6]]]],28],29,30],[[[27,[-1,-2,-3]],17],[[20,[14,19]]],[[31,[[7,[6]]]],28],29,30],[[[27,[-1,-2,-3]],17],[[20,[14,19]]],[[31,[[7,[6]]]],28],29,30],[[[27,[-1,-2,-3]],17],[[20,[14,19]]],[[31,[[7,[6]]]],28],29,30],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,26,[]],[-1,26,[]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[32,32],[33,33],[[],32],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[32,[7,[6]],1],[[7,[6]]]],[[33,[7,[6]],1],[[7,[6]]]],[[[7,[6]],2],[[7,[6]]]],[[[7,[6]],1],[[7,[6]]]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,26,[]],[-1,26,[]]],"c":[],"p":[[3,"Record",0],[3,"Arguments",172],[4,"Level",0],[15,"str"],[4,"LevelFilter",0],[15,"u8"],[15,"slice"],[3,"RecordBuilder",173],[15,"usize"],[3,"AtomicUsize",174],[3,"Statistics",0],[4,"Ordering",175],[8,"Delogger",0],[15,"tuple"],[15,"bool"],[4,"Option",176],[3,"Formatter",172],[6,"Result",172],[3,"Error",172],[4,"Result",177],[8,"Hasher",178],[8,"Iterator",179],[15,"u32"],[8,"TryLogWithStatistics",0],[3,"Metadata",173],[3,"TypeId",180],[3,"HexStr",123],[8,"Sized",181],[8,"Unsigned",123],[8,"Separator",123],[8,"AsRef",182],[3,"DefaultRenderer",149],[3,"RipgrepRenderer",149],[8,"State",0],[8,"Flusher",0],[8,"Renderer",0],[8,"TryLog",0],[3,"U1",123]]},\ -"flexiber":{"doc":"flexiber","t":"NSSEINIYDIYDNDENSSNNNDNSSSNNNSNGSSDDDIIGDNNSSNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLMLKLLLLLLLLLLKLLKLLLLLLLLLLKLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMM","n":["Application","BIT_STRING","BOOLEAN","Class","Container","Context","Decodable","Decodable","Decoder","Encodable","Encodable","Encoder","Err","Error","ErrorKind","Failed","GENERALIZED_TIME","INTEGER","InvalidClass","InvalidLength","InvalidTag","Length","Length","NULL","OBJECT_IDENTIFIER","OCTET_STRING","Ok","Overflow","Overlength","PRINTABLE_STRING","Private","Result","SEQUENCE","SET","SimpleTag","Slice","Tag","TagLike","Tagged","TaggedSlice","TaggedValue","TrailingData","Truncated","UTC_TIME","UTF8_STRING","Underlength","UnexpectedTag","Universal","UnsupportedTagSize","add","add","add","add","add","application","as_bytes","as_bytes","as_bytes","as_ref","assert_eq","assert_eq","at","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","class","clone","clone","clone","clone","clone","clone","clone","clone","cmp","constructed","constructed","context","decode","decode","decode","decode","decode","decode","decode_nested","decode_nested","decode_tagged_slice","decode_tagged_value","default","embedding","embedding","embedding","encode","encode","encode","encode","encode","encode","encode","encode_tagged_collection","encode_to_slice","encode_to_slice","encode_untagged_collection","encoded_length","encoded_length","encoded_length","encoded_length","encoded_length","encoded_length","eq","eq","eq","eq","eq","eq","eq","eq","error","error","fields","finish","finish","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_bytes","from_bytes","into","into","into","into","into","into","into","into","into","into","is_empty","is_empty","is_empty","is_failed","is_failed","is_finished","kind","length","length","length","max","nested","new","new","new","new","new","number","partial_cmp","position","private","tag","tag","to_usize","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","universal","with_value","with_value","zero","actual","actual","byte","decoded","expected","expected","remaining","tag","value"],"q":[[0,"flexiber"],[246,"flexiber::ErrorKind"],[255,"core::marker"],[256,"core::clone"],[257,"core::cmp"],[258,"core::ops::function"],[259,"core::cmp"],[260,"core::fmt"],[261,"core::option"],[262,"core::result"],[263,"core::any"]],"d":["","","","Class of BER tag.","Multiple encodables in a container.","","Decoding trait.","Derive the Decodable trait on a struct.","BER-TLV decoder.","Encoding trait.","Derive the Encodable trait on a struct.","BER-TLV encoder.","Contains the error value","Error type.","Error type.","Operation failed due to previous error","","","Class has more than 2 bytes","Length greater than u16::MAX","Invalid tag","BER-TLV-encoded length.","Incorrect length for a given field","","","","Contains the success value","Integer overflow occurred (library bug!)","Message is longer than BER-TLV’s limits support","","","Result type.","","","These are tags like in SIMPLE-TLV.","Slice of at most Length::max() bytes.","The tag field consists of a single byte encoding a tag …","This is the common trait that types to be used as tags are …","Types with an associated BER-TLV Tag.","Raw BER-TLV data object TaggedValue<Slice<'_>>.","BER-TLV data object.","Undecoded trailing data at end of message","Unexpected end-of-message/nested field when decoding","","","Encoded message is shorter than the expected length (i.e. …","Unexpected tag","","Tag does not fit in 3 bytes","","","","","","","Borrow the inner byte slice.","Borrow the inner byte slice","Borrow the inner byte slice.","","Assert that this Tag matches the provided expected tag.","Assert that this Tag matches the provided expected tag.","Annotate an ErrorKind with context about where it occurred,","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Attempt to decode this message using the provided decoder.","","Decode a value which impls the Decodable trait.","","","","Decode nested values, creating a new Decoder for the data …","Decode nested values, creating a new Decoder for the data …","Decode a TaggedSlice with tag checked to be as expected, …","Decode a TaggedValue with tag checked to be as expected, …","","To stick with one Error type, make sure the tag type can …","","","Encode this value as BER-TLV using the provided Encoder.","","Encode a value which impls the Encodable trait.","","","","","Encode a collection of values which impl the Encodable …","Encode this value to the provided byte slice, returning a …","Encode this value to the provided byte slice, returning a …","Encode a collection of values which impl the Encodable …","Compute the length of this value in bytes when encoded as …","","","","","","","","","","","","","","Return an error with the given ErrorKind, annotating it …","Return an error with the given ErrorKind, annotating it …","Call the provided function with a slice of Encodable trait …","Finish decoding, returning the given value if there is no …","Finish encoding to the buffer, returning a slice …","","","","","","","","","","","","","","Create a new tagged slice, checking lengths.","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Create a new tagged slice, checking lengths.","Returns the argument unchanged.","Parse Self from the provided byte slice.","Parse Self from the provided byte slice.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Is the inner byte slice empty?","Is this Slice empty?","Is the inner byte slice empty?","Did the decoding operation fail due to an error?","Did the decoding operation fail due to an error?","Have we decoded all of the bytes in this Decoder?","Get the ErrorKind which occurred.","Get the length of the inner byte slice.","Get the Length of this Slice","Get the length of the inner byte slice.","Get the maximum length supported by BER-TLV: 65,535.","For errors occurring inside of a nested message, extend …","Create a new decoder for the given byte slice.","Create a new encoder with the given byte slice as a …","Create a new Error","Create a new Slice, ensuring that the provided slice value …","","","","Get the position inside of the message where the error …","","The tag","","Convert length to usize.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Ergonomic way to get a TaggedValue for a given tag and …","Ergonomic way to get a TaggedValue for a given tag and …","Return a length of 0.","Actual length","Actual tag encountered in the message","Raw byte value of the tag","Length of the decoded data","Expected length","Tag the decoder was expecting (if there is a single such …","Total length of the remaining data left in the buffer","Tag type of the value being decoded",""],"i":[15,6,6,0,0,15,0,0,0,0,0,0,2,0,0,12,6,6,12,12,12,0,12,6,6,6,2,12,12,6,15,0,6,6,0,0,0,0,0,0,0,12,12,6,6,12,12,15,12,2,1,1,1,1,6,7,10,11,10,20,20,12,18,22,13,12,1,14,10,15,6,11,18,22,13,12,1,14,10,15,6,11,6,13,12,1,14,10,15,6,11,1,6,6,6,19,7,18,1,14,6,7,11,18,18,1,20,14,6,24,7,22,1,14,6,11,22,24,24,22,24,7,1,14,6,11,13,12,1,14,10,15,6,11,18,22,34,18,22,18,22,13,13,12,12,1,1,10,15,6,6,11,7,18,18,22,13,13,13,12,1,1,1,14,10,15,6,6,11,11,19,19,18,22,13,12,1,14,10,15,6,11,7,10,11,18,22,18,13,7,10,11,1,13,18,22,13,10,11,6,1,13,6,35,11,1,18,22,13,12,1,1,1,14,14,10,15,15,6,6,6,11,18,22,13,12,1,14,10,15,6,11,18,22,13,12,1,14,10,15,6,11,6,20,20,1,36,37,38,39,36,37,39,40,41],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[2,[1]],1],[[2,[1]]]],[[1,1],[[2,[1]]]],[[1,3],[[2,[1]]]],[[1,4],[[2,[1]]]],[[1,5],[[2,[1]]]],[3,6],[[[7,[-1]]],[[8,[5]]],9],[10,[[8,[5]]]],[[[11,[10,-1]]],[[8,[5]]],9],[10,[[8,[5]]]],[[-1,-1],[[2,[-1]]],[]],[[-1,-1],[[2,[-1]]],[]],[[12,1],13],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[13,13],[12,12],[1,1],[14,14],[10,10],[15,15],[6,6],[[[11,[-1,-2]]],[[11,[-1,-2]]],16,16],[[1,1],17],[6,6],0,[3,6],[18,[[2,[-1]]],[]],[18,[[2,[[7,[-1]]]]],[19,20]],[18,[[2,[-1]]],19],[18,[[2,[1]]]],[18,[[2,[14]]]],[18,[[2,[6]]]],[[[7,[-1]],-2],[[2,[-3]]],9,21,[]],[[[11,[10,-1]],-2],[[2,[-3]]],9,21,[]],[[18,-1],[[2,[[8,[5]]]]],[19,20]],[[18,-1],[[2,[-2]]],[19,20],19],[[],1],[-1,6,[]],[14,6],[6,6],[[-1,22],[[2,[23]]],[]],[[[7,[-1]],22],[[2,[23]]],[9,24]],[[22,-1],[[2,[23]]],24],[[1,22],[[2,[23]]]],[[14,22],[[2,[23]]]],[[6,22],[[2,[23]]]],[[[11,[-1,-2]],22],[[2,[23]]],24,[9,24]],[[22,6,[8,[24]]],[[2,[23]]]],[[-1,[8,[5]]],[[2,[[8,[5]]]]],[]],[[-1,[8,[5]]],[[2,[[8,[5]]]]],[]],[[22,[8,[24]]],[[2,[23]]]],[-1,[[2,[1]]],[]],[[[7,[-1]]],[[2,[1]]],[9,24]],[1,[[2,[1]]]],[14,[[2,[1]]]],[6,[[2,[1]]]],[[[11,[-1,-2]]],[[2,[1]]],24,[9,24]],[[13,13],25],[[12,12],25],[[1,1],25],[[14,14],25],[[10,10],25],[[15,15],25],[[6,6],25],[[[11,[-1,-2]],[11,[-1,-2]]],25,26,26],[[18,12],[[2,[-1]]],[]],[[22,12],[[2,[-1]]],[]],[[-1,-2],[[2,[-3]]],[],21,[]],[[18,-1],[[2,[-1]]],[]],[22,[[2,[[8,[5]]]]]],[[18,27],28],[[22,27],28],[[13,27],28],[[13,27],28],[[12,27],28],[[12,27],28],[[1,27],28],[[1,27],28],[[10,27],28],[[15,27],28],[[6,27],28],[[6,27],28],[[[11,[-1,-2]],27],28,29,29],[[-1,[8,[5]]],[[2,[[7,[-1]]]]],9],[-1,-1,[]],[[[8,[5]]],18],[-1,-1,[]],[12,13],[-1,-1,[]],[30,13],[-1,-1,[]],[5,1],[-1,-1,[]],[3,1],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[15,25,3],6],[[-1,[8,[5]]],[[2,[[11,[10,-1]]]]],9],[-1,-1,[]],[[[8,[5]]],[[2,[-1]]],[]],[[[8,[5]]],[[2,[-1]]],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[7,[-1]]],25,9],[10,25],[[[11,[10,-1]]],25,9],[18,25],[22,25],[18,25],[13,12],[[[7,[-1]]],1,9],[10,1],[[[11,[10,-1]]],1,9],[[],4],[[13,1],13],[[[8,[5]]],18],[[[8,[5]]],22],[[12,1],13],[[[8,[5]]],[[2,[10]]]],[[-1,-2],[[11,[-2,-1]]],9,[]],0,[[1,1],[[31,[17]]]],[13,[[31,[1]]]],[3,6],[[],6],[[[11,[-1,-2]]],-2,[],9],[1,4],[-1,[[32,[-2]]],[],[]],[-1,[[32,[-2]]],[],[]],[-1,[[32,[-2]]],[],[]],[-1,[[32,[-2]]],[],[]],[4,[[2,[1]]]],[-1,[[32,[-2]]],[],[]],[[[8,[24]]],[[2,[1]]]],[-1,[[32,[-2]]],[],[]],[5,[[2,[14]]]],[-1,[[32,[-2]]],[],[]],[-1,[[32,[-2]]],[],[]],[5,[[2,[15]]]],[5,[[2,[6]]]],[[[8,[5]]],[[2,[6]]]],[-1,[[32,[-2]]],[],[]],[-1,[[32,[-2]]],[],[]],[-1,[[32,[-2]]],[],[]],[-1,[[32,[-2]]],[],[]],[-1,[[32,[-2]]],[],[]],[-1,[[32,[-2]]],[],[]],[-1,[[32,[-2]]],[],[]],[-1,[[32,[-2]]],[],[]],[-1,[[32,[-2]]],[],[]],[-1,[[32,[-2]]],[],[]],[-1,[[32,[-2]]],[],[]],[-1,[[32,[-2]]],[],[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[3,6],[[-1,-2],[[11,[-2,-1]]],[],[]],[[-1,-2],[[11,[-2,-1]]],[],[]],[[],1],0,0,0,0,0,0,0,0,0],"c":[],"p":[[3,"Length",0],[6,"Result",0],[15,"u16"],[15,"usize"],[15,"u8"],[3,"Tag",0],[6,"TaggedSlice",0],[15,"slice"],[8,"Copy",255],[3,"Slice",0],[3,"TaggedValue",0],[4,"ErrorKind",0],[3,"Error",0],[3,"SimpleTag",0],[4,"Class",0],[8,"Clone",256],[4,"Ordering",257],[3,"Decoder",0],[8,"Decodable",0],[8,"TagLike",0],[8,"FnOnce",258],[3,"Encoder",0],[15,"tuple"],[8,"Encodable",0],[15,"bool"],[8,"PartialEq",257],[3,"Formatter",259],[6,"Result",259],[8,"Debug",259],[4,"Infallible",260],[4,"Option",261],[4,"Result",262],[3,"TypeId",263],[8,"Container",0],[8,"Tagged",0],[13,"Underlength",246],[13,"UnexpectedTag",246],[13,"InvalidTag",246],[13,"TrailingData",246],[13,"Length",246],[13,"InvalidClass",246]]},\ -"flexiber_derive":{"doc":"Custom derive support for the flexiber crate","t":"YY","n":["Decodable","Encodable"],"q":[[0,"flexiber_derive"]],"d":["Derive the Decodable trait on a struct.","Derive the Encodable trait on a struct."],"i":[0,0],"f":[0,0],"c":[],"p":[]},\ -"log":{"doc":"A lightweight logging facade.","t":"NNNNNNEEIDDNDDDRDNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLOLLKLLLLLLLOLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLOLLLLLLLLLLLLLLLLKOOFLLFLLLLLLLLLLLLLLFFFFLLLLLLOLLLLLLLLLLLLLLLLLLLLLLLLO","n":["Debug","Debug","Error","Error","Info","Info","Level","LevelFilter","Log","Metadata","MetadataBuilder","Off","ParseLevelError","Record","RecordBuilder","STATIC_MAX_LEVEL","SetLoggerError","Trace","Trace","Warn","Warn","args","args","as_str","as_str","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build","builder","builder","clone","clone","clone","clone","cmp","cmp","cmp","cmp","debug","default","default","enabled","eq","eq","eq","eq","eq","eq","eq","error","file","file","file_static","file_static","flush","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from_str","from_str","hash","hash","hash","hash","info","into","into","into","into","into","into","into","into","iter","iter","level","level","level","level","line","line","log","log","log_enabled","logger","max","max","max_level","metadata","metadata","module_path","module_path","module_path_static","module_path_static","new","new","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","set_logger","set_logger_racy","set_max_level","set_max_level_racy","target","target","target","target","to_level","to_level_filter","trace","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","warn"],"q":[[0,"log"],[170,"core::fmt"],[171,"core::cmp"],[172,"core::option"],[173,"core::fmt"],[174,"core::hash"],[175,"core::iter::traits::iterator"],[176,"core::any"]],"d":["The “debug” level.","Corresponds to the Debug log level.","The “error” level.","Corresponds to the Error log level.","The “info” level.","Corresponds to the Info log level.","An enum representing the available verbosity levels of the …","An enum representing the available verbosity level filters …","A trait encapsulating the operations required of a logger.","Metadata about a log message.","Builder for Metadata.","A level lower than all log levels.","The type returned by from_str when the string doesn’t …","The “payload” of a log message.","Builder for Record.","The statically resolved maximum log level.","The type returned by set_logger if set_logger has already …","The “trace” level.","Corresponds to the Trace log level.","The “warn” level.","Corresponds to the Warn log level.","The message body.","Set args.","Returns the string representation of the Level.","Returns the string representation of the LevelFilter.","","","","","","","","","","","","","","","","","Invoke the builder and return a Record","Returns a Metadata object.","Returns a new builder.","Returns a new builder.","","","","","","","","","Logs a message at the debug level.","","","Determines if a log message with the specified metadata …","","","","","","","","Logs a message at the error level.","The source file containing the message.","Set file","The module path of the message, if it is a 'static string.","Set file to a 'static string.","Flushes any buffered records.","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","Logs a message at the info level.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Iterate through all supported logging levels.","Iterate through all supported filtering levels.","The verbosity level of the message.","Set Metadata::level.","The verbosity level of the message.","Setter for level.","The line containing the message.","Set line","Logs the Record.","The standard logging macro.","Determines if a message logged at the specified level in …","Returns a reference to the logger.","Returns the most verbose logging level.","Returns the most verbose logging level filter.","Returns the current maximum log level.","Metadata about the log directive.","Set metadata. Construct a Metadata object with …","The module path of the message.","Set module_path","The module path of the message, if it is a 'static string.","Set module_path to a 'static string","Construct new RecordBuilder.","Construct a new MetadataBuilder.","","","","","","","Sets the global logger to a &'static Log.","A thread-unsafe version of set_logger.","Sets the global maximum log level.","A thread-unsafe version of set_max_level.","The name of the target of the directive.","Set Metadata::target","The name of the target of the directive.","Setter for target.","Converts self to the equivalent Level.","Converts the Level to the equivalent LevelFilter.","Logs a message at the trace level.","","","","","","","","","","","","","","","","","","","","","","","","","Logs a message at the warn level."],"i":[4,6,4,6,4,6,0,0,0,0,0,6,0,0,0,0,0,4,6,4,6,1,3,4,6,4,6,1,3,8,7,16,11,4,6,1,3,8,7,16,11,3,7,1,8,4,6,1,8,4,6,8,7,0,3,7,21,4,4,6,6,8,7,11,0,1,3,1,3,21,4,4,6,6,1,3,8,7,16,16,11,11,4,6,1,3,8,7,16,11,4,6,4,6,8,7,0,4,6,1,3,8,7,16,11,4,6,1,3,8,7,1,3,21,0,0,0,4,6,0,1,3,1,3,1,3,3,7,4,4,6,6,8,7,0,0,0,0,1,3,8,7,6,4,0,4,6,1,3,8,7,16,11,4,6,1,3,8,7,16,11,4,6,1,3,8,7,16,11,0],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[1,2],[[3,2],3],[4,5],[6,5],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[3,1],[7,8],[[],3],[[],7],[4,4],[6,6],[1,1],[8,8],[[4,4],9],[[6,6],9],[[8,8],9],[[7,7],9],0,[[],3],[[],7],[[-1,8],10,[]],[[4,6],10],[[4,4],10],[[6,4],10],[[6,6],10],[[8,8],10],[[7,7],10],[[11,11],10],0,[1,[[12,[5]]]],[[3,[12,[5]]],3],[1,[[12,[5]]]],[[3,[12,[5]]],3],[-1,13,[]],[[4,14],15],[[4,14],15],[[6,14],15],[[6,14],15],[[1,14],15],[[3,14],15],[[8,14],15],[[7,14],15],[[16,14],15],[[16,14],15],[[11,14],15],[[11,14],15],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[5,[[17,[4]]]],[5,[[17,[6]]]],[[4,-1],13,18],[[6,-1],13,18],[[8,-1],13,18],[[7,-1],13,18],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],[[0,[19]]]],[[],[[0,[19]]]],[1,4],[[3,4],3],[8,4],[[7,4],7],[1,[[12,[20]]]],[[3,[12,[20]]],3],[[-1,1],13,[]],0,0,[[],21],[[],4],[[],6],[[],6],[1,8],[[3,8],3],[1,[[12,[5]]]],[[3,[12,[5]]],3],[1,[[12,[5]]]],[[3,[12,[5]]],3],[[],3],[[],7],[[4,4],[[12,[9]]]],[[4,6],[[12,[9]]]],[[6,6],[[12,[9]]]],[[6,4],[[12,[9]]]],[[8,8],[[12,[9]]]],[[7,7],[[12,[9]]]],[21,[[17,[13,16]]]],[21,[[17,[13,16]]]],[6,13],[6,13],[1,5],[[3,5],3],[8,5],[[7,5],7],[6,[[12,[4]]]],[4,6],0,[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,22,[]],[-1,22,[]],[-1,22,[]],[-1,22,[]],[-1,22,[]],[-1,22,[]],[-1,22,[]],[-1,22,[]],0],"c":[],"p":[[3,"Record",0],[3,"Arguments",170],[3,"RecordBuilder",0],[4,"Level",0],[15,"str"],[4,"LevelFilter",0],[3,"MetadataBuilder",0],[3,"Metadata",0],[4,"Ordering",171],[15,"bool"],[3,"ParseLevelError",0],[4,"Option",172],[15,"tuple"],[3,"Formatter",170],[6,"Result",170],[3,"SetLoggerError",0],[4,"Result",173],[8,"Hasher",174],[8,"Iterator",175],[15,"u32"],[8,"Log",0],[3,"TypeId",176]]},\ -"proc_macro2":{"doc":"github crates-io docs-rs","t":"NNNEDNDNNDDNNNDNEDDELLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDLLLLLLLLLLLLLLDCLLLLLLLLLLLLLL","n":["Alone","Brace","Bracket","Delimiter","Group","Group","Ident","Ident","Joint","LexError","Literal","Literal","None","Parenthesis","Punct","Punct","Spacing","Span","TokenStream","TokenTree","as_char","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","byte_string","call_site","character","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","default","delim_span","delimiter","eq","eq","eq","eq","equivalent","equivalent","equivalent","extend","extend","extra","f32_suffixed","f32_unsuffixed","f64_suffixed","f64_unsuffixed","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_iter","from_iter","from_str","from_str","hash","i128_suffixed","i128_unsuffixed","i16_suffixed","i16_unsuffixed","i32_suffixed","i32_unsuffixed","i64_suffixed","i64_unsuffixed","i8_suffixed","i8_unsuffixed","into","into","into","into","into","into","into","into","into","into","into_iter","is_empty","isize_suffixed","isize_unsuffixed","join","located_at","mixed_site","new","new","new","new","new_raw","partial_cmp","resolved_at","set_span","set_span","set_span","set_span","set_span","source_text","spacing","span","span","span","span","span","span","span_close","span_open","stream","string","subspan","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","to_string","to_string","to_string","token_stream","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","u128_suffixed","u128_unsuffixed","u16_suffixed","u16_unsuffixed","u32_suffixed","u32_unsuffixed","u64_suffixed","u64_unsuffixed","u8_suffixed","u8_unsuffixed","unwrap","usize_suffixed","usize_unsuffixed","DelimSpan","borrow","borrow_mut","clone","clone_into","close","fmt","from","into","join","open","to_owned","try_from","try_into","type_id","IntoIter","TokenStream","borrow","borrow_mut","clone","clone_into","fmt","from","into","into_iter","next","size_hint","to_owned","try_from","try_into","type_id"],"q":[[0,"proc_macro2"],[231,"proc_macro2::extra"],[246,"proc_macro2::token_stream"],[262,"core::cmp"],[263,"core::marker"],[264,"core::convert"],[265,"core::iter::traits::collect"],[266,"core::fmt"],[267,"core::fmt"],[268,"proc_macro"],[269,"core::hash"],[270,"core::option"],[271,"alloc::string"],[272,"core::ops::range"],[273,"core::any"]],"d":["E.g. + is Alone in + =, +ident or +().","{ ... }","[ ... ]","Describes how a sequence of token trees is delimited.","A delimited token stream.","A token stream surrounded by bracket delimiters.","A word of Rust code, which may be a keyword or legal …","An identifier.","E.g. + is Joint in += or ' is Joint in '#.","Error returned from TokenStream::from_str.","A literal string ("hello"), byte string (b"hello"), …","A literal character ('a'), string ("hello"), number (2.3), …","Ø ... Ø","( ... )","A Punct is a single punctuation character like +, - or #.","A single punctuation character (+, ,, $, etc.).","Whether a Punct is followed immediately by another Punct …","A region of source code, along with macro expansion …","An abstract stream of tokens, or more concretely a …","A single token or a delimited sequence of token trees …","Returns the value of this punctuation character as char.","","","","","","","","","","","","","","","","","","","","","Byte string literal.","The span of the invocation of the current procedural macro.","Character literal.","","","","","","","","","","","","","","","","","","","","","Returns an object that holds this group’s span_open() and","Returns the punctuation used as the delimiter for this …","","","","","","","","","","Items which do not have a correspondence to any API in the …","Creates a new suffixed floating-point literal.","Creates a new unsuffixed floating-point literal.","Creates a new suffixed floating-point literal.","Creates a new unsuffixed floating-point literal.","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","Creates a new suffixed integer literal with the specified …","Creates a new unsuffixed integer literal with the …","Creates a new suffixed integer literal with the specified …","Creates a new unsuffixed integer literal with the …","Creates a new suffixed integer literal with the specified …","Creates a new unsuffixed integer literal with the …","Creates a new suffixed integer literal with the specified …","Creates a new unsuffixed integer literal with the …","Creates a new suffixed integer literal with the specified …","Creates a new unsuffixed integer literal with the …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Checks if this TokenStream is empty.","Creates a new suffixed integer literal with the specified …","Creates a new unsuffixed integer literal with the …","Create a new span encompassing self and other.","Creates a new span with the same name resolution behavior …","The span located at the invocation of the procedural …","Returns an empty TokenStream containing no token trees.","Creates a new Group with the given delimiter and token …","Creates a new Punct from the given character and spacing.","Creates a new Ident with the given string as well as the …","Same as Ident::new, but creates a raw identifier (r#ident…","","Creates a new span with the same line/column information …","Configures the span for only this token.","Configures the span for this Group’s delimiters, but not …","Configure the span for this punctuation character.","Configures the span of this Ident, possibly changing its …","Configures the span associated for this literal.","Returns the source text behind a span. This preserves the …","Returns the spacing of this punctuation character, …","","Returns the span of this tree, delegating to the span …","Returns the span for the delimiters of this token stream, …","Returns the span for this punctuation character.","Returns the span of this Ident.","Returns the span encompassing this literal.","Returns the span pointing to the closing delimiter of this …","Returns the span pointing to the opening delimiter of this …","Returns the TokenStream of tokens that are delimited in …","String literal.","Returns a Span that is a subset of self.span() containing …","","","","","","","","","","","","","","","","","Public implementation details for the TokenStream type, …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Creates a new suffixed integer literal with the specified …","Creates a new unsuffixed integer literal with the …","Creates a new suffixed integer literal with the specified …","Creates a new unsuffixed integer literal with the …","Creates a new suffixed integer literal with the specified …","Creates a new unsuffixed integer literal with the …","Creates a new suffixed integer literal with the specified …","Creates a new unsuffixed integer literal with the …","Creates a new suffixed integer literal with the specified …","Creates a new unsuffixed integer literal with the …","Convert proc_macro2::Span to proc_macro::Span.","Creates a new suffixed integer literal with the specified …","Creates a new unsuffixed integer literal with the …","An object that holds a Group’s span_open() and …","","","","","Returns a span for the closing punctuation of the group …","","Returns the argument unchanged.","Calls U::from(self).","Returns a span covering the entire delimited group.","Returns a span for the opening punctuation of the group …","","","","","An iterator over TokenStream’s TokenTrees.","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","",""],"i":[11,10,10,0,0,8,0,8,11,0,0,8,10,10,0,8,0,0,0,0,1,23,7,6,8,9,10,1,11,12,5,23,7,6,8,9,10,1,11,12,5,5,6,5,7,6,8,9,10,1,11,12,5,7,6,8,9,10,1,11,12,5,12,7,9,9,10,11,12,12,10,11,12,7,7,0,5,5,5,5,23,23,7,7,6,8,8,9,9,10,1,1,11,12,12,5,5,23,7,7,7,6,6,8,8,8,8,8,9,10,1,11,12,5,7,7,7,5,12,5,5,5,5,5,5,5,5,5,5,23,7,6,8,9,10,1,11,12,5,7,7,5,5,6,6,6,7,9,1,12,12,12,6,8,9,1,12,5,6,1,23,8,9,1,12,5,9,9,9,5,5,7,6,8,9,10,1,11,12,5,23,7,8,9,1,12,5,0,23,7,6,8,9,10,1,11,12,5,23,7,6,8,9,10,1,11,12,5,23,7,6,8,9,10,1,11,12,5,5,5,5,5,5,5,5,5,5,5,6,5,5,0,15,15,15,15,15,15,15,15,15,15,15,15,15,15,0,0,35,35,35,35,35,35,35,35,35,35,35,35,35,35],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[1,2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[4,[3]]],5],[[],6],[2,5],[7,7],[6,6],[8,8],[9,9],[10,10],[1,1],[11,11],[12,12],[5,5],[[-1,-2],13,[],[]],[[-1,-2],13,[],[]],[[-1,-2],13,[],[]],[[-1,-2],13,[],[]],[[-1,-2],13,[],[]],[[-1,-2],13,[],[]],[[-1,-2],13,[],[]],[[-1,-2],13,[],[]],[[-1,-2],13,[],[]],[[12,12],14],[[],7],[9,15],[9,10],[[10,10],16],[[11,11],16],[[12,12],16],[[12,-1],16,[17,[19,[18]]]],[[-1,-2],16,[],[]],[[-1,-2],16,[],[]],[[-1,-2],16,[],[]],[[7,-1],13,20],[[7,-1],13,20],0,[21,5],[21,5],[22,5],[22,5],[[23,24],25],[[23,24],25],[[7,24],25],[[7,24],25],[[6,24],25],[[8,24],25],[[8,24],25],[[9,24],25],[[9,24],25],[[10,24],25],[[1,24],25],[[1,24],25],[[11,24],25],[[12,24],25],[[12,24],25],[[5,24],25],[[5,24],25],[-1,-1,[]],[8,7],[-1,-1,[]],[26,7],[-1,-1,[]],[27,6],[12,8],[5,8],[1,8],[9,8],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,7,20],[-1,7,20],[18,[[28,[7,23]]]],[18,[[28,[5,23]]]],[[12,-1],13,29],[30,5],[30,5],[31,5],[31,5],[32,5],[32,5],[33,5],[33,5],[34,5],[34,5],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[7,35],[7,16],[36,5],[36,5],[[6,6],[[37,[6]]]],[[6,6],6],[[],6],[[],7],[[10,7],9],[[2,11],1],[[18,6],12],[[18,6],12],[[12,12],[[37,[14]]]],[[6,6],6],[[8,6],13],[[9,6],13],[[1,6],13],[[12,6],13],[[5,6],13],[6,[[37,[38]]]],[1,11],[23,6],[8,6],[9,6],[1,6],[12,6],[5,6],[9,6],[9,6],[9,7],[18,5],[[5,-1],[[37,[6]]],[[40,[39]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,38,[]],[-1,38,[]],[-1,38,[]],[-1,38,[]],[-1,38,[]],[-1,38,[]],[-1,38,[]],0,[-1,[[28,[-2]]],[],[]],[-1,[[28,[-2]]],[],[]],[-1,[[28,[-2]]],[],[]],[-1,[[28,[-2]]],[],[]],[-1,[[28,[-2]]],[],[]],[-1,[[28,[-2]]],[],[]],[-1,[[28,[-2]]],[],[]],[-1,[[28,[-2]]],[],[]],[-1,[[28,[-2]]],[],[]],[-1,[[28,[-2]]],[],[]],[-1,[[28,[-2]]],[],[]],[-1,[[28,[-2]]],[],[]],[-1,[[28,[-2]]],[],[]],[-1,[[28,[-2]]],[],[]],[-1,[[28,[-2]]],[],[]],[-1,[[28,[-2]]],[],[]],[-1,[[28,[-2]]],[],[]],[-1,[[28,[-2]]],[],[]],[-1,[[28,[-2]]],[],[]],[-1,[[28,[-2]]],[],[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[42,5],[42,5],[43,5],[43,5],[44,5],[44,5],[45,5],[45,5],[3,5],[3,5],[6,27],[39,5],[39,5],0,[-1,-2,[],[]],[-1,-2,[],[]],[15,15],[[-1,-2],13,[],[]],[15,6],[[15,24],25],[-1,-1,[]],[-1,-2,[],[]],[15,6],[15,6],[-1,-2,[],[]],[-1,[[28,[-2]]],[],[]],[-1,[[28,[-2]]],[],[]],[-1,41,[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[35,35],[[-1,-2],13,[],[]],[[35,24],25],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[35,[[37,[8]]]],[35,[[13,[39,[37,[39]]]]]],[-1,-2,[],[]],[-1,[[28,[-2]]],[],[]],[-1,[[28,[-2]]],[],[]],[-1,41,[]]],"c":[],"p":[[3,"Punct",0],[15,"char"],[15,"u8"],[15,"slice"],[3,"Literal",0],[3,"Span",0],[3,"TokenStream",0],[4,"TokenTree",0],[3,"Group",0],[4,"Delimiter",0],[4,"Spacing",0],[3,"Ident",0],[15,"tuple"],[4,"Ordering",262],[3,"DelimSpan",231],[15,"bool"],[8,"Sized",263],[15,"str"],[8,"AsRef",264],[8,"IntoIterator",265],[15,"f32"],[15,"f64"],[3,"LexError",0],[3,"Formatter",266],[6,"Result",266],[3,"TokenStream",267],[3,"Span",267],[4,"Result",268],[8,"Hasher",269],[15,"i128"],[15,"i16"],[15,"i32"],[15,"i64"],[15,"i8"],[3,"IntoIter",246],[15,"isize"],[4,"Option",270],[3,"String",271],[15,"usize"],[8,"RangeBounds",272],[3,"TypeId",273],[15,"u128"],[15,"u16"],[15,"u32"],[15,"u64"]]},\ -"quote":{"doc":"github crates-io docs-rs","t":"IIIKKKKKOLLOOLLLLK","n":["IdentFragment","ToTokens","TokenStreamExt","append","append_all","append_separated","append_terminated","fmt","format_ident","into_token_stream","into_token_stream","quote","quote_spanned","span","span","to_token_stream","to_token_stream","to_tokens"],"q":[[0,"quote"],[18,"proc_macro2"],[19,"core::convert"],[20,"core::iter::traits::collect"],[21,"core::fmt"],[22,"core::fmt"],[23,"proc_macro2"]],"d":["Specialized formatting trait used by format_ident!.","Types that can be interpolated inside a quote! invocation.","TokenStream extension trait with methods for appending …","For use by ToTokens implementations.","For use by ToTokens implementations.","For use by ToTokens implementations.","For use by ToTokens implementations.","Format this value as an identifier fragment.","Formatting macro for constructing Idents.","Convert self directly into a TokenStream object.","Convert self directly into a TokenStream object.","The whole point.","Same as quote!, but applies a given span to all tokens …","Span associated with this IdentFragment.","Span associated with this IdentFragment.","Convert self directly into a TokenStream object.","Convert self directly into a TokenStream object.","Write self to the given TokenStream."],"i":[0,0,0,12,12,12,12,13,0,5,5,0,0,13,13,5,5,5],"f":[0,0,0,[[-1,-2],1,[],[[3,[2]]]],[[-1,-2],1,[],4],[[-1,-2,-3],1,[],4,5],[[-1,-2,-3],1,[],4,5],[[-1,6],7,[]],0,[-1,8,9],[-1,8,9],0,0,[-1,[[11,[10]]],[]],[-1,[[11,[10]]],[]],[-1,8,[]],[-1,8,[]],[[-1,8],1,[]]],"c":[],"p":[[15,"tuple"],[4,"TokenTree",18],[8,"Into",19],[8,"IntoIterator",20],[8,"ToTokens",0],[3,"Formatter",21],[6,"Result",21],[3,"TokenStream",18],[8,"Sized",22],[3,"Span",18],[4,"Option",23],[8,"TokenStreamExt",0],[8,"IdentFragment",0]]},\ -"syn":{"doc":"github crates-io docs-rs","t":"DNNNNDNNNNNEDGNNDENDNNNNNNNNNDNNNNNNNNNNNNDDNNNNEDDDNNDNNNNNNDEDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDNEDDNNNEEDNNNCDDNDNDNNNNNNNCCDNNNNDNCCENNCCDCCDCCDCCDCCDCCDCCDNNDNNENNEENDDNNNNNNNNENNNNNNNNNNNDDNNNEDDDDNNDNNNNNNNNGNENNNNNNENNNNONDENNNNNDENNNNNDDDDDDDDDEDDDDDDDENNNNNNDDNNNDDDEDENNMMMMMMMMLMMMMMMMMMMMMMMMMMMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMOMMMMOALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMLLMMMOOMLLLMMMMMMMMMMMMMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMAMMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLMMMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLMMMMMLMMMMLMMMMMMMLMMMMMMMMLLLLLLLLLLLLMMMMMMMMMMMMMMMOAFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLOLLLLOOFLLLLLMMMMMMMMMMMMMAMMMMMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMALMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMLMLLLLLMMMMMAMMLLLLDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLIKSKNDDDNQIDGIIGDLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLIKNDDDDEDDDNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLIKDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDIDDDDDDDDDDDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLIFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLLFLL","n":["Abi","Add","AddEq","And","AngleBracketed","AngleBracketedGenericArguments","Array","Array","Assign","AssignOp","Async","AttrStyle","Attribute","AttributeArgs","Await","BareFn","BareFnArg","BinOp","Binary","Binding","Binding","BitAnd","BitAndEq","BitOr","BitOrEq","BitXor","BitXorEq","Block","Bool","BoundLifetimes","Box","Brace","Bracket","Break","Byte","ByteStr","Call","Cast","Char","Closure","Const","Const","ConstParam","Constraint","Constraint","Continue","Cooked","Crate","Data","DataEnum","DataStruct","DataUnion","Default","Deref","DeriveInput","Div","DivEq","Enum","Eq","Eq","Err","Error","Expr","ExprArray","ExprAssign","ExprAssignOp","ExprAsync","ExprAwait","ExprBinary","ExprBlock","ExprBox","ExprBreak","ExprCall","ExprCast","ExprClosure","ExprContinue","ExprField","ExprForLoop","ExprGroup","ExprIf","ExprIndex","ExprLet","ExprLit","ExprLoop","ExprMacro","ExprMatch","ExprMethodCall","ExprParen","ExprPath","ExprRange","ExprReference","ExprRepeat","ExprReturn","ExprStruct","ExprTry","ExprTryBlock","ExprTuple","ExprType","ExprUnary","ExprUnsafe","ExprWhile","ExprYield","Field","Field","Fields","FieldsNamed","FieldsUnnamed","Float","ForLoop","Ge","GenericArgument","GenericParam","Generics","Group","Group","Gt","Ident","Ident","Ident","If","ImplGenerics","ImplTrait","Index","Index","Infer","Inherited","Inner","Int","Le","Let","Lifetime","Lifetime","Lifetime","Lifetime","Lifetime","Lifetime","Lifetime","LifetimeDef","List","Lit","Lit","Lit","Lit","Lit","LitBool","LitBool","LitBool","LitByte","LitByte","LitByte","LitByteStr","LitByteStr","LitByteStr","LitChar","LitChar","LitChar","LitFloat","LitFloat","LitFloat","LitInt","LitInt","LitInt","LitStr","LitStr","LitStr","Loop","Lt","Macro","Macro","Macro","MacroDelimiter","Match","Maybe","Member","Meta","Meta","MetaList","MetaNameValue","MethodCall","Mul","MulEq","NameValue","Named","Named","Ne","Neg","NestedMeta","Never","None","None","Not","Ok","Or","Outer","Paren","Paren","Paren","Parenthesized","ParenthesizedGenericArguments","Path","Path","Path","Path","PathArguments","PathSegment","PredicateEq","PredicateLifetime","PredicateType","Ptr","Public","QSelf","Range","Raw","Reference","Reference","Rem","RemEq","Repeat","Restricted","Result","Return","ReturnType","Shl","ShlEq","Shr","ShrEq","Slice","Str","StrStyle","Struct","Struct","Sub","SubEq","Token","Trait","TraitBound","TraitBoundModifier","TraitObject","Try","TryBlock","Tuple","Tuple","Turbofish","Type","Type","Type","Type","Type","Type","TypeArray","TypeBareFn","TypeGenerics","TypeGroup","TypeImplTrait","TypeInfer","TypeMacro","TypeNever","TypeParam","TypeParamBound","TypeParen","TypePath","TypePtr","TypeReference","TypeSlice","TypeTraitObject","TypeTuple","UnOp","Unary","Union","Unit","Unnamed","Unnamed","Unsafe","Variadic","Variant","Verbatim","Verbatim","Verbatim","VisCrate","VisPublic","VisRestricted","Visibility","WhereClause","WherePredicate","While","Yield","abi","and_token","apostrophe","args","args","arguments","as_token","as_token","as_turbofish","attrs","attrs","attrs","attrs","attrs","attrs","attrs","attrs","attrs","attrs","attrs","attrs","attrs","attrs","attrs","attrs","attrs","bang_token","bang_token","base","base10_digits","base10_digits","base10_parse","base10_parse","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","bounded_ty","bounds","bounds","bounds","bounds","bounds","bounds","bounds","brace_token","brace_token","braced","bracket_token","bracket_token","bracket_token","bracket_token","bracketed","buffer","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","colon2_token","colon_token","colon_token","colon_token","colon_token","colon_token","colon_token","colon_token","const_params","const_params_mut","const_token","const_token","crate_token","custom_keyword","custom_punctuation","data","default","default","default","default","default","delimiter","discriminant","dot_token","dots","dyn_token","elem","elem","elem","elem","elem","elem","elems","enum_token","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq_token","eq_token","eq_token","eq_token","eq_token","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","expr","expr","expr","expr","ext","extern_token","fields","fields","fields","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fn_token","for_token","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","func","generics","get_ident","group_token","gt_token","gt_token","gt_token","gt_token","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","ident","ident","ident","ident","ident","ident","ident","ident","ident","impl_token","in_token","index","index","inputs","inputs","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_iter","into_iter","into_iter","is_empty","is_empty","is_ident","is_none","iter","iter_mut","leading_colon","left","len","len","lhs_ty","lifetime","lifetime","lifetime","lifetimes","lifetimes","lifetimes","lifetimes","lifetimes","lifetimes_mut","lit","lit","lt_token","lt_token","lt_token","lt_token","mac","make_where_clause","member","modifier","mutability","mutability","name","name","named","nested","new","new","new","new","new","new","new","new","new","new","new","new_raw","op","op","output","output","params","paren_token","paren_token","paren_token","paren_token","paren_token","paren_token","paren_token","paren_token","paren_token","paren_token","parenthesized","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse2","parse_any","parse_args","parse_args_with","parse_body","parse_body_with","parse_inner","parse_macro_input","parse_meta","parse_mod_style","parse_named","parse_outer","parse_quote","parse_quote_spanned","parse_str","parse_unnamed","parse_with","partial_cmp","partial_cmp","path","path","path","path","path","path","path","path","path","position","pound_token","predicates","pub_token","pub_token","punctuated","qself","qself","rhs_ty","right","segments","semi_token","semi_token","set_span","set_span","set_span","set_span","set_span","set_span","set_span","set_span","set_span","set_span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","spanned","split_for_impl","star_token","struct_token","style","suffix","suffix","suffix","suffix","suffix","suffix","suffix","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","token","token","token","token","token","token","token","token","tokens","tokens","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","ty","ty","ty","ty","ty","ty","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_params","type_params_mut","underscore_token","union_token","unnamed","unraw","unsafety","value","value","value","value","value","value","variadic","variants","vis","vis","visit","where_clause","where_token","without_plus","without_plus","without_plus","without_plus","Cursor","TokenBuffer","begin","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","empty","eof","eq","equivalent","from","from","group","ident","into","into","lifetime","literal","new","new2","partial_cmp","punct","span","to_owned","token_stream","token_tree","try_from","try_from","try_into","try_into","type_id","type_id","IdentExt","parse_any","peek_any","unraw","Err","Error","Lookahead1","Nothing","Ok","Output","Parse","ParseBuffer","ParseStream","Parser","Peek","Result","StepCursor","advance_to","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","call","clone","clone","clone_into","clone_into","combine","cursor","deref","discouraged","drop","eq","equivalent","error","error","error","extend","fmt","fmt","fmt","fmt","fmt","fork","from","from","from","from","from","from","hash","into","into","into","into","into","into_compile_error","into_iter","into_iter","is_empty","lookahead1","new","new_spanned","parse","parse","parse","parse","parse2","parse_str","parse_terminated","peek","peek","peek2","peek3","span","span","step","to_compile_error","to_owned","to_owned","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","Speculative","advance_to","End","IntoIter","IntoPairs","Iter","IterMut","Pair","Pairs","PairsMut","Punctuated","Punctuated","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clear","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","default","empty_or_trailing","eq","equivalent","extend","extend","first","first_mut","fmt","from","from","from","from","from","from","from","from","from_iter","from_iter","hash","index","index_mut","insert","into","into","into","into","into","into","into","into","into_iter","into_iter","into_iter","into_iter","into_iter","into_iter","into_iter","into_iter","into_iter","into_pairs","into_tuple","into_value","is_empty","iter","iter_mut","last","last_mut","len","len","len","len","len","len","len","new","new","next","next","next","next","next","next","next_back","next_back","next_back","next_back","next_back","next_back","pairs","pairs_mut","parse_separated_nonempty","parse_separated_nonempty_with","parse_terminated","parse_terminated_with","pop","punct","punct_mut","push","push_punct","push_value","size_hint","size_hint","size_hint","size_hint","size_hint","size_hint","span","span","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_tokens","to_tokens","trailing_punct","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","value","value_mut","Spanned","span","Abstract","Add","AddEq","And","AndAnd","AndEq","As","Async","At","Auto","Await","Bang","Become","Box","Brace","Bracket","Break","Caret","CaretEq","Colon","Colon2","Comma","Const","Continue","Crate","Default","Div","DivEq","Do","Dollar","Dot","Dot2","Dot3","DotDotEq","Dyn","Else","Enum","Eq","EqEq","Extern","FatArrow","Final","Fn","For","Ge","Group","Gt","If","Impl","In","LArrow","Le","Let","Loop","Lt","Macro","Match","Mod","Move","MulEq","Mut","Ne","Or","OrEq","OrOr","Override","Paren","Pound","Priv","Pub","Question","RArrow","Ref","Rem","RemEq","Return","SelfType","SelfValue","Semi","Shl","ShlEq","Shr","ShrEq","Star","Static","Struct","Sub","SubEq","Super","Tilde","Token","Trait","Try","Type","Typeof","Underscore","Union","Unsafe","Unsized","Use","Virtual","Where","While","Yield","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","spans","surround","surround","surround","surround","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","to_tokens","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","Visit","visit_abi","visit_abi","visit_abi","visit_angle_bracketed_generic_arguments","visit_angle_bracketed_generic_arguments","visit_angle_bracketed_generic_arguments","visit_attr_style","visit_attr_style","visit_attr_style","visit_attribute","visit_attribute","visit_attribute","visit_bare_fn_arg","visit_bare_fn_arg","visit_bare_fn_arg","visit_bin_op","visit_bin_op","visit_bin_op","visit_binding","visit_binding","visit_binding","visit_bound_lifetimes","visit_bound_lifetimes","visit_bound_lifetimes","visit_const_param","visit_const_param","visit_const_param","visit_constraint","visit_constraint","visit_constraint","visit_data","visit_data","visit_data","visit_data_enum","visit_data_enum","visit_data_enum","visit_data_struct","visit_data_struct","visit_data_struct","visit_data_union","visit_data_union","visit_data_union","visit_derive_input","visit_derive_input","visit_derive_input","visit_expr","visit_expr","visit_expr","visit_expr_binary","visit_expr_binary","visit_expr_binary","visit_expr_call","visit_expr_call","visit_expr_call","visit_expr_cast","visit_expr_cast","visit_expr_cast","visit_expr_field","visit_expr_field","visit_expr_field","visit_expr_index","visit_expr_index","visit_expr_index","visit_expr_lit","visit_expr_lit","visit_expr_lit","visit_expr_paren","visit_expr_paren","visit_expr_paren","visit_expr_path","visit_expr_path","visit_expr_path","visit_expr_unary","visit_expr_unary","visit_expr_unary","visit_field","visit_field","visit_field","visit_fields","visit_fields","visit_fields","visit_fields_named","visit_fields_named","visit_fields_named","visit_fields_unnamed","visit_fields_unnamed","visit_fields_unnamed","visit_generic_argument","visit_generic_argument","visit_generic_argument","visit_generic_param","visit_generic_param","visit_generic_param","visit_generics","visit_generics","visit_generics","visit_ident","visit_ident","visit_ident","visit_index","visit_index","visit_index","visit_lifetime","visit_lifetime","visit_lifetime","visit_lifetime_def","visit_lifetime_def","visit_lifetime_def","visit_lit","visit_lit","visit_lit","visit_lit_bool","visit_lit_bool","visit_lit_bool","visit_lit_byte","visit_lit_byte","visit_lit_byte","visit_lit_byte_str","visit_lit_byte_str","visit_lit_byte_str","visit_lit_char","visit_lit_char","visit_lit_char","visit_lit_float","visit_lit_float","visit_lit_float","visit_lit_int","visit_lit_int","visit_lit_int","visit_lit_str","visit_lit_str","visit_lit_str","visit_macro","visit_macro","visit_macro","visit_macro_delimiter","visit_macro_delimiter","visit_macro_delimiter","visit_member","visit_member","visit_member","visit_meta","visit_meta","visit_meta","visit_meta_list","visit_meta_list","visit_meta_list","visit_meta_name_value","visit_meta_name_value","visit_meta_name_value","visit_nested_meta","visit_nested_meta","visit_nested_meta","visit_parenthesized_generic_arguments","visit_parenthesized_generic_arguments","visit_parenthesized_generic_arguments","visit_path","visit_path","visit_path","visit_path_arguments","visit_path_arguments","visit_path_arguments","visit_path_segment","visit_path_segment","visit_path_segment","visit_predicate_eq","visit_predicate_eq","visit_predicate_eq","visit_predicate_lifetime","visit_predicate_lifetime","visit_predicate_lifetime","visit_predicate_type","visit_predicate_type","visit_predicate_type","visit_qself","visit_qself","visit_qself","visit_return_type","visit_return_type","visit_return_type","visit_span","visit_span","visit_span","visit_trait_bound","visit_trait_bound","visit_trait_bound","visit_trait_bound_modifier","visit_trait_bound_modifier","visit_trait_bound_modifier","visit_type","visit_type","visit_type","visit_type_array","visit_type_array","visit_type_array","visit_type_bare_fn","visit_type_bare_fn","visit_type_bare_fn","visit_type_group","visit_type_group","visit_type_group","visit_type_impl_trait","visit_type_impl_trait","visit_type_impl_trait","visit_type_infer","visit_type_infer","visit_type_infer","visit_type_macro","visit_type_macro","visit_type_macro","visit_type_never","visit_type_never","visit_type_never","visit_type_param","visit_type_param","visit_type_param","visit_type_param_bound","visit_type_param_bound","visit_type_param_bound","visit_type_paren","visit_type_paren","visit_type_paren","visit_type_path","visit_type_path","visit_type_path","visit_type_ptr","visit_type_ptr","visit_type_ptr","visit_type_reference","visit_type_reference","visit_type_reference","visit_type_slice","visit_type_slice","visit_type_slice","visit_type_trait_object","visit_type_trait_object","visit_type_trait_object","visit_type_tuple","visit_type_tuple","visit_type_tuple","visit_un_op","visit_un_op","visit_un_op","visit_variadic","visit_variadic","visit_variadic","visit_variant","visit_variant","visit_variant","visit_vis_crate","visit_vis_crate","visit_vis_crate","visit_vis_public","visit_vis_public","visit_vis_public","visit_vis_restricted","visit_vis_restricted","visit_vis_restricted","visit_visibility","visit_visibility","visit_visibility","visit_where_clause","visit_where_clause","visit_where_clause","visit_where_predicate","visit_where_predicate","visit_where_predicate"],"q":[[0,"syn"],[2488,"syn::buffer"],[2523,"syn::ext"],[2527,"syn::parse"],[2626,"syn::parse::discouraged"],[2628,"syn::punctuated"],[2791,"syn::spanned"],[2793,"syn::token"],[4890,"syn::visit"],[5158,"core::str::traits"],[5159,"core::cmp"],[5160,"core::convert"],[5161,"core::marker"],[5162,"core::fmt"],[5163,"core::fmt"],[5164,"proc_macro2"],[5165,"core::convert"],[5166,"core::hash"],[5167,"proc_macro2"],[5168,"proc_macro2"],[5169,"alloc::string"],[5170,"core::any"],[5171,"proc_macro2"],[5172,"proc_macro2"],[5173,"core::ops::function"],[5174,"core::clone"],[5175,"core::cmp"],[5176,"core::fmt"]],"d":["The binary interface of a function: extern "C".","The + operator (addition)","The += operator","The && operator (logical and)","The <'a, T> in std::slice::iter<'a, T>.","Angle bracketed arguments of a path segment: the <K, V> in …","A slice literal expression: [a, b, c, d].","A fixed size array type: [T; n].","An assignment expression: a = compute().","A compound assignment expression: counter += 1.","An async block: async { ... }.","Distinguishes between attributes that decorate an item and …","An attribute like #[repr(transparent)].","Conventional argument type associated with an invocation …","An await expression: fut.await.","A bare function type: fn(usize) -> bool.","An argument in a function type: the usize in …","A binary operator: +, +=, &.","A binary operation: a + b, a * b.","A binding (equality constraint) on an associated type: …","A binding (equality constraint) on an associated type: the …","The & operator (bitwise and)","The &= operator","The | operator (bitwise or)","The |= operator","The ^ operator (bitwise xor)","The ^= operator","A blocked scope: { ... }.","A boolean literal: true or false.","A set of bound lifetimes: for<'a, 'b, 'c>.","A box expression: box f.","","","A break, with an optional label to break and an optional …","A byte literal: b'f'.","A byte string literal: b"foo".","A function call expression: invoke(a, b).","A cast expression: foo as f64.","A character literal: 'a'.","A closure expression: |a, b| a + b.","A const generic parameter: const LENGTH: usize.","A const expression. Must be inside of a block.","A const generic parameter: const LENGTH: usize.","An associated type bound: Iterator<Item: Display>.","An associated type bound: Iterator<Item: Display>.","A continue, with an optional label.","An ordinary string like "data".","A crate-level visibility: crate.","The storage of a struct, enum or union data structure.","An enum input to a proc_macro_derive macro.","A struct input to a proc_macro_derive macro.","An untagged union input to a proc_macro_derive macro.","Return type is not specified.","The * operator for dereferencing","Data structure sent to a proc_macro_derive macro.","The / operator (division)","The /= operator","An enum input to a proc_macro_derive macro.","An equality predicate in a where clause (unsupported).","The == operator (equality)","Contains the error value","Error returned when a Syn parser cannot parse the input …","A Rust expression.","A slice literal expression: [a, b, c, d].","An assignment expression: a = compute().","A compound assignment expression: counter += 1.","An async block: async { ... }.","An await expression: fut.await.","A binary operation: a + b, a * b.","A blocked scope: { ... }.","A box expression: box f.","A break, with an optional label to break and an optional …","A function call expression: invoke(a, b).","A cast expression: foo as f64.","A closure expression: |a, b| a + b.","A continue, with an optional label.","Access of a named struct field (obj.k) or unnamed tuple …","A for loop: for pat in expr { ... }.","An expression contained within invisible delimiters.","An if expression with an optional else block: …","A square bracketed indexing expression: vector[2].","A let guard: let Some(x) = opt.","A literal in place of an expression: 1, "foo".","Conditionless loop: loop { ... }.","A macro invocation expression: format!("{}", q).","A match expression: match n { Some(n) => {}, None => {} }.","A method call expression: x.foo::<T>(a, b).","A parenthesized expression: (a + b).","A path like std::mem::replace possibly containing generic …","A range expression: 1..2, 1.., ..2, 1..=2, ..=2.","A referencing operation: &a or &mut a.","An array literal constructed from one repeated element: …","A return, with an optional value to be returned.","A struct literal expression: Point { x: 1, y: 1 }.","A try-expression: expr?.","A try block: try { ... }.","A tuple expression: (a, b, c, d).","A type ascription expression: foo: f64.","A unary operation: !x, *x.","An unsafe block: unsafe { ... }.","A while loop: while expr { ... }.","A yield expression: yield expr.","A field of a struct or enum variant.","Access of a named struct field (obj.k) or unnamed tuple …","Data stored within an enum variant or struct.","Named fields of a struct or struct variant such as …","Unnamed fields of a tuple struct or tuple variant such as …","A floating point literal: 1f64 or 1.0e10f64.","A for loop: for pat in expr { ... }.","The >= operator (greater than or equal to)","An individual generic argument, like 'a, T, or Item = T.","A generic type parameter, lifetime, or const generic: …","Lifetimes and type parameters attached to a declaration of …","An expression contained within invisible delimiters.","A type contained within invisible delimiters.","The > operator (greater than)","","A word of Rust code, which may be a keyword or legal …","A word of Rust code, which may be a keyword or legal …","An if expression with an optional else block: …","Returned by Generics::split_for_impl.","An impl Bound1 + Bound2 + Bound3 type where Bound is a …","The index of an unnamed tuple struct field.","A square bracketed indexing expression: vector[2].","Indication that a type should be inferred by the compiler: …","An inherited visibility, which usually means private.","","An integer literal: 1 or 1u16.","The <= operator (less than or equal to)","A let guard: let Some(x) = opt.","","","A Rust lifetime: 'a.","A lifetime definition: 'a: 'b + 'c + 'd.","","A lifetime predicate in a where clause: 'a: 'b + 'c.","A lifetime argument.","A lifetime definition: 'a: 'b + 'c + 'd.","A structured list within an attribute, like …","","","A Rust literal such as a string or integer or boolean.","A Rust literal, like the "new_name" in …","A literal in place of an expression: 1, "foo".","","","A boolean literal: true or false.","","","A byte literal: b'f'.","","","A byte string literal: b"foo".","","","A character literal: 'a'.","","","A floating point literal: 1f64 or 1.0e10f64.","","","An integer literal: 1 or 1u16.","","","A UTF-8 string literal: "foo".","Conditionless loop: loop { ... }.","The < operator (less than)","A macro invocation: println!("{}", mac).","A macro invocation expression: format!("{}", q).","A macro in the type position.","A grouping token that surrounds a macro body: m!(...) or …","A match expression: match n { Some(n) => {}, None => {} }.","","A struct or tuple struct field accessed in a struct …","Content of a compile-time structured attribute.","A structured meta item, like the Copy in #[derive(Copy)] …","A structured list within an attribute, like …","A name-value pair within an attribute, like …","A method call expression: x.foo::<T>(a, b).","The * operator (multiplication)","The *= operator","A name-value pair within an attribute, like …","Named fields of a struct or struct variant such as …","A named field like self.x.","The != operator (not equal to)","The - operator for negation","Element of a compile-time attribute list.","The never type: !.","","","The ! operator for logical inversion","Contains the success value","The || operator (logical or)","","A parenthesized expression: (a + b).","","A parenthesized type equivalent to the inner type.","The (A, B) -> C in Fn(A, B) -> C.","Arguments of a function path segment: the (A, B) -> C in …","A path at which a named item is exported (e.g. …","","A path like std::mem::replace possibly containing generic …","A path like std::slice::Iter, optionally qualified with a …","Angle bracketed or parenthesized arguments of a path …","A segment of a path together with any path arguments on …","An equality predicate in a where clause (unsupported).","A lifetime predicate in a where clause: 'a: 'b + 'c.","A type predicate in a where clause: …","A raw pointer type: *const T or *mut T.","A public visibility level: pub.","The explicit Self type in a qualified path: the T in …","A range expression: 1..2, 1.., ..2, 1..=2, ..=2.","A raw string like r##"data"##.","A referencing operation: &a or &mut a.","A reference type: &'a T or &'a mut T.","The % operator (modulus)","The %= operator","An array literal constructed from one repeated element: …","A visibility level restricted to some path: pub(self) or …","The result of a Syn parser.","A return, with an optional value to be returned.","Return type of a function signature.","The << operator (shift left)","The <<= operator","The >> operator (shift right)","The >>= operator","A dynamically sized slice type: [T].","A UTF-8 string literal: "foo".","The style of a string literal, either plain quoted or a …","A struct literal expression: Point { x: 1, y: 1 }.","A struct input to a proc_macro_derive macro.","The - operator (subtraction)","The -= operator","A type-macro that expands to the name of the Rust type …","","A trait used as a bound on a type parameter.","A modifier on a trait bound, currently only used for the ? …","A trait object type dyn Bound1 + Bound2 + Bound3 where …","A try-expression: expr?.","A try block: try { ... }.","A tuple expression: (a, b, c, d).","A tuple type: (A, B, C, String).","Returned by TypeGenerics::as_turbofish.","The possible types that a Rust value could have.","A type ascription expression: foo: f64.","A generic type parameter: T: Into<String>.","A type predicate in a where clause: …","A particular type is returned.","A type argument.","A fixed size array type: [T; n].","A bare function type: fn(usize) -> bool.","Returned by Generics::split_for_impl.","A type contained within invisible delimiters.","An impl Bound1 + Bound2 + Bound3 type where Bound is a …","Indication that a type should be inferred by the compiler: …","A macro in the type position.","The never type: !.","A generic type parameter: T: Into<String>.","A trait or lifetime used as a bound on a type parameter.","A parenthesized type equivalent to the inner type.","A path like std::slice::Iter, optionally qualified with a …","A raw pointer type: *const T or *mut T.","A reference type: &'a T or &'a mut T.","A dynamically sized slice type: [T].","A trait object type dyn Bound1 + Bound2 + Bound3 where …","A tuple type: (A, B, C, String).","A unary operator: *, !, -.","A unary operation: !x, *x.","An untagged union input to a proc_macro_derive macro.","Unit struct or unit variant such as None.","Unnamed fields of a tuple struct or tuple variant such as …","An unnamed field like self.0.","An unsafe block: unsafe { ... }.","The variadic argument of a foreign function.","An enum variant.","Tokens in expression position not interpreted by Syn.","A raw token literal not interpreted by Syn.","Tokens in type position not interpreted by Syn.","A crate-level visibility: crate.","A public visibility level: pub.","A visibility level restricted to some path: pub(self) or …","The visibility level of an item: inherited or pub or …","A where clause in a definition: …","A single predicate in a where clause: T: Deserialize<'de>.","A while loop: while expr { ... }.","A yield expression: yield expr.","","","","","","","","","Turn a type’s generics like <X, Y> into a turbofish like …","Attributes tagged on the variant.","Attributes tagged on the field.","","","","","","","","","","","","","Attributes tagged on the whole struct or enum.","","","","","","","","Parses the literal into a selected number type.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The type being bounded","","","Trait and lifetime bounds (Clone+Send+'static)","","","","","","","Parse a set of curly braces and expose their content to …","","","","","Parse a set of square brackets and expose their content to …","A stably addressed token buffer supporting efficient …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns an Iterator<Item = &ConstParam> over the constant …","Returns an Iterator<Item = &mut ConstParam> over the …","","","","Define a type that supports parsing and printing a given …","Define a type that supports parsing and printing a …","Data within the struct or enum.","","","","","","","Explicit discriminant: Variant = 1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Extension traits to provide parsing methods on foreign …","","Content stored in the variant.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","","","","Returns the argument unchanged.","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","Returns the argument unchanged.","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Generics required to complete the definition.","If this path consists of a single ident, returns the ident.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Name of the variant.","Name of the field, if any.","","","Name of the struct or enum.","","","","","","","","","(A, B)","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","Returns true if there are zero fields.","","Determines whether this is a path of length 1 equal to the …","","Get an iterator over the borrowed Field items in this …","Get an iterator over the mutably borrowed Field items in …","","","Returns the number of fields.","","","","","","Returns an Iterator<Item = &LifetimeDef> over the lifetime …","","The for<'a> in for<'a> Foo<&'a T>","Any lifetimes from a for binding","","Returns an Iterator<Item = &mut LifetimeDef> over the …","","","","","","","","Initializes an empty where-clause if there is not one …","","","","","","","","","Panics","Creates a new Ident with the given string as well as the …","","Interpret a Syn literal from a proc-macro2 literal.","","","","","","","","Same as Ident::new, but creates a raw identifier (r#ident…","","","","C","","","","","","","","","","","","Parse a set of parentheses and expose their content to …","Parsing interface for parsing a token stream into a syntax …","Parse tokens of source code into the chosen syntax tree …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Parse a syntax tree node from the content of this string …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Parse a proc-macro2 token stream into the chosen syntax …","","Parse the arguments to the attribute as a syntax tree.","Parse the arguments to the attribute using the given …","Parse the tokens within the macro invocation’s …","Parse the tokens within the macro invocation’s …","Parses zero or more inner attributes from the stream.","Parse the input TokenStream of a macro, triggering a …","Parses the content of the attribute, consisting of the …","Parse a Path containing no path arguments on any of its …","Parses a named (braced struct) field.","Parses zero or more outer attributes from the stream.","Quasi-quotation macro that accepts input like the quote! …","This macro is parse_quote! + quote_spanned!.","Parse a string of Rust code into the chosen syntax tree …","Parses an unnamed (tuple struct) field.","Invoke parser on the content of this string literal.","","","Returns the identifier that begins this structured meta …","","","","","","The Foo<&'a T> in for<'a> Foo<&'a T>","","","","","","","","A punctuated sequence of syntax tree nodes separated by …","","","","","","","","","Configures the span of this Ident, possibly changing its …","","","","","","","","","","","","","","Returns the span of this Ident.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A trait that can provide the Span of the complete contents …","Split a type’s generics into the pieces required for impl…","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Tokens representing Rust punctuation, keywords, and …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Type of the field.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns an Iterator<Item = &TypeParam> over the type …","Returns an Iterator<Item = &mut TypeParam> over the type …","","","","","","","","","","","","","","Visibility of the field.","Visibility of the struct or enum.","Syntax tree traversal to walk a shared borrow of a syntax …","","","In some positions, types may not contain the + character, …","","","","A cheaply copyable cursor into a TokenBuffer.","A buffer that can be efficiently traversed multiple times, …","Creates a cursor referencing the first token in the buffer …","","","","","","","Creates a cursor referencing a static empty TokenStream.","Checks whether the cursor is currently pointing at the end …","","","Returns the argument unchanged.","Returns the argument unchanged.","If the cursor is pointing at a Group with the given …","If the cursor is pointing at a Ident, returns it along …","Calls U::from(self).","Calls U::from(self).","If the cursor is pointing at a Lifetime, returns it along …","If the cursor is pointing at a Literal, return it along …","Creates a TokenBuffer containing all the tokens from the …","Creates a TokenBuffer containing all the tokens from the …","","If the cursor is pointing at a Punct, returns it along …","Returns the Span of the current token, or Span::call_site()…","","Copies all remaining tokens visible from this cursor into a","If the cursor is pointing at a TokenTree, returns it along …","","","","","","","Additional methods for Ident not provided by proc-macro2 …","Parses any identifier including keywords.","Peeks any identifier including keywords. Usage: …","Strips the raw marker r#, if any, from the beginning of an …","Contains the error value","Error returned when a Syn parser cannot parse the input …","Support for checking the next token in a stream to decide …","An empty syntax tree node that consumes no tokens when …","Contains the success value","","Parsing interface implemented by all types that can be …","Cursor position within a buffered token stream.","Input to a Syn parser function.","Parser that can parse Rust tokens into a particular syntax …","Types that can be parsed by looking at just one token.","The result of a Syn parser.","Cursor state associated with speculative parsing.","","","","","","","","","","","","Calls the given parser function to parse a syntax tree …","","","","","Add another error message to self such that when …","Provides low-level access to the token representation …","","Extensions to the parsing API with niche applicability.","","","","Triggers an error at the current position of the parse …","Triggers an error at the current position of the parse …","Triggers an error at the current position of the parse …","","","","","","","Forks a parse stream so that parsing tokens out of either …","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Render the error as an invocation of compile_error!.","","","Returns whether there are tokens remaining in this stream.","Constructs a helper for peeking at the next token in this …","Usually the ParseStream::error method will be used …","Creates an error with the specified message spanning the …","","Parses a syntax tree node of type T, advancing the …","Parse tokens of source code into the chosen syntax tree …","","Parse a proc-macro2 token stream into the chosen syntax …","Parse a string of Rust code into the chosen syntax tree …","Parses zero or more occurrences of T separated by …","Looks at the next token in the parse stream to determine …","Looks at the next token in the parse stream to determine …","Looks at the second-next token in the parse stream.","Looks at the third-next token in the parse stream.","Returns the Span of the next token in the parse stream, or …","The source location of the error.","Speculatively parses tokens from this parse stream, …","Render the error as an invocation of compile_error!.","","","","","","","","","","","","","","","","","","","","Extensions to the ParseStream API to support speculative …","Advance this parse stream to the position of a forked …","","An iterator over owned values of type T.","An iterator over owned pairs of type Pair<T, P>.","An iterator over borrowed values of type &T.","An iterator over mutably borrowed values of type &mut T.","A single syntax tree node of type T followed by its …","An iterator over borrowed pairs of type Pair<&T, &P>.","An iterator over mutably borrowed pairs of type …","A punctuated sequence of syntax tree nodes of type T …","","","","","","","","","","","","","","","","","","Clears the sequence of all values and punctuation, making …","","","","","","","","","","","","","","Returns true if either this Punctuated is empty, or it has …","","","","","Borrows the first element in this sequence.","Mutably borrows the first element in this sequence.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","Inserts an element at position index.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","Returns an iterator over the contents of this sequence as …","Produces this punctuated pair as a tuple of syntax tree …","Extracts the syntax tree node from this punctuated pair, …","Determines whether this punctuated sequence is empty, …","Returns an iterator over borrowed syntax tree nodes of …","Returns an iterator over mutably borrowed syntax tree …","Borrows the last element in this sequence.","Mutably borrows the last element in this sequence.","Returns the number of syntax tree nodes in this punctuated …","","","","","","","Creates an empty punctuated sequence.","Creates a punctuated pair out of a syntax tree node and an …","","","","","","","","","","","","","Returns an iterator over the contents of this sequence as …","Returns an iterator over the contents of this sequence as …","Parses one or more occurrences of T separated by …","Parses one or more occurrences of T using the given parse …","Parses zero or more occurrences of T separated by …","Parses zero or more occurrences of T using the given parse …","Removes the last punctuated pair from this sequence, or …","Borrows the punctuation from this punctuated pair, unless …","Mutably borrows the punctuation from this punctuated pair, …","Appends a syntax tree node onto the end of this punctuated …","Appends a trailing punctuation onto the end of this …","Appends a syntax tree node onto the end of this punctuated …","","","","","","","","","","","","","","","","","Determines whether this punctuated sequence ends with a …","","","","","","","","","","","","","","","","","","","","","","","","","Borrows the syntax tree node from this punctuated pair.","Mutably borrows the syntax tree node from this punctuated …","A trait that can provide the Span of the complete contents …","Returns a Span covering the complete contents of this …","abstract","+","+=","&","&&","&=","as","async","@","auto","await","!","become","box","{...}","[...]","break","^","^=",":","::",",","const","continue","crate","default","/","/=","do","$",".","..","...","..=","dyn","else","enum","=","==","extern","=>","final","fn","for",">=","None-delimited group",">","if","impl","in","<-","<=","let","loop","<","macro","match","mod","move","*=","mut","!=","|","|=","||","override","(...)","#","priv","pub","?","->","ref","%","%=","return","Self","self",";","<<","<<=",">>",">>=","*","static","struct","-","-=","super","~","Marker trait for types that represent single tokens.","trait","try","type","typeof","_","union","unsafe","unsized","use","virtual","where","while","yield","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Syntax tree traversal to walk a shared borrow of a syntax …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,65,65,65,88,0,26,67,26,26,26,0,0,0,26,67,0,0,26,0,89,65,65,65,65,65,65,26,52,0,26,59,59,26,52,52,26,26,52,26,39,89,0,0,89,26,285,22,0,0,0,0,85,66,0,65,65,61,48,65,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,0,0,0,52,26,65,0,0,0,26,67,65,0,0,0,26,0,67,0,26,67,22,12,52,65,26,0,0,0,39,44,48,89,0,13,0,0,0,16,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,65,0,26,67,0,26,46,0,0,16,0,0,26,65,65,13,18,36,65,66,0,67,46,88,66,6,65,12,26,59,67,88,0,0,13,26,67,0,0,0,0,0,67,22,0,26,285,26,67,65,65,26,22,0,26,0,65,65,65,65,67,52,0,26,61,65,65,0,44,0,0,67,26,26,26,67,0,0,26,39,48,85,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,61,18,18,36,26,0,0,26,52,67,0,0,0,0,0,0,26,26,69,78,9,28,90,87,29,94,1,17,21,27,28,29,30,31,32,33,34,35,40,41,42,60,83,84,58,74,30,3,5,3,5,8,1,2,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,119,116,137,120,133,27,131,127,134,28,29,135,122,30,111,121,139,31,112,32,132,128,138,136,33,34,115,117,126,125,123,129,124,113,110,35,118,114,130,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,3,5,57,285,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,8,1,2,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,119,116,137,120,133,27,131,127,134,28,29,135,122,30,111,121,139,31,112,32,132,128,138,136,33,34,115,117,126,125,123,129,124,113,110,35,118,114,130,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,3,5,57,285,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,49,40,41,49,50,71,80,92,19,63,0,11,31,68,79,0,0,8,1,2,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,3,5,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,8,1,2,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,3,5,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,9,10,90,21,40,41,42,49,50,92,38,38,42,77,24,0,0,60,38,43,88,40,42,58,17,30,84,80,68,70,75,77,78,79,81,63,8,1,2,9,10,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,3,5,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,15,40,42,51,91,8,1,2,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,3,5,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,29,31,33,35,0,82,17,62,64,8,1,2,9,9,10,10,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,36,37,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,3,3,5,5,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,69,43,8,1,2,9,10,10,10,10,10,10,10,11,12,13,13,13,13,14,15,16,16,16,17,18,18,18,19,20,21,22,22,22,22,23,24,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,119,116,137,120,133,27,131,127,134,28,29,135,122,30,111,121,139,31,112,32,132,128,138,136,33,34,115,117,126,125,123,129,124,113,110,35,118,114,130,36,36,36,36,37,37,38,39,39,39,39,40,40,41,42,43,44,44,44,45,46,47,48,48,48,48,49,50,51,52,52,52,52,52,52,52,52,53,54,55,56,3,3,5,5,57,285,58,59,60,61,61,61,61,62,63,64,65,66,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,86,87,87,88,89,90,91,92,93,94,28,60,86,70,38,43,90,94,8,1,2,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,3,5,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,9,17,21,40,42,60,87,91,92,71,25,31,37,69,93,8,1,2,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,119,116,137,120,133,27,131,127,134,28,29,135,122,30,111,121,139,31,112,32,132,128,138,136,33,34,115,117,126,125,123,129,124,113,110,35,118,114,130,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,3,5,57,285,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,18,18,18,18,88,86,88,18,18,86,27,18,68,51,41,50,78,38,43,45,49,69,38,15,32,38,43,90,94,73,38,30,45,77,78,82,83,19,14,9,10,41,52,53,54,55,56,3,5,57,10,27,35,69,93,38,14,20,25,28,33,45,69,75,81,93,0,0,0,9,10,13,14,15,16,17,19,20,22,26,32,34,36,37,38,39,40,41,42,43,44,45,46,47,48,52,53,53,54,55,56,3,5,57,58,60,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,85,86,87,89,90,91,93,0,10,11,11,58,58,11,0,11,86,21,11,0,0,0,21,53,9,10,13,11,14,15,25,34,45,58,76,94,11,47,23,25,0,34,76,51,27,86,62,68,9,10,52,53,54,55,56,3,5,57,8,1,2,9,9,10,10,10,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,119,116,137,120,133,27,131,127,134,28,29,135,122,30,111,121,139,31,112,32,132,128,138,136,33,34,115,117,126,125,123,129,124,113,110,35,118,114,130,36,36,37,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,52,53,53,54,54,55,55,56,56,3,3,5,5,57,57,58,60,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,37,57,0,38,77,62,11,52,53,54,55,56,3,5,8,1,2,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,3,5,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,9,10,3,5,8,1,2,9,10,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,119,116,137,120,133,27,131,127,134,28,29,135,122,30,111,121,139,31,112,32,132,128,138,136,33,34,115,117,126,125,123,129,124,113,110,35,118,114,130,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,3,5,57,58,60,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,0,53,54,55,56,3,5,57,11,58,8,1,2,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,119,116,137,120,133,27,131,127,134,28,29,135,122,30,111,121,139,31,112,32,132,128,138,136,33,34,115,117,126,125,123,129,124,113,110,35,118,114,130,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,3,5,57,285,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,8,1,2,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,119,116,137,120,133,27,131,127,134,28,29,135,122,30,111,121,139,31,112,32,132,128,138,136,33,34,115,117,126,125,123,129,124,113,110,35,118,114,130,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,3,5,57,285,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,21,29,42,83,91,94,8,1,2,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,119,116,137,120,133,27,131,127,134,28,29,135,122,30,111,121,139,31,112,32,132,128,138,136,33,34,115,117,126,125,123,129,124,113,110,35,118,114,130,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,3,5,57,285,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,38,38,72,64,20,10,69,53,54,55,56,57,57,69,63,21,60,0,38,47,67,71,80,85,0,0,159,159,160,159,160,160,160,160,160,160,160,159,160,160,160,159,160,160,160,159,159,160,160,160,160,160,160,159,160,159,160,159,160,0,286,286,286,6,0,0,0,6,155,0,0,0,0,0,0,0,164,168,164,165,167,166,168,164,165,167,166,164,165,166,165,166,166,164,165,0,164,167,167,168,164,165,166,164,164,167,166,166,164,168,164,165,167,166,166,167,168,164,165,167,166,166,166,166,164,164,166,166,152,164,155,167,155,155,164,168,164,164,164,164,166,164,166,165,166,164,166,168,164,165,167,166,168,164,165,167,166,168,164,165,167,166,0,287,180,0,0,0,0,0,0,0,0,180,173,177,185,178,179,145,146,180,173,177,185,178,179,145,146,180,173,173,177,178,179,145,180,173,177,178,179,145,180,173,173,173,173,173,173,173,173,173,173,177,185,178,179,145,146,180,173,173,173,173,173,173,173,177,185,178,179,145,146,180,173,173,173,177,185,178,179,145,146,173,180,180,173,173,173,173,173,173,177,185,178,179,145,146,173,180,177,185,178,179,145,146,177,185,178,179,145,146,173,173,173,173,173,173,173,180,180,173,173,173,177,185,178,179,145,146,173,180,173,177,178,179,145,180,173,180,173,173,177,185,178,179,145,146,180,173,177,185,178,179,145,146,180,173,177,185,178,179,145,146,180,180,180,0,288,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,187,188,189,190,191,192,193,194,195,196,109,197,198,199,200,201,107,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,104,105,220,221,108,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,106,187,188,189,190,191,192,193,194,195,196,109,197,198,199,200,201,107,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,104,105,220,221,108,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,106,187,188,189,190,191,192,193,194,195,196,109,197,198,199,200,201,107,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,104,105,220,221,108,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,106,187,188,189,190,191,192,193,194,195,196,109,197,198,199,200,201,107,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,104,105,220,221,108,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,106,187,188,189,190,191,192,193,194,195,196,109,197,198,199,200,201,107,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,104,105,220,221,108,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,106,234,236,239,240,241,243,245,246,248,249,253,256,258,261,264,265,268,271,276,277,279,106,234,236,239,240,241,243,245,246,248,249,253,256,258,261,264,265,268,271,276,277,279,106,187,188,189,190,191,192,193,194,195,196,109,197,198,199,200,201,107,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,104,105,220,221,108,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,106,187,188,189,190,191,192,193,194,195,196,109,197,198,199,200,201,107,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,104,105,220,221,108,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,106,187,188,189,190,191,192,193,194,195,196,109,197,198,199,200,201,107,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,104,105,220,221,108,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,106,187,188,189,190,191,192,193,194,195,196,109,197,198,199,200,201,107,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,104,105,220,221,108,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,106,187,188,189,190,191,192,193,194,195,196,109,197,198,199,200,201,107,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,104,105,220,221,108,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,106,187,188,189,190,191,192,193,194,195,196,109,197,198,199,200,201,107,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,104,105,220,221,108,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,106,187,188,189,190,191,192,193,194,195,196,109,197,198,199,200,201,107,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,104,105,220,221,108,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,106,187,188,189,190,191,192,193,194,195,196,109,197,198,199,200,201,107,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,104,105,220,221,108,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,187,188,189,190,191,192,193,194,195,196,109,197,198,199,200,201,107,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,104,105,220,221,108,222,223,224,225,226,227,228,229,230,231,232,233,280,281,282,283,106,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,106,187,188,189,190,191,192,193,194,195,196,109,197,198,199,200,201,107,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,104,105,220,221,108,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,106,187,188,189,190,191,192,193,194,195,196,109,197,198,199,200,201,107,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,104,105,220,221,108,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,106,187,188,189,190,191,192,193,194,195,196,109,197,198,199,200,201,107,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,104,105,220,221,108,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,106,187,188,189,190,191,192,193,194,195,196,109,197,198,199,200,201,107,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,104,105,220,221,108,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,106,187,188,189,190,191,192,193,194,195,196,109,197,198,199,200,201,107,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,104,105,220,221,108,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,0,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284,0,284,284],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[1,2],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[3,4],[5,4],[3,[[6,[-1]]],7],[5,[[6,[-1]]],7],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[8,8],[1,1],[2,2],[9,9],[10,10],[11,11],[12,12],[13,13],[14,14],[15,15],[16,16],[17,17],[18,18],[19,19],[20,20],[21,21],[22,22],[23,23],[24,24],[25,25],[26,26],[27,27],[28,28],[29,29],[30,30],[31,31],[32,32],[33,33],[34,34],[35,35],[36,36],[37,37],[38,38],[39,39],[40,40],[41,41],[42,42],[43,43],[44,44],[45,45],[46,46],[47,47],[48,48],[49,49],[50,50],[51,51],[52,52],[53,53],[54,54],[55,55],[56,56],[3,3],[5,5],[57,57],[58,58],[59,59],[60,60],[61,61],[62,62],[63,63],[64,64],[65,65],[66,66],[67,67],[68,68],[69,69],[70,70],[71,71],[72,72],[73,73],[74,74],[75,75],[76,76],[77,77],[78,78],[79,79],[80,80],[81,81],[82,82],[83,83],[84,84],[85,85],[86,86],[87,87],[88,88],[89,89],[90,90],[91,91],[92,92],[93,93],[94,94],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[9,9],96],[[10,10],96],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[],38],[[],43],[[],88],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[8,8],97],[[1,1],97],[[2,2],97],[[9,9],97],[[10,10],97],[[10,-1],97,[[98,[4]],99]],[[11,11],97],[[12,12],97],[[13,13],97],[[14,14],97],[[15,15],97],[[16,16],97],[[17,17],97],[[18,18],97],[[19,19],97],[[20,20],97],[[21,21],97],[[22,22],97],[[23,23],97],[[24,24],97],[[25,25],97],[[26,26],97],[[27,27],97],[[28,28],97],[[29,29],97],[[30,30],97],[[31,31],97],[[32,32],97],[[33,33],97],[[34,34],97],[[35,35],97],[[36,36],97],[[37,37],97],[[38,38],97],[[39,39],97],[[40,40],97],[[41,41],97],[[42,42],97],[[43,43],97],[[44,44],97],[[45,45],97],[[46,46],97],[[47,47],97],[[48,48],97],[[49,49],97],[[50,50],97],[[51,51],97],[[52,52],97],[[53,53],97],[[54,54],97],[[55,55],97],[[56,56],97],[[3,3],97],[[5,5],97],[[57,57],97],[[58,58],97],[[59,59],97],[[60,60],97],[[61,61],97],[[62,62],97],[[63,63],97],[[64,64],97],[[65,65],97],[[66,66],97],[[67,67],97],[[68,68],97],[[69,69],97],[[70,70],97],[[71,71],97],[[72,72],97],[[73,73],97],[[74,74],97],[[75,75],97],[[76,76],97],[[77,77],97],[[78,78],97],[[79,79],97],[[80,80],97],[[81,81],97],[[82,82],97],[[83,83],97],[[84,84],97],[[85,85],97],[[86,86],97],[[87,87],97],[[88,88],97],[[89,89],97],[[90,90],97],[[91,91],97],[[92,92],97],[[93,93],97],[[94,94],97],0,0,0,0,0,[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],0,0,0,0,0,0,0,0,0,[[8,100],101],[[1,100],101],[[2,100],101],[[9,100],101],[[9,100],101],[[10,100],[[103,[95,102]]]],[[10,100],[[103,[95,102]]]],[[10,100],[[103,[95,102]]]],[[11,100],101],[[12,100],101],[[13,100],101],[[14,100],101],[[15,100],101],[[16,100],101],[[17,100],101],[[18,100],101],[[19,100],101],[[20,100],101],[[21,100],101],[[22,100],101],[[23,100],101],[[24,100],101],[[25,100],101],[[26,100],101],[[27,100],101],[[28,100],101],[[29,100],101],[[30,100],101],[[31,100],101],[[32,100],101],[[33,100],101],[[34,100],101],[[35,100],101],[[36,100],101],[[36,100],101],[[37,100],101],[[37,100],101],[[38,100],101],[[39,100],101],[[40,100],101],[[41,100],101],[[42,100],101],[[43,100],101],[[44,100],101],[[45,100],101],[[46,100],101],[[47,100],101],[[48,100],101],[[49,100],101],[[50,100],101],[[51,100],101],[[52,100],101],[[53,100],101],[[54,100],101],[[55,100],101],[[56,100],101],[[3,100],101],[[3,100],101],[[5,100],101],[[5,100],101],[[57,100],101],[[58,100],101],[[59,100],101],[[60,100],101],[[61,100],101],[[62,100],101],[[63,100],101],[[64,100],101],[[65,100],101],[[66,100],101],[[67,100],101],[[68,100],101],[[69,100],101],[[70,100],101],[[71,100],101],[[72,100],101],[[73,100],101],[[74,100],101],[[75,100],101],[[76,100],101],[[77,100],101],[[78,100],101],[[79,100],101],[[80,100],101],[[81,100],101],[[82,100],101],[[83,100],101],[[84,100],101],[[85,100],101],[[86,100],101],[[87,100],101],[[88,100],101],[[89,100],101],[[90,100],101],[[91,100],101],[[92,100],101],[[93,100],101],[[94,100],101],0,0,[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[104,10],[105,10],[106,10],[107,10],[108,10],[109,10],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[15,13],[86,13],[14,13],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[52,16],[-1,-1,[]],[13,16],[-1,-1,[]],[19,18],[-1,-1,[]],[20,18],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[24,22],[-1,-1,[]],[25,22],[23,22],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[110,26],[111,26],[112,26],[32,26],[113,26],[114,26],[115,26],[28,26],[35,26],[116,26],[117,26],[118,26],[119,26],[-1,-1,[]],[33,26],[120,26],[121,26],[122,26],[123,26],[124,26],[125,26],[31,26],[126,26],[127,26],[128,26],[29,26],[129,26],[130,26],[131,26],[132,26],[133,26],[34,26],[134,26],[135,26],[136,26],[137,26],[138,26],[30,26],[139,26],[27,26],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[37,36],[140,36],[10,36],[-1,-1,[]],[-1,-1,[]],[140,37],[-1,-1,[]],[41,39],[40,39],[42,39],[-1,-1,[]],[-1,-1,[]],[10,40],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[45,44],[-1,-1,[]],[9,44],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[51,48],[50,48],[-1,-1,[]],[49,48],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[55,52],[3,52],[53,52],[5,52],[56,52],[54,52],[57,52],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[141,3],[-1,-1,[]],[141,5],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[62,61],[64,61],[63,61],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[79,67],[74,67],[81,67],[77,67],[69,67],[78,67],[70,67],[80,67],[-1,-1,[]],[73,67],[75,67],[76,67],[72,67],[68,67],[71,67],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,86,[[142,[87]]]],[-1,-1,[]],[-1,-1,[]],[-1,87,[[142,[10]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],0,0,[86,[[143,[10]]]],0,0,0,0,0,[[8,-1],95,144],[[1,-1],95,144],[[2,-1],95,144],[[9,-1],95,144],[[10,-1],95,144],[[11,-1],95,144],[[12,-1],95,144],[[13,-1],95,144],[[14,-1],95,144],[[15,-1],95,144],[[16,-1],95,144],[[17,-1],95,144],[[18,-1],95,144],[[19,-1],95,144],[[20,-1],95,144],[[21,-1],95,144],[[22,-1],95,144],[[23,-1],95,144],[[24,-1],95,144],[[25,-1],95,144],[[26,-1],95,144],[[27,-1],95,144],[[28,-1],95,144],[[29,-1],95,144],[[30,-1],95,144],[[31,-1],95,144],[[32,-1],95,144],[[33,-1],95,144],[[34,-1],95,144],[[35,-1],95,144],[[36,-1],95,144],[[37,-1],95,144],[[38,-1],95,144],[[39,-1],95,144],[[40,-1],95,144],[[41,-1],95,144],[[42,-1],95,144],[[43,-1],95,144],[[44,-1],95,144],[[45,-1],95,144],[[46,-1],95,144],[[47,-1],95,144],[[48,-1],95,144],[[49,-1],95,144],[[50,-1],95,144],[[51,-1],95,144],[[52,-1],95,144],[[53,-1],95,144],[[54,-1],95,144],[[55,-1],95,144],[[56,-1],95,144],[[3,-1],95,144],[[5,-1],95,144],[[57,-1],95,144],[[58,-1],95,144],[[59,-1],95,144],[[60,-1],95,144],[[61,-1],95,144],[[62,-1],95,144],[[63,-1],95,144],[[64,-1],95,144],[[65,-1],95,144],[[66,-1],95,144],[[67,-1],95,144],[[68,-1],95,144],[[69,-1],95,144],[[70,-1],95,144],[[71,-1],95,144],[[72,-1],95,144],[[73,-1],95,144],[[74,-1],95,144],[[75,-1],95,144],[[76,-1],95,144],[[77,-1],95,144],[[78,-1],95,144],[[79,-1],95,144],[[80,-1],95,144],[[81,-1],95,144],[[82,-1],95,144],[[83,-1],95,144],[[84,-1],95,144],[[85,-1],95,144],[[86,-1],95,144],[[87,-1],95,144],[[88,-1],95,144],[[89,-1],95,144],[[90,-1],95,144],[[91,-1],95,144],[[92,-1],95,144],[[93,-1],95,144],[[94,-1],95,144],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[18],[18],[18],[18,97],[88,97],[[86,-1],97,99],[88,97],[18,[[145,[21]]]],[18,[[146,[21]]]],0,0,[18,140],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[38,47],0,0,0,0,0,0,0,0,[[4,147],9],[[4,147],10],[9,41],[141,52],[[4,147],53],[[[149,[148]],147],54],[[148,147],55],[[150,147],56],[[4,147],3],[[4,147],5],[[97,147],57],[[4,147],10],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[151,[[6,[-1]]],152],[153,[[6,[9]]]],[153,[[6,[10]]]],[153,[[6,[13]]]],[153,[[6,[14]]]],[153,[[6,[15]]]],[153,[[6,[16]]]],[153,[[6,[17]]]],[153,[[6,[19]]]],[153,[[6,[20]]]],[153,[[6,[22]]]],[153,[[6,[26]]]],[153,[[6,[32]]]],[153,[[6,[34]]]],[153,[[6,[36]]]],[153,[[6,[37]]]],[153,[[6,[38]]]],[153,[[6,[39]]]],[153,[[6,[40]]]],[153,[[6,[41]]]],[153,[[6,[42]]]],[153,[[6,[43]]]],[153,[[6,[44]]]],[153,[[6,[45]]]],[153,[[6,[46]]]],[153,[[6,[47]]]],[153,[[6,[48]]]],[153,[[6,[52]]]],[153,[[6,[53]]]],[53,[[6,[-1]]],152],[153,[[6,[54]]]],[153,[[6,[55]]]],[153,[[6,[56]]]],[153,[[6,[3]]]],[153,[[6,[5]]]],[153,[[6,[57]]]],[153,[[6,[58]]]],[153,[[6,[60]]]],[153,[[6,[65]]]],[153,[[6,[66]]]],[153,[[6,[67]]]],[153,[[6,[68]]]],[153,[[6,[69]]]],[153,[[6,[70]]]],[153,[[6,[71]]]],[153,[[6,[72]]]],[153,[[6,[73]]]],[153,[[6,[74]]]],[153,[[6,[75]]]],[153,[[6,[76]]]],[153,[[6,[77]]]],[153,[[6,[78]]]],[153,[[6,[79]]]],[153,[[6,[80]]]],[153,[[6,[81]]]],[153,[[6,[82]]]],[153,[[6,[83]]]],[153,[[6,[85]]]],[153,[[6,[86]]]],[153,[[6,[87]]]],[153,[[6,[89]]]],[153,[[6,[90]]]],[153,[[6,[91]]]],[153,[[6,[93]]]],[154,[[6,[-1]]],152],[153,[[6,[10]]]],[11,[[6,[-1]]],152],[[11,-1],6,155],[58,[[6,[-1]]],152],[[58,-1],6,155],[153,[[6,[[156,[11]]]]]],0,[11,[[6,[13]]]],[153,[[6,[86]]]],[153,[[6,[21]]]],[153,[[6,[[156,[11]]]]]],0,0,[4,[[6,[-1]]],152],[153,[[6,[21]]]],[[53,-1],6,155],[[9,9],[[143,[96]]]],[[10,10],[[143,[96]]]],[13,86],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[9,147],95],[[10,147],95],[[52,147],95],[[53,147],95],[[54,147],95],[[55,147],95],[[56,147],95],[[3,147],95],[[5,147],95],[[57,147],95],[-1,147,[]],[-1,147,[]],[-1,147,[]],[9,147],[-1,147,[]],[10,147],[-1,147,[]],[10,[[143,[147]]]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[36,[[143,[147]]]],[-1,147,[]],[37,[[143,[147]]]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[52,147],[-1,147,[]],[-1,147,[]],[53,147],[54,147],[-1,147,[]],[55,147],[-1,147,[]],[-1,147,[]],[56,147],[-1,147,[]],[3,147],[-1,147,[]],[5,147],[-1,147,[]],[57,147],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],0,0,0,[38,[[95,[8,1,[143,[47]]]]]],0,0,0,[52,4],[53,4],[54,4],[55,4],[56,4],[3,4],[5,4],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,157,[]],[-1,157,[]],[-1,157,[]],[-1,157,[]],[[8,154],95],[[1,154],95],[[2,154],95],[[9,154],95],[[10,154],95],[[11,154],95],[[13,154],95],[[14,154],95],[[15,154],95],[[16,154],95],[[17,154],95],[[18,154],95],[[19,154],95],[[20,154],95],[[21,154],95],[[22,154],95],[[23,154],95],[[24,154],95],[[25,154],95],[[26,154],95],[[119,154],95],[[116,154],95],[[137,154],95],[[120,154],95],[[133,154],95],[[27,154],95],[[131,154],95],[[127,154],95],[[134,154],95],[[28,154],95],[[29,154],95],[[135,154],95],[[122,154],95],[[30,154],95],[[111,154],95],[[121,154],95],[[139,154],95],[[31,154],95],[[112,154],95],[[32,154],95],[[132,154],95],[[128,154],95],[[138,154],95],[[136,154],95],[[33,154],95],[[34,154],95],[[115,154],95],[[117,154],95],[[126,154],95],[[125,154],95],[[123,154],95],[[129,154],95],[[124,154],95],[[113,154],95],[[110,154],95],[[35,154],95],[[118,154],95],[[114,154],95],[[130,154],95],[[36,154],95],[[37,154],95],[[38,154],95],[[39,154],95],[[40,154],95],[[41,154],95],[[42,154],95],[[43,154],95],[[44,154],95],[[45,154],95],[[46,154],95],[[47,154],95],[[48,154],95],[[49,154],95],[[50,154],95],[[51,154],95],[[52,154],95],[[53,154],95],[[54,154],95],[[55,154],95],[[56,154],95],[[3,154],95],[[5,154],95],[[57,154],95],[[58,154],95],[[60,154],95],[[65,154],95],[[66,154],95],[[67,154],95],[[68,154],95],[[69,154],95],[[70,154],95],[[71,154],95],[[72,154],95],[[73,154],95],[[74,154],95],[[75,154],95],[[76,154],95],[[77,154],95],[[78,154],95],[[79,154],95],[[80,154],95],[[81,154],95],[[82,154],95],[[83,154],95],[[84,154],95],[[85,154],95],[[86,154],95],[[87,154],95],[[88,154],95],[[89,154],95],[[90,154],95],[[91,154],95],[[92,154],95],[[93,154],95],0,[53,141],[54,141],[55,141],[56,141],[3,141],[5,141],[57,10],0,0,[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],0,0,0,0,0,0,[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],0,0,0,0,0,[10,10],0,[53,157],[54,[[156,[148]]]],[55,148],[56,150],[57,97],0,0,0,0,0,0,0,0,[153,[[6,[67]]]],[153,[[6,[71]]]],[153,[[6,[80]]]],[153,[[6,[85]]]],0,0,[159,160],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[160,160],[[-1,-2],95,[],[]],[[],160],[160,97],[[160,160],97],[[-1,-2],97,[],[]],[-1,-1,[]],[-1,-1,[]],[[160,161],[[143,[[95,[160,147,160]]]]]],[160,[[143,[[95,[10,160]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[160,[[143,[[95,[9,160]]]]]],[160,[[143,[[95,[141,160]]]]]],[151,159],[154,159],[[160,160],[[143,[96]]]],[160,[[143,[[95,[162,160]]]]]],[160,147],[-1,-2,[],[]],[160,154],[160,[[143,[[95,[163,160]]]]]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,158,[]],[-1,158,[]],0,[153,[[6,[-1]]],[]],0,[-1,10,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[164,164],95],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[164,[[6,[-1]]],[]],[165,165],[166,166],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[166,166],95],[164,160],[165],0,[164,95],[[167,167],97],[[-1,-2],97,[],[]],[168,166],[[164,-1],166,169],[[165,-1],166,169],[[166,-1],95,170],[[164,100],101],[[164,100],101],[[167,100],101],[[166,100],101],[[166,100],101],[164,164],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[171,166],[[167,-1],95,144],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[166,154],[166],[166],[164,97],[164,168],[[147,-1],166,169],[[-1,-2],166,172,169],[153,[[6,[-1]]],[]],[164,[[6,[-1]]],152],[[-1,151],6,[]],[153,[[6,[167]]]],[[-1,154],6,[]],[[-1,4],6,[]],[164,[[6,[[173,[-1,-2]]]]],[],152],[[168,-1],97,174],[[164,-1],97,174],[[164,-1],97,174],[[164,-1],97,174],[164,147],[166,147],[[164,-1],[[6,[-2]]],175,[]],[166,154],[-1,-2,[],[]],[-1,-2,[],[]],[-1,157,[]],[-1,157,[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],0,[[-1,-1],95,[]],0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[173,[-1,-2]]],95,[],[]],[[[173,[-1,-2]]],[[173,[-1,-2]]],176,176],[[[177,[-1,-2]]],[[177,[-1,-2]]],[],[]],[[[178,[-1,-2]]],[[178,[-1,-2]]],176,176],[[[179,[-1]]],[[179,[-1]]],176],[[[145,[-1]]],[[145,[-1]]],[]],[[[180,[-1,-2]]],[[180,[-1,-2]]],176,176],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[],[[173,[-1,-2]]],[],[]],[[[173,[-1,-2]]],97,[],[]],[[[173,[-1,-2]],[173,[-1,-2]]],97,181,181],[[-1,-2],97,[],[]],[[[173,[-1,-2]],-3],95,[],[],170],[[[173,[-1,-2]],-3],95,[],182,170],[[[173,[-1,-2]]],[[143,[-1]]],[],[]],[[[173,[-1,-2]]],[[143,[-1]]],[],[]],[[[173,[-1,-2]],100],101,183,183],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,[[173,[-2,-3]]],170,[],[]],[-1,[[173,[-2,-3]]],170,[],182],[[[173,[-1,-2]],-3],95,184,184,144],[[[173,[-1,-2]],140],[],[],[]],[[[173,[-1,-2]],140],[],[],[]],[[[173,[-1,-2]],140,-1],95,[],182],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[173,[-1,-2]]],[],[],[]],[[[173,[-1,-2]]],[],[],[]],[[[173,[-1,-2]]],[],[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[173,[-1,-2]]],[[178,[-1,-2]]],[],[]],[[[180,[-1,-2]]],[[95,[-1,[143,[-2]]]]],[],[]],[[[180,[-1,-2]]],-1,[],[]],[[[173,[-1,-2]]],97,[],[]],[[[173,[-1,-2]]],[[145,[-1]]],[],[]],[[[173,[-1,-2]]],[[146,[-1]]],[],[]],[[[173,[-1,-2]]],[[143,[-1]]],[],[]],[[[173,[-1,-2]]],[[143,[-1]]],[],[]],[[[173,[-1,-2]]],140,[],[]],[[[177,[-1,-2]]],140,[],[]],[[[185,[-1,-2]]],140,[],[]],[[[178,[-1,-2]]],140,[],[]],[[[179,[-1]]],140,[]],[[[145,[-1]]],140,[]],[[[146,[-1]]],140,[]],[[],[[173,[-1,-2]]],[],[]],[[-1,[143,[-2]]],[[180,[-1,-2]]],[],[]],[[[177,[-1,-2]]],143,[],[]],[[[185,[-1,-2]]],143,[],[]],[[[178,[-1,-2]]],143,[],[]],[[[179,[-1]]],143,[]],[[[145,[-1]]],143,[]],[[[146,[-1]]],143,[]],[[[177,[-1,-2]]],143,[],[]],[[[185,[-1,-2]]],143,[],[]],[[[178,[-1,-2]]],143,[],[]],[[[179,[-1]]],143,[]],[[[145,[-1]]],143,[]],[[[146,[-1]]],143,[]],[[[173,[-1,-2]]],[[177,[-1,-2]]],[],[]],[[[173,[-1,-2]]],[[185,[-1,-2]]],[],[]],[153,[[6,[[173,[-1,-2]]]]],152,[186,152]],[153,[[6,[[173,[-1,-2]]]]],[],[186,152]],[153,[[6,[[173,[-1,-2]]]]],152,152],[153,[[6,[[173,[-1,-2]]]]],[],152],[[[173,[-1,-2]]],[[143,[[180,[-1,-2]]]]],[],[]],[[[180,[-1,-2]]],[[143,[-2]]],[],[]],[[[180,[-1,-2]]],[[143,[-2]]],[],[]],[[[173,[-1,-2]],-1],95,[],182],[[[173,[-1,-2]],-2],95,[],[]],[[[173,[-1,-2]],-1],95,[],[]],[[[177,[-1,-2]]],[[95,[140,[143,[140]]]]],[],[]],[[[185,[-1,-2]]],[[95,[140,[143,[140]]]]],[],[]],[[[178,[-1,-2]]],[[95,[140,[143,[140]]]]],[],[]],[[[179,[-1]]],[[95,[140,[143,[140]]]]],[]],[[[145,[-1]]],[[95,[140,[143,[140]]]]],[]],[[[146,[-1]]],[[95,[140,[143,[140]]]]],[]],[-1,147,[]],[-1,147,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[173,[-1,-2]],154],95,172,172],[[[180,[-1,-2]],154],95,172,172],[[[173,[-1,-2]]],97,[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[[[180,[-1,-2]]],-1,[],[]],[[[180,[-1,-2]]],-1,[],[]],0,[-1,147,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[106,106],[187,187],[188,188],[189,189],[190,190],[191,191],[192,192],[193,193],[194,194],[195,195],[196,196],[109,109],[197,197],[198,198],[199,199],[200,200],[201,201],[107,107],[202,202],[203,203],[204,204],[205,205],[206,206],[207,207],[208,208],[209,209],[210,210],[211,211],[212,212],[213,213],[214,214],[215,215],[216,216],[217,217],[218,218],[219,219],[104,104],[105,105],[220,220],[221,221],[108,108],[222,222],[223,223],[224,224],[225,225],[226,226],[227,227],[228,228],[229,229],[230,230],[231,231],[232,232],[233,233],[234,234],[235,235],[236,236],[237,237],[238,238],[239,239],[240,240],[241,241],[242,242],[243,243],[244,244],[245,245],[246,246],[247,247],[248,248],[249,249],[250,250],[251,251],[252,252],[253,253],[254,254],[255,255],[256,256],[257,257],[258,258],[259,259],[260,260],[261,261],[262,262],[263,263],[264,264],[265,265],[266,266],[267,267],[268,268],[269,269],[270,270],[271,271],[272,272],[273,273],[274,274],[275,275],[276,276],[277,277],[278,278],[279,279],[280,280],[281,281],[282,282],[283,283],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[-1,-2],95,[],[]],[[],106],[[],187],[[],188],[[],189],[[],190],[[],191],[[],192],[[],193],[[],194],[[],195],[[],196],[[],109],[[],197],[[],198],[[],199],[[],200],[[],201],[[],107],[[],202],[[],203],[[],204],[[],205],[[],206],[[],207],[[],208],[[],209],[[],210],[[],211],[[],212],[[],213],[[],214],[[],215],[[],216],[[],217],[[],218],[[],219],[[],104],[[],105],[[],220],[[],221],[[],108],[[],222],[[],223],[[],224],[[],225],[[],226],[[],227],[[],228],[[],229],[[],230],[[],231],[[],232],[[],233],[[],234],[[],235],[[],236],[[],237],[[],238],[[],239],[[],240],[[],241],[[],242],[[],243],[[],244],[[],245],[[],246],[[],247],[[],248],[[],249],[[],250],[[],251],[[],252],[[],253],[[],254],[[],255],[[],256],[[],257],[[],258],[[],259],[[],260],[[],261],[[],262],[[],263],[[],264],[[],265],[[],266],[[],267],[[],268],[[],269],[[],270],[[],271],[[],272],[[],273],[[],274],[[],275],[[],276],[[],277],[[],278],[[],279],[[],280],[[],281],[[],282],[[],283],[106],[234],[236],[239],[240],[241],[243],[245],[246],[248],[249],[253],[256],[258],[261],[264],[265],[268],[271],[276],[277],[279],[106],[234],[236],[239],[240],[241],[243],[245],[246],[248],[249],[253],[256],[258],[261],[264],[265],[268],[271],[276],[277],[279],[[106,106],97],[[187,187],97],[[188,188],97],[[189,189],97],[[190,190],97],[[191,191],97],[[192,192],97],[[193,193],97],[[194,194],97],[[195,195],97],[[196,196],97],[[109,109],97],[[197,197],97],[[198,198],97],[[199,199],97],[[200,200],97],[[201,201],97],[[107,107],97],[[202,202],97],[[203,203],97],[[204,204],97],[[205,205],97],[[206,206],97],[[207,207],97],[[208,208],97],[[209,209],97],[[210,210],97],[[211,211],97],[[212,212],97],[[213,213],97],[[214,214],97],[[215,215],97],[[216,216],97],[[217,217],97],[[218,218],97],[[219,219],97],[[104,104],97],[[105,105],97],[[220,220],97],[[221,221],97],[[108,108],97],[[222,222],97],[[223,223],97],[[224,224],97],[[225,225],97],[[226,226],97],[[227,227],97],[[228,228],97],[[229,229],97],[[230,230],97],[[231,231],97],[[232,232],97],[[233,233],97],[[234,234],97],[[235,235],97],[[236,236],97],[[237,237],97],[[238,238],97],[[239,239],97],[[240,240],97],[[241,241],97],[[242,242],97],[[243,243],97],[[244,244],97],[[245,245],97],[[246,246],97],[[247,247],97],[[248,248],97],[[249,249],97],[[250,250],97],[[251,251],97],[[252,252],97],[[253,253],97],[[254,254],97],[[255,255],97],[[256,256],97],[[257,257],97],[[258,258],97],[[259,259],97],[[260,260],97],[[261,261],97],[[262,262],97],[[263,263],97],[[264,264],97],[[265,265],97],[[266,266],97],[[267,267],97],[[268,268],97],[[269,269],97],[[270,270],97],[[271,271],97],[[272,272],97],[[273,273],97],[[274,274],97],[[275,275],97],[[276,276],97],[[277,277],97],[[278,278],97],[[279,279],97],[[280,280],97],[[281,281],97],[[282,282],97],[[283,283],97],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[-1,-2],97,[],[]],[[106,100],101],[[187,100],101],[[188,100],101],[[189,100],101],[[190,100],101],[[191,100],101],[[192,100],101],[[193,100],101],[[194,100],101],[[195,100],101],[[196,100],101],[[109,100],101],[[197,100],101],[[198,100],101],[[199,100],101],[[200,100],101],[[201,100],101],[[107,100],101],[[202,100],101],[[203,100],101],[[204,100],101],[[205,100],101],[[206,100],101],[[207,100],101],[[208,100],101],[[209,100],101],[[210,100],101],[[211,100],101],[[212,100],101],[[213,100],101],[[214,100],101],[[215,100],101],[[216,100],101],[[217,100],101],[[218,100],101],[[219,100],101],[[104,100],101],[[105,100],101],[[220,100],101],[[221,100],101],[[108,100],101],[[222,100],101],[[223,100],101],[[224,100],101],[[225,100],101],[[226,100],101],[[227,100],101],[[228,100],101],[[229,100],101],[[230,100],101],[[231,100],101],[[232,100],101],[[233,100],101],[[234,100],101],[[235,100],101],[[236,100],101],[[237,100],101],[[238,100],101],[[239,100],101],[[240,100],101],[[241,100],101],[[242,100],101],[[243,100],101],[[244,100],101],[[245,100],101],[[246,100],101],[[247,100],101],[[248,100],101],[[249,100],101],[[250,100],101],[[251,100],101],[[252,100],101],[[253,100],101],[[254,100],101],[[255,100],101],[[256,100],101],[[257,100],101],[[258,100],101],[[259,100],101],[[260,100],101],[[261,100],101],[[262,100],101],[[263,100],101],[[264,100],101],[[265,100],101],[[266,100],101],[[267,100],101],[[268,100],101],[[269,100],101],[[270,100],101],[[271,100],101],[[272,100],101],[[273,100],101],[[274,100],101],[[275,100],101],[[276,100],101],[[277,100],101],[[278,100],101],[[279,100],101],[[280,100],101],[[281,100],101],[[282,100],101],[[283,100],101],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[106,-1],95,144],[[187,-1],95,144],[[188,-1],95,144],[[189,-1],95,144],[[190,-1],95,144],[[191,-1],95,144],[[192,-1],95,144],[[193,-1],95,144],[[194,-1],95,144],[[195,-1],95,144],[[196,-1],95,144],[[109,-1],95,144],[[197,-1],95,144],[[198,-1],95,144],[[199,-1],95,144],[[200,-1],95,144],[[201,-1],95,144],[[107,-1],95,144],[[202,-1],95,144],[[203,-1],95,144],[[204,-1],95,144],[[205,-1],95,144],[[206,-1],95,144],[[207,-1],95,144],[[208,-1],95,144],[[209,-1],95,144],[[210,-1],95,144],[[211,-1],95,144],[[212,-1],95,144],[[213,-1],95,144],[[214,-1],95,144],[[215,-1],95,144],[[216,-1],95,144],[[217,-1],95,144],[[218,-1],95,144],[[219,-1],95,144],[[104,-1],95,144],[[105,-1],95,144],[[220,-1],95,144],[[221,-1],95,144],[[108,-1],95,144],[[222,-1],95,144],[[223,-1],95,144],[[224,-1],95,144],[[225,-1],95,144],[[226,-1],95,144],[[227,-1],95,144],[[228,-1],95,144],[[229,-1],95,144],[[230,-1],95,144],[[231,-1],95,144],[[232,-1],95,144],[[233,-1],95,144],[[234,-1],95,144],[[235,-1],95,144],[[236,-1],95,144],[[237,-1],95,144],[[238,-1],95,144],[[239,-1],95,144],[[240,-1],95,144],[[241,-1],95,144],[[242,-1],95,144],[[243,-1],95,144],[[244,-1],95,144],[[245,-1],95,144],[[246,-1],95,144],[[247,-1],95,144],[[248,-1],95,144],[[249,-1],95,144],[[250,-1],95,144],[[251,-1],95,144],[[252,-1],95,144],[[253,-1],95,144],[[254,-1],95,144],[[255,-1],95,144],[[256,-1],95,144],[[257,-1],95,144],[[258,-1],95,144],[[259,-1],95,144],[[260,-1],95,144],[[261,-1],95,144],[[262,-1],95,144],[[263,-1],95,144],[[264,-1],95,144],[[265,-1],95,144],[[266,-1],95,144],[[267,-1],95,144],[[268,-1],95,144],[[269,-1],95,144],[[270,-1],95,144],[[271,-1],95,144],[[272,-1],95,144],[[273,-1],95,144],[[274,-1],95,144],[[275,-1],95,144],[[276,-1],95,144],[[277,-1],95,144],[[278,-1],95,144],[[279,-1],95,144],[[280,-1],95,144],[[281,-1],95,144],[[282,-1],95,144],[[283,-1],95,144],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[153,[[6,[106]]]],[153,[[6,[187]]]],[153,[[6,[188]]]],[153,[[6,[189]]]],[153,[[6,[190]]]],[153,[[6,[191]]]],[153,[[6,[192]]]],[153,[[6,[193]]]],[153,[[6,[194]]]],[153,[[6,[195]]]],[153,[[6,[196]]]],[153,[[6,[109]]]],[153,[[6,[197]]]],[153,[[6,[198]]]],[153,[[6,[199]]]],[153,[[6,[200]]]],[153,[[6,[201]]]],[153,[[6,[107]]]],[153,[[6,[202]]]],[153,[[6,[203]]]],[153,[[6,[204]]]],[153,[[6,[205]]]],[153,[[6,[206]]]],[153,[[6,[207]]]],[153,[[6,[208]]]],[153,[[6,[209]]]],[153,[[6,[210]]]],[153,[[6,[211]]]],[153,[[6,[212]]]],[153,[[6,[213]]]],[153,[[6,[214]]]],[153,[[6,[215]]]],[153,[[6,[216]]]],[153,[[6,[217]]]],[153,[[6,[218]]]],[153,[[6,[219]]]],[153,[[6,[104]]]],[153,[[6,[105]]]],[153,[[6,[220]]]],[153,[[6,[221]]]],[153,[[6,[108]]]],[153,[[6,[222]]]],[153,[[6,[223]]]],[153,[[6,[224]]]],[153,[[6,[225]]]],[153,[[6,[226]]]],[153,[[6,[227]]]],[153,[[6,[228]]]],[153,[[6,[229]]]],[153,[[6,[230]]]],[153,[[6,[231]]]],[153,[[6,[232]]]],[153,[[6,[233]]]],[153,[[6,[234]]]],[153,[[6,[235]]]],[153,[[6,[236]]]],[153,[[6,[237]]]],[153,[[6,[238]]]],[153,[[6,[239]]]],[153,[[6,[240]]]],[153,[[6,[241]]]],[153,[[6,[242]]]],[153,[[6,[243]]]],[153,[[6,[244]]]],[153,[[6,[245]]]],[153,[[6,[246]]]],[153,[[6,[247]]]],[153,[[6,[248]]]],[153,[[6,[249]]]],[153,[[6,[250]]]],[153,[[6,[251]]]],[153,[[6,[252]]]],[153,[[6,[253]]]],[153,[[6,[254]]]],[153,[[6,[255]]]],[153,[[6,[256]]]],[153,[[6,[257]]]],[153,[[6,[258]]]],[153,[[6,[259]]]],[153,[[6,[260]]]],[153,[[6,[261]]]],[153,[[6,[262]]]],[153,[[6,[263]]]],[153,[[6,[264]]]],[153,[[6,[265]]]],[153,[[6,[266]]]],[153,[[6,[267]]]],[153,[[6,[268]]]],[153,[[6,[269]]]],[153,[[6,[270]]]],[153,[[6,[271]]]],[153,[[6,[272]]]],[153,[[6,[273]]]],[153,[[6,[274]]]],[153,[[6,[275]]]],[153,[[6,[276]]]],[153,[[6,[277]]]],[153,[[6,[278]]]],[153,[[6,[279]]]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],[-1,147,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[280,154,-1],95,175],[[281,154,-1],95,175],[[282,154,-1],95,175],[[283,154,-1],95,175],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[106,154],95],[[187,154],95],[[188,154],95],[[189,154],95],[[190,154],95],[[191,154],95],[[192,154],95],[[193,154],95],[[194,154],95],[[195,154],95],[[196,154],95],[[109,154],95],[[197,154],95],[[198,154],95],[[199,154],95],[[200,154],95],[[201,154],95],[[107,154],95],[[202,154],95],[[203,154],95],[[204,154],95],[[205,154],95],[[206,154],95],[[207,154],95],[[208,154],95],[[209,154],95],[[210,154],95],[[211,154],95],[[212,154],95],[[213,154],95],[[214,154],95],[[215,154],95],[[216,154],95],[[217,154],95],[[218,154],95],[[219,154],95],[[104,154],95],[[105,154],95],[[220,154],95],[[221,154],95],[[108,154],95],[[222,154],95],[[223,154],95],[[224,154],95],[[225,154],95],[[226,154],95],[[227,154],95],[[228,154],95],[[229,154],95],[[230,154],95],[[231,154],95],[[232,154],95],[[233,154],95],[[234,154],95],[[235,154],95],[[236,154],95],[[237,154],95],[[238,154],95],[[239,154],95],[[240,154],95],[[241,154],95],[[242,154],95],[[243,154],95],[[244,154],95],[[245,154],95],[[246,154],95],[[247,154],95],[[248,154],95],[[249,154],95],[[250,154],95],[[251,154],95],[[252,154],95],[[253,154],95],[[254,154],95],[[255,154],95],[[256,154],95],[[257,154],95],[[258,154],95],[[259,154],95],[[260,154],95],[[261,154],95],[[262,154],95],[[263,154],95],[[264,154],95],[[265,154],95],[[266,154],95],[[267,154],95],[[268,154],95],[[269,154],95],[[270,154],95],[[271,154],95],[[272,154],95],[[273,154],95],[[274,154],95],[[275,154],95],[[276,154],95],[[277,154],95],[[278,154],95],[[279,154],95],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,[[103,[-2]]],[],[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],[-1,158,[]],0,[[-1,82],95,[284,99]],[[-1,82],95,[]],[[-1,82],95,[]],[[-1,90],95,[284,99]],[[-1,90],95,[]],[[-1,90],95,[]],[[-1,12],95,[284,99]],[[-1,12],95,[]],[[-1,12],95,[]],[[-1,11],95,[284,99]],[[-1,11],95,[]],[[-1,11],95,[]],[[-1,83],95,[284,99]],[[-1,83],95,[]],[[-1,83],95,[]],[[-1,65],95,[284,99]],[[-1,65],95,[]],[[-1,65],95,[]],[[-1,91],95,[284,99]],[[-1,91],95,[]],[[-1,91],95,[]],[[-1,43],95,[284,99]],[[-1,43],95,[]],[[-1,43],95,[]],[[-1,42],95,[284,99]],[[-1,42],95,[]],[[-1,42],95,[]],[[-1,92],95,[284,99]],[[-1,92],95,[]],[[-1,92],95,[]],[[-1,61],95,[284,99]],[[-1,61],95,[]],[[-1,61],95,[]],[[-1,63],95,[284,99]],[[-1,63],95,[]],[[-1,63],95,[]],[[-1,62],95,[284,99]],[[-1,62],95,[]],[[-1,62],95,[]],[[-1,64],95,[284,99]],[[-1,64],95,[]],[[-1,64],95,[]],[[-1,60],95,[284,99]],[[-1,60],95,[]],[[-1,60],95,[]],[[-1,26],95,[284,99]],[[-1,26],95,[]],[[-1,26],95,[]],[[-1,27],95,[284,99]],[[-1,27],95,[]],[[-1,27],95,[]],[[-1,28],95,[284,99]],[[-1,28],95,[]],[[-1,28],95,[]],[[-1,29],95,[284,99]],[[-1,29],95,[]],[[-1,29],95,[]],[[-1,30],95,[284,99]],[[-1,30],95,[]],[[-1,30],95,[]],[[-1,31],95,[284,99]],[[-1,31],95,[]],[[-1,31],95,[]],[[-1,32],95,[284,99]],[[-1,32],95,[]],[[-1,32],95,[]],[[-1,33],95,[284,99]],[[-1,33],95,[]],[[-1,33],95,[]],[[-1,34],95,[284,99]],[[-1,34],95,[]],[[-1,34],95,[]],[[-1,35],95,[284,99]],[[-1,35],95,[]],[[-1,35],95,[]],[[-1,21],95,[284,99]],[[-1,21],95,[]],[[-1,21],95,[]],[[-1,18],95,[284,99]],[[-1,18],95,[]],[[-1,18],95,[]],[[-1,19],95,[284,99]],[[-1,19],95,[]],[[-1,19],95,[]],[[-1,20],95,[284,99]],[[-1,20],95,[]],[[-1,20],95,[]],[[-1,89],95,[284,99]],[[-1,89],95,[]],[[-1,89],95,[]],[[-1,39],95,[284,99]],[[-1,39],95,[]],[[-1,39],95,[]],[[-1,38],95,[284,99]],[[-1,38],95,[]],[[-1,38],95,[]],[[-1,10],95,[284,99]],[[-1,10],95,[]],[[-1,10],95,[]],[[-1,37],95,[284,99]],[[-1,37],95,[]],[[-1,37],95,[]],[[-1,9],95,[284,99]],[[-1,9],95,[]],[[-1,9],95,[]],[[-1,41],95,[284,99]],[[-1,41],95,[]],[[-1,41],95,[]],[[-1,52],95,[284,99]],[[-1,52],95,[]],[[-1,52],95,[]],[[-1,57],95,[284,99]],[[-1,57],95,[]],[[-1,57],95,[]],[[-1,55],95,[284,99]],[[-1,55],95,[]],[[-1,55],95,[]],[[-1,54],95,[284,99]],[[-1,54],95,[]],[[-1,54],95,[]],[[-1,56],95,[284,99]],[[-1,56],95,[]],[[-1,56],95,[]],[[-1,5],95,[284,99]],[[-1,5],95,[]],[[-1,5],95,[]],[[-1,3],95,[284,99]],[[-1,3],95,[]],[[-1,3],95,[]],[[-1,53],95,[284,99]],[[-1,53],95,[]],[[-1,53],95,[]],[[-1,58],95,[284,99]],[[-1,58],95,[]],[[-1,58],95,[]],[[-1,59],95,[284,99]],[[-1,59],95,[]],[[-1,59],95,[]],[[-1,36],95,[284,99]],[[-1,36],95,[]],[[-1,36],95,[]],[[-1,13],95,[284,99]],[[-1,13],95,[]],[[-1,13],95,[]],[[-1,14],95,[284,99]],[[-1,14],95,[]],[[-1,14],95,[]],[[-1,15],95,[284,99]],[[-1,15],95,[]],[[-1,15],95,[]],[[-1,16],95,[284,99]],[[-1,16],95,[]],[[-1,16],95,[]],[[-1,93],95,[284,99]],[[-1,93],95,[]],[[-1,93],95,[]],[[-1,86],95,[284,99]],[[-1,86],95,[]],[[-1,86],95,[]],[[-1,88],95,[284,99]],[[-1,88],95,[]],[[-1,88],95,[]],[[-1,87],95,[284,99]],[[-1,87],95,[]],[[-1,87],95,[]],[[-1,51],95,[284,99]],[[-1,51],95,[]],[[-1,51],95,[]],[[-1,50],95,[284,99]],[[-1,50],95,[]],[[-1,50],95,[]],[[-1,49],95,[284,99]],[[-1,49],95,[]],[[-1,49],95,[]],[[-1,94],95,[284,99]],[[-1,94],95,[]],[[-1,94],95,[]],[[-1,85],95,[284,99]],[[-1,85],95,[]],[[-1,85],95,[]],[[-1,147],95,[284,99]],[[-1,147],95,[]],[[-1,147],95,[]],[[-1,45],95,[284,99]],[[-1,45],95,[]],[[-1,45],95,[]],[[-1,46],95,[284,99]],[[-1,46],95,[]],[[-1,46],95,[]],[[-1,67],95,[284,99]],[[-1,67],95,[]],[[-1,67],95,[]],[[-1,68],95,[284,99]],[[-1,68],95,[]],[[-1,68],95,[]],[[-1,69],95,[284,99]],[[-1,69],95,[]],[[-1,69],95,[]],[[-1,70],95,[284,99]],[[-1,70],95,[]],[[-1,70],95,[]],[[-1,71],95,[284,99]],[[-1,71],95,[]],[[-1,71],95,[]],[[-1,72],95,[284,99]],[[-1,72],95,[]],[[-1,72],95,[]],[[-1,73],95,[284,99]],[[-1,73],95,[]],[[-1,73],95,[]],[[-1,74],95,[284,99]],[[-1,74],95,[]],[[-1,74],95,[]],[[-1,40],95,[284,99]],[[-1,40],95,[]],[[-1,40],95,[]],[[-1,44],95,[284,99]],[[-1,44],95,[]],[[-1,44],95,[]],[[-1,75],95,[284,99]],[[-1,75],95,[]],[[-1,75],95,[]],[[-1,76],95,[284,99]],[[-1,76],95,[]],[[-1,76],95,[]],[[-1,77],95,[284,99]],[[-1,77],95,[]],[[-1,77],95,[]],[[-1,78],95,[284,99]],[[-1,78],95,[]],[[-1,78],95,[]],[[-1,79],95,[284,99]],[[-1,79],95,[]],[[-1,79],95,[]],[[-1,80],95,[284,99]],[[-1,80],95,[]],[[-1,80],95,[]],[[-1,81],95,[284,99]],[[-1,81],95,[]],[[-1,81],95,[]],[[-1,66],95,[284,99]],[[-1,66],95,[]],[[-1,66],95,[]],[[-1,84],95,[284,99]],[[-1,84],95,[]],[[-1,84],95,[]],[[-1,17],95,[284,99]],[[-1,17],95,[]],[[-1,17],95,[]],[[-1,24],95,[284,99]],[[-1,24],95,[]],[[-1,24],95,[]],[[-1,23],95,[284,99]],[[-1,23],95,[]],[[-1,23],95,[]],[[-1,25],95,[284,99]],[[-1,25],95,[]],[[-1,25],95,[]],[[-1,22],95,[284,99]],[[-1,22],95,[]],[[-1,22],95,[]],[[-1,47],95,[284,99]],[[-1,47],95,[]],[[-1,47],95,[]],[[-1,48],95,[284,99]],[[-1,48],95,[]],[[-1,48],95,[]]],"c":[],"p":[[3,"TypeGenerics",0],[3,"Turbofish",0],[3,"LitInt",0],[15,"str"],[3,"LitFloat",0],[6,"Result",2527],[8,"FromStr",5158],[3,"ImplGenerics",0],[3,"Lifetime",0],[3,"Ident",0],[3,"Attribute",0],[4,"AttrStyle",0],[4,"Meta",0],[3,"MetaList",0],[3,"MetaNameValue",0],[4,"NestedMeta",0],[3,"Variant",0],[4,"Fields",0],[3,"FieldsNamed",0],[3,"FieldsUnnamed",0],[3,"Field",0],[4,"Visibility",0],[3,"VisPublic",0],[3,"VisCrate",0],[3,"VisRestricted",0],[4,"Expr",0],[3,"ExprBinary",0],[3,"ExprCall",0],[3,"ExprCast",0],[3,"ExprField",0],[3,"ExprIndex",0],[3,"ExprLit",0],[3,"ExprParen",0],[3,"ExprPath",0],[3,"ExprUnary",0],[4,"Member",0],[3,"Index",0],[3,"Generics",0],[4,"GenericParam",0],[3,"TypeParam",0],[3,"LifetimeDef",0],[3,"ConstParam",0],[3,"BoundLifetimes",0],[4,"TypeParamBound",0],[3,"TraitBound",0],[4,"TraitBoundModifier",0],[3,"WhereClause",0],[4,"WherePredicate",0],[3,"PredicateType",0],[3,"PredicateLifetime",0],[3,"PredicateEq",0],[4,"Lit",0],[3,"LitStr",0],[3,"LitByteStr",0],[3,"LitByte",0],[3,"LitChar",0],[3,"LitBool",0],[3,"Macro",0],[4,"MacroDelimiter",0],[3,"DeriveInput",0],[4,"Data",0],[3,"DataStruct",0],[3,"DataEnum",0],[3,"DataUnion",0],[4,"BinOp",0],[4,"UnOp",0],[4,"Type",0],[3,"TypeArray",0],[3,"TypeBareFn",0],[3,"TypeGroup",0],[3,"TypeImplTrait",0],[3,"TypeInfer",0],[3,"TypeMacro",0],[3,"TypeNever",0],[3,"TypeParen",0],[3,"TypePath",0],[3,"TypePtr",0],[3,"TypeReference",0],[3,"TypeSlice",0],[3,"TypeTraitObject",0],[3,"TypeTuple",0],[3,"Abi",0],[3,"BareFnArg",0],[3,"Variadic",0],[4,"ReturnType",0],[3,"Path",0],[3,"PathSegment",0],[4,"PathArguments",0],[4,"GenericArgument",0],[3,"AngleBracketedGenericArguments",0],[3,"Binding",0],[3,"Constraint",0],[3,"ParenthesizedGenericArguments",0],[3,"QSelf",0],[15,"tuple"],[4,"Ordering",5159],[15,"bool"],[8,"AsRef",5160],[8,"Sized",5161],[3,"Formatter",5162],[6,"Result",5162],[3,"Error",5162],[4,"Result",5163],[3,"SelfType",2793],[3,"SelfValue",2793],[3,"Underscore",2793],[3,"Extern",2793],[3,"Super",2793],[3,"Crate",2793],[3,"ExprType",0],[3,"ExprForLoop",0],[3,"ExprLet",0],[3,"ExprTuple",0],[3,"ExprWhile",0],[3,"ExprRange",0],[3,"ExprAssign",0],[3,"ExprReference",0],[3,"ExprUnsafe",0],[3,"ExprArray",0],[3,"ExprAsync",0],[3,"ExprGroup",0],[3,"ExprContinue",0],[3,"ExprStruct",0],[3,"ExprTryBlock",0],[3,"ExprReturn",0],[3,"ExprRepeat",0],[3,"ExprBox",0],[3,"ExprMacro",0],[3,"ExprTry",0],[3,"ExprYield",0],[3,"ExprBlock",0],[3,"ExprLoop",0],[3,"ExprAwait",0],[3,"ExprBreak",0],[3,"ExprClosure",0],[3,"ExprMethodCall",0],[3,"ExprAssignOp",0],[3,"ExprMatch",0],[3,"ExprIf",0],[15,"usize"],[3,"Literal",5164],[8,"Into",5160],[4,"Option",5165],[8,"Hasher",5166],[3,"Iter",2628],[3,"IterMut",2628],[3,"Span",5164],[15,"u8"],[15,"slice"],[15,"char"],[3,"TokenStream",5167],[8,"Parse",2527],[6,"ParseStream",2527],[3,"TokenStream",5164],[8,"Parser",2527],[3,"Vec",5168],[3,"String",5169],[3,"TypeId",5170],[3,"TokenBuffer",2488],[3,"Cursor",2488],[4,"Delimiter",5164],[3,"Punct",5164],[4,"TokenTree",5164],[3,"ParseBuffer",2527],[3,"StepCursor",2527],[3,"Error",2527],[3,"Nothing",2527],[3,"Lookahead1",2527],[8,"Display",5162],[8,"IntoIterator",5171],[3,"LexError",5164],[8,"ToTokens",5172],[3,"Punctuated",2628],[8,"Peek",2527],[8,"FnOnce",5173],[8,"Clone",5174],[3,"Pairs",2628],[3,"IntoPairs",2628],[3,"IntoIter",2628],[4,"Pair",2628],[8,"PartialEq",5159],[8,"Default",5175],[8,"Debug",5162],[8,"Hash",5166],[3,"PairsMut",2628],[8,"Token",2793],[3,"Abstract",2793],[3,"As",2793],[3,"Async",2793],[3,"Auto",2793],[3,"Await",2793],[3,"Become",2793],[3,"Box",2793],[3,"Break",2793],[3,"Const",2793],[3,"Continue",2793],[3,"Default",2793],[3,"Do",2793],[3,"Dyn",2793],[3,"Else",2793],[3,"Enum",2793],[3,"Final",2793],[3,"Fn",2793],[3,"For",2793],[3,"If",2793],[3,"Impl",2793],[3,"In",2793],[3,"Let",2793],[3,"Loop",2793],[3,"Macro",2793],[3,"Match",2793],[3,"Mod",2793],[3,"Move",2793],[3,"Mut",2793],[3,"Override",2793],[3,"Priv",2793],[3,"Pub",2793],[3,"Ref",2793],[3,"Return",2793],[3,"Static",2793],[3,"Struct",2793],[3,"Trait",2793],[3,"Try",2793],[3,"Type",2793],[3,"Typeof",2793],[3,"Union",2793],[3,"Unsafe",2793],[3,"Unsized",2793],[3,"Use",2793],[3,"Virtual",2793],[3,"Where",2793],[3,"While",2793],[3,"Yield",2793],[3,"Add",2793],[3,"AddEq",2793],[3,"And",2793],[3,"AndAnd",2793],[3,"AndEq",2793],[3,"At",2793],[3,"Bang",2793],[3,"Caret",2793],[3,"CaretEq",2793],[3,"Colon",2793],[3,"Colon2",2793],[3,"Comma",2793],[3,"Div",2793],[3,"DivEq",2793],[3,"Dollar",2793],[3,"Dot",2793],[3,"Dot2",2793],[3,"Dot3",2793],[3,"DotDotEq",2793],[3,"Eq",2793],[3,"EqEq",2793],[3,"Ge",2793],[3,"Gt",2793],[3,"Le",2793],[3,"Lt",2793],[3,"MulEq",2793],[3,"Ne",2793],[3,"Or",2793],[3,"OrEq",2793],[3,"OrOr",2793],[3,"Pound",2793],[3,"Question",2793],[3,"RArrow",2793],[3,"LArrow",2793],[3,"Rem",2793],[3,"RemEq",2793],[3,"FatArrow",2793],[3,"Semi",2793],[3,"Shl",2793],[3,"ShlEq",2793],[3,"Shr",2793],[3,"ShrEq",2793],[3,"Star",2793],[3,"Sub",2793],[3,"SubEq",2793],[3,"Tilde",2793],[3,"Brace",2793],[3,"Bracket",2793],[3,"Paren",2793],[3,"Group",2793],[8,"Visit",4890],[4,"StrStyle",0],[8,"IdentExt",2523],[8,"Speculative",2626],[8,"Spanned",2791]]},\ -"synstructure":{"doc":"This crate provides helper types for matching against enum …","t":"EEDNNNINNNNNDDDLLLLLLLMLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLOOMLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLKLLLLLLMLLLLLLLMOLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLL","n":["AddBounds","BindStyle","BindingInfo","Both","Fields","Generics","MacroResult","Move","MoveMut","None","Ref","RefMut","Structure","VariantAst","VariantInfo","add_bounds","add_impl_generic","add_trait_bounds","add_where_predicate","ast","ast","ast","attrs","bind_with","bind_with","binding","binding_name","binding_name","bindings","bindings_mut","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","bound_impl","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","construct","decl_attribute","decl_derive","discriminant","each","each","each_variant","eq","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fields","filter","filter","filter_variants","fmt","fmt","fmt","fmt","fmt","fmt","fold","fold","from","from","from","from","from","from","gen_impl","hash","hash","hash","hash","hash","hash","ident","into","into","into","into","into","into","into_result","into_stream","new","omitted_bindings","omitted_variants","pat","pat","prefix","referenced_ty_params","referenced_ty_params","referenced_ty_params","remove_binding","remove_variant","span","span","style","test_derive","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_tokens","to_tokens","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_new","type_id","type_id","type_id","type_id","type_id","type_id","unbound_impl","underscore_const","unpretty_print","unsafe_bound_impl","unsafe_unbound_impl","variants","variants_mut"],"q":[[0,"synstructure"],[157,"syn::generics"],[158,"syn::generics"],[159,"syn::generics"],[160,"syn::derive"],[161,"core::ops::function"],[162,"proc_macro2"],[163,"quote::to_tokens"],[164,"core::fmt"],[165,"core::fmt"],[166,"syn::error"],[167,"proc_macro"],[168,"core::marker"],[169,"proc_macro2"],[170,"proc_macro2"],[171,"core::any"],[172,"alloc::string"],[173,"core::fmt"]],"d":["Changes how bounds are added","The type of binding to use when generating a pattern.","Information about a specific binding. This contains both …","Add for fields and generics","Fields only","Generics only","Helper trait describing values which may be returned by …","x","mut x","None","ref x","ref mut x","A wrapper around a syn::DeriveInput which provides …","This type is similar to syn’s Variant type, however each …","A wrapper around a syn::DeriveInput’s variant which …","Specify which bounds should be generated by …","Adds an impl<> generic parameter. This can be used when …","Add trait bounds for a trait with the given path for each …","Specify additional where predicate bounds which should be …","Returns a reference to the underlying syn AST node which …","Returns a VariantAst object which contains references to …","Returns a reference to the underlying syn AST node which …","","Updates the BindStyle for each of the passed-in fields by …","Updates the BindStyle for each of the passed-in fields by …","The name which this BindingInfo will bind to.","Updates the binding name for each fo the passed-in fields …","Updates the binding name for each fo the passed-in fields …","Returns a slice of the bindings in this Variant.","Returns a mut slice of the bindings in this Variant.","","","","","","","","","","","","","NOTE: This methods’ features are superceded by …","","","","","","","","","","","","","Generates the token stream required to construct the …","The decl_attribute! macro declares a custom attribute …","The decl_derive! macro declares a custom derive wrapper. …","","Runs the passed-in function once for each bound field, …","Runs the passed-in function once for each bound field, …","Runs the passed-in function once for each variant, passing …","","","","","","","","","","","","","","Filter the bindings created by this Variant object. This …","Filter the bindings created by this Structure object. This …","Filter the variants matched by this Structure object. This …","","","","","","","Runs the passed-in function once for each bound field, …","Runs the passed-in function once for each bound field, …","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Generate an impl block for the given struct. This impl …","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Convert this result into a Result for further processing / …","Convert this result into a proc_macro::TokenStream, ready …","Create a new Structure with the variants and fields from …","True if any bindings were omitted due to a filter call.","True if any variants were omitted due to a filter_variants …","Generates the pattern fragment for this field binding.","Generates the match-arm pattern which could be used to …","","Returns a list of the type parameters which are referenced …","Returns a list of the type parameters which are referenced …","Returns a list of the type parameters which are refrenced …","Remove the binding at the given index.","Remove the variant at the given index.","","","The type of binding which this BindingInfo will create.","Run a test on a custom derive. This macro expands both the …","","","","","","","","","","","","","","","","","","","","","Create a new Structure with the variants and fields from …","","","","","","","NOTE: This methods’ features are superceded by …","Configure whether to use const _ instead of a generated …","Dumps an unpretty version of a tokenstream. Takes any type …","NOTE: This methods’ features are superceded by …","NOTE: This methods’ features are superceded by …","Returns a slice of the variants in this Structure.","Returns a mut slice of the variants in this Structure."],"i":[0,0,0,2,2,2,0,18,18,2,18,18,0,0,0,1,1,1,1,9,11,1,12,11,1,9,11,1,11,11,2,18,9,12,11,1,2,18,9,12,11,1,1,2,18,9,12,11,1,2,18,9,12,11,1,11,0,0,12,11,1,1,2,18,9,12,11,1,2,18,9,12,11,1,12,11,1,1,2,18,9,12,11,1,11,1,2,18,9,12,11,1,1,2,18,9,12,11,1,12,2,18,9,12,11,1,34,34,1,11,1,9,11,11,9,11,1,11,1,18,9,9,0,2,18,9,12,11,1,18,9,2,18,9,12,11,1,2,18,9,12,11,1,1,2,18,9,12,11,1,1,1,0,1,1,1,1],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,2],1],[[1,3],1],[[1,4,[6,[5]],2],7],[[1,8],1],[9,10],[11,12],[1,13],0,[[11,-1],11,14],[[1,-1],1,14],0,[[11,-1],11,14],[[1,-1],1,14],[11,[[15,[9]]]],[11,[[15,[9]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[1,-1,-2],16,17,17],[2,2],[18,18],[9,9],[12,12],[11,11],[1,1],[[-1,-2],7,[],[]],[[-1,-2],7,[],[]],[[-1,-2],7,[],[]],[[-1,-2],7,[],[]],[[-1,-2],7,[],[]],[[-1,-2],7,[],[]],[[11,-1],16,14],0,0,0,[[11,-1],16,14],[[1,-1],16,14],[[1,-1],16,14],[[2,2],19],[[18,18],19],[[9,9],19],[[12,12],19],[[11,11],19],[[1,1],19],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],0,[[11,-1],11,14],[[1,-1],1,14],[[1,-1],1,14],[[2,20],21],[[18,20],21],[[9,20],21],[[12,20],21],[[11,20],21],[[1,20],21],[[11,-1,-2],16,17,14],[[1,-1,-2],16,17,14],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[1,16],16],[[2,-1],7,22],[[18,-1],7,22],[[9,-1],7,22],[[12,-1],7,22],[[11,-1],7,22],[[1,-1],7,22],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[23,[16]]],[]],[-1,24,25],[13,1],[11,19],[1,19],[9,16],[11,16],0,[9,[[27,[26]]]],[11,[[27,[26]]]],[1,[[27,[26]]]],[[11,28],11],[[1,28],1],[-1,29,[]],[-1,29,[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[18,16],7],[[9,16],7],[-1,[[30,[-2]]],[],[]],[-1,[[30,[-2]]],[],[]],[-1,[[30,[-2]]],[],[]],[-1,[[30,[-2]]],[],[]],[-1,[[30,[-2]]],[],[]],[-1,[[30,[-2]]],[],[]],[-1,[[30,[-2]]],[],[]],[-1,[[30,[-2]]],[],[]],[-1,[[30,[-2]]],[],[]],[-1,[[30,[-2]]],[],[]],[-1,[[30,[-2]]],[],[]],[-1,[[30,[-2]]],[],[]],[13,[[23,[1]]]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[[1,-1,-2],16,17,17],[[1,19],1],[-1,32,33],[[1,-1,-2],16,17,17],[[1,-1,-2],16,17,17],[1,[[15,[11]]]],[1,[[15,[11]]]]],"c":[154],"p":[[3,"Structure",0],[4,"AddBounds",0],[4,"GenericParam",157],[3,"TraitBound",157],[3,"WhereClause",157],[4,"Option",158],[15,"tuple"],[4,"WherePredicate",157],[3,"BindingInfo",0],[3,"Field",159],[3,"VariantInfo",0],[3,"VariantAst",0],[3,"DeriveInput",160],[8,"FnMut",161],[15,"slice"],[3,"TokenStream",162],[8,"ToTokens",163],[4,"BindStyle",0],[15,"bool"],[3,"Formatter",164],[6,"Result",164],[8,"Hasher",165],[6,"Result",166],[3,"TokenStream",167],[8,"Sized",168],[3,"Ident",162],[3,"Vec",169],[15,"usize"],[3,"Span",162],[4,"Result",170],[3,"TypeId",171],[3,"String",172],[8,"Display",164],[8,"MacroResult",0]]},\ -"unicode_ident":{"doc":"github crates-io docs-rs","t":"FF","n":["is_xid_continue","is_xid_start"],"q":[[0,"unicode_ident"]],"d":["",""],"i":[0,0],"f":[[1,2],[1,2]],"c":[],"p":[[15,"char"],[15,"bool"]]},\ -"unicode_xid":{"doc":"Determine if a char is a valid identifier for a parser …","t":"RIKK","n":["UNICODE_VERSION","UnicodeXID","is_xid_continue","is_xid_start"],"q":[[0,"unicode_xid"]],"d":["The version of Unicode that this version of unicode-xid is …","Methods for determining if a character is a valid …","Returns whether the specified char satisfies the ‘…","Returns whether the specified character satisfies the ‘…"],"i":[0,0,2,2],"f":[0,0,[-1,1,[]],[-1,1,[]]],"c":[],"p":[[15,"bool"],[8,"UnicodeXID",0]]}\ -}'); -if (typeof window !== 'undefined' && window.initSearch) {window.initSearch(searchIndex)}; -if (typeof exports !== 'undefined') {exports.searchIndex = searchIndex}; +var searchIndex = new Map(JSON.parse('[["delog",{"t":"PPKPPKPPGGPFKKFPPKKPPNNNMONNNNNNNNMNNNMNNNNNNNNNNQHHNNNNNNMMMONNNNNNNNNNNNQNNCQQNNNNNNNNEHNNNNNNNNNMOCMMNNMONNNHNNNNNNNNMNNNNMOFHTTKFKNNNNNNNNNNNNNNNNNNOFFNNNNNNNNHNNNNNNHHNNNNNN","n":["Debug","","Delogger","Error","","Flusher","Info","","Level","LevelFilter","Off","Record","Renderer","State","Statistics","Trace","","TryLog","TryLogWithStatistics","Warn","","args","as_str","","attempts","","borrow","","","","borrow_mut","","","","buffer","builder","capacity","","claimed","clone","","","","clone_to_uninit","","","","cmp","","delog","dequeue","enqueue","eq","","","","file","file_static","flush","","flushes","","fmt","","","","","","from","","","","from_str","","generate_macros","hash","","hex","hex_str","hexstr","into","","","","iter","","level","line","log","logger","max","","metadata","module_path","module_path_static","partial_cmp","","","","read","","render","","","statistics","","successes","","target","to_level","to_level_filter","try_enqueue","try_from","","","","try_into","","","","try_log","type_id","","","","written","","HexStr","","N","SEPARATOR","Separator","U1","Unsigned","borrow","","borrow_mut","","fmt","","","","from","","into","","try_from","","try_into","","type_id","","value","DefaultRenderer","RipgrepRenderer","borrow","","borrow_mut","","clone","","clone_to_uninit","","default","from","","into","","render","","render_arguments","render_record","try_from","","try_into","","type_id",""],"q":[[0,"delog"],[127,"delog::hex"],[153,"delog::render"],[178,"log"],[179,"core::fmt"],[180,"delog::logger"],[181,"core::sync::atomic"],[182,"core::cmp"],[183,"core::option"],[184,"core::result"],[185,"core::hash"],[186,"core::iter::traits::iterator"],[187,"core::any"],[188,"core::marker"],[189,"core::convert"]],"i":"hl`10`10``0````10``10b21nAn04320432Ab30001543154354```5544330Bh32266554265465`65```26546544``65444665532`1CnCj054678`48764876D`598765``DhDj```EbDd10000010101010100``DnE`101010`101010``101010","f":"`````````````````````{{{d{b}}}{{d{f}}}}{{{d{h}}}{{d{j}}}}{{{d{l}}}{{d{j}}}}{{{d{n}}}c{}}`{d{{d{c}}}{}}000{{{d{A`}}}{{d{A`c}}}{}}000{{{d{Ab}}}{{d{A`{Af{Ad}}}}}}{{}Ah}{{{d{Ab}}}Aj}0{{{d{Ab}}}{{d{Al}}}}{{{d{An}}}An}{{{d{h}}}h}{{{d{l}}}l}{{{d{b}}}b}{dB`}000{{{d{h}}{d{h}}}Bb}{{{d{l}}{d{l}}}Bb}`{{c{d{A`{Af{Ad}}}}}{{d{j}}}Ab}{{c{d{b}}}B`Ab}{{{d{h}}{d{l}}}Bd}{{{d{h}}{d{h}}}Bd}{{{d{l}}{d{l}}}Bd}{{{d{l}}{d{h}}}Bd}{{{d{b}}}{{Bf{{d{j}}}}}}0{{{d{Ab}}{d{j}}}B`}{{{d{Bh}}{d{j}}}B`}{{{d{n}}}c{}}`{{{d{An}}{d{A`Bj}}}Bl}{{{d{h}}{d{A`Bj}}}{{C`{B`Bn}}}}0{{{d{l}}{d{A`Bj}}}{{C`{B`Bn}}}}0{{{d{b}}{d{A`Bj}}}{{C`{B`Bn}}}}{cc{}}000{{{d{j}}}{{C`{h}}}}{{{d{j}}}{{C`{l}}}}`{{{d{h}}{d{A`c}}}B`Cb}{{{d{l}}{d{A`c}}}B`Cb}```{{}c{}}000{{}{{`{{Cf{}{{Cd{h}}}}}}}}{{}{{`{{Cf{}{{Cd{l}}}}}}}}{{{d{b}}}h}{{{d{b}}}{{Bf{Ch}}}}`{{}{{d{A`{Bf{{d{Cj}}}}}}}}{{}h}{{}l}{{{d{b}}}{{d{Cl}}}}{{{d{b}}}{{Bf{{d{j}}}}}}0{{{d{h}}{d{l}}}{{Bf{Bb}}}}{{{d{h}}{d{h}}}{{Bf{Bb}}}}{{{d{l}}{d{h}}}{{Bf{Bb}}}}{{{d{l}}{d{l}}}{{Bf{Bb}}}}{{{d{n}}}c{}}``{{{d{Ab}}{d{b}}}{{d{{Af{Ad}}}}}}{{{d{Cn}}{d{A`{Af{Ad}}}}{d{b}}}{{d{{Af{Ad}}}}}}{{{d{Cj}}}An}03`{{{d{b}}}{{d{j}}}}{{{d{l}}}{{Bf{h}}}}{{{d{h}}}l}{{c{d{b}}}{{C`{B`B`}}}Ab}{c{{C`{e}}}{}{}}000{{}{{C`{c}}}{}}000{{{d{D`}}{d{b}}}{{C`{B`B`}}}}{dDb}000;``{{{d{c}}}{{Dd{ceg}}}DfDhDj}`````{d{{d{c}}}{}}0{{{d{A`}}}{{d{A`c}}}{}}0{{{d{{Dd{ceg}}}}{d{A`Bj}}}{{C`{B`Bn}}}{{Dl{{Af{Ad}}}}Df}DhDj}000{cc{}}0{{}c{}}0998866```4433{{{d{Dn}}}Dn}{{{d{E`}}}E`}{dB`}0{{}{{d{Dn}}}}5544{{{d{Dn}}{d{A`{Af{Ad}}}}{d{b}}}{{d{{Af{Ad}}}}}}{{{d{E`}}{d{A`{Af{Ad}}}}{d{b}}}{{d{{Af{Ad}}}}}}{{{d{A`{Af{Ad}}}}f}{{d{{Af{Ad}}}}}}{{{d{A`{Af{Ad}}}}{d{b}}}{{d{{Af{Ad}}}}}}{c{{C`{e}}}{}{}}0{{}{{C`{c}}}{}}0{dDb}0","D":"Lh","p":[[5,"Record",0,178],[1,"reference"],[5,"Arguments",179],[6,"Level",0,178],[1,"str"],[6,"LevelFilter",0,178],[10,"State",0,180],[0,"mut"],[10,"Delogger",0,180],[1,"u8"],[1,"slice"],[5,"RecordBuilder",178],[1,"usize"],[5,"AtomicUsize",181],[5,"Statistics",0,180],[1,"unit"],[6,"Ordering",182],[1,"bool"],[6,"Option",183],[10,"Flusher",0],[5,"Formatter",179],[8,"Result",179],[5,"Error",179],[6,"Result",184],[10,"Hasher",185],[17,"Item"],[10,"Iterator",186],[1,"u32"],[10,"TryLogWithStatistics",0,180],[5,"Metadata",178],[10,"Renderer",0],[10,"TryLog",0,180],[5,"TypeId",187],[5,"HexStr",127],[10,"Sized",188],[10,"Unsigned",127],[10,"Separator",127],[10,"AsRef",189],[5,"DefaultRenderer",153],[5,"RipgrepRenderer",153],[5,"U1",127]],"r":[[2,180],[8,178],[9,178],[11,178],[13,180],[14,180],[17,180],[18,180],[50,180],[51,180],[111,180]],"b":[[52,"impl-PartialEq%3CLevelFilter%3E-for-Level"],[53,"impl-PartialEq-for-Level"],[54,"impl-PartialEq-for-LevelFilter"],[55,"impl-PartialEq%3CLevel%3E-for-LevelFilter"],[63,"impl-Debug-for-Level"],[64,"impl-Display-for-Level"],[65,"impl-Debug-for-LevelFilter"],[66,"impl-Display-for-LevelFilter"],[95,"impl-PartialOrd%3CLevelFilter%3E-for-Level"],[96,"impl-PartialOrd-for-Level"],[97,"impl-PartialOrd%3CLevel%3E-for-LevelFilter"],[98,"impl-PartialOrd-for-LevelFilter"],[138,"impl-Debug-for-HexStr%3C\'_,+T,+U,+S%3E"],[139,"impl-UpperHex-for-HexStr%3C\'a,+T,+U,+S%3E"],[140,"impl-LowerHex-for-HexStr%3C\'a,+T,+U,+S%3E"],[141,"impl-Display-for-HexStr%3C\'_,+T,+U,+S%3E"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAE4ADwAbAAcAKAAJADUAAwA/AAUASQABAEwAAQBZAAAAYAADAHEABwB6AAMAhwAHAJMABQCcAAcAqQABAK0ABQA="}],["flexiber",{"t":"PTTGKPKYFKYFPFGPTTPPPFPTTTPPPTPITTFFFKKIFPPTTPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNONMNNNNNNNNNNMNNMNNNNNNNNNNMNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOO","n":["Application","BIT_STRING","BOOLEAN","Class","Container","Context","Decodable","","Decoder","Encodable","","Encoder","Err","Error","ErrorKind","Failed","GENERALIZED_TIME","INTEGER","InvalidClass","InvalidLength","InvalidTag","Length","","NULL","OBJECT_IDENTIFIER","OCTET_STRING","Ok","Overflow","Overlength","PRINTABLE_STRING","Private","Result","SEQUENCE","SET","SimpleTag","Slice","Tag","TagLike","Tagged","TaggedSlice","TaggedValue","TrailingData","Truncated","UTC_TIME","UTF8_STRING","Underlength","UnexpectedTag","Universal","UnsupportedTagSize","add","","","","","application","as_bytes","","","as_ref","assert_eq","","at","borrow","","","","","","","","","","borrow_mut","","","","","","","","","","class","clone","","","","","","","","clone_to_uninit","","","","","","","","cmp","constructed","","context","decode","","","","","","decode_nested","","decode_tagged_slice","decode_tagged_value","default","embedding","","","encode","","","","","","","encode_tagged_collection","encode_to_slice","","encode_untagged_collection","encoded_length","","","","","","eq","","","","","","","","error","","fields","finish","","fmt","","","","","","","","","","","","","from","","","","","","","","","","","","","","","","","","from_bytes","","into","","","","","","","","","","is_empty","","","is_failed","","is_finished","kind","length","","","max","nested","new","","","","","number","partial_cmp","position","private","tag","","to_usize","try_from","","","","","","","","","","","","","","","","try_into","","","","","","","","","","type_id","","","","","","","","","","universal","with_value","","zero","actual","","byte","decoded","expected","","remaining","tag","value"],"q":[[0,"flexiber"],[254,"flexiber::ErrorKind"],[263,"flexiber::length"],[264,"flexiber::error"],[265,"flexiber::tag"],[266,"flexiber::tagged"],[267,"core::marker"],[268,"flexiber::slice"],[269,"flexiber::simpletag"],[270,"core::clone"],[271,"core::cmp"],[272,"flexiber::decoder"],[273,"flexiber::traits"],[274,"core::ops::function"],[275,"flexiber::encoder"],[276,"core::fmt"],[277,"core::convert"],[278,"core::option"],[279,"core::result"],[280,"core::any"],[281,"flexiber_derive"]],"i":"Bdl0``1``````d``Al22000`022210023`22```````002200301b0003nAfAh1Aj05BlCfAn87Bb6<;53219806<;5;19806<;519806<;58;;;Bn8491<8644951=754Cl656544<<;;9?>>8:665444<;;;39?>>8822654<;39?>8:986564:98;465498>;4>Dl9<765=<<<44:Bd0l00;987?>6<10;987?>6<10;0::>DnE`EbEd320EfEh","f":"`````````````````````````````````````````````````{{{d{b}}b}{{d{b}}}}{{bf}{{d{b}}}}{{bh}{{d{b}}}}{{bj}{{d{b}}}}{{bb}{{d{b}}}}{hl}{{{A`{{n{c}}}}}{{A`{{Ab{j}}}}}Ad}{{{A`{Af}}}{{A`{{Ab{j}}}}}}{{{A`{{Ah{Afc}}}}}{{A`{{Ab{j}}}}}Ad}1{{AjAj}{{d{Aj}}}}0{{Alb}An}{A`{{A`{c}}}{}}000000000{{{A`{B`}}}{{A`{B`c}}}{}}000000000`{{{A`{An}}}An}{{{A`{Al}}}Al}{{{A`{b}}}b}{{{A`{Bb}}}Bb}{{{A`{Af}}}Af}{{{A`{Bd}}}Bd}{{{A`{l}}}l}{{{A`{{Ah{ce}}}}}{{Ah{ce}}}BfBf}{A`Bh}0000000{{{A`{b}}{A`{b}}}Bj}{ll}`{hl}{{{A`{B`Bl}}}{{d{Bn}}}}{{{A`{B`Bl}}}{{d{{n{c}}}}}{BnAj}}{{{A`{B`Bl}}}{{d{c}}}Bn}{{{A`{B`Bl}}}{{d{b}}}}{{{A`{B`Bl}}}{{d{Bb}}}}{{{A`{B`Bl}}}{{d{l}}}}{{{A`{{n{c}}}}g}{{d{e}}}Ad{}{{Cb{{A`{B`Bl}}}{{C`{{d{e}}}}}}}}{{{A`{{Ah{Afc}}}}g}{{d{e}}}Ad{}{{Cb{{A`{B`Bl}}}{{C`{{d{e}}}}}}}}{{{A`{B`Bl}}c}{{d{{A`{{Ab{j}}}}}}}{BnAj}}{{{A`{B`Bl}}c}{{d{e}}}{BnAj}Bn}{{}b}{Ajl}{Bbl}>{{{A`{Cd}}{A`{B`Cf}}}{{d{Bh}}}}{{{A`{{n{c}}}}{A`{B`Cf}}}{{d{Bh}}}{AdCd}}{{{A`{B`Cf}}{A`{c}}}{{d{Bh}}}Cd}{{{A`{b}}{A`{B`Cf}}}{{d{Bh}}}}{{{A`{Bb}}{A`{B`Cf}}}{{d{Bh}}}}{{{A`{l}}{A`{B`Cf}}}{{d{Bh}}}}{{{A`{{Ah{{A`{c}}e}}}}{A`{B`Cf}}}{{d{Bh}}}Cd{AdCd}}{{{A`{B`Cf}}l{A`{{Ab{{A`{Cd}}}}}}}{{d{Bh}}}}{{{A`{Cd}}{A`{B`{Ab{j}}}}}{{d{{A`{{Ab{j}}}}}}}}0{{{A`{B`Cf}}{A`{{Ab{{A`{Cd}}}}}}}{{d{Bh}}}}{{{A`{Cd}}}{{d{b}}}}{{{A`{{n{c}}}}}{{d{b}}}{AdCd}}{{{A`{b}}}{{d{b}}}}{{{A`{Bb}}}{{d{b}}}}{{{A`{l}}}{{d{b}}}}{{{A`{{Ah{{A`{c}}e}}}}}{{d{b}}}Cd{AdCd}}{{{A`{An}}{A`{An}}}Ch}{{{A`{Al}}{A`{Al}}}Ch}{{{A`{b}}{A`{b}}}Ch}{{{A`{Bb}}{A`{Bb}}}Ch}{{{A`{Af}}{A`{Af}}}Ch}{{{A`{Bd}}{A`{Bd}}}Ch}{{{A`{l}}{A`{l}}}Ch}{{{A`{{Ah{ce}}}}{A`{{Ah{ce}}}}}ChCjCj}{{{A`{B`Bl}}Al}{{d{c}}}{}}{{{A`{B`Cf}}Al}{{d{c}}}{}}{{{A`{Cl}}e}{{d{c}}}{}{{Cb{{A`{{Ab{{A`{Cd}}}}}}}{{C`{{d{c}}}}}}}}{{Blc}{{d{c}}}{}}{Cf{{d{{A`{{Ab{j}}}}}}}}{{{A`{Bl}}{A`{B`Cn}}}D`}{{{A`{Cf}}{A`{B`Cn}}}D`}{{{A`{An}}{A`{B`Cn}}}D`}0{{{A`{Al}}{A`{B`Cn}}}D`}0{{{A`{b}}{A`{B`Cn}}}D`}0{{{A`{Af}}{A`{B`Cn}}}D`}{{{A`{Bd}}{A`{B`Cn}}}D`}{{{A`{l}}{A`{B`Cn}}}D`}0{{{A`{{Ah{ce}}}}{A`{B`Cn}}}D`DbDb}{{c{A`{{Ab{j}}}}}{{d{{n{c}}}}}Ad}{cc{}}{{{A`{{Ab{j}}}}}Bl}1{DdAn}{AlAn}33{jb}{hb}55555{{BdChh}l}6{{c{A`{{Ab{j}}}}}{{d{{Ah{Afc}}}}}Ad}{{{A`{{Ab{j}}}}}{{d{Bn}}}}0{{}c{}}000000000{{{A`{{n{c}}}}}ChAd}{AfCh}{{{A`{{Ah{Afc}}}}}ChAd}{{{A`{Bl}}}Ch}{{{A`{Cf}}}Ch}1{AnAl}{{{A`{{n{c}}}}}bAd}{Afb}{{{A`{{Ah{Afc}}}}}bAd}{{}f}{{Anb}An}{{{A`{{Ab{j}}}}}Bl}{{{A`{B`{Ab{j}}}}}Cf}{{Alb}An}{{{A`{{Ab{j}}}}}{{d{Af}}}}{{ce}{{Ah{ec}}}Ad{}}`{{{A`{b}}{A`{b}}}{{Df{Bj}}}}{An{{Df{b}}}}{hl}{{}l}{{{A`{{Ah{ce}}}}}e{}Ad}{bf}{c{{Dh{e}}}{}{}}000{{{A`{{Ab{{A`{Cd}}}}}}}{{d{b}}}}{f{{d{b}}}}2{j{{d{Bb}}}}33{j{{d{Bd}}}}4{j{{d{l}}}}5{{{A`{{Ab{j}}}}}{{d{l}}}}6{{}{{Dh{c}}}{}}000000000{A`Dj}000000000<{{Ajc}{{Ah{cAj}}}{}}0{{}b}`````````","D":"Nb","p":[[5,"Length",0,263],[8,"Result",0,264],[1,"usize"],[1,"u16"],[1,"u8"],[5,"Tag",0,265],[8,"TaggedSlice",0,266],[1,"reference"],[1,"slice"],[10,"Copy",267],[5,"Slice",0,268],[5,"TaggedValue",0,266],[10,"TagLike",0,265],[6,"ErrorKind",0,264],[5,"Error",0,264],[0,"mut"],[5,"SimpleTag",0,269],[6,"Class",0,265],[10,"Clone",270],[1,"unit"],[6,"Ordering",271],[5,"Decoder",0,272],[10,"Decodable",0,273],[17,"Output"],[10,"FnOnce",274],[10,"Encodable",0,273],[5,"Encoder",0,275],[1,"bool"],[10,"PartialEq",271],[10,"Container",0,273],[5,"Formatter",276],[8,"Result",276],[10,"Debug",276],[6,"Infallible",277],[6,"Option",278],[6,"Result",279],[5,"TypeId",280],[10,"Tagged",0],[15,"Underlength",254],[15,"UnexpectedTag",254],[15,"InvalidTag",254],[15,"TrailingData",254],[15,"Length",254],[15,"InvalidClass",254]],"r":[[3,265],[4,273],[6,273],[7,281],[8,272],[9,273],[10,281],[11,275],[13,264],[14,264],[21,263],[31,264],[34,269],[35,268],[36,265],[37,265],[38,273],[39,266],[40,266]],"b":[[50,"impl-Add%3Cusize%3E-for-Length"],[51,"impl-Add%3Cu16%3E-for-Length"],[52,"impl-Add%3Cu8%3E-for-Length"],[53,"impl-Add-for-Length"],[149,"impl-Display-for-Error"],[150,"impl-Debug-for-Error"],[151,"impl-Debug-for-ErrorKind"],[152,"impl-Display-for-ErrorKind"],[153,"impl-Debug-for-Length"],[154,"impl-Display-for-Length"],[157,"impl-Display-for-Tag"],[158,"impl-Debug-for-Tag"],[164,"impl-From%3CInfallible%3E-for-Error"],[165,"impl-From%3CErrorKind%3E-for-Error"],[168,"impl-From%3Cu8%3E-for-Length"],[169,"impl-From%3Cu16%3E-for-Length"],[218,"impl-TryFrom%3C%26%5B%26dyn+Encodable%5D%3E-for-Length"],[219,"impl-TryFrom%3Cusize%3E-for-Length"],[226,"impl-TryFrom%3Cu8%3E-for-Tag"],[228,"impl-TryFrom%3C%26%5Bu8%5D%3E-for-Tag"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAJYAHAABAAIABgAAABEAAQAYAAIAHgABACEAAQAsAAEAMAAAADIABQA7AAAAPwAoAGkAAABrAAIAcgAAAHQAAQB3AAAAeQADAIIADACUAAwAowAAAKUAAQCpAAEAsAAAAM8AAgDTAAAA1QAAANcAJAAHAQAA"}],["flexiber_derive",{"t":"YY","n":["Decodable","Encodable"],"q":[[0,"flexiber_derive"]],"i":"``","f":"``","D":"f","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["log",{"t":"PPPPPPGGKFFPFFFSFPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNQNNMNNNNNNNQNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNQNNNNNNNNNNNNNNNNMQQHNNHNNNNNNNNNNNNNNHHHHNNNNNNQNNNNNNNNNNNNNNNNNNNNNNNNQ","n":["Debug","","Error","","Info","","Level","LevelFilter","Log","Metadata","MetadataBuilder","Off","ParseLevelError","Record","RecordBuilder","STATIC_MAX_LEVEL","SetLoggerError","Trace","","Warn","","args","","as_str","","borrow","","","","","","","","borrow_mut","","","","","","","","build","","builder","","clone","","","","clone_to_uninit","","","","cmp","","","","debug","default","","enabled","eq","","","","","","","error","file","","file_static","","flush","fmt","","","","","","","","","","","","from","","","","","","","","from_str","","hash","","","","info","into","","","","","","","","iter","","level","","","","line","","log","","log_enabled","logger","max","","max_level","metadata","","module_path","","module_path_static","","new","","partial_cmp","","","","","","set_logger","set_logger_racy","set_max_level","set_max_level_racy","target","","","","to_level","to_level_filter","trace","try_from","","","","","","","","try_into","","","","","","","","type_id","","","","","","","","warn"],"q":[[0,"log"],[174,"core::fmt"],[175,"core::cmp"],[176,"core::option"],[177,"core::result"],[178,"core::hash"],[179,"core::iter::traits::iterator"],[180,"core::any"]],"i":"lA`1010`````0`````1010bj323210AdAbBfAn765432104253765376537632`42Aj8877431`6565088776543221187654321878743`87654321876543650```87`65656553887743````654378`876543218765432187654321`","f":"`````````````````````{{{d{b}}}{{d{f}}}}{{{d{hj}}f}{{d{hj}}}}{{{d{l}}}{{d{n}}}}{{{d{A`}}}{{d{n}}}}{d{{d{c}}}{}}0000000{{{d{h}}}{{d{hc}}}{}}0000000{{{d{j}}}b}{{{d{Ab}}}Ad}{{}j}{{}Ab}{{{d{l}}}l}{{{d{A`}}}A`}{{{d{b}}}b}{{{d{Ad}}}Ad}{dAf}000{{{d{l}}{d{l}}}Ah}{{{d{A`}}{d{A`}}}Ah}{{{d{Ad}}{d{Ad}}}Ah}{{{d{Ab}}{d{Ab}}}Ah}`:9{{{d{Aj}}{d{Ad}}}Al}{{{d{l}}{d{l}}}Al}{{{d{l}}{d{A`}}}Al}{{{d{A`}}{d{A`}}}Al}{{{d{A`}}{d{l}}}Al}{{{d{Ad}}{d{Ad}}}Al}{{{d{Ab}}{d{Ab}}}Al}{{{d{An}}{d{An}}}Al}`{{{d{b}}}{{B`{{d{n}}}}}}{{{d{hj}}{B`{{d{n}}}}}{{d{hj}}}}10{{{d{Aj}}}Af}{{{d{l}}{d{hBb}}}Bd}0{{{d{A`}}{d{hBb}}}Bd}0{{{d{b}}{d{hBb}}}Bd}{{{d{j}}{d{hBb}}}Bd}{{{d{Ad}}{d{hBb}}}Bd}{{{d{Ab}}{d{hBb}}}Bd}{{{d{Bf}}{d{hBb}}}Bd}0{{{d{An}}{d{hBb}}}Bd}0{cc{}}0000000{{{d{n}}}{{Bh{lc}}}{}}{{{d{n}}}{{Bh{A`c}}}{}}{{{d{l}}{d{hc}}}AfBj}{{{d{A`}}{d{hc}}}AfBj}{{{d{Ad}}{d{hc}}}AfBj}{{{d{Ab}}{d{hc}}}AfBj}`{{}c{}}0000000{{}{{`{{Bn{}{{Bl{l}}}}}}}}{{}{{`{{Bn{}{{Bl{A`}}}}}}}}{{{d{b}}}l}{{{d{hj}}l}{{d{hj}}}}{{{d{Ad}}}l}{{{d{hAb}}l}{{d{hAb}}}}{{{d{b}}}{{B`{C`}}}}{{{d{hj}}{B`{C`}}}{{d{hj}}}}{{{d{Aj}}{d{b}}}Af}``{{}{{d{Aj}}}}{{}l}{{}A`}0{{{d{b}}}{{d{Ad}}}}{{{d{hj}}Ad}{{d{hj}}}}{{{d{b}}}{{B`{{d{n}}}}}}{{{d{hj}}{B`{{d{n}}}}}{{d{hj}}}}10{{}j}{{}Ab}{{{d{l}}{d{A`}}}{{B`{Ah}}}}{{{d{l}}{d{l}}}{{B`{Ah}}}}{{{d{A`}}{d{A`}}}{{B`{Ah}}}}{{{d{A`}}{d{l}}}{{B`{Ah}}}}{{{d{Ad}}{d{Ad}}}{{B`{Ah}}}}{{{d{Ab}}{d{Ab}}}{{B`{Ah}}}}{{{d{Aj}}}{{Bh{AfBf}}}}0{A`Af}0{{{d{b}}}{{d{n}}}}{{{d{hj}}{d{n}}}{{d{hj}}}}{{{d{Ad}}}{{d{n}}}}{{{d{hAb}}{d{n}}}{{d{hAb}}}}{{{d{A`}}}{{B`{l}}}}{{{d{l}}}A`}`{c{{Bh{e}}}{}{}}0000000{{}{{Bh{c}}}{}}0000000{dCb}0000000`","D":"Kd","p":[[5,"Record",0],[1,"reference"],[5,"Arguments",174],[0,"mut"],[5,"RecordBuilder",0],[6,"Level",0],[1,"str"],[6,"LevelFilter",0],[5,"MetadataBuilder",0],[5,"Metadata",0],[1,"unit"],[6,"Ordering",175],[10,"Log",0],[1,"bool"],[5,"ParseLevelError",0],[6,"Option",176],[5,"Formatter",174],[8,"Result",174],[5,"SetLoggerError",0],[6,"Result",177],[10,"Hasher",178],[17,"Item"],[10,"Iterator",179],[1,"u32"],[5,"TypeId",180]],"r":[],"b":[[61,"impl-PartialEq-for-Level"],[62,"impl-PartialEq%3CLevelFilter%3E-for-Level"],[63,"impl-PartialEq-for-LevelFilter"],[64,"impl-PartialEq%3CLevel%3E-for-LevelFilter"],[74,"impl-Display-for-Level"],[75,"impl-Debug-for-Level"],[76,"impl-Display-for-LevelFilter"],[77,"impl-Debug-for-LevelFilter"],[82,"impl-Display-for-SetLoggerError"],[83,"impl-Debug-for-SetLoggerError"],[84,"impl-Display-for-ParseLevelError"],[85,"impl-Debug-for-ParseLevelError"],[132,"impl-PartialOrd%3CLevelFilter%3E-for-Level"],[133,"impl-PartialOrd-for-Level"],[134,"impl-PartialOrd-for-LevelFilter"],[135,"impl-PartialOrd%3CLevel%3E-for-LevelFilter"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAFQACAAaAA8ALgALADsAAQA+AAYASwALAF8ABQCFAAUAlgAXAA=="}],["proc_macro2",{"t":"PPPGFPFPPFFPPPFPGFFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNFENNNNNNNNNNNNNNN","n":["Alone","Brace","Bracket","Delimiter","Group","","Ident","","Joint","LexError","Literal","","None","Parenthesis","Punct","","Spacing","Span","TokenStream","TokenTree","as_char","borrow","","","","","","","","","","borrow_mut","","","","","","","","","","byte_character","byte_string","c_string","call_site","character","clone","","","","","","","","","clone_into","","","","","","","","","clone_to_uninit","","","","","","","","","cmp","default","delim_span","delimiter","eq","","","","extend","","extra","f32_suffixed","f32_unsuffixed","f64_suffixed","f64_unsuffixed","fmt","","","","","","","","","","","","","","","","","from","","","","","","","","","","","","","","","","","from_iter","","from_str","","hash","i128_suffixed","i128_unsuffixed","i16_suffixed","i16_unsuffixed","i32_suffixed","i32_unsuffixed","i64_suffixed","i64_unsuffixed","i8_suffixed","i8_unsuffixed","into","","","","","","","","","","into_iter","is_empty","isize_suffixed","isize_unsuffixed","join","located_at","mixed_site","new","","","","new_raw","partial_cmp","resolved_at","set_span","","","","","source_text","spacing","span","","","","","","span_close","span_open","stream","string","subspan","to_owned","","","","","","","","","to_string","","","","","","","token_stream","try_from","","","","","","","","","","try_into","","","","","","","","","","type_id","","","","","","","","","","u128_suffixed","u128_unsuffixed","u16_suffixed","u16_unsuffixed","u32_suffixed","u32_unsuffixed","u64_suffixed","u64_unsuffixed","u8_suffixed","u8_unsuffixed","unwrap","usize_suffixed","usize_unsuffixed","DelimSpan","borrow","borrow_mut","clone","clone_into","clone_to_uninit","close","fmt","from","into","join","open","to_owned","try_from","try_into","type_id","IntoIter","TokenStream","borrow","borrow_mut","clone","clone_into","clone_to_uninit","fmt","from","into","into_iter","next","size_hint","to_owned","try_from","try_into","type_id"],"q":[[0,"proc_macro2"],[239,"proc_macro2::extra"],[255,"proc_macro2::token_stream"],[272,"core::ffi::c_str"],[273,"core::cmp"],[274,"core::marker"],[275,"core::convert"],[276,"core::iter::traits::collect"],[277,"core::fmt"],[278,"proc_macro"],[279,"core::result"],[280,"core::hash"],[281,"core::option"],[282,"alloc::string"],[283,"core::ops::range"],[284,"core::any"]],"i":"AlAj0``Af`02``011`0````bCfAdAb4Ah647Anl5437286910000304372869104372869104372869101422891144`000055443772286691100544433777772869104440100000000005437286910440033342611137261036572610222004372869105472610`5437286910543728691054372869100000000000300`Bd00000000000000``Dn00000000000000","f":"````````````````````{{{d{b}}}f}{d{{d{c}}}{}}000000000{{{d{h}}}{{d{hc}}}{}}000000000{jl}{{{d{{n{j}}}}}l}{{{d{A`}}}l}{{}Ab}{fl}{{{d{Ad}}}Ad}{{{d{Ab}}}Ab}{{{d{Af}}}Af}{{{d{Ah}}}Ah}{{{d{Aj}}}Aj}{{{d{b}}}b}{{{d{Al}}}Al}{{{d{An}}}An}{{{d{l}}}l}{{d{d{hc}}}B`{}}00000000{dB`}00000000{{{d{An}}{d{An}}}Bb}{{}Ad}{{{d{Ah}}}Bd}{{{d{Ah}}}Aj}{{{d{Aj}}{d{Aj}}}Bf}{{{d{Al}}{d{Al}}}Bf}{{{d{An}}{d{An}}}Bf}{{{d{An}}{d{c}}}Bf{Bh{Bl{Bj}}}}{{{d{hAd}}c}B`{{C`{}{{Bn{Af}}}}}}{{{d{hAd}}c}B`{{C`{}{{Bn{Ad}}}}}}`{Cbl}0{Cdl}0{{{d{Cf}}{d{hCh}}}Cj}0{{{d{Ad}}{d{hCh}}}Cj}0{{{d{Ab}}{d{hCh}}}Cj}{{{d{Af}}{d{hCh}}}Cj}0{{{d{Ah}}{d{hCh}}}Cj}0{{{d{Aj}}{d{hCh}}}Cj}{{{d{b}}{d{hCh}}}Cj}0{{{d{Al}}{d{hCh}}}Cj}{{{d{An}}{d{hCh}}}Cj}0{{{d{l}}{d{hCh}}}Cj}0{cc{}}0{ClAd}{AfAd}{CnAb}3{lAf}{bAf}{AnAf}{AhAf}7777777{cAd{{C`{}{{Bn{Af}}}}}}{cAd{{C`{}{{Bn{Ad}}}}}}{{{d{Bj}}}{{D`{AdCf}}}}{{{d{Bj}}}{{D`{lCf}}}}{{{d{An}}{d{hc}}}B`Db}{Ddl}0{Dfl}0{Dhl}0{Djl}0{Dll}0{{}c{}}000000000{AdDn}{{{d{Ad}}}Bf}{E`l}0{{{d{Ab}}Ab}{{Eb{Ab}}}}{{{d{Ab}}Ab}Ab}{{}Ab}{{}Ad}{{AjAd}Ah}{{fAl}b}{{{d{Bj}}Ab}An}0{{{d{An}}{d{An}}}{{Eb{Bb}}}}6{{{d{hAf}}Ab}B`}{{{d{hAh}}Ab}B`}{{{d{hb}}Ab}B`}{{{d{hAn}}Ab}B`}{{{d{hl}}Ab}B`}{{{d{Ab}}}{{Eb{Ed}}}}{{{d{b}}}Al}{{{d{Cf}}}Ab}{{{d{Af}}}Ab}{{{d{Ah}}}Ab}{{{d{b}}}Ab}{{{d{An}}}Ab}{{{d{l}}}Ab}33{{{d{Ah}}}Ad}{{{d{Bj}}}l}{{{d{l}}c}{{Eb{Ab}}}{{Eh{Ef}}}}{dc{}}00000000{dEd}000000`{c{{D`{e}}}{}{}}000000000{{}{{D`{c}}}{}}000000000{dEj}000000000{Ell}0{Enl}0{F`l}0{Fbl}0{jl}0{AbCn}{Efl}0`{d{{d{c}}}{}}{{{d{h}}}{{d{hc}}}{}}{{{d{Bd}}}Bd}{{d{d{hc}}}B`{}}{dB`}{{{d{Bd}}}Ab}{{{d{Bd}}{d{hCh}}}Cj}{cc{}}{{}c{}}33{dc{}}{c{{D`{e}}}{}{}}{{}{{D`{c}}}{}}{dEj}``<;{{{d{Dn}}}Dn}:9{{{d{Dn}}{d{hCh}}}Cj}766{{{d{hDn}}}{{Eb{Af}}}}{{{d{Dn}}}{{Fd{Ef{Eb{Ef}}}}}}7654","D":"Nh","p":[[5,"Punct",0],[1,"reference"],[1,"char"],[0,"mut"],[1,"u8"],[5,"Literal",0],[1,"slice"],[5,"CStr",272],[5,"Span",0],[5,"TokenStream",0],[6,"TokenTree",0],[5,"Group",0],[6,"Delimiter",0],[6,"Spacing",0],[5,"Ident",0],[1,"unit"],[6,"Ordering",273],[5,"DelimSpan",239],[1,"bool"],[10,"Sized",274],[1,"str"],[10,"AsRef",275],[17,"Item"],[10,"IntoIterator",276],[1,"f32"],[1,"f64"],[5,"LexError",0],[5,"Formatter",277],[8,"Result",277],[5,"TokenStream",278],[5,"Span",278],[6,"Result",279],[10,"Hasher",280],[1,"i128"],[1,"i16"],[1,"i32"],[1,"i64"],[1,"i8"],[5,"IntoIter",255],[1,"isize"],[6,"Option",281],[5,"String",282],[1,"usize"],[10,"RangeBounds",283],[5,"TypeId",284],[1,"u128"],[1,"u16"],[1,"u32"],[1,"u64"],[1,"tuple"]],"r":[[256,0]],"b":[[79,"impl-PartialEq-for-Ident"],[80,"impl-PartialEq%3CT%3E-for-Ident"],[81,"impl-Extend%3CTokenTree%3E-for-TokenStream"],[82,"impl-Extend%3CTokenStream%3E-for-TokenStream"],[88,"impl-Display-for-LexError"],[89,"impl-Debug-for-LexError"],[90,"impl-Debug-for-TokenStream"],[91,"impl-Display-for-TokenStream"],[93,"impl-Display-for-TokenTree"],[94,"impl-Debug-for-TokenTree"],[95,"impl-Display-for-Group"],[96,"impl-Debug-for-Group"],[98,"impl-Display-for-Punct"],[99,"impl-Debug-for-Punct"],[101,"impl-Display-for-Ident"],[102,"impl-Debug-for-Ident"],[103,"impl-Display-for-Literal"],[104,"impl-Debug-for-Literal"],[107,"impl-From%3CTokenStream%3E-for-TokenStream"],[108,"impl-From%3CTokenTree%3E-for-TokenStream"],[111,"impl-From%3CLiteral%3E-for-TokenTree"],[112,"impl-From%3CPunct%3E-for-TokenTree"],[113,"impl-From%3CIdent%3E-for-TokenTree"],[114,"impl-From%3CGroup%3E-for-TokenTree"],[122,"impl-FromIterator%3CTokenTree%3E-for-TokenStream"],[123,"impl-FromIterator%3CTokenStream%3E-for-TokenStream"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAJwAEQAWABMALwAcAE4ABQBZABAAbAACAHAAAwB7AAQAlAAAAKAAAACpAAAAtAAPAMUAHQDxAAQA9wAAAPwAAwABAQYACgEGAA=="}],["quote",{"t":"KKKMMMMMQNNQQNNNNM","n":["IdentFragment","ToTokens","TokenStreamExt","append","append_all","append_separated","append_terminated","fmt","format_ident","into_token_stream","","quote","quote_spanned","span","","to_token_stream","","to_tokens"],"q":[[0,"quote"],[18,"quote::ext"],[19,"proc_macro2"],[20,"core::convert"],[21,"core::iter::traits::collect"],[22,"quote::to_tokens"],[23,"quote::ident_fragment"],[24,"core::fmt"],[25,"core::option"]],"i":"```d000Ab`A`0``11000","f":"```{{{f{bd}}c}h{{l{j}}}}{{{f{bd}}c}hn}{{{f{bd}}ce}hnA`}0{{{f{Ab}}{f{bAd}}}Af}`{A`Ah}0``{{{f{Ab}}}{{Al{Aj}}}}0{{{f{A`}}}Ah}0{{{f{A`}}{f{bAh}}}h}","D":"Bf","p":[[0,"mut"],[10,"TokenStreamExt",0,18],[1,"reference"],[1,"unit"],[6,"TokenTree",19],[10,"Into",20],[10,"IntoIterator",21],[10,"ToTokens",0,22],[10,"IdentFragment",0,23],[5,"Formatter",24],[8,"Result",24],[5,"TokenStream",19],[5,"Span",19],[6,"Option",25]],"r":[[0,23],[1,22],[2,18]],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["syn",{"t":"FPPPPFPPPFPFPPGFPPFFGPPPPPPPPPFPPPPPPPPPPPPPFFPPGFFFPPFPPPPPFGFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFPGFGFFPPPGGFPPPFPFPFPPPPPPPPFPPPPFPGPFFFFFFFFPPFPPGPPGGFFPPPPPPPPPPPPPPPPTPPPPFFPPPGFPFFPPFPPPPPPPPIPGPPPPPPPPPPQPFGPPPPPFGPPPPFFFFFFFFFGFFFFFFFGPPPPPPFPPPPFGFGPPOOOOOOOOOONOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOQOOOOQCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOONNOOQQONNNOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOCOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONOOOONOOOONOOOOOOONOONCOOOOOOOOOOONNNNNNNNNNNNNOOOOOOOOOOOOOOOOQCHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNQNNNNNQQHNNNNNNOOOOOOOONOOOOCOOOONNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOCNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONONNNNNNOOOOOOOCOONNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKMTMFNNNNONNHONNNNFPFFFPRKFIKKIFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKKMMPFFFFGFFFPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKMFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFKFFFFFFFFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNNHNN","n":["Abi","Add","AddAssign","And","AngleBracketed","AngleBracketedGenericArguments","Array","","Assign","AssocConst","","AssocType","","Async","AttrStyle","Attribute","Await","BareFn","BareFnArg","BareVariadic","BinOp","Binary","BitAnd","BitAndAssign","BitOr","BitOrAssign","BitXor","BitXorAssign","Block","Bool","BoundLifetimes","Brace","Bracket","Break","Byte","ByteStr","CStr","Call","Cast","Char","Closure","Const","","","ConstParam","Constraint","","Continue","Data","DataEnum","DataStruct","DataUnion","Default","Deref","DeriveInput","Div","DivAssign","Enum","Eq","Err","Error","Expr","ExprArray","ExprAssign","ExprAsync","ExprAwait","ExprBinary","ExprBlock","ExprBreak","ExprCall","ExprCast","ExprClosure","ExprConst","ExprContinue","ExprField","ExprForLoop","ExprGroup","ExprIf","ExprIndex","ExprInfer","ExprLet","ExprLit","ExprLoop","ExprMacro","ExprMatch","ExprMethodCall","ExprParen","ExprPath","ExprRange","ExprRawAddr","ExprReference","ExprRepeat","ExprReturn","ExprStruct","ExprTry","ExprTryBlock","ExprTuple","ExprUnary","ExprUnsafe","ExprWhile","ExprYield","Field","","FieldMutability","FieldValue","Fields","FieldsNamed","FieldsUnnamed","Float","ForLoop","Ge","GenericArgument","GenericParam","Generics","Group","","Gt","Ident","If","ImplGenerics","ImplTrait","Index","","Infer","","Inherited","Inner","Int","Le","Let","Lifetime","","","","","LifetimeParam","List","Lit","","LitBool","LitByte","LitByteStr","LitCStr","LitChar","LitFloat","LitInt","LitStr","Loop","Lt","Macro","","","MacroDelimiter","Match","Maybe","Member","Meta","MetaList","MetaNameValue","MethodCall","Mul","MulAssign","NameValue","Named","","Ne","Neg","Never","None","","","Not","Ok","Or","Outer","PLACEHOLDER","Paren","","","Parenthesized","ParenthesizedGenericArguments","Path","","","","PathArguments","PathSegment","PreciseCapture","PredicateLifetime","PredicateType","Ptr","Public","QSelf","Range","RawAddr","Reference","","Rem","RemAssign","Repeat","Restricted","Result","Return","ReturnType","Shl","ShlAssign","Shr","ShrAssign","Slice","Str","Struct","","Sub","SubAssign","Token","Trait","TraitBound","TraitBoundModifier","TraitObject","Try","TryBlock","Tuple","","Turbofish","Type","","","","","TypeArray","TypeBareFn","TypeGenerics","TypeGroup","TypeImplTrait","TypeInfer","TypeMacro","TypeNever","TypeParam","TypeParamBound","TypeParen","TypePath","TypePtr","TypeReference","TypeSlice","TypeTraitObject","TypeTuple","UnOp","Unary","Union","Unit","Unnamed","","Unsafe","Variant","Verbatim","","","","VisRestricted","Visibility","WhereClause","WherePredicate","While","Yield","abi","and_token","","apostrophe","args","","","arguments","as_token","","as_turbofish","attrs","","","","","","","","","","","","","","","","","","","","","","","","bang_token","","base","base10_digits","","base10_parse","","borrow","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bounded_ty","bounds","","","","","","","brace_token","","","braced","bracket_token","","","","bracketed","buffer","clone","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","clone_into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","clone_to_uninit","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","cmp","","colon2_token","colon_token","","","","","","","","comma","const_params","const_params_mut","const_token","","custom_keyword","custom_punctuation","data","default","","","","","delimiter","","discriminant","dot2_token","dot_token","","dots","dyn_token","elem","","","","","","elems","","enum_token","eq","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","eq_token","","","","","expr","","","","","","","ext","extern_token","fields","","","","fmt","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","fn_token","for_token","from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","func","generics","","","","get_ident","group_token","","gt_token","","","","hash","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","ident","","","","","","","","","","impl_token","in_token","index","","inputs","","into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","into_iter","","","is_empty","","is_ident","is_none","iter","iter_mut","leading_colon","left","len","","lifetime","","","lifetimes","","","","","lifetimes_mut","lit","lt_token","","","","mac","","make_where_clause","member","","members","meta","","method","modifier","mutability","","","","name","","","named","new","","","","","","","","","","","","new_raw","op","","output","","params","paren_token","","","","","","","","","","","parenthesized","parse","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","parse2","parse_any","parse_args","","parse_args_with","","parse_body","parse_body_with","parse_inner","parse_macro_input","parse_mod_style","parse_named","parse_nested_meta","","parse_outer","parse_quote","parse_quote_spanned","parse_str","parse_unnamed","parse_with","partial_cmp","","path","","","","","","","","","","peek","position","pound_token","predicates","pub_token","punctuated","qself","","","receiver","require_ident","require_list","require_name_value","require_path_only","rest","right","segments","semi_token","","set_span","","","","","","","","","","","span","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","spanned","split_for_impl","star_token","struct_token","style","suffix","","","","","","","","to_owned","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","to_string","","","","to_tokens","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","token","","","","","","","","","tokens","","try_from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","try_into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","turbofish","ty","","","","","","type_id","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","type_params","type_params_mut","underscore_token","union_token","unnamed","unraw","unsafety","value","","","","","","","","","variadic","variants","vis","","visit","where_clause","where_token","without_plus","","","","Cursor","TokenBuffer","any_group","begin","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","empty","eof","eq","from","","group","ident","into","","lifetime","literal","new","new2","partial_cmp","punct","span","to_owned","token_stream","token_tree","try_from","","try_into","","type_id","","IdentExt","parse_any","peek_any","unraw","ParseNestedMeta","borrow","borrow_mut","error","from","input","into","parse_nested_meta","parser","path","try_from","try_into","type_id","value","End","Err","Error","Lookahead1","Nothing","Ok","Output","Parse","ParseBuffer","ParseStream","Parser","Peek","Result","StepCursor","advance_to","borrow","","","","","","borrow_mut","","","","","","call","clone","","","","clone_into","","","","clone_to_uninit","","","","combine","cursor","deref","discouraged","display","drop","eq","error","","","extend","fmt","","","","","fork","from","","","","","","","hash","into","","","","","","into_compile_error","into_iter","","is_empty","lookahead1","new","new_spanned","parse","","","","parse2","parse_any_delimiter","parse_str","parse_terminated","peek","","","peek2","peek3","span","","","step","to_compile_error","to_owned","","","","to_string","","to_tokens","try_from","","","","","","try_into","","","","","","type_id","","","","","","AnyDelimiter","Speculative","advance_to","parse_any_delimiter","End","IntoIter","IntoPairs","Iter","IterMut","Pair","Pairs","PairsMut","Punctuated","","borrow","","","","","","","","borrow_mut","","","","","","","","clear","clone","","","","","","clone_from","clone_into","","","","","","clone_to_uninit","","","","","","cloned","default","empty_or_trailing","eq","extend","","first","first_mut","fmt","from","","","","","","","","from_iter","","get","get_mut","hash","index","index_mut","insert","into","","","","","","","","into_iter","","","","","","","","","into_pairs","into_tuple","into_value","is_empty","iter","iter_mut","last","last_mut","len","","","","","","","new","","next","","","","","","next_back","","","","","","pairs","pairs_mut","parse_separated_nonempty","parse_separated_nonempty_with","parse_terminated","parse_terminated_with","pop","pop_punct","punct","punct_mut","push","push_punct","push_value","size_hint","","","","","","span","","to_owned","","","","","","to_tokens","","trailing_punct","try_from","","","","","","","","try_into","","","","","","","","type_id","","","","","","","","value","value_mut","Spanned","span","Abstract","And","AndAnd","AndEq","As","Async","At","Auto","Await","Become","Box","Brace","Bracket","Break","Caret","CaretEq","Colon","Comma","Const","Continue","Crate","Default","Do","Dollar","Dot","DotDot","DotDotDot","DotDotEq","Dyn","Else","Enum","Eq","EqEq","Extern","FatArrow","Final","Fn","For","Ge","Group","Gt","If","Impl","In","LArrow","Le","Let","Loop","Lt","Macro","Match","Minus","MinusEq","Mod","Move","Mut","Ne","Not","Or","OrEq","OrOr","Override","Paren","PathSep","Percent","PercentEq","Plus","PlusEq","Pound","Priv","Pub","Question","RArrow","Raw","Ref","Return","SelfType","SelfValue","Semi","Shl","ShlEq","Shr","ShrEq","Slash","SlashEq","Star","StarEq","Static","Struct","Super","Tilde","Token","Trait","Try","Type","Typeof","Underscore","Union","Unsafe","Unsized","Use","Virtual","Where","While","Yield","borrow","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","clone","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","clone_into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","clone_to_uninit","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","default","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","deref","","","","","","","","","","","","","","","","","","","","","","deref_mut","","","","","","","","","","","","","","","","","","","","","","eq","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","fmt","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","hash","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","parse","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","span","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","spans","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","surround","","","","to_owned","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","to_tokens","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","try_from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","try_into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","type_id","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Visit","visit_abi","","","visit_angle_bracketed_generic_arguments","","","visit_assoc_const","","","visit_assoc_type","","","visit_attr_style","","","visit_attribute","","","visit_bare_fn_arg","","","visit_bare_variadic","","","visit_bin_op","","","visit_bound_lifetimes","","","visit_const_param","","","visit_constraint","","","visit_data","","","visit_data_enum","","","visit_data_struct","","","visit_data_union","","","visit_derive_input","","","visit_expr","","","visit_expr_binary","","","visit_expr_call","","","visit_expr_cast","","","visit_expr_field","","","visit_expr_group","","","visit_expr_index","","","visit_expr_lit","","","visit_expr_macro","","","visit_expr_method_call","","","visit_expr_paren","","","visit_expr_path","","","visit_expr_reference","","","visit_expr_struct","","","visit_expr_tuple","","","visit_expr_unary","","","visit_field","","","visit_field_mutability","","","visit_field_value","","","visit_fields","","","visit_fields_named","","","visit_fields_unnamed","","","visit_generic_argument","","","visit_generic_param","","","visit_generics","","","visit_ident","","","visit_index","","","visit_lifetime","","","visit_lifetime_param","","","visit_lit","","","visit_lit_bool","","","visit_lit_byte","","","visit_lit_byte_str","","","visit_lit_char","","","visit_lit_cstr","","","visit_lit_float","","","visit_lit_int","","","visit_lit_str","","","visit_macro","","","visit_macro_delimiter","","","visit_member","","","visit_meta","","","visit_meta_list","","","visit_meta_name_value","","","visit_parenthesized_generic_arguments","","","visit_path","","","visit_path_arguments","","","visit_path_segment","","","visit_predicate_lifetime","","","visit_predicate_type","","","visit_qself","","","visit_return_type","","","visit_span","","","visit_trait_bound","","","visit_trait_bound_modifier","","","visit_type","","","visit_type_array","","","visit_type_bare_fn","","","visit_type_group","","","visit_type_impl_trait","","","visit_type_infer","","","visit_type_macro","","","visit_type_never","","","visit_type_param","","","visit_type_param_bound","","","visit_type_paren","","","visit_type_path","","","visit_type_ptr","","","visit_type_reference","","","visit_type_slice","","","visit_type_trait_object","","","visit_type_tuple","","","visit_un_op","","","visit_variant","","","visit_vis_restricted","","","visit_visibility","","","visit_where_clause","","","visit_where_predicate","",""],"q":[[0,"syn"],[2545,"syn::buffer"],[2581,"syn::ext"],[2585,"syn::meta"],[2599,"syn::parse"],[2720,"syn::parse::discouraged"],[2724,"syn::punctuated"],[2897,"syn::spanned"],[2899,"syn::token"],[5016,"syn::visit"],[5302,"syn::generics"],[5303,"syn::lit"],[5304,"syn::error"],[5305,"core::str::traits"],[5306,"proc_macro2"],[5307,"syn::lifetime"],[5308,"syn::attr"],[5309,"syn::data"],[5310,"syn::derive"],[5311,"syn::expr"],[5312,"syn::mac"],[5313,"syn::op"],[5314,"syn::path"],[5315,"syn::restriction"],[5316,"syn::ty"],[5317,"core::cmp"],[5318,"core::convert"],[5319,"core::marker"],[5320,"core::fmt"],[5321,"core::result"],[5322,"core::option"],[5323,"core::hash"],[5324,"core::ffi::c_str"],[5325,"proc_macro"],[5326,"alloc::vec"],[5327,"core::ops::function"],[5328,"proc_macro2::extra"],[5329,"alloc::string"],[5330,"core::any"],[5331,"alloc::ffi::c_str"],[5332,"syn::lookahead"],[5333,"core::iter::traits::collect"],[5334,"quote::to_tokens"],[5335,"core::clone"],[5336,"core::default"],[5337,"syn::gen::visit"],[5338,"syn::gen"]],"i":"`Hj00Ib`ChJh1`Id`02``21```24444442Gh`Hh0411144144F`3``35````LlHl`99C`:n``````````````````````````````````````````9`````69;```98;`9`8`998JbAl8=;`6FjGb;`An`>````````>Hj`?>`?Fn````Ch223BfEh4DlDnE`EbEdEfElFbFdFfLhLjHfKfD`hl10AdAfbfAhAjAlAnB`BbBdBfBhBjBlBnC`CbCdCfChA@lA@nAAdAAfCjAAhAAjClCnA@hA@fA@dD`OhDbOfDdOdObDfO`DhNlDjDlDnNnOjE`A@`AAbEbAA`A@jEdEfA@bOnOlEhEjElEnF`FbFdFfFhFjFlFnG`GbGdGfGhGjGlGnH`HbhlHdHfHhHjHlHnI`IbIdIfIhIjIlInJ`JbJdJfJhJjJlJnK`KbKdKfKhKjKlKnL`LbLdLfLhLjLlAdAfbfAhAjAlAnB`BbBdBfBhBjBlBnC`CbCdCfChA@lA@nAAdAAfCjAAhAAjClCnA@hA@fA@dD`OhDbOfDdOdObDfO`DhNlDjDlDnNnOjE`A@`AAbEbAA`A@jEdEfA@bOnOlEhEjElEnF`FbFdFfFhFjFlFnG`GbGdGfGhGjGlGnH`HbhlHdHfHhHjHlHnI`IbIdIfIhIjIlInJ`JbJdJfJhJjJlJnK`KbKdKfKhKjKlKnL`LbLdLfLhLjLlGfFbFdGd3IlK`;BhCdEb`AjDdJjL```AdAfbfAh8AlAnB`BbBdBfBhBjBlBnC`CbCdCfChCjClCnD`DbDdDfDhDjDlDnE`EbEdEfEhEjElEnF`FbFdFfFhFjFlFnG`GbGdGfGhGjGlGnH`HbhlHdHfHhHjHlHnI`IbIdIfIhIjIlInJ`JbJdJfJhJjJlJnK`KbKdKfKhKjKlKnL`LbLdLfLhLjLlAdAfbfAhAjAlAnB`BbBdBfBhBjBlBnC`CbCdCfChCjClCnD`DbDdDfDhDjDlDnE`EbEdEfEhEjElEnF`FbFdFfFhFjFlFnG`GbGdGfGhGjGlGnH`HbhlHdHfHhHjHlHnI`IbIdIfIhIjIlInJ`JbJdJfJhJjJlJnK`KbKdKfKhKjKlKnL`LbLdLfLhLjLlAdAfbfAhAjAlAnB`BbBdBfBhBjBlBnC`CbCdCfChCjClCnD`DbDdDfDhDjDlDnE`EbEdEfEhEjElEnF`FbFdFfFhFjFlFnG`GbGdGfGhGjGlGnH`HbhlHdHfHhHjHlHnI`IbIdIfIhIjIlInJ`JbJdJfJhJjJlJnK`KbKdKfKhKjKlKnL`LbLdLfLhLjLlAdAhIfBlElFbFdFfGdGfIlKnL`EdLdCdAd0AfbfAhAjAlAnB`BbBdBfBhBjBlBnC`CbCdCfChCjClCnD`DbDdDfDhDjDlDnE`EbEdEfEhEjElEnF`FbFdFfFhFjFlFnG`GbGdGfGhGjGlGnH`HbhlHdHfHhHjHlHnI`IbIdIfIhIjIlInJ`JbJdJfJhJjJlJnK`KbKdKfKhKjKlKnL`LbLdLfLhLjLlBbFdFfIhIjCnDbDdDlE`EfEl`?BdCbCfEbAd00AfbfAh0AjAlAnB`Bb=BfBhBjBlBnC`CbCdCfChCjClCnD`DbDdDfDhDjDlDnE`EbEdEfEh0Ej0ElEnF`FbFdFfFhFjFlFnG`GbGdGfGhGjGlGnH`Hbh0l0HdHfHhHjHlHnI`IbIdIfIhIjIlInJ`JbJdJfJhJjJlJnK`KbKdKfKhKjKlKnL`LbLdLfLhLjLlJlFhAd000000AfbfAhAjAlAn000B`BbBdBf00BhBjBlBnC`CbCdCfCh000000000000000000000000000000000000000A@lA@nAAdAAfCjAAhAAjClCnA@hA@fA@dD`OhDbOfDdOdObDfO`DhNlDjDlDnNnOjE`A@`AAbEbAA`A@jEdEfA@bOnOlEh000Ej0ElEnF`000FbFd0FfFhFj00FlFnG`Gb00GdGfGh00000000GjGlGnH`Hbh0l0HdHfHhHjHlHn0I`0IbIdIfIhIjIlInJ`JbJdJfJh00000000000000JjJlJnK`KbKdKfKhKjKlKnL`LbLdLfLhLjLlClBnIhIjIlHnDbJnEnFhIfJ`AdAfbfAhAjAlAnB`BbBdBfBhBjBlBnC`CbCdCfChCjClCnD`DbDdDfDhDjDlDnE`EbEdEfEhEjElEnF`FbFdFfFhFjFlFnG`GbGdGfGhGjGlGnH`HbhlHdHfHhHjHlHnI`IbIdIfIhIjIlInJ`JbJdJfJhJjJlJnK`KbKdKfKhKjKlKnL`LbLdLfLhLjLlAhBdBlBnFdFfI`IhIjIlK`JdDdEjInJlAdAfbfAhAjAlAnB`BbBdBfBhBjBlBnC`CbCdCfChA@lA@nAAdAAfCjAAhAAjClCnA@hA@fA@dD`OhDbOfDdOdObDfO`DhNlDjDlDnNnOjE`A@`AAbEbAA`A@jEdEfA@bOnOlEhEjElEnF`FbFdFfFhFjFlFnG`GbGdGfGhGjGlGnH`HbhlHdHfHhHjHlHnI`IbIdIfIhIjIlInJ`JbJdJfJhJjJlJnK`KbKdKfKhKjKlKnL`LbLdLfLhLjLlBf000IbHn1220Cj3JjFbGd>EnFhFlGfJl4Df54IfJ`DhKd9D`ElBf`AjDj:::7Cj?CbJjAd?GhGjGlGnH`HbhlHd999AfbfAh0AjAnB`BbBdBfBhBjBlBnChA@lA@nAAdAAfCjAAhAAjClCnA@hA@fA@dD`OhDbOfDdOdObDfO`DhNlDjDlDnNnOjE`A@`AAbEbAA`A@jEdEfA@bOnOlEh0Ej0ElEnF`FbFdFfFhFjFlFnG`GbGdGfGh0Gj0Gl0Gn0H`0Hb0h0l0Hd0HfHhHjHlHnI`IbIdIfIhIjIlInJ`JbJdJhJjJlJnK`KbKdKfKhKjKlKnL`LbLdLfLhLjLlEjHd`En;CbAjGhGjGlGnH`HbhlAdAfbfAh=AlAnB`BbBdBfBhBjBlBnC`CbCdCfChCjClCnD`DbDdDfDhDjDlDnE`EbEdEfEhEjElEnF`FbFdFfFhFjFlFnG`GbGdGfGhGjGlGnH`HbhlHdHfHhHjHlHnI`IbIdIfIhIjIlInJ`JbJdJfJhJjJlJnK`KbKdKfKhKjKlKnL`LbLdLfLhLjLlAdAhhl3Afbf5AjAnB`BbBdBfBhBjBlBnChA@lA@nAAdAAfCjAAhAAjClCnA@hA@fA@dD`OhDbOfDdOdObDfO`DhNlDjDlDnNnOjE`A@`AAbEbAA`A@jEdEfA@bOnOlEhEjElEnF`FbFdFfFhFjFlFnG`GbGdGfGhGjGlGnH`HbhlHdHfHjHlHnI`IbIdIfIhIjIlInJbJdJhJjJlJnK`KbKdKfKhKjKlKnL`LbLdLfLhLjLl`GjGlGnH`HbhlHdB`HfAdAfbfAhAjAlAn9BbBdBfBhBjBlBnC`CbCdCfChA@lA@nAAdAAfCjAAhAAjClCnA@hA@fA@dD`OhDbOfDdOdObDfO`DhNlDjDlDnNnOjE`A@`AAbEbAA`A@jEdEfA@bOnOlEhEjElEnF`FbFdFfFhFjFlFnG`GbGdGfGhGjGlGnH`HbhlHdHfHhHjHlHnI`IbIdIfIhIjIlInJ`JbJdJfJhJjJlJnK`KbKdKfKhKjKlKnL`LbLdLfLhLjLlAdAfbfAhAjAlAnB`BbBdBfBhBjBlBnC`CbCdCfChA@lA@nAAdAAfCjAAhAAjClCnA@hA@fA@dD`OhDbOfDdOdObDfO`DhNlDjDlDnNnOjE`A@`AAbEbAA`A@jEdEfA@bOnOlEhEjElEnF`FbFdFfFhFjFlFnG`GbGdGfGhGjGlGnH`HbhlHdHfHhHjHlHnI`IbIdIfIhIjIlInJ`JbJdJfJhJjJlJnK`KbKdKfKhKjKlKnL`LbLdLfLhLjLlDjBlCnFfIhJ`8AdAfbfAhAjAlAnB`BbBdBfBhBjBlBnC`CbCdCfChA@lA@nAAdAAfCjAAhAAjClCnA@hA@fA@dD`OhDbOfDdOdObDfO`DhNlDjDlDnNnOjE`A@`AAbEbAA`A@jEdEfA@bOnOlEhEjElEnF`FbFdFfFhFjFlFnG`GbGdGfGhGjGlGnH`HbhlHdHfHhHjHlHnI`IbIdIfIhIjIlInJ`JbJdJfJhJjJlJnK`KbKdKfKhKjKlKnL`LbLdLfLhLjLlEn0>CfBjAdJlGjGlGnH`HbHdBb1Ij8CdBlBn`?G`JhK`LbLl``AE`AEd01011111110111011100111111010101`AEj00`AD`000000`00000`n```0ACl```````AF`AElAFjAFd3AFfAFh4325105421042104210451`2503514445505443251004325104445544ACf671767643666561655321561543621543621543621``AGjAGlAHf````````0AGdAH`AI`AHbAHdABfABh765432107665321766532176532177666666666543210766666666654321076665432106776666665432106754321054321066666666776665432106765321767665432107654321076543210777`AId`````````````````````````````````````````````````````````````````````````````````````````````````````````AIfNjAIhAIjAIlAInAJ`AJbAJdAJfAJhAJjN`AJlAJnAK`AKbAKdNhAKfAKhAKjAKlAKnAL`ALbALdALfALhALjALlALnAM`AMbAMdAMfAMhAMjNdNfAMlAMnNbAN`ANbANdANfANhANjANlANnAO`AObAOdAOfAOhAOjAOlAOnB@`B@bB@dB@fB@hB@jB@lB@nBA`BAbBAdBAfBAhBAjBAlBAnBB`BBbBBdBBfBBhBBjBBlBBnBC`BCbBCdBCfBChBCjBClBCnBD`BDbBDdBDfBDhBDjBDlBDnBE`BEbBEdBEfBEhAIfNjAIhAIjAIlAInAJ`AJbAJdAJfAJhAJjN`AJlAJnAK`AKbAKdNhAKfAKhAKjAKlAKnAL`ALbALdALfALhALjALlALnAM`AMbAMdAMfAMhAMjNdNfAMlAMnNbAN`ANbANdANfANhANjANlANnAO`AObAOdAOfAOhAOjAOlAOnB@`B@bB@dB@fB@hB@jB@lB@nBA`BAbBAdBAfBAhBAjBAlBAnBB`BBbBBdBBfBBhBBjBBlBBnBC`BCbBCdBCfBChBCjBClBCnBD`BDbBDdBDfBDhBDjBDlBDnBE`BEbBEdBEfBEhAIfNjAIhAIjAIlAInAJ`AJbAJdAJfAJhAJjN`AJlAJnAK`AKbAKdNhAKfAKhAKjAKlAKnAL`ALbALdALfALhALjALlALnAM`AMbAMdAMfAMhAMjNdNfAMlAMnNbAN`ANbANdANfANhANjANlANnAO`AObAOdAOfAOhAOjAOlAOnB@`B@bB@dB@fB@hB@jB@lB@nBA`BAbBAdBAfBAhBAjBAlBAnBB`BBbBBdBBfBBhBBjBBlBBnBC`BCbBCdBCfBChBCjBClBCnBD`BDbBDdBDfBDhBDjBDlBDnBE`BEbBEdBEfBEhAIfNjAIhAIjAIlAInAJ`AJbAJdAJfAJhAJjN`AJlAJnAK`AKbAKdNhAKfAKhAKjAKlAKnAL`ALbALdALfALhALjALlALnAM`AMbAMdAMfAMhAMjNdNfAMlAMnNbAN`ANbANdANfANhANjANlANnAO`AObAOdAOfAOhAOjAOlAOnB@`B@bB@dB@fB@hB@jB@lB@nBA`BAbBAdBAfBAhBAjBAlBAnBB`BBbBBdBBfBBhBBjBBlBBnBC`BCbBCdBCfBChBCjBClBCnBD`BDbBDdBDfBDhBDjBDlBDnBE`BEbBEdBEfBEhAIfNjAIhAIjAIlAInAJ`AJbAJdAJfAJhAJjN`AJlAJnAK`AKbAKdNhAKfAKhAKjAKlAKnAL`ALbALdALfALhALjALlALnAM`AMbAMdAMfAMhAMjNdNfAMlAMnNbAN`ANbANdANfANhANjANlANnAO`AObAOdAOfAOhAOjAOlAOnB@`B@bB@dB@fB@hB@jB@lB@nBA`BAbBAdBAfBAhBAjBAlBAnBB`BBbBBdBBfBBhBBjBBlBBnBC`BCbBCdBCfBChBCjBClBCnBD`BDbBDdBDfBDhBDjBDlBDnBE`BEbBEdBEfBEhAIfNjAIhAIjAIlAInAJ`AJbAJdAJfAJhAJjN`AJlAJnAK`AKbAKdNhAKfAKhAKjAKlAKnAL`ALbALdALfALhALjALlALnAM`AMbAMdAMfAMhAMjNdNfAMlAMnNbAN`ANbANdANfANhANjANlANnAO`AObAOdAOfAOhAOjAOlAOnB@`B@bB@dB@fB@hB@jB@lB@nBA`BAbBAdBAfBAhBAjBAlBAnBB`BBbBBdBBfBBhBBjBBlBBnBC`BCbBCdBCfBChBCjBClBCnBD`BDbBDdBDfBDhBDjBDlBDnBE`BEbBEdBEfBEhNjAOhAOnB@`B@dB@fB@hB@jBAbBAjBB`BBbBBhBBjBCbBCfBCjBClBD`BDjBDnBEbNjAOhAOnB@`B@dB@fB@hB@jBAbBAjBB`BBbBBhBBjBCbBCfBCjBClBD`BDjBDnBEbAIfNjAIhAIjAIlAInAJ`AJbAJdAJfAJhAJjN`AJlAJnAK`AKbAKdNhAKfAKhAKjAKlAKnAL`ALbALdALfALhALjALlALnAM`AMbAMdAMfAMhAMjNdNfAMlAMnNbAN`ANbANdANfANhANjANlANnAO`AObAOdAOfAOhAOjAOlAOnB@`B@bB@dB@fB@hB@jB@lB@nBA`BAbBAdBAfBAhBAjBAlBAnBB`BBbBBdBBfBBhBBjBBlBBnBC`BCbBCdBCfBChBCjBClBCnBD`BDbBDdBDfBDhBDjBDlBDnBE`BEbBEdBEfBEhAIfNjAIhAIjAIlAInAJ`AJbAJdAJfAJhAJjN`AJlAJnAK`AKbAKdNhAKfAKhAKjAKlAKnAL`ALbALdALfALhALjALlALnAM`AMbAMdAMfAMhAMjNdNfAMlAMnNbAN`ANbANdANfANhANjANlANnAO`AObAOdAOfAOhAOjAOlAOnB@`B@bB@dB@fB@hB@jB@lB@nBA`BAbBAdBAfBAhBAjBAlBAnBB`BBbBBdBBfBBhBBjBBlBBnBC`BCbBCdBCfBChBCjBClBCnBD`BDbBDdBDfBDhBDjBDlBDnBE`BEbBEdBEfBEhAIfNjAIhAIjAIlAInAJ`AJbAJdAJfAJhAJjN`AJlAJnAK`AKbAKdNhAKfAKhAKjAKlAKnAL`ALbALdALfALhALjALlALnAM`AMbAMdAMfAMhAMjNdNfAMlAMnNbAN`ANbANdANfANhANjANlANnAO`AObAOdAOfAOhAOjAOlAOnB@`B@bB@dB@fB@hB@jB@lB@nBA`BAbBAdBAfBAhBAjBAlBAnBB`BBbBBdBBfBBhBBjBBlBBnBC`BCbBCdBCfBChBCjBClBCnBD`BDbBDdBDfBDhBDjBDlBDnBE`BEbBEdBEfBEhAIfNjAIhAIjAIlAInAJ`AJbAJdAJfAJhAJjN`AJlAJnAK`AKbAKdNhAKfAKhAKjAKlAKnAL`ALbALdALfALhALjALlALnAM`AMbAMdAMfAMhAMjNdNfAMlAMnNbAN`ANbANdANfANhANjANlANnAO`AObAOdAOfAOhAOjAOlAOnB@`B@bB@dB@fB@hB@jB@lB@nBA`BAbBAdBAfBAhBAjBAlBAnBB`BBbBBdBBfBBhBBjBBlBBnBC`BCbBCdBCfBChBCjBClBCnBD`BDbBDdBDfBDhBDjBDlBDnBE`BEbBEdBEfBEhAIfNjAIhAIjAIlAInAJ`AJbAJdAJfAJhAJjN`AJlAJnAK`AKbAKdNhAKfAKhAKjAKlAKnAL`ALbALdALfALhALjALlALnAM`AMbAMdAMfAMhAMjNdNfAMlAMnNbAN`ANbANdANfANhANjANlANnAO`AObAOdAOfAOhAOjAOlAOnB@`B@bB@dB@fB@hB@jB@lB@nBA`BAbBAdBAfBAhBAjBAlBAnBB`BBbBBdBBfBBhBBjBBlBBnBC`BCbBCdBCfBChBCjBClBCnBD`BDbBDdBDfBDhBDjBDlBDnBE`BEbBEdBEfBEhNjAIhAIjAIlAInAJ`AJbAJdAJfAJhAJjN`AJlAJnAK`AKbAKdNhAKfAKhAKjAKlAKnAL`ALbALdALfALhALjALlALnAM`AMbAMdAMfAMhAMjNdNfAMlAMnNbAN`ANbANdANfANhANjANlANnAO`AObAOdAOfAOhAOjAOlAOnB@`B@bB@dB@fB@hB@jB@lB@nBA`BAbBAdBAfBAhBAjBAlBAnBB`BBbBBdBBfBBhBBjBBlBBnBC`BCbBCdBCfBChBCjBClBCnBD`BDbBDdBDfBDhBDjBDlBDnBE`BEbNjAIhAIjAIlAInAJ`AJbAJdAJfAJhAJjN`AJlAJnAK`AKbAKdNhAKfAKhAKjAKlAKnAL`ALbALdALfALhALjALlALnAM`AMbAMdAMfAMhAMjNdNfAMlAMnNbAN`ANbANdANfANhANjANlANnAO`AObAOdAOfAOhAOjAOlAOnB@`B@bB@dB@fB@hB@jB@lB@nBA`BAbBAdBAfBAhBAjBAlBAnBB`BBbBBdBBfBBhBBjBBlBBnBC`BCbBCdBCfBChBCjBClBCnBD`BDbBDdBDfBDhBDjBDlBDnBE`BEbAIfAIhAIjAIlAInAJ`AJbAJdAJfAJhAJjN`AJlAJnAK`AKbAKdNhAKfAKhAKjAKlAKnAL`ALbALdALfALhALjALlALnAM`AMbAMdAMfAMhAMjNdNfAMlAMnNbAN`ANbANdANfANhANjANlANnAO`AObAOdAOfBEdBEfBEhNjAOhAOjAOlAOnB@`B@bB@dB@fB@hB@jB@lB@nBA`BAbBAdBAfBAhBAjBAlBAnBB`BBbBBdBBfBBhBBjBBlBBnBC`BCbBCdBCfBChBCjBClBCnBD`BDbBDdBDfBDhBDjBDlBDnBE`BEbAIfBEdBEfBEh3NjAIhAIjAIlAInAJ`AJbAJdAJfAJhAJjN`AJlAJnAK`AKbAKdNhAKfAKhAKjAKlAKnAL`ALbALdALfALhALjALlALnAM`AMbAMdAMfAMhAMjNdNfAMlAMnNbAN`ANbANdANfANhANjANlANnAO`AObAOdAOfAOhAOjAOlAOnB@`B@bB@dB@fB@hB@jB@lB@nBA`BAbBAdBAfBAhBAjBAlBAnBB`BBbBBdBBfBBhBBjBBlBBnBC`BCbBCdBCfBChBCjBClBCnBD`BDbBDdBDfBDhBDjBDlBDnBE`BEbBEdBEfBEhNjAIhAIjAIlAInAJ`AJbAJdAJfAJhAJjN`AJlAJnAK`AKbAKdNhAKfAKhAKjAKlAKnAL`ALbALdALfALhALjALlALnAM`AMbAMdAMfAMhAMjNdNfAMlAMnNbAN`ANbANdANfANhANjANlANnAO`AObAOdAOfAOhAOjAOlAOnB@`B@bB@dB@fB@hB@jB@lB@nBA`BAbBAdBAfBAhBAjBAlBAnBB`BBbBBdBBfBBhBBjBBlBBnBC`BCbBCdBCfBChBCjBClBCnBD`BDbBDdBDfBDhBDjBDlBDnBE`BEbAIfNjAIhAIjAIlAInAJ`AJbAJdAJfAJhAJjN`AJlAJnAK`AKbAKdNhAKfAKhAKjAKlAKnAL`ALbALdALfALhALjALlALnAM`AMbAMdAMfAMhAMjNdNfAMlAMnNbAN`ANbANdANfANhANjANlANnAO`AObAOdAOfAOhAOjAOlAOnB@`B@bB@dB@fB@hB@jB@lB@nBA`BAbBAdBAfBAhBAjBAlBAnBB`BBbBBdBBfBBhBBjBBlBBnBC`BCbBCdBCfBChBCjBClBCnBD`BDbBDdBDfBDhBDjBDlBDnBE`BEbBEdBEfBEhAIfNjAIhAIjAIlAInAJ`AJbAJdAJfAJhAJjN`AJlAJnAK`AKbAKdNhAKfAKhAKjAKlAKnAL`ALbALdALfALhALjALlALnAM`AMbAMdAMfAMhAMjNdNfAMlAMnNbAN`ANbANdANfANhANjANlANnAO`AObAOdAOfAOhAOjAOlAOnB@`B@bB@dB@fB@hB@jB@lB@nBA`BAbBAdBAfBAhBAjBAlBAnBB`BBbBBdBBfBBhBBjBBlBBnBC`BCbBCdBCfBChBCjBClBCnBD`BDbBDdBDfBDhBDjBDlBDnBE`BEbBEdBEfBEhAIfNjAIhAIjAIlAInAJ`AJbAJdAJfAJhAJjN`AJlAJnAK`AKbAKdNhAKfAKhAKjAKlAKnAL`ALbALdALfALhALjALlALnAM`AMbAMdAMfAMhAMjNdNfAMlAMnNbAN`ANbANdANfANhANjANlANnAO`AObAOdAOfAOhAOjAOlAOnB@`B@bB@dB@fB@hB@jB@lB@nBA`BAbBAdBAfBAhBAjBAlBAnBB`BBbBBdBBfBBhBBjBBlBBnBC`BCbBCdBCfBChBCjBClBCnBD`BDbBDdBDfBDhBDjBDlBDnBE`BEbBEdBEfBEh``BEj0`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00","f":"``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{d{b}}}f}```````````````````````````{{{d{h}}}{{d{j}}}}{{{d{l}}}{{d{j}}}}{{{d{h}}}{{n{c}}}A`}{{{d{l}}}{{n{c}}}A`}{d{{d{c}}}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{d{Ab}}}{{d{Abc}}}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000``````````````````{{{d{Ad}}}Ad}{{{d{Af}}}Af}{{{d{b}}}b}{{{d{f}}}f}{{{d{Ah}}}Ah}{{{d{Aj}}}Aj}{{{d{Al}}}Al}{{{d{An}}}An}{{{d{B`}}}B`}{{{d{Bb}}}Bb}{{{d{Bd}}}Bd}{{{d{Bf}}}Bf}{{{d{Bh}}}Bh}{{{d{Bj}}}Bj}{{{d{Bl}}}Bl}{{{d{Bn}}}Bn}{{{d{C`}}}C`}{{{d{Cb}}}Cb}{{{d{Cd}}}Cd}{{{d{Cf}}}Cf}{{{d{Ch}}}Ch}{{{d{Cj}}}Cj}{{{d{Cl}}}Cl}{{{d{Cn}}}Cn}{{{d{D`}}}D`}{{{d{Db}}}Db}{{{d{Dd}}}Dd}{{{d{Df}}}Df}{{{d{Dh}}}Dh}{{{d{Dj}}}Dj}{{{d{Dl}}}Dl}{{{d{Dn}}}Dn}{{{d{E`}}}E`}{{{d{Eb}}}Eb}{{{d{Ed}}}Ed}{{{d{Ef}}}Ef}{{{d{Eh}}}Eh}{{{d{Ej}}}Ej}{{{d{El}}}El}{{{d{En}}}En}{{{d{F`}}}F`}{{{d{Fb}}}Fb}{{{d{Fd}}}Fd}{{{d{Ff}}}Ff}{{{d{Fh}}}Fh}{{{d{Fj}}}Fj}{{{d{Fl}}}Fl}{{{d{Fn}}}Fn}{{{d{G`}}}G`}{{{d{Gb}}}Gb}{{{d{Gd}}}Gd}{{{d{Gf}}}Gf}{{{d{Gh}}}Gh}{{{d{Gj}}}Gj}{{{d{Gl}}}Gl}{{{d{Gn}}}Gn}{{{d{H`}}}H`}{{{d{Hb}}}Hb}{{{d{h}}}h}{{{d{l}}}l}{{{d{Hd}}}Hd}{{{d{Hf}}}Hf}{{{d{Hh}}}Hh}{{{d{Hj}}}Hj}{{{d{Hl}}}Hl}{{{d{Hn}}}Hn}{{{d{I`}}}I`}{{{d{Ib}}}Ib}{{{d{Id}}}Id}{{{d{If}}}If}{{{d{Ih}}}Ih}{{{d{Ij}}}Ij}{{{d{Il}}}Il}{{{d{In}}}In}{{{d{J`}}}J`}{{{d{Jb}}}Jb}{{{d{Jd}}}Jd}{{{d{Jf}}}Jf}{{{d{Jh}}}Jh}{{{d{Jj}}}Jj}{{{d{Jl}}}Jl}{{{d{Jn}}}Jn}{{{d{K`}}}K`}{{{d{Kb}}}Kb}{{{d{Kd}}}Kd}{{{d{Kf}}}Kf}{{{d{Kh}}}Kh}{{{d{Kj}}}Kj}{{{d{Kl}}}Kl}{{{d{Kn}}}Kn}{{{d{L`}}}L`}{{{d{Lb}}}Lb}{{{d{Ld}}}Ld}{{{d{Lf}}}Lf}{{{d{Lh}}}Lh}{{{d{Lj}}}Lj}{{{d{Ll}}}Ll}{{d{d{Abc}}}Ln{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{dLn}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{d{Ad}}{d{Ad}}}M`}{{{d{Ah}}{d{Ah}}}M`}`````````````````{{}En}{{}Fh}{{}Ib}```````````````````{{{d{Ad}}{d{c}}}Mb{{Md{j}}Mf}}{{{d{Ad}}{d{Ad}}}Mb}{{{d{Af}}{d{Af}}}Mb}{{{d{b}}{d{b}}}Mb}{{{d{f}}{d{f}}}Mb}{{{d{Ah}}{d{Ah}}}Mb}{{{d{Aj}}{d{Aj}}}Mb}{{{d{Al}}{d{Al}}}Mb}{{{d{An}}{d{An}}}Mb}{{{d{B`}}{d{B`}}}Mb}{{{d{Bb}}{d{Bb}}}Mb}{{{d{Bd}}{d{Bd}}}Mb}{{{d{Bf}}{d{Bf}}}Mb}{{{d{Bh}}{d{Bh}}}Mb}{{{d{Bj}}{d{Bj}}}Mb}{{{d{Bl}}{d{Bl}}}Mb}{{{d{Bn}}{d{Bn}}}Mb}{{{d{C`}}{d{C`}}}Mb}{{{d{Cb}}{d{Cb}}}Mb}{{{d{Cd}}{d{Cd}}}Mb}{{{d{Cf}}{d{Cf}}}Mb}{{{d{Ch}}{d{Ch}}}Mb}{{{d{Cj}}{d{Cj}}}Mb}{{{d{Cl}}{d{Cl}}}Mb}{{{d{Cn}}{d{Cn}}}Mb}{{{d{D`}}{d{D`}}}Mb}{{{d{Db}}{d{Db}}}Mb}{{{d{Dd}}{d{Dd}}}Mb}{{{d{Df}}{d{Df}}}Mb}{{{d{Dh}}{d{Dh}}}Mb}{{{d{Dj}}{d{Dj}}}Mb}{{{d{Dl}}{d{Dl}}}Mb}{{{d{Dn}}{d{Dn}}}Mb}{{{d{E`}}{d{E`}}}Mb}{{{d{Eb}}{d{Eb}}}Mb}{{{d{Ed}}{d{Ed}}}Mb}{{{d{Ef}}{d{Ef}}}Mb}{{{d{Eh}}{d{Eh}}}Mb}{{{d{Ej}}{d{Ej}}}Mb}{{{d{El}}{d{El}}}Mb}{{{d{En}}{d{En}}}Mb}{{{d{F`}}{d{F`}}}Mb}{{{d{Fb}}{d{Fb}}}Mb}{{{d{Fd}}{d{Fd}}}Mb}{{{d{Ff}}{d{Ff}}}Mb}{{{d{Fh}}{d{Fh}}}Mb}{{{d{Fj}}{d{Fj}}}Mb}{{{d{Fl}}{d{Fl}}}Mb}{{{d{Fn}}{d{Fn}}}Mb}{{{d{G`}}{d{G`}}}Mb}{{{d{Gb}}{d{Gb}}}Mb}{{{d{Gd}}{d{Gd}}}Mb}{{{d{Gf}}{d{Gf}}}Mb}{{{d{Gh}}{d{Gh}}}Mb}{{{d{Gj}}{d{Gj}}}Mb}{{{d{Gl}}{d{Gl}}}Mb}{{{d{Gn}}{d{Gn}}}Mb}{{{d{H`}}{d{H`}}}Mb}{{{d{Hb}}{d{Hb}}}Mb}{{{d{h}}{d{h}}}Mb}{{{d{l}}{d{l}}}Mb}{{{d{Hd}}{d{Hd}}}Mb}{{{d{Hf}}{d{Hf}}}Mb}{{{d{Hh}}{d{Hh}}}Mb}{{{d{Hj}}{d{Hj}}}Mb}{{{d{Hl}}{d{Hl}}}Mb}{{{d{Hn}}{d{Hn}}}Mb}{{{d{I`}}{d{I`}}}Mb}{{{d{Ib}}{d{Ib}}}Mb}{{{d{Id}}{d{Id}}}Mb}{{{d{If}}{d{If}}}Mb}{{{d{Ih}}{d{Ih}}}Mb}{{{d{Ij}}{d{Ij}}}Mb}{{{d{Il}}{d{Il}}}Mb}{{{d{In}}{d{In}}}Mb}{{{d{J`}}{d{J`}}}Mb}{{{d{Jb}}{d{Jb}}}Mb}{{{d{Jd}}{d{Jd}}}Mb}{{{d{Jf}}{d{Jf}}}Mb}{{{d{Jh}}{d{Jh}}}Mb}{{{d{Jj}}{d{Jj}}}Mb}{{{d{Jl}}{d{Jl}}}Mb}{{{d{Jn}}{d{Jn}}}Mb}{{{d{K`}}{d{K`}}}Mb}{{{d{Kb}}{d{Kb}}}Mb}{{{d{Kd}}{d{Kd}}}Mb}{{{d{Kf}}{d{Kf}}}Mb}{{{d{Kh}}{d{Kh}}}Mb}{{{d{Kj}}{d{Kj}}}Mb}{{{d{Kl}}{d{Kl}}}Mb}{{{d{Kn}}{d{Kn}}}Mb}{{{d{L`}}{d{L`}}}Mb}{{{d{Lb}}{d{Lb}}}Mb}{{{d{Ld}}{d{Ld}}}Mb}{{{d{Lf}}{d{Lf}}}Mb}{{{d{Lh}}{d{Lh}}}Mb}{{{d{Lj}}{d{Lj}}}Mb}{{{d{Ll}}{d{Ll}}}Mb}``````````````````{{{d{Ad}}{d{AbMh}}}{{Ml{LnMj}}}}00{{{d{Af}}{d{AbMh}}}Mn}{{{d{b}}{d{AbMh}}}Mn}{{{d{f}}{d{AbMh}}}Mn}{{{d{Ah}}{d{AbMh}}}Mn}0{{{d{Aj}}{d{AbMh}}}Mn}{{{d{Al}}{d{AbMh}}}Mn}{{{d{An}}{d{AbMh}}}Mn}{{{d{B`}}{d{AbMh}}}Mn}{{{d{Bb}}{d{AbMh}}}Mn}{{{d{Bd}}{d{AbMh}}}Mn}{{{d{Bf}}{d{AbMh}}}Mn}{{{d{Bh}}{d{AbMh}}}Mn}{{{d{Bj}}{d{AbMh}}}Mn}{{{d{Bl}}{d{AbMh}}}Mn}{{{d{Bn}}{d{AbMh}}}Mn}{{{d{C`}}{d{AbMh}}}Mn}{{{d{Cb}}{d{AbMh}}}Mn}{{{d{Cd}}{d{AbMh}}}Mn}{{{d{Cf}}{d{AbMh}}}Mn}{{{d{Ch}}{d{AbMh}}}Mn}{{{d{Cj}}{d{AbMh}}}Mn}{{{d{Cl}}{d{AbMh}}}Mn}{{{d{Cn}}{d{AbMh}}}Mn}{{{d{D`}}{d{AbMh}}}Mn}{{{d{Db}}{d{AbMh}}}Mn}{{{d{Dd}}{d{AbMh}}}Mn}{{{d{Df}}{d{AbMh}}}Mn}{{{d{Dh}}{d{AbMh}}}Mn}{{{d{Dj}}{d{AbMh}}}Mn}{{{d{Dl}}{d{AbMh}}}Mn}{{{d{Dn}}{d{AbMh}}}Mn}{{{d{E`}}{d{AbMh}}}Mn}{{{d{Eb}}{d{AbMh}}}Mn}{{{d{Ed}}{d{AbMh}}}Mn}{{{d{Ef}}{d{AbMh}}}Mn}{{{d{Eh}}{d{AbMh}}}Mn}0{{{d{Ej}}{d{AbMh}}}Mn}0{{{d{El}}{d{AbMh}}}Mn}{{{d{En}}{d{AbMh}}}Mn}{{{d{F`}}{d{AbMh}}}Mn}{{{d{Fb}}{d{AbMh}}}Mn}{{{d{Fd}}{d{AbMh}}}Mn}{{{d{Ff}}{d{AbMh}}}Mn}{{{d{Fh}}{d{AbMh}}}Mn}{{{d{Fj}}{d{AbMh}}}Mn}{{{d{Fl}}{d{AbMh}}}Mn}{{{d{Fn}}{d{AbMh}}}Mn}{{{d{G`}}{d{AbMh}}}Mn}{{{d{Gb}}{d{AbMh}}}Mn}{{{d{Gd}}{d{AbMh}}}Mn}{{{d{Gf}}{d{AbMh}}}Mn}{{{d{Gh}}{d{AbMh}}}Mn}{{{d{Gj}}{d{AbMh}}}Mn}{{{d{Gl}}{d{AbMh}}}Mn}{{{d{Gn}}{d{AbMh}}}Mn}{{{d{H`}}{d{AbMh}}}Mn}{{{d{Hb}}{d{AbMh}}}Mn}{{{d{h}}{d{AbMh}}}Mn}0{{{d{l}}{d{AbMh}}}Mn}0{{{d{Hd}}{d{AbMh}}}Mn}{{{d{Hf}}{d{AbMh}}}Mn}{{{d{Hh}}{d{AbMh}}}Mn}{{{d{Hj}}{d{AbMh}}}Mn}{{{d{Hl}}{d{AbMh}}}Mn}{{{d{Hn}}{d{AbMh}}}Mn}{{{d{I`}}{d{AbMh}}}Mn}{{{d{Ib}}{d{AbMh}}}Mn}{{{d{Id}}{d{AbMh}}}Mn}{{{d{If}}{d{AbMh}}}Mn}{{{d{Ih}}{d{AbMh}}}Mn}{{{d{Ij}}{d{AbMh}}}Mn}{{{d{Il}}{d{AbMh}}}Mn}{{{d{In}}{d{AbMh}}}Mn}{{{d{J`}}{d{AbMh}}}Mn}{{{d{Jb}}{d{AbMh}}}Mn}{{{d{Jd}}{d{AbMh}}}Mn}{{{d{Jf}}{d{AbMh}}}Mn}{{{d{Jh}}{d{AbMh}}}Mn}{{{d{Jj}}{d{AbMh}}}Mn}{{{d{Jl}}{d{AbMh}}}Mn}{{{d{Jn}}{d{AbMh}}}Mn}{{{d{K`}}{d{AbMh}}}Mn}{{{d{Kb}}{d{AbMh}}}Mn}{{{d{Kd}}{d{AbMh}}}Mn}{{{d{Kf}}{d{AbMh}}}Mn}{{{d{Kh}}{d{AbMh}}}Mn}{{{d{Kj}}{d{AbMh}}}Mn}{{{d{Kl}}{d{AbMh}}}Mn}{{{d{Kn}}{d{AbMh}}}Mn}{{{d{L`}}{d{AbMh}}}Mn}{{{d{Lb}}{d{AbMh}}}Mn}{{{d{Ld}}{d{AbMh}}}Mn}{{{d{Lf}}{d{AbMh}}}Mn}{{{d{Lh}}{d{AbMh}}}Mn}{{{d{Lj}}{d{AbMh}}}Mn}{{{d{Ll}}{d{AbMh}}}Mn}``{cc{}}{N`Ad}{NbAd}{NdAd}{NfAd}{NhAd}{NjAd}666666{BbAn}{B`An}{HnAn}99999{BjBf}{BhBf};;;;;;;;{D`Ch}{EbCh}{DnCh}{DjCh}{NlCh}{DhCh}{NnCh}{O`Ch}{DfCh}{ObCh}{OdCh}{DdCh}{OfCh}{DbCh}{OhCh}{OjCh}{E`Ch}{OlCh}{OnCh}{A@`Ch}{A@bCh}{EfCh}{A@dCh}{EdCh}{A@fCh}{A@hCh}{A@jCh}{A@lCh}{A@nCh}{AA`Ch}{AAbCh}{AAdCh}{AAfCh}{CjCh}{AAhCh}{cc{}}{CnCh}{DlCh}{ClCh}{AAjCh}444444444444444444444444444444444444444{AdEh}{AAlEh}6{EjEh}{AAlEj}888{FdF`}9{FbF`}{FfF`};;{AdFd}<<{AhFj}{FlFj}>>>>{GdGb}{GfGb}{cc{}}00{HbGh}{lGh}{hGh}3{H`Gh}{GnGh}{HdGh}{GjGh}{GlGh}88888{AAnh}99{AAnl}:::::{cHn{{AB`{I`}}}};;{cI`{{AB`{Ad}}}}<<<<<<<<<<<{KlJh}{LdJh}{JjJh}?{KjJh}{KnJh}{KhJh}{L`Jh}{JlJh}{KfJh}{KdJh}{JnJh}{KbJh}{LbJh}{K`Jh}{cc{}}00000000000000000`````{{{d{Hn}}}{{ABb{{d{Ad}}}}}}``````{{{d{Ad}}{d{Abc}}}LnABd}{{{d{Af}}{d{Abc}}}LnABd}{{{d{b}}{d{Abc}}}LnABd}{{{d{f}}{d{Abc}}}LnABd}{{{d{Ah}}{d{Abc}}}LnABd}{{{d{Aj}}{d{Abc}}}LnABd}{{{d{Al}}{d{Abc}}}LnABd}{{{d{An}}{d{Abc}}}LnABd}{{{d{B`}}{d{Abc}}}LnABd}{{{d{Bb}}{d{Abc}}}LnABd}{{{d{Bd}}{d{Abc}}}LnABd}{{{d{Bf}}{d{Abc}}}LnABd}{{{d{Bh}}{d{Abc}}}LnABd}{{{d{Bj}}{d{Abc}}}LnABd}{{{d{Bl}}{d{Abc}}}LnABd}{{{d{Bn}}{d{Abc}}}LnABd}{{{d{C`}}{d{Abc}}}LnABd}{{{d{Cb}}{d{Abc}}}LnABd}{{{d{Cd}}{d{Abc}}}LnABd}{{{d{Cf}}{d{Abc}}}LnABd}{{{d{Ch}}{d{Abc}}}LnABd}{{{d{Cj}}{d{Abc}}}LnABd}{{{d{Cl}}{d{Abc}}}LnABd}{{{d{Cn}}{d{Abc}}}LnABd}{{{d{D`}}{d{Abc}}}LnABd}{{{d{Db}}{d{Abc}}}LnABd}{{{d{Dd}}{d{Abc}}}LnABd}{{{d{Df}}{d{Abc}}}LnABd}{{{d{Dh}}{d{Abc}}}LnABd}{{{d{Dj}}{d{Abc}}}LnABd}{{{d{Dl}}{d{Abc}}}LnABd}{{{d{Dn}}{d{Abc}}}LnABd}{{{d{E`}}{d{Abc}}}LnABd}{{{d{Eb}}{d{Abc}}}LnABd}{{{d{Ed}}{d{Abc}}}LnABd}{{{d{Ef}}{d{Abc}}}LnABd}{{{d{Eh}}{d{Abc}}}LnABd}{{{d{Ej}}{d{Abc}}}LnABd}{{{d{El}}{d{Abc}}}LnABd}{{{d{En}}{d{Abc}}}LnABd}{{{d{F`}}{d{Abc}}}LnABd}{{{d{Fb}}{d{Abc}}}LnABd}{{{d{Fd}}{d{Abc}}}LnABd}{{{d{Ff}}{d{Abc}}}LnABd}{{{d{Fh}}{d{Abc}}}LnABd}{{{d{Fj}}{d{Abc}}}LnABd}{{{d{Fl}}{d{Abc}}}LnABd}{{{d{Fn}}{d{Abc}}}LnABd}{{{d{G`}}{d{Abc}}}LnABd}{{{d{Gb}}{d{Abc}}}LnABd}{{{d{Gd}}{d{Abc}}}LnABd}{{{d{Gf}}{d{Abc}}}LnABd}{{{d{Gh}}{d{Abc}}}LnABd}{{{d{Gj}}{d{Abc}}}LnABd}{{{d{Gl}}{d{Abc}}}LnABd}{{{d{Gn}}{d{Abc}}}LnABd}{{{d{H`}}{d{Abc}}}LnABd}{{{d{Hb}}{d{Abc}}}LnABd}{{{d{h}}{d{Abc}}}LnABd}{{{d{l}}{d{Abc}}}LnABd}{{{d{Hd}}{d{Abc}}}LnABd}{{{d{Hf}}{d{Abc}}}LnABd}{{{d{Hh}}{d{Abc}}}LnABd}{{{d{Hj}}{d{Abc}}}LnABd}{{{d{Hl}}{d{Abc}}}LnABd}{{{d{Hn}}{d{Abc}}}LnABd}{{{d{I`}}{d{Abc}}}LnABd}{{{d{Ib}}{d{Abc}}}LnABd}{{{d{Id}}{d{Abc}}}LnABd}{{{d{If}}{d{Abc}}}LnABd}{{{d{Ih}}{d{Abc}}}LnABd}{{{d{Ij}}{d{Abc}}}LnABd}{{{d{Il}}{d{Abc}}}LnABd}{{{d{In}}{d{Abc}}}LnABd}{{{d{J`}}{d{Abc}}}LnABd}{{{d{Jb}}{d{Abc}}}LnABd}{{{d{Jd}}{d{Abc}}}LnABd}{{{d{Jf}}{d{Abc}}}LnABd}{{{d{Jh}}{d{Abc}}}LnABd}{{{d{Jj}}{d{Abc}}}LnABd}{{{d{Jl}}{d{Abc}}}LnABd}{{{d{Jn}}{d{Abc}}}LnABd}{{{d{K`}}{d{Abc}}}LnABd}{{{d{Kb}}{d{Abc}}}LnABd}{{{d{Kd}}{d{Abc}}}LnABd}{{{d{Kf}}{d{Abc}}}LnABd}{{{d{Kh}}{d{Abc}}}LnABd}{{{d{Kj}}{d{Abc}}}LnABd}{{{d{Kl}}{d{Abc}}}LnABd}{{{d{Kn}}{d{Abc}}}LnABd}{{{d{L`}}{d{Abc}}}LnABd}{{{d{Lb}}{d{Abc}}}LnABd}{{{d{Ld}}{d{Abc}}}LnABd}{{{d{Lf}}{d{Abc}}}LnABd}{{{d{Lh}}{d{Abc}}}LnABd}{{{d{Lj}}{d{Abc}}}LnABd}{{{d{Ll}}{d{Abc}}}LnABd}````````````````{{}c{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{d{Bf}}}c{}}{Bfc{}}{{{d{AbBf}}}c{}}{{{d{Bf}}}Mb}{{{d{Ib}}}Mb}{{{d{Hn}}{d{c}}}MbMf}1{{{d{Bf}}}{{ABf{Bl}}}}{{{d{AbBf}}}{{ABh{Bl}}}}``{{{d{Bf}}}AAl}`````````````````{{{d{AbEn}}}{{d{AbG`}}}}```````````````{{{d{j}}ABj}Ad}{{{d{j}}ABj}Ah}{AhFb}{AAnGh}{{{d{j}}ABj}Gj}{{{d{{ABn{ABl}}}}ABj}Gl}{{{d{AC`}}ABj}Gn}{{ABlABj}H`}{{ACbABj}Hb}{{{d{j}}ABj}h}{{{d{j}}ABj}l}{{MbABj}Hd};``````````````````{ACd{{n{c}}}ACf}{ACh{{n{Ad}}}}{ACh{{n{Ah}}}}{ACh{{n{An}}}}{ACh{{n{B`}}}}{ACh{{n{Bb}}}}{ACh{{n{Bd}}}}{ACh{{n{Bh}}}}{ACh{{n{Bj}}}}{ACh{{n{Bn}}}}{ACh{{n{Ch}}}}{ACh{{n{Df}}}}{ACh{{n{Dh}}}}{ACh{{n{Dn}}}}{ACh{{n{Eb}}}}{ACh{{n{Eh}}}}{ACh{{n{Ej}}}}{ACh{{n{El}}}}{ACh{{n{En}}}}{ACh{{n{F`}}}}{ACh{{n{Fb}}}}{ACh{{n{Fd}}}}{ACh{{n{Ff}}}}{ACh{{n{Fh}}}}{ACh{{n{Fj}}}}{ACh{{n{Fl}}}}{ACh{{n{Fn}}}}{ACh{{n{G`}}}}{ACh{{n{Gb}}}}{ACh{{n{Gh}}}}{{{d{Gj}}}{{n{c}}}ACf}{ACh{{n{Gj}}}}{ACh{{n{Gl}}}}{ACh{{n{Gn}}}}{ACh{{n{H`}}}}{ACh{{n{Hb}}}}{ACh{{n{h}}}}{ACh{{n{l}}}}{ACh{{n{Hd}}}}{ACh{{n{Hf}}}}{ACh{{n{Hj}}}}{ACh{{n{Hl}}}}{ACh{{n{Hn}}}}{ACh{{n{I`}}}}{ACh{{n{Id}}}}{ACh{{n{If}}}}{ACh{{n{In}}}}{ACh{{n{Jb}}}}{ACh{{n{Jh}}}}{ACh{{n{Jj}}}}{ACh{{n{Jl}}}}{ACh{{n{Jn}}}}{ACh{{n{K`}}}}{ACh{{n{Kb}}}}{ACh{{n{Kd}}}}{ACh{{n{Kf}}}}{ACh{{n{Kh}}}}{ACh{{n{Kj}}}}{ACh{{n{Kl}}}}{ACh{{n{Kn}}}}{ACh{{n{L`}}}}{ACh{{n{Lb}}}}{ACh{{n{Ld}}}}{ACh{{n{Lf}}}}{ACh{{n{Lh}}}}{ACh{{n{Ll}}}}{ACj{{n{c}}}ACf}{ACh{{n{Ad}}}}{{{d{Aj}}}{{n{c}}}ACf}{{{d{B`}}}{{n{c}}}ACf}{{{d{Aj}}c}nACl}{{{d{B`}}c}nACl}{{{d{Hf}}}{{n{c}}}ACf}{{{d{Hf}}c}nACl}{ACh{{n{{ACn{Aj}}}}}}`{ACh{{n{Hn}}}}{ACh{{n{Bl}}}}{{{d{Aj}}c}{{n{Ln}}}{{ADd{AD`}{{ADb{{n{Ln}}}}}}}}{{{d{B`}}c}{{n{Ln}}}{{ADd{AD`}{{ADb{{n{Ln}}}}}}}}4``{{{d{j}}}{{n{c}}}ACf}3{{{d{Gj}}c}nACl}{{{d{Ad}}{d{Ad}}}{{ABb{M`}}}}{{{d{Ah}}{d{Ah}}}{{ABb{M`}}}}{{{d{Aj}}}{{d{Hn}}}}{{{d{An}}}{{d{Hn}}}}````````{AChMb}`````````{{{d{Hn}}}{{n{{d{Ad}}}}}}{{{d{An}}}{{n{{d{B`}}}}}}{{{d{An}}}{{n{{d{Bb}}}}}}{{{d{An}}}{{n{{d{Hn}}}}}}`````{{{d{AbAd}}ABj}Ln}{{{d{AbAh}}ABj}Ln}{{{d{AbGh}}ABj}Ln}{{{d{AbGj}}ABj}Ln}{{{d{AbGl}}ABj}Ln}{{{d{AbGn}}ABj}Ln}{{{d{AbH`}}ABj}Ln}{{{d{AbHb}}ABj}Ln}{{{d{Abh}}ABj}Ln}{{{d{Abl}}ABj}Ln}{{{d{AbHd}}ABj}Ln}{{{d{Ad}}}{{ABb{ABj}}}}{{{d{Ad}}}ABj}{dABj}000{{{d{Ah}}}ABj}111111111111111111111111111111111111111111111111111{{{d{Eh}}}{{ABb{ABj}}}}2{{{d{Ej}}}{{ABb{ABj}}}}3333333333333333{{{d{Gh}}}ABj}{{{d{Gj}}}ABj}55{{{d{Gl}}}ABj}6{{{d{Gn}}}ABj}7{{{d{H`}}}ABj}8{{{d{Hb}}}ABj}9{{{d{h}}}ABj}:{{{d{l}}}ABj};{{{d{Hd}}}ABj}<{{{d{Hh}}}{{d{ADf}}}}==========={{{d{J`}}}ABj}>>>>>>>>>>>>>>>>>>>>>```{{{d{En}}}{{ADh{Afb{ABb{{d{G`}}}}}}}}```{{{d{Gh}}}{{d{j}}}}{{{d{Gj}}}{{d{j}}}}{{{d{Gl}}}{{d{j}}}}{{{d{Gn}}}{{d{j}}}}{{{d{H`}}}{{d{j}}}}{{{d{Hb}}}{{d{j}}}}{{{d{h}}}{{d{j}}}}{{{d{l}}}{{d{j}}}}{dc{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{dADj}000{{{d{Ad}}{d{AbACj}}}Ln}{{{d{Af}}{d{AbACj}}}Ln}{{{d{b}}{d{AbACj}}}Ln}{{{d{f}}{d{AbACj}}}Ln}{{{d{Ah}}{d{AbACj}}}Ln}{{{d{Aj}}{d{AbACj}}}Ln}{{{d{An}}{d{AbACj}}}Ln}{{{d{B`}}{d{AbACj}}}Ln}{{{d{Bb}}{d{AbACj}}}Ln}{{{d{Bd}}{d{AbACj}}}Ln}{{{d{Bf}}{d{AbACj}}}Ln}{{{d{Bh}}{d{AbACj}}}Ln}{{{d{Bj}}{d{AbACj}}}Ln}{{{d{Bl}}{d{AbACj}}}Ln}{{{d{Bn}}{d{AbACj}}}Ln}{{{d{Ch}}{d{AbACj}}}Ln}{{{d{A@l}}{d{AbACj}}}Ln}{{{d{A@n}}{d{AbACj}}}Ln}{{{d{AAd}}{d{AbACj}}}Ln}{{{d{AAf}}{d{AbACj}}}Ln}{{{d{Cj}}{d{AbACj}}}Ln}{{{d{AAh}}{d{AbACj}}}Ln}{{{d{AAj}}{d{AbACj}}}Ln}{{{d{Cl}}{d{AbACj}}}Ln}{{{d{Cn}}{d{AbACj}}}Ln}{{{d{A@h}}{d{AbACj}}}Ln}{{{d{A@f}}{d{AbACj}}}Ln}{{{d{A@d}}{d{AbACj}}}Ln}{{{d{D`}}{d{AbACj}}}Ln}{{{d{Oh}}{d{AbACj}}}Ln}{{{d{Db}}{d{AbACj}}}Ln}{{{d{Of}}{d{AbACj}}}Ln}{{{d{Dd}}{d{AbACj}}}Ln}{{{d{Od}}{d{AbACj}}}Ln}{{{d{Ob}}{d{AbACj}}}Ln}{{{d{Df}}{d{AbACj}}}Ln}{{{d{O`}}{d{AbACj}}}Ln}{{{d{Dh}}{d{AbACj}}}Ln}{{{d{Nl}}{d{AbACj}}}Ln}{{{d{Dj}}{d{AbACj}}}Ln}{{{d{Dl}}{d{AbACj}}}Ln}{{{d{Dn}}{d{AbACj}}}Ln}{{{d{Nn}}{d{AbACj}}}Ln}{{{d{Oj}}{d{AbACj}}}Ln}{{{d{E`}}{d{AbACj}}}Ln}{{{d{A@`}}{d{AbACj}}}Ln}{{{d{AAb}}{d{AbACj}}}Ln}{{{d{Eb}}{d{AbACj}}}Ln}{{{d{AA`}}{d{AbACj}}}Ln}{{{d{A@j}}{d{AbACj}}}Ln}{{{d{Ed}}{d{AbACj}}}Ln}{{{d{Ef}}{d{AbACj}}}Ln}{{{d{A@b}}{d{AbACj}}}Ln}{{{d{On}}{d{AbACj}}}Ln}{{{d{Ol}}{d{AbACj}}}Ln}{{{d{Eh}}{d{AbACj}}}Ln}{{{d{Ej}}{d{AbACj}}}Ln}{{{d{El}}{d{AbACj}}}Ln}{{{d{En}}{d{AbACj}}}Ln}{{{d{F`}}{d{AbACj}}}Ln}{{{d{Fb}}{d{AbACj}}}Ln}{{{d{Fd}}{d{AbACj}}}Ln}{{{d{Ff}}{d{AbACj}}}Ln}{{{d{Fh}}{d{AbACj}}}Ln}{{{d{Fj}}{d{AbACj}}}Ln}{{{d{Fl}}{d{AbACj}}}Ln}{{{d{Fn}}{d{AbACj}}}Ln}{{{d{G`}}{d{AbACj}}}Ln}{{{d{Gb}}{d{AbACj}}}Ln}{{{d{Gd}}{d{AbACj}}}Ln}{{{d{Gf}}{d{AbACj}}}Ln}{{{d{Gh}}{d{AbACj}}}Ln}{{{d{Gj}}{d{AbACj}}}Ln}{{{d{Gl}}{d{AbACj}}}Ln}{{{d{Gn}}{d{AbACj}}}Ln}{{{d{H`}}{d{AbACj}}}Ln}{{{d{Hb}}{d{AbACj}}}Ln}{{{d{h}}{d{AbACj}}}Ln}{{{d{l}}{d{AbACj}}}Ln}{{{d{Hd}}{d{AbACj}}}Ln}{{{d{Hf}}{d{AbACj}}}Ln}{{{d{Hj}}{d{AbACj}}}Ln}{{{d{Hl}}{d{AbACj}}}Ln}{{{d{Hn}}{d{AbACj}}}Ln}{{{d{I`}}{d{AbACj}}}Ln}{{{d{Ib}}{d{AbACj}}}Ln}{{{d{Id}}{d{AbACj}}}Ln}{{{d{If}}{d{AbACj}}}Ln}{{{d{Ih}}{d{AbACj}}}Ln}{{{d{Ij}}{d{AbACj}}}Ln}{{{d{Il}}{d{AbACj}}}Ln}{{{d{In}}{d{AbACj}}}Ln}{{{d{Jb}}{d{AbACj}}}Ln}{{{d{Jd}}{d{AbACj}}}Ln}{{{d{Jh}}{d{AbACj}}}Ln}{{{d{Jj}}{d{AbACj}}}Ln}{{{d{Jl}}{d{AbACj}}}Ln}{{{d{Jn}}{d{AbACj}}}Ln}{{{d{K`}}{d{AbACj}}}Ln}{{{d{Kb}}{d{AbACj}}}Ln}{{{d{Kd}}{d{AbACj}}}Ln}{{{d{Kf}}{d{AbACj}}}Ln}{{{d{Kh}}{d{AbACj}}}Ln}{{{d{Kj}}{d{AbACj}}}Ln}{{{d{Kl}}{d{AbACj}}}Ln}{{{d{Kn}}{d{AbACj}}}Ln}{{{d{L`}}{d{AbACj}}}Ln}{{{d{Lb}}{d{AbACj}}}Ln}{{{d{Ld}}{d{AbACj}}}Ln}{{{d{Lf}}{d{AbACj}}}Ln}{{{d{Lh}}{d{AbACj}}}Ln}{{{d{Lj}}{d{AbACj}}}Ln}{{{d{Ll}}{d{AbACj}}}Ln}`{{{d{Gj}}}AAn}{{{d{Gl}}}AAn}{{{d{Gn}}}AAn}{{{d{H`}}}AAn}{{{d{Hb}}}AAn}{{{d{h}}}AAn}{{{d{l}}}AAn}{{{d{Hd}}}Ad}``{c{{Ml{e}}}{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{}{{Ml{c}}}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```````{dADl}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`````{{{d{Ad}}}Ad}`{{{d{Gj}}}ADj}{{{d{Gl}}}{{ACn{ABl}}}}{{{d{Gn}}}ADn}{{{d{H`}}}ABl}{{{d{Hb}}}ACb}{{{d{Hd}}}Mb}``````````{ACh{{n{Jh}}}}{ACh{{n{K`}}}}{ACh{{n{Lb}}}}{ACh{{n{Ll}}}}``{AE`{{ABb{{ADh{AE`AEbADfAE`}}}}}}{{{d{AEd}}}AE`}{d{{d{c}}}{}}0{{{d{Ab}}}{{d{Abc}}}{}}0{{{d{AE`}}}AE`}{{d{d{Abc}}}Ln{}}{dLn}{{}AE`}{AE`Mb}{{{d{AE`}}{d{AE`}}}Mb}{cc{}}0{{AE`AEb}{{ABb{{ADh{AE`ADfAE`}}}}}}{AE`{{ABb{{ADh{AdAE`}}}}}}{{}c{}}0{AE`{{ABb{{ADh{AhAE`}}}}}}{AE`{{ABb{{ADh{AAnAE`}}}}}}{ACdAEd}{ACjAEd}{{{d{AE`}}{d{AE`}}}{{ABb{M`}}}}{AE`{{ABb{{ADh{AEfAE`}}}}}}{AE`ABj}{dc{}}{AE`ACj}{AE`{{ABb{{ADh{AEhAE`}}}}}}{c{{Ml{e}}}{}{}}0{{}{{Ml{c}}}{}}0{dADl}0`{ACh{{n{AEj}}}}`{{{d{AEj}}}Ad}`{d{{d{c}}}{}}{{{d{Ab}}}{{d{Abc}}}{}}{{{d{AD`}}c}AElAEn}{cc{}}`{{}c{}}{{{d{AD`}}c}{{n{Ln}}}{{ADd{AD`}{{ADb{{n{Ln}}}}}}}}{c{{`{{ACl{}{{ADb{Ln}}}}}}}{{ADd{AD`}{{ADb{{n{Ln}}}}}}}}`;:9{{{d{AD`}}}{{n{ACh}}}}``````````````{{{d{AF`}}{d{AF`}}}Ln}888888777777{{{d{AF`}}{AFb{ACh}{{ADb{{n{c}}}}}}}{{n{c}}}{}}{{{d{AEl}}}AEl}{{{d{AFd}}}AFd}{{{d{AFf}}}AFf}{{{d{AFh}}}AFh}{{d{d{Abc}}}Ln{}}000{dLn}000{{{d{AbAEl}}AEl}Ln}{{{d{AF`}}}AE`}{{{d{AFf}}}{{d{c}}}{}}`{{}{{d{j}}}}{{{d{AbAF`}}}Ln}{{{d{AFh}}{d{AFh}}}Mb}{AFjAEl}{{{d{AF`}}c}AElAEn}{{AFfc}AElAEn}{{{d{AbAEl}}c}Ln{{AFn{}{{AFl{AEl}}}}}}{{{d{AEl}}{d{AbMh}}}Mn}0{{{d{AF`}}{d{AbMh}}}Mn}0{{{d{AFh}}{d{AbMh}}}Mn}{{{d{AF`}}}AF`}{AG`AEl}{cc{}}00000{{{d{AFh}}{d{Abc}}}LnABd}{{}c{}}00000{AElACj}{AElc{}}{{{d{AEl}}}c{}}{{{d{AF`}}}Mb}{{{d{AF`}}}AFj}{{ABjc}AElAEn}{{ce}AElAGbAEn}{ACh{{n{ACf}}}}{{{d{AF`}}}{{n{c}}}ACf}{{{ACl{}{{ADb{c}}}}ACd}{{n{c}}}{}}{ACh{{n{AFh}}}}{{{ACl{}{{ADb{c}}}}ACj}{{n{c}}}{}}{{{d{AF`}}}{{n{{ADh{AEbADfAF`}}}}}}{{{ACl{}{{ADb{c}}}}{d{j}}}{{n{c}}}{}}{{{d{AF`}}{AFb{ACh}{{ADb{{n{c}}}}}}e}{{n{{AGd{c}}}}}{}AGf}{{{d{AFj}}c}MbAGf}{AE`Mb}{{{d{AF`}}c}MbAGf}00{{{d{AEl}}}ABj}{{{d{AF`}}}ABj}{dABj}{{{d{AF`}}e}{{n{c}}}{}{{AGh{AFf}{{ADb{{n{{ADh{cAE`}}}}}}}}}}{{{d{AEl}}}ACj}{dc{}}000{dADj}0{{{d{AFh}}{d{AbACj}}}Ln}{c{{Ml{e}}}{}{}}00000{{}{{Ml{c}}}{}}00000{dADl}00000``{{{d{AGj}}{d{AGj}}}Ln}{{{d{AGl}}}{{n{{ADh{AEbADfAF`}}}}}}``````````{d{{d{c}}}{}}0000000{{{d{Ab}}}{{d{Abc}}}{}}0000000{{{d{Ab{AGd{ce}}}}}Ln{}{}}{{{d{{AGd{ce}}}}}{{AGd{ce}}}AGnAGn}{{{d{{AH`{ce}}}}}{{AH`{ce}}}{}{}}{{{d{{AHb{ce}}}}}{{AHb{ce}}}AGnAGn}{{{d{{AHd{c}}}}}{{AHd{c}}}AGn}{{{d{{ABf{c}}}}}{{ABf{c}}}{}}{{{d{{AHf{ce}}}}}{{AHf{ce}}}AGnAGn}{{{d{Ab{AGd{ce}}}}{d{{AGd{ce}}}}}LnAGnAGn}{{d{d{Abc}}}Ln{}}00000{dLn}00000{{{AHf{{d{c}}{d{e}}}}}{{AHf{ce}}}AGnAGn}{{}{{AGd{ce}}}{}{}}{{{d{{AGd{ce}}}}}Mb{}{}}{{{d{{AGd{ce}}}}{d{{AGd{ce}}}}}MbAHhAHh}{{{d{Ab{AGd{ce}}}}g}Ln{}AHj{{AFn{}{{AFl{{AHf{ce}}}}}}}}{{{d{Ab{AGd{ce}}}}g}Ln{}AHj{{AFn{}{{AFl{c}}}}}}{{{d{{AGd{ce}}}}}{{ABb{{d{c}}}}}{}{}}{{{d{Ab{AGd{ce}}}}}{{ABb{{d{Abc}}}}}{}{}}{{{d{{AGd{ce}}}}{d{AbMh}}}MnAHlAHl}{cc{}}0000000{e{{AGd{cg}}}{}{{AFn{}{{AFl{c}}}}}AHj}{g{{AGd{ce}}}{}{}{{AFn{}{{AFl{{AHf{ce}}}}}}}}{{{d{{AGd{ce}}}}AAl}{{ABb{{d{c}}}}}{}{}}{{{d{Ab{AGd{ce}}}}AAl}{{ABb{{d{Abc}}}}}{}{}}{{{d{{AGd{ce}}}}{d{Abg}}}LnAHnAHnABd}{{{d{{AGd{ce}}}}AAl}{{d{g}}}{}{}{}}{{{d{Ab{AGd{ce}}}}AAl}{{d{Abg}}}{}{}{}}{{{d{Ab{AGd{ce}}}}AAlc}Ln{}AHj}{{}c{}}0000000{{{d{Ab{AGd{ce}}}}}g{}{}{}}{{{d{{AGd{ce}}}}}g{}{}{}}{{{AGd{ce}}}g{}{}{}}333333{{{AGd{ce}}}{{AHb{ce}}}{}{}}{{{AHf{ce}}}{{ADh{c{ABb{e}}}}}{}{}}{{{AHf{ce}}}c{}{}}{{{d{{AGd{ce}}}}}Mb{}{}}{{{d{{AGd{ce}}}}}{{ABf{c}}}{}{}}{{{d{Ab{AGd{ce}}}}}{{ABh{c}}}{}{}}{{{d{{AGd{ce}}}}}{{ABb{{d{c}}}}}{}{}}{{{d{Ab{AGd{ce}}}}}{{ABb{{d{Abc}}}}}{}{}}{{{d{{AGd{ce}}}}}AAl{}{}}{{{d{{AH`{ce}}}}}AAl{}{}}{{{d{{AI`{ce}}}}}AAl{}{}}{{{d{{AHb{ce}}}}}AAl{}{}}{{{d{{AHd{c}}}}}AAl{}}{{{d{{ABf{c}}}}}AAl{}}{{{d{{ABh{c}}}}}AAl{}}{{}{{AGd{ce}}}{}{}}{{c{ABb{e}}}{{AHf{ce}}}{}{}}{{{d{Ab{AH`{ce}}}}}{{ABb{g}}}{}{}{}}{{{d{Ab{AI`{ce}}}}}{{ABb{g}}}{}{}{}}{{{d{Ab{AHb{ce}}}}}{{ABb{g}}}{}{}{}}{{{d{Ab{AHd{c}}}}}{{ABb{e}}}{}{}}{{{d{Ab{ABf{c}}}}}{{ABb{e}}}{}{}}{{{d{Ab{ABh{c}}}}}{{ABb{e}}}{}{}}543210{{{d{{AGd{ce}}}}}{{AH`{ce}}}{}{}}{{{d{Ab{AGd{ce}}}}}{{AI`{ce}}}{}{}}{ACh{{n{{AGd{ce}}}}}ACf{AIbACf}}{{ACh{AFb{ACh}{{ADb{{n{c}}}}}}}{{n{{AGd{ce}}}}}{}{AIbACf}}{ACh{{n{{AGd{ce}}}}}ACfACf}{{ACh{AFb{ACh}{{ADb{{n{c}}}}}}}{{n{{AGd{ce}}}}}{}ACf}{{{d{Ab{AGd{ce}}}}}{{ABb{{AHf{ce}}}}}{}{}}{{{d{Ab{AGd{ce}}}}}{{ABb{e}}}{}{}}{{{d{{AHf{ce}}}}}{{ABb{{d{e}}}}}{}{}}{{{d{Ab{AHf{ce}}}}}{{ABb{{d{Abe}}}}}{}{}}{{{d{Ab{AGd{ce}}}}c}Ln{}AHj}{{{d{Ab{AGd{ce}}}}e}Ln{}{}}{{{d{Ab{AGd{ce}}}}c}Ln{}{}}{{{d{{AH`{ce}}}}}{{ADh{AAl{ABb{AAl}}}}}{}{}}{{{d{{AI`{ce}}}}}{{ADh{AAl{ABb{AAl}}}}}{}{}}{{{d{{AHb{ce}}}}}{{ADh{AAl{ABb{AAl}}}}}{}{}}{{{d{{AHd{c}}}}}{{ADh{AAl{ABb{AAl}}}}}{}}{{{d{{ABf{c}}}}}{{ADh{AAl{ABb{AAl}}}}}{}}{{{d{{ABh{c}}}}}{{ADh{AAl{ABb{AAl}}}}}{}}{dABj}0{dc{}}00000{{{d{{AGd{ce}}}}{d{AbACj}}}LnAGbAGb}{{{d{{AHf{ce}}}}{d{AbACj}}}LnAGbAGb}{{{d{{AGd{ce}}}}}Mb{}{}}{c{{Ml{e}}}{}{}}0000000{{}{{Ml{c}}}{}}0000000{dADl}0000000{{{d{{AHf{ce}}}}}{{d{c}}}{}{}}{{{d{Ab{AHf{ce}}}}}{{d{Abc}}}{}{}}`{{{d{AId}}}ABj}`````````````````````````````````````````````````````````````````````````````````````````````````````````{d{{d{c}}}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{d{Ab}}}{{d{Abc}}}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{d{AIf}}}AIf}{{{d{Nj}}}Nj}{{{d{AIh}}}AIh}{{{d{AIj}}}AIj}{{{d{AIl}}}AIl}{{{d{AIn}}}AIn}{{{d{AJ`}}}AJ`}{{{d{AJb}}}AJb}{{{d{AJd}}}AJd}{{{d{AJf}}}AJf}{{{d{AJh}}}AJh}{{{d{AJj}}}AJj}{{{d{N`}}}N`}{{{d{AJl}}}AJl}{{{d{AJn}}}AJn}{{{d{AK`}}}AK`}{{{d{AKb}}}AKb}{{{d{AKd}}}AKd}{{{d{Nh}}}Nh}{{{d{AKf}}}AKf}{{{d{AKh}}}AKh}{{{d{AKj}}}AKj}{{{d{AKl}}}AKl}{{{d{AKn}}}AKn}{{{d{AL`}}}AL`}{{{d{ALb}}}ALb}{{{d{ALd}}}ALd}{{{d{ALf}}}ALf}{{{d{ALh}}}ALh}{{{d{ALj}}}ALj}{{{d{ALl}}}ALl}{{{d{ALn}}}ALn}{{{d{AM`}}}AM`}{{{d{AMb}}}AMb}{{{d{AMd}}}AMd}{{{d{AMf}}}AMf}{{{d{AMh}}}AMh}{{{d{AMj}}}AMj}{{{d{Nd}}}Nd}{{{d{Nf}}}Nf}{{{d{AMl}}}AMl}{{{d{AMn}}}AMn}{{{d{Nb}}}Nb}{{{d{AN`}}}AN`}{{{d{ANb}}}ANb}{{{d{ANd}}}ANd}{{{d{ANf}}}ANf}{{{d{ANh}}}ANh}{{{d{ANj}}}ANj}{{{d{ANl}}}ANl}{{{d{ANn}}}ANn}{{{d{AO`}}}AO`}{{{d{AOb}}}AOb}{{{d{AOd}}}AOd}{{{d{AOf}}}AOf}{{{d{AOh}}}AOh}{{{d{AOj}}}AOj}{{{d{AOl}}}AOl}{{{d{AOn}}}AOn}{{{d{B@`}}}B@`}{{{d{B@b}}}B@b}{{{d{B@d}}}B@d}{{{d{B@f}}}B@f}{{{d{B@h}}}B@h}{{{d{B@j}}}B@j}{{{d{B@l}}}B@l}{{{d{B@n}}}B@n}{{{d{BA`}}}BA`}{{{d{BAb}}}BAb}{{{d{BAd}}}BAd}{{{d{BAf}}}BAf}{{{d{BAh}}}BAh}{{{d{BAj}}}BAj}{{{d{BAl}}}BAl}{{{d{BAn}}}BAn}{{{d{BB`}}}BB`}{{{d{BBb}}}BBb}{{{d{BBd}}}BBd}{{{d{BBf}}}BBf}{{{d{BBh}}}BBh}{{{d{BBj}}}BBj}{{{d{BBl}}}BBl}{{{d{BBn}}}BBn}{{{d{BC`}}}BC`}{{{d{BCb}}}BCb}{{{d{BCd}}}BCd}{{{d{BCf}}}BCf}{{{d{BCh}}}BCh}{{{d{BCj}}}BCj}{{{d{BCl}}}BCl}{{{d{BCn}}}BCn}{{{d{BD`}}}BD`}{{{d{BDb}}}BDb}{{{d{BDd}}}BDd}{{{d{BDf}}}BDf}{{{d{BDh}}}BDh}{{{d{BDj}}}BDj}{{{d{BDl}}}BDl}{{{d{BDn}}}BDn}{{{d{BE`}}}BE`}{{{d{BEb}}}BEb}{{{d{BEd}}}BEd}{{{d{BEf}}}BEf}{{{d{BEh}}}BEh}{{d{d{Abc}}}Ln{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{dLn}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{}AIf}{{}Nj}{{}AIh}{{}AIj}{{}AIl}{{}AIn}{{}AJ`}{{}AJb}{{}AJd}{{}AJf}{{}AJh}{{}AJj}{{}N`}{{}AJl}{{}AJn}{{}AK`}{{}AKb}{{}AKd}{{}Nh}{{}AKf}{{}AKh}{{}AKj}{{}AKl}{{}AKn}{{}AL`}{{}ALb}{{}ALd}{{}ALf}{{}ALh}{{}ALj}{{}ALl}{{}ALn}{{}AM`}{{}AMb}{{}AMd}{{}AMf}{{}AMh}{{}AMj}{{}Nd}{{}Nf}{{}AMl}{{}AMn}{{}Nb}{{}AN`}{{}ANb}{{}ANd}{{}ANf}{{}ANh}{{}ANj}{{}ANl}{{}ANn}{{}AO`}{{}AOb}{{}AOd}{{}AOf}{{}AOh}{{}AOj}{{}AOl}{{}AOn}{{}B@`}{{}B@b}{{}B@d}{{}B@f}{{}B@h}{{}B@j}{{}B@l}{{}B@n}{{}BA`}{{}BAb}{{}BAd}{{}BAf}{{}BAh}{{}BAj}{{}BAl}{{}BAn}{{}BB`}{{}BBb}{{}BBd}{{}BBf}{{}BBh}{{}BBj}{{}BBl}{{}BBn}{{}BC`}{{}BCb}{{}BCd}{{}BCf}{{}BCh}{{}BCj}{{}BCl}{{}BCn}{{}BD`}{{}BDb}{{}BDd}{{}BDf}{{}BDh}{{}BDj}{{}BDl}{{}BDn}{{}BE`}{{}BEb}{{}BEd}{{}BEf}{{}BEh}{{{d{Nj}}}{{d{c}}}{}}{{{d{AOh}}}{{d{c}}}{}}{{{d{AOn}}}{{d{c}}}{}}{{{d{B@`}}}{{d{c}}}{}}{{{d{B@d}}}{{d{c}}}{}}{{{d{B@f}}}{{d{c}}}{}}{{{d{B@h}}}{{d{c}}}{}}{{{d{B@j}}}{{d{c}}}{}}{{{d{BAb}}}{{d{c}}}{}}{{{d{BAj}}}{{d{c}}}{}}{{{d{BB`}}}{{d{c}}}{}}{{{d{BBb}}}{{d{c}}}{}}{{{d{BBh}}}{{d{c}}}{}}{{{d{BBj}}}{{d{c}}}{}}{{{d{BCb}}}{{d{c}}}{}}{{{d{BCf}}}{{d{c}}}{}}{{{d{BCj}}}{{d{c}}}{}}{{{d{BCl}}}{{d{c}}}{}}{{{d{BD`}}}{{d{c}}}{}}{{{d{BDj}}}{{d{c}}}{}}{{{d{BDn}}}{{d{c}}}{}}{{{d{BEb}}}{{d{c}}}{}}{{{d{AbNj}}}{{d{Abc}}}{}}{{{d{AbAOh}}}{{d{Abc}}}{}}{{{d{AbAOn}}}{{d{Abc}}}{}}{{{d{AbB@`}}}{{d{Abc}}}{}}{{{d{AbB@d}}}{{d{Abc}}}{}}{{{d{AbB@f}}}{{d{Abc}}}{}}{{{d{AbB@h}}}{{d{Abc}}}{}}{{{d{AbB@j}}}{{d{Abc}}}{}}{{{d{AbBAb}}}{{d{Abc}}}{}}{{{d{AbBAj}}}{{d{Abc}}}{}}{{{d{AbBB`}}}{{d{Abc}}}{}}{{{d{AbBBb}}}{{d{Abc}}}{}}{{{d{AbBBh}}}{{d{Abc}}}{}}{{{d{AbBBj}}}{{d{Abc}}}{}}{{{d{AbBCb}}}{{d{Abc}}}{}}{{{d{AbBCf}}}{{d{Abc}}}{}}{{{d{AbBCj}}}{{d{Abc}}}{}}{{{d{AbBCl}}}{{d{Abc}}}{}}{{{d{AbBD`}}}{{d{Abc}}}{}}{{{d{AbBDj}}}{{d{Abc}}}{}}{{{d{AbBDn}}}{{d{Abc}}}{}}{{{d{AbBEb}}}{{d{Abc}}}{}}{{{d{AIf}}{d{AIf}}}Mb}{{{d{Nj}}{d{Nj}}}Mb}{{{d{AIh}}{d{AIh}}}Mb}{{{d{AIj}}{d{AIj}}}Mb}{{{d{AIl}}{d{AIl}}}Mb}{{{d{AIn}}{d{AIn}}}Mb}{{{d{AJ`}}{d{AJ`}}}Mb}{{{d{AJb}}{d{AJb}}}Mb}{{{d{AJd}}{d{AJd}}}Mb}{{{d{AJf}}{d{AJf}}}Mb}{{{d{AJh}}{d{AJh}}}Mb}{{{d{AJj}}{d{AJj}}}Mb}{{{d{N`}}{d{N`}}}Mb}{{{d{AJl}}{d{AJl}}}Mb}{{{d{AJn}}{d{AJn}}}Mb}{{{d{AK`}}{d{AK`}}}Mb}{{{d{AKb}}{d{AKb}}}Mb}{{{d{AKd}}{d{AKd}}}Mb}{{{d{Nh}}{d{Nh}}}Mb}{{{d{AKf}}{d{AKf}}}Mb}{{{d{AKh}}{d{AKh}}}Mb}{{{d{AKj}}{d{AKj}}}Mb}{{{d{AKl}}{d{AKl}}}Mb}{{{d{AKn}}{d{AKn}}}Mb}{{{d{AL`}}{d{AL`}}}Mb}{{{d{ALb}}{d{ALb}}}Mb}{{{d{ALd}}{d{ALd}}}Mb}{{{d{ALf}}{d{ALf}}}Mb}{{{d{ALh}}{d{ALh}}}Mb}{{{d{ALj}}{d{ALj}}}Mb}{{{d{ALl}}{d{ALl}}}Mb}{{{d{ALn}}{d{ALn}}}Mb}{{{d{AM`}}{d{AM`}}}Mb}{{{d{AMb}}{d{AMb}}}Mb}{{{d{AMd}}{d{AMd}}}Mb}{{{d{AMf}}{d{AMf}}}Mb}{{{d{AMh}}{d{AMh}}}Mb}{{{d{AMj}}{d{AMj}}}Mb}{{{d{Nd}}{d{Nd}}}Mb}{{{d{Nf}}{d{Nf}}}Mb}{{{d{AMl}}{d{AMl}}}Mb}{{{d{AMn}}{d{AMn}}}Mb}{{{d{Nb}}{d{Nb}}}Mb}{{{d{AN`}}{d{AN`}}}Mb}{{{d{ANb}}{d{ANb}}}Mb}{{{d{ANd}}{d{ANd}}}Mb}{{{d{ANf}}{d{ANf}}}Mb}{{{d{ANh}}{d{ANh}}}Mb}{{{d{ANj}}{d{ANj}}}Mb}{{{d{ANl}}{d{ANl}}}Mb}{{{d{ANn}}{d{ANn}}}Mb}{{{d{AO`}}{d{AO`}}}Mb}{{{d{AOb}}{d{AOb}}}Mb}{{{d{AOd}}{d{AOd}}}Mb}{{{d{AOf}}{d{AOf}}}Mb}{{{d{AOh}}{d{AOh}}}Mb}{{{d{AOj}}{d{AOj}}}Mb}{{{d{AOl}}{d{AOl}}}Mb}{{{d{AOn}}{d{AOn}}}Mb}{{{d{B@`}}{d{B@`}}}Mb}{{{d{B@b}}{d{B@b}}}Mb}{{{d{B@d}}{d{B@d}}}Mb}{{{d{B@f}}{d{B@f}}}Mb}{{{d{B@h}}{d{B@h}}}Mb}{{{d{B@j}}{d{B@j}}}Mb}{{{d{B@l}}{d{B@l}}}Mb}{{{d{B@n}}{d{B@n}}}Mb}{{{d{BA`}}{d{BA`}}}Mb}{{{d{BAb}}{d{BAb}}}Mb}{{{d{BAd}}{d{BAd}}}Mb}{{{d{BAf}}{d{BAf}}}Mb}{{{d{BAh}}{d{BAh}}}Mb}{{{d{BAj}}{d{BAj}}}Mb}{{{d{BAl}}{d{BAl}}}Mb}{{{d{BAn}}{d{BAn}}}Mb}{{{d{BB`}}{d{BB`}}}Mb}{{{d{BBb}}{d{BBb}}}Mb}{{{d{BBd}}{d{BBd}}}Mb}{{{d{BBf}}{d{BBf}}}Mb}{{{d{BBh}}{d{BBh}}}Mb}{{{d{BBj}}{d{BBj}}}Mb}{{{d{BBl}}{d{BBl}}}Mb}{{{d{BBn}}{d{BBn}}}Mb}{{{d{BC`}}{d{BC`}}}Mb}{{{d{BCb}}{d{BCb}}}Mb}{{{d{BCd}}{d{BCd}}}Mb}{{{d{BCf}}{d{BCf}}}Mb}{{{d{BCh}}{d{BCh}}}Mb}{{{d{BCj}}{d{BCj}}}Mb}{{{d{BCl}}{d{BCl}}}Mb}{{{d{BCn}}{d{BCn}}}Mb}{{{d{BD`}}{d{BD`}}}Mb}{{{d{BDb}}{d{BDb}}}Mb}{{{d{BDd}}{d{BDd}}}Mb}{{{d{BDf}}{d{BDf}}}Mb}{{{d{BDh}}{d{BDh}}}Mb}{{{d{BDj}}{d{BDj}}}Mb}{{{d{BDl}}{d{BDl}}}Mb}{{{d{BDn}}{d{BDn}}}Mb}{{{d{BE`}}{d{BE`}}}Mb}{{{d{BEb}}{d{BEb}}}Mb}{{{d{BEd}}{d{BEd}}}Mb}{{{d{BEf}}{d{BEf}}}Mb}{{{d{BEh}}{d{BEh}}}Mb}{{{d{AIf}}{d{AbMh}}}Mn}{{{d{Nj}}{d{AbMh}}}Mn}{{{d{AIh}}{d{AbMh}}}Mn}{{{d{AIj}}{d{AbMh}}}Mn}{{{d{AIl}}{d{AbMh}}}Mn}{{{d{AIn}}{d{AbMh}}}Mn}{{{d{AJ`}}{d{AbMh}}}Mn}{{{d{AJb}}{d{AbMh}}}Mn}{{{d{AJd}}{d{AbMh}}}Mn}{{{d{AJf}}{d{AbMh}}}Mn}{{{d{AJh}}{d{AbMh}}}Mn}{{{d{AJj}}{d{AbMh}}}Mn}{{{d{N`}}{d{AbMh}}}Mn}{{{d{AJl}}{d{AbMh}}}Mn}{{{d{AJn}}{d{AbMh}}}Mn}{{{d{AK`}}{d{AbMh}}}Mn}{{{d{AKb}}{d{AbMh}}}Mn}{{{d{AKd}}{d{AbMh}}}Mn}{{{d{Nh}}{d{AbMh}}}Mn}{{{d{AKf}}{d{AbMh}}}Mn}{{{d{AKh}}{d{AbMh}}}Mn}{{{d{AKj}}{d{AbMh}}}Mn}{{{d{AKl}}{d{AbMh}}}Mn}{{{d{AKn}}{d{AbMh}}}Mn}{{{d{AL`}}{d{AbMh}}}Mn}{{{d{ALb}}{d{AbMh}}}Mn}{{{d{ALd}}{d{AbMh}}}Mn}{{{d{ALf}}{d{AbMh}}}Mn}{{{d{ALh}}{d{AbMh}}}Mn}{{{d{ALj}}{d{AbMh}}}Mn}{{{d{ALl}}{d{AbMh}}}Mn}{{{d{ALn}}{d{AbMh}}}Mn}{{{d{AM`}}{d{AbMh}}}Mn}{{{d{AMb}}{d{AbMh}}}Mn}{{{d{AMd}}{d{AbMh}}}Mn}{{{d{AMf}}{d{AbMh}}}Mn}{{{d{AMh}}{d{AbMh}}}Mn}{{{d{AMj}}{d{AbMh}}}Mn}{{{d{Nd}}{d{AbMh}}}Mn}{{{d{Nf}}{d{AbMh}}}Mn}{{{d{AMl}}{d{AbMh}}}Mn}{{{d{AMn}}{d{AbMh}}}Mn}{{{d{Nb}}{d{AbMh}}}Mn}{{{d{AN`}}{d{AbMh}}}Mn}{{{d{ANb}}{d{AbMh}}}Mn}{{{d{ANd}}{d{AbMh}}}Mn}{{{d{ANf}}{d{AbMh}}}Mn}{{{d{ANh}}{d{AbMh}}}Mn}{{{d{ANj}}{d{AbMh}}}Mn}{{{d{ANl}}{d{AbMh}}}Mn}{{{d{ANn}}{d{AbMh}}}Mn}{{{d{AO`}}{d{AbMh}}}Mn}{{{d{AOb}}{d{AbMh}}}Mn}{{{d{AOd}}{d{AbMh}}}Mn}{{{d{AOf}}{d{AbMh}}}Mn}{{{d{AOh}}{d{AbMh}}}Mn}{{{d{AOj}}{d{AbMh}}}Mn}{{{d{AOl}}{d{AbMh}}}Mn}{{{d{AOn}}{d{AbMh}}}Mn}{{{d{B@`}}{d{AbMh}}}Mn}{{{d{B@b}}{d{AbMh}}}Mn}{{{d{B@d}}{d{AbMh}}}Mn}{{{d{B@f}}{d{AbMh}}}Mn}{{{d{B@h}}{d{AbMh}}}Mn}{{{d{B@j}}{d{AbMh}}}Mn}{{{d{B@l}}{d{AbMh}}}Mn}{{{d{B@n}}{d{AbMh}}}Mn}{{{d{BA`}}{d{AbMh}}}Mn}{{{d{BAb}}{d{AbMh}}}Mn}{{{d{BAd}}{d{AbMh}}}Mn}{{{d{BAf}}{d{AbMh}}}Mn}{{{d{BAh}}{d{AbMh}}}Mn}{{{d{BAj}}{d{AbMh}}}Mn}{{{d{BAl}}{d{AbMh}}}Mn}{{{d{BAn}}{d{AbMh}}}Mn}{{{d{BB`}}{d{AbMh}}}Mn}{{{d{BBb}}{d{AbMh}}}Mn}{{{d{BBd}}{d{AbMh}}}Mn}{{{d{BBf}}{d{AbMh}}}Mn}{{{d{BBh}}{d{AbMh}}}Mn}{{{d{BBj}}{d{AbMh}}}Mn}{{{d{BBl}}{d{AbMh}}}Mn}{{{d{BBn}}{d{AbMh}}}Mn}{{{d{BC`}}{d{AbMh}}}Mn}{{{d{BCb}}{d{AbMh}}}Mn}{{{d{BCd}}{d{AbMh}}}Mn}{{{d{BCf}}{d{AbMh}}}Mn}{{{d{BCh}}{d{AbMh}}}Mn}{{{d{BCj}}{d{AbMh}}}Mn}{{{d{BCl}}{d{AbMh}}}Mn}{{{d{BCn}}{d{AbMh}}}Mn}{{{d{BD`}}{d{AbMh}}}Mn}{{{d{BDb}}{d{AbMh}}}Mn}{{{d{BDd}}{d{AbMh}}}Mn}{{{d{BDf}}{d{AbMh}}}Mn}{{{d{BDh}}{d{AbMh}}}Mn}{{{d{BDj}}{d{AbMh}}}Mn}{{{d{BDl}}{d{AbMh}}}Mn}{{{d{BDn}}{d{AbMh}}}Mn}{{{d{BE`}}{d{AbMh}}}Mn}{{{d{BEb}}{d{AbMh}}}Mn}{{{d{BEd}}{d{AbMh}}}Mn}{{{d{BEf}}{d{AbMh}}}Mn}{{{d{BEh}}{d{AbMh}}}Mn}{cc{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{d{AIf}}{d{Abc}}}LnABd}{{{d{Nj}}{d{Abc}}}LnABd}{{{d{AIh}}{d{Abc}}}LnABd}{{{d{AIj}}{d{Abc}}}LnABd}{{{d{AIl}}{d{Abc}}}LnABd}{{{d{AIn}}{d{Abc}}}LnABd}{{{d{AJ`}}{d{Abc}}}LnABd}{{{d{AJb}}{d{Abc}}}LnABd}{{{d{AJd}}{d{Abc}}}LnABd}{{{d{AJf}}{d{Abc}}}LnABd}{{{d{AJh}}{d{Abc}}}LnABd}{{{d{AJj}}{d{Abc}}}LnABd}{{{d{N`}}{d{Abc}}}LnABd}{{{d{AJl}}{d{Abc}}}LnABd}{{{d{AJn}}{d{Abc}}}LnABd}{{{d{AK`}}{d{Abc}}}LnABd}{{{d{AKb}}{d{Abc}}}LnABd}{{{d{AKd}}{d{Abc}}}LnABd}{{{d{Nh}}{d{Abc}}}LnABd}{{{d{AKf}}{d{Abc}}}LnABd}{{{d{AKh}}{d{Abc}}}LnABd}{{{d{AKj}}{d{Abc}}}LnABd}{{{d{AKl}}{d{Abc}}}LnABd}{{{d{AKn}}{d{Abc}}}LnABd}{{{d{AL`}}{d{Abc}}}LnABd}{{{d{ALb}}{d{Abc}}}LnABd}{{{d{ALd}}{d{Abc}}}LnABd}{{{d{ALf}}{d{Abc}}}LnABd}{{{d{ALh}}{d{Abc}}}LnABd}{{{d{ALj}}{d{Abc}}}LnABd}{{{d{ALl}}{d{Abc}}}LnABd}{{{d{ALn}}{d{Abc}}}LnABd}{{{d{AM`}}{d{Abc}}}LnABd}{{{d{AMb}}{d{Abc}}}LnABd}{{{d{AMd}}{d{Abc}}}LnABd}{{{d{AMf}}{d{Abc}}}LnABd}{{{d{AMh}}{d{Abc}}}LnABd}{{{d{AMj}}{d{Abc}}}LnABd}{{{d{Nd}}{d{Abc}}}LnABd}{{{d{Nf}}{d{Abc}}}LnABd}{{{d{AMl}}{d{Abc}}}LnABd}{{{d{AMn}}{d{Abc}}}LnABd}{{{d{Nb}}{d{Abc}}}LnABd}{{{d{AN`}}{d{Abc}}}LnABd}{{{d{ANb}}{d{Abc}}}LnABd}{{{d{ANd}}{d{Abc}}}LnABd}{{{d{ANf}}{d{Abc}}}LnABd}{{{d{ANh}}{d{Abc}}}LnABd}{{{d{ANj}}{d{Abc}}}LnABd}{{{d{ANl}}{d{Abc}}}LnABd}{{{d{ANn}}{d{Abc}}}LnABd}{{{d{AO`}}{d{Abc}}}LnABd}{{{d{AOb}}{d{Abc}}}LnABd}{{{d{AOd}}{d{Abc}}}LnABd}{{{d{AOf}}{d{Abc}}}LnABd}{{{d{AOh}}{d{Abc}}}LnABd}{{{d{AOj}}{d{Abc}}}LnABd}{{{d{AOl}}{d{Abc}}}LnABd}{{{d{AOn}}{d{Abc}}}LnABd}{{{d{B@`}}{d{Abc}}}LnABd}{{{d{B@b}}{d{Abc}}}LnABd}{{{d{B@d}}{d{Abc}}}LnABd}{{{d{B@f}}{d{Abc}}}LnABd}{{{d{B@h}}{d{Abc}}}LnABd}{{{d{B@j}}{d{Abc}}}LnABd}{{{d{B@l}}{d{Abc}}}LnABd}{{{d{B@n}}{d{Abc}}}LnABd}{{{d{BA`}}{d{Abc}}}LnABd}{{{d{BAb}}{d{Abc}}}LnABd}{{{d{BAd}}{d{Abc}}}LnABd}{{{d{BAf}}{d{Abc}}}LnABd}{{{d{BAh}}{d{Abc}}}LnABd}{{{d{BAj}}{d{Abc}}}LnABd}{{{d{BAl}}{d{Abc}}}LnABd}{{{d{BAn}}{d{Abc}}}LnABd}{{{d{BB`}}{d{Abc}}}LnABd}{{{d{BBb}}{d{Abc}}}LnABd}{{{d{BBd}}{d{Abc}}}LnABd}{{{d{BBf}}{d{Abc}}}LnABd}{{{d{BBh}}{d{Abc}}}LnABd}{{{d{BBj}}{d{Abc}}}LnABd}{{{d{BBl}}{d{Abc}}}LnABd}{{{d{BBn}}{d{Abc}}}LnABd}{{{d{BC`}}{d{Abc}}}LnABd}{{{d{BCb}}{d{Abc}}}LnABd}{{{d{BCd}}{d{Abc}}}LnABd}{{{d{BCf}}{d{Abc}}}LnABd}{{{d{BCh}}{d{Abc}}}LnABd}{{{d{BCj}}{d{Abc}}}LnABd}{{{d{BCl}}{d{Abc}}}LnABd}{{{d{BCn}}{d{Abc}}}LnABd}{{{d{BD`}}{d{Abc}}}LnABd}{{{d{BDb}}{d{Abc}}}LnABd}{{{d{BDd}}{d{Abc}}}LnABd}{{{d{BDf}}{d{Abc}}}LnABd}{{{d{BDh}}{d{Abc}}}LnABd}{{{d{BDj}}{d{Abc}}}LnABd}{{{d{BDl}}{d{Abc}}}LnABd}{{{d{BDn}}{d{Abc}}}LnABd}{{{d{BE`}}{d{Abc}}}LnABd}{{{d{BEb}}{d{Abc}}}LnABd}{{{d{BEd}}{d{Abc}}}LnABd}{{{d{BEf}}{d{Abc}}}LnABd}{{{d{BEh}}{d{Abc}}}LnABd}{{}c{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{ACh{{n{Nj}}}}{ACh{{n{AIh}}}}{ACh{{n{AIj}}}}{ACh{{n{AIl}}}}{ACh{{n{AIn}}}}{ACh{{n{AJ`}}}}{ACh{{n{AJb}}}}{ACh{{n{AJd}}}}{ACh{{n{AJf}}}}{ACh{{n{AJh}}}}{ACh{{n{AJj}}}}{ACh{{n{N`}}}}{ACh{{n{AJl}}}}{ACh{{n{AJn}}}}{ACh{{n{AK`}}}}{ACh{{n{AKb}}}}{ACh{{n{AKd}}}}{ACh{{n{Nh}}}}{ACh{{n{AKf}}}}{ACh{{n{AKh}}}}{ACh{{n{AKj}}}}{ACh{{n{AKl}}}}{ACh{{n{AKn}}}}{ACh{{n{AL`}}}}{ACh{{n{ALb}}}}{ACh{{n{ALd}}}}{ACh{{n{ALf}}}}{ACh{{n{ALh}}}}{ACh{{n{ALj}}}}{ACh{{n{ALl}}}}{ACh{{n{ALn}}}}{ACh{{n{AM`}}}}{ACh{{n{AMb}}}}{ACh{{n{AMd}}}}{ACh{{n{AMf}}}}{ACh{{n{AMh}}}}{ACh{{n{AMj}}}}{ACh{{n{Nd}}}}{ACh{{n{Nf}}}}{ACh{{n{AMl}}}}{ACh{{n{AMn}}}}{ACh{{n{Nb}}}}{ACh{{n{AN`}}}}{ACh{{n{ANb}}}}{ACh{{n{ANd}}}}{ACh{{n{ANf}}}}{ACh{{n{ANh}}}}{ACh{{n{ANj}}}}{ACh{{n{ANl}}}}{ACh{{n{ANn}}}}{ACh{{n{AO`}}}}{ACh{{n{AOb}}}}{ACh{{n{AOd}}}}{ACh{{n{AOf}}}}{ACh{{n{AOh}}}}{ACh{{n{AOj}}}}{ACh{{n{AOl}}}}{ACh{{n{AOn}}}}{ACh{{n{B@`}}}}{ACh{{n{B@b}}}}{ACh{{n{B@d}}}}{ACh{{n{B@f}}}}{ACh{{n{B@h}}}}{ACh{{n{B@j}}}}{ACh{{n{B@l}}}}{ACh{{n{B@n}}}}{ACh{{n{BA`}}}}{ACh{{n{BAb}}}}{ACh{{n{BAd}}}}{ACh{{n{BAf}}}}{ACh{{n{BAh}}}}{ACh{{n{BAj}}}}{ACh{{n{BAl}}}}{ACh{{n{BAn}}}}{ACh{{n{BB`}}}}{ACh{{n{BBb}}}}{ACh{{n{BBd}}}}{ACh{{n{BBf}}}}{ACh{{n{BBh}}}}{ACh{{n{BBj}}}}{ACh{{n{BBl}}}}{ACh{{n{BBn}}}}{ACh{{n{BC`}}}}{ACh{{n{BCb}}}}{ACh{{n{BCd}}}}{ACh{{n{BCf}}}}{ACh{{n{BCh}}}}{ACh{{n{BCj}}}}{ACh{{n{BCl}}}}{ACh{{n{BCn}}}}{ACh{{n{BD`}}}}{ACh{{n{BDb}}}}{ACh{{n{BDd}}}}{ACh{{n{BDf}}}}{ACh{{n{BDh}}}}{ACh{{n{BDj}}}}{ACh{{n{BDl}}}}{ACh{{n{BDn}}}}{ACh{{n{BE`}}}}{ACh{{n{BEb}}}}{dABj}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000````````````````````````````````````````````````````````````````````````````````````````````````````````{{{d{AIf}}{d{AbACj}}c}Ln{{AGh{{d{AbACj}}}}}}{{{d{BEd}}{d{AbACj}}c}Ln{{AGh{{d{AbACj}}}}}}{{{d{BEf}}{d{AbACj}}c}Ln{{AGh{{d{AbACj}}}}}}{{{d{BEh}}{d{AbACj}}c}Ln{{AGh{{d{AbACj}}}}}}{dc{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{d{Nj}}{d{AbACj}}}Ln}{{{d{AIh}}{d{AbACj}}}Ln}{{{d{AIj}}{d{AbACj}}}Ln}{{{d{AIl}}{d{AbACj}}}Ln}{{{d{AIn}}{d{AbACj}}}Ln}{{{d{AJ`}}{d{AbACj}}}Ln}{{{d{AJb}}{d{AbACj}}}Ln}{{{d{AJd}}{d{AbACj}}}Ln}{{{d{AJf}}{d{AbACj}}}Ln}{{{d{AJh}}{d{AbACj}}}Ln}{{{d{AJj}}{d{AbACj}}}Ln}{{{d{N`}}{d{AbACj}}}Ln}{{{d{AJl}}{d{AbACj}}}Ln}{{{d{AJn}}{d{AbACj}}}Ln}{{{d{AK`}}{d{AbACj}}}Ln}{{{d{AKb}}{d{AbACj}}}Ln}{{{d{AKd}}{d{AbACj}}}Ln}{{{d{Nh}}{d{AbACj}}}Ln}{{{d{AKf}}{d{AbACj}}}Ln}{{{d{AKh}}{d{AbACj}}}Ln}{{{d{AKj}}{d{AbACj}}}Ln}{{{d{AKl}}{d{AbACj}}}Ln}{{{d{AKn}}{d{AbACj}}}Ln}{{{d{AL`}}{d{AbACj}}}Ln}{{{d{ALb}}{d{AbACj}}}Ln}{{{d{ALd}}{d{AbACj}}}Ln}{{{d{ALf}}{d{AbACj}}}Ln}{{{d{ALh}}{d{AbACj}}}Ln}{{{d{ALj}}{d{AbACj}}}Ln}{{{d{ALl}}{d{AbACj}}}Ln}{{{d{ALn}}{d{AbACj}}}Ln}{{{d{AM`}}{d{AbACj}}}Ln}{{{d{AMb}}{d{AbACj}}}Ln}{{{d{AMd}}{d{AbACj}}}Ln}{{{d{AMf}}{d{AbACj}}}Ln}{{{d{AMh}}{d{AbACj}}}Ln}{{{d{AMj}}{d{AbACj}}}Ln}{{{d{Nd}}{d{AbACj}}}Ln}{{{d{Nf}}{d{AbACj}}}Ln}{{{d{AMl}}{d{AbACj}}}Ln}{{{d{AMn}}{d{AbACj}}}Ln}{{{d{Nb}}{d{AbACj}}}Ln}{{{d{AN`}}{d{AbACj}}}Ln}{{{d{ANb}}{d{AbACj}}}Ln}{{{d{ANd}}{d{AbACj}}}Ln}{{{d{ANf}}{d{AbACj}}}Ln}{{{d{ANh}}{d{AbACj}}}Ln}{{{d{ANj}}{d{AbACj}}}Ln}{{{d{ANl}}{d{AbACj}}}Ln}{{{d{ANn}}{d{AbACj}}}Ln}{{{d{AO`}}{d{AbACj}}}Ln}{{{d{AOb}}{d{AbACj}}}Ln}{{{d{AOd}}{d{AbACj}}}Ln}{{{d{AOf}}{d{AbACj}}}Ln}{{{d{AOh}}{d{AbACj}}}Ln}{{{d{AOj}}{d{AbACj}}}Ln}{{{d{AOl}}{d{AbACj}}}Ln}{{{d{AOn}}{d{AbACj}}}Ln}{{{d{B@`}}{d{AbACj}}}Ln}{{{d{B@b}}{d{AbACj}}}Ln}{{{d{B@d}}{d{AbACj}}}Ln}{{{d{B@f}}{d{AbACj}}}Ln}{{{d{B@h}}{d{AbACj}}}Ln}{{{d{B@j}}{d{AbACj}}}Ln}{{{d{B@l}}{d{AbACj}}}Ln}{{{d{B@n}}{d{AbACj}}}Ln}{{{d{BA`}}{d{AbACj}}}Ln}{{{d{BAb}}{d{AbACj}}}Ln}{{{d{BAd}}{d{AbACj}}}Ln}{{{d{BAf}}{d{AbACj}}}Ln}{{{d{BAh}}{d{AbACj}}}Ln}{{{d{BAj}}{d{AbACj}}}Ln}{{{d{BAl}}{d{AbACj}}}Ln}{{{d{BAn}}{d{AbACj}}}Ln}{{{d{BB`}}{d{AbACj}}}Ln}{{{d{BBb}}{d{AbACj}}}Ln}{{{d{BBd}}{d{AbACj}}}Ln}{{{d{BBf}}{d{AbACj}}}Ln}{{{d{BBh}}{d{AbACj}}}Ln}{{{d{BBj}}{d{AbACj}}}Ln}{{{d{BBl}}{d{AbACj}}}Ln}{{{d{BBn}}{d{AbACj}}}Ln}{{{d{BC`}}{d{AbACj}}}Ln}{{{d{BCb}}{d{AbACj}}}Ln}{{{d{BCd}}{d{AbACj}}}Ln}{{{d{BCf}}{d{AbACj}}}Ln}{{{d{BCh}}{d{AbACj}}}Ln}{{{d{BCj}}{d{AbACj}}}Ln}{{{d{BCl}}{d{AbACj}}}Ln}{{{d{BCn}}{d{AbACj}}}Ln}{{{d{BD`}}{d{AbACj}}}Ln}{{{d{BDb}}{d{AbACj}}}Ln}{{{d{BDd}}{d{AbACj}}}Ln}{{{d{BDf}}{d{AbACj}}}Ln}{{{d{BDh}}{d{AbACj}}}Ln}{{{d{BDj}}{d{AbACj}}}Ln}{{{d{BDl}}{d{AbACj}}}Ln}{{{d{BDn}}{d{AbACj}}}Ln}{{{d{BE`}}{d{AbACj}}}Ln}{{{d{BEb}}{d{AbACj}}}Ln}{c{{Ml{e}}}{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{}{{Ml{c}}}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{dADl}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`{{{d{Abc}}{d{Lf}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Lf}}}Ln}0{{{d{Abc}}{d{If}}}Ln{BEjMf}}{{{d{AbBEj}}{d{If}}}Ln}0{{{d{Abc}}{d{Ij}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Ij}}}Ln}0{{{d{Abc}}{d{Ih}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Ih}}}Ln}0{{{d{Abc}}{d{Al}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Al}}}Ln}0{{{d{Abc}}{d{Aj}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Aj}}}Ln}0{{{d{Abc}}{d{Lh}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Lh}}}Ln}0{{{d{Abc}}{d{Lj}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Lj}}}Ln}0{{{d{Abc}}{d{Hj}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Hj}}}Ln}0{{{d{Abc}}{d{Fh}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Fh}}}Ln}0{{{d{Abc}}{d{Ff}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Ff}}}Ln}0{{{d{Abc}}{d{Il}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Il}}}Ln}0{{{d{Abc}}{d{C`}}}Ln{BEjMf}}{{{d{AbBEj}}{d{C`}}}Ln}0{{{d{Abc}}{d{Cd}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Cd}}}Ln}0{{{d{Abc}}{d{Cb}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Cb}}}Ln}0{{{d{Abc}}{d{Cf}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Cf}}}Ln}0{{{d{Abc}}{d{Bn}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Bn}}}Ln}0{{{d{Abc}}{d{Ch}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Ch}}}Ln}0{{{d{Abc}}{d{Cj}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Cj}}}Ln}0{{{d{Abc}}{d{Cl}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Cl}}}Ln}0{{{d{Abc}}{d{Cn}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Cn}}}Ln}0{{{d{Abc}}{d{D`}}}Ln{BEjMf}}{{{d{AbBEj}}{d{D`}}}Ln}0{{{d{Abc}}{d{Db}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Db}}}Ln}0{{{d{Abc}}{d{Dd}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Dd}}}Ln}0{{{d{Abc}}{d{Df}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Df}}}Ln}0{{{d{Abc}}{d{Dh}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Dh}}}Ln}0{{{d{Abc}}{d{Dj}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Dj}}}Ln}0{{{d{Abc}}{d{Dl}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Dl}}}Ln}0{{{d{Abc}}{d{Dn}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Dn}}}Ln}0{{{d{Abc}}{d{E`}}}Ln{BEjMf}}{{{d{AbBEj}}{d{E`}}}Ln}0{{{d{Abc}}{d{Eb}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Eb}}}Ln}0{{{d{Abc}}{d{Ed}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Ed}}}Ln}0{{{d{Abc}}{d{Ef}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Ef}}}Ln}0{{{d{Abc}}{d{Bl}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Bl}}}Ln}0{{{d{Abc}}{d{Jf}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Jf}}}Ln}0{{{d{Abc}}{d{El}}}Ln{BEjMf}}{{{d{AbBEj}}{d{El}}}Ln}0{{{d{Abc}}{d{Bf}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Bf}}}Ln}0{{{d{Abc}}{d{Bh}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Bh}}}Ln}0{{{d{Abc}}{d{Bj}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Bj}}}Ln}0{{{d{Abc}}{d{Id}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Id}}}Ln}0{{{d{Abc}}{d{F`}}}Ln{BEjMf}}{{{d{AbBEj}}{d{F`}}}Ln}0{{{d{Abc}}{d{En}}}Ln{BEjMf}}{{{d{AbBEj}}{d{En}}}Ln}0{{{d{Abc}}{d{Ad}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Ad}}}Ln}0{{{d{Abc}}{d{Ej}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Ej}}}Ln}0{{{d{Abc}}{d{Ah}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Ah}}}Ln}0{{{d{Abc}}{d{Fb}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Fb}}}Ln}0{{{d{Abc}}{d{Gh}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Gh}}}Ln}0{{{d{Abc}}{d{Hd}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Hd}}}Ln}0{{{d{Abc}}{d{H`}}}Ln{BEjMf}}{{{d{AbBEj}}{d{H`}}}Ln}0{{{d{Abc}}{d{Gl}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Gl}}}Ln}0{{{d{Abc}}{d{Hb}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Hb}}}Ln}0{{{d{Abc}}{d{Gn}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Gn}}}Ln}0{{{d{Abc}}{d{l}}}Ln{BEjMf}}{{{d{AbBEj}}{d{l}}}Ln}0{{{d{Abc}}{d{h}}}Ln{BEjMf}}{{{d{AbBEj}}{d{h}}}Ln}0{{{d{Abc}}{d{Gj}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Gj}}}Ln}0{{{d{Abc}}{d{Hf}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Hf}}}Ln}0{{{d{Abc}}{d{Hh}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Hh}}}Ln}0{{{d{Abc}}{d{Eh}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Eh}}}Ln}0{{{d{Abc}}{d{An}}}Ln{BEjMf}}{{{d{AbBEj}}{d{An}}}Ln}0{{{d{Abc}}{d{B`}}}Ln{BEjMf}}{{{d{AbBEj}}{d{B`}}}Ln}0{{{d{Abc}}{d{Bb}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Bb}}}Ln}0{{{d{Abc}}{d{In}}}Ln{BEjMf}}{{{d{AbBEj}}{d{In}}}Ln}0{{{d{Abc}}{d{Hn}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Hn}}}Ln}0{{{d{Abc}}{d{Ib}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Ib}}}Ln}0{{{d{Abc}}{d{I`}}}Ln{BEjMf}}{{{d{AbBEj}}{d{I`}}}Ln}0{{{d{Abc}}{d{Gd}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Gd}}}Ln}0{{{d{Abc}}{d{Gf}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Gf}}}Ln}0{{{d{Abc}}{d{J`}}}Ln{BEjMf}}{{{d{AbBEj}}{d{J`}}}Ln}0{{{d{Abc}}{d{Ll}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Ll}}}Ln}0{{{d{Abc}}{d{ABj}}}Ln{BEjMf}}{{{d{AbBEj}}{d{ABj}}}Ln}0{{{d{Abc}}{d{Fl}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Fl}}}Ln}0{{{d{Abc}}{d{Fn}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Fn}}}Ln}0{{{d{Abc}}{d{Jh}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Jh}}}Ln}0{{{d{Abc}}{d{Jj}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Jj}}}Ln}0{{{d{Abc}}{d{Jl}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Jl}}}Ln}0{{{d{Abc}}{d{Jn}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Jn}}}Ln}0{{{d{Abc}}{d{K`}}}Ln{BEjMf}}{{{d{AbBEj}}{d{K`}}}Ln}0{{{d{Abc}}{d{Kb}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Kb}}}Ln}0{{{d{Abc}}{d{Kd}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Kd}}}Ln}0{{{d{Abc}}{d{Kf}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Kf}}}Ln}0{{{d{Abc}}{d{Fd}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Fd}}}Ln}0{{{d{Abc}}{d{Fj}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Fj}}}Ln}0{{{d{Abc}}{d{Kh}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Kh}}}Ln}0{{{d{Abc}}{d{Kj}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Kj}}}Ln}0{{{d{Abc}}{d{Kl}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Kl}}}Ln}0{{{d{Abc}}{d{Kn}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Kn}}}Ln}0{{{d{Abc}}{d{L`}}}Ln{BEjMf}}{{{d{AbBEj}}{d{L`}}}Ln}0{{{d{Abc}}{d{Lb}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Lb}}}Ln}0{{{d{Abc}}{d{Ld}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Ld}}}Ln}0{{{d{Abc}}{d{Hl}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Hl}}}Ln}0{{{d{Abc}}{d{Bd}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Bd}}}Ln}0{{{d{Abc}}{d{Jd}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Jd}}}Ln}0{{{d{Abc}}{d{Jb}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Jb}}}Ln}0{{{d{Abc}}{d{G`}}}Ln{BEjMf}}{{{d{AbBEj}}{d{G`}}}Ln}0{{{d{Abc}}{d{Gb}}}Ln{BEjMf}}{{{d{AbBEj}}{d{Gb}}}Ln}0","D":"H@f","p":[[5,"TypeGenerics",0,5302],[1,"reference"],[5,"Turbofish",0,5302],[5,"LitInt",0,5303],[1,"str"],[5,"LitFloat",0,5303],[8,"Result",2599,5304],[10,"FromStr",5305],[0,"mut"],[5,"Ident",0,5306],[5,"ImplGenerics",0,5302],[5,"Lifetime",0,5307],[5,"Attribute",0,5308],[6,"AttrStyle",0,5308],[6,"Meta",0,5308],[5,"MetaList",0,5308],[5,"MetaNameValue",0,5308],[5,"Variant",0,5309],[6,"Fields",0,5309],[5,"FieldsNamed",0,5309],[5,"FieldsUnnamed",0,5309],[5,"Field",0,5309],[5,"DeriveInput",0,5310],[6,"Data",0,5310],[5,"DataStruct",0,5310],[5,"DataEnum",0,5310],[5,"DataUnion",0,5310],[6,"Expr",0,5311],[5,"ExprBinary",0,5311],[5,"ExprCall",0,5311],[5,"ExprCast",0,5311],[5,"ExprField",0,5311],[5,"ExprGroup",0,5311],[5,"ExprIndex",0,5311],[5,"ExprLit",0,5311],[5,"ExprMacro",0,5311],[5,"ExprMethodCall",0,5311],[5,"ExprParen",0,5311],[5,"ExprPath",0,5311],[5,"ExprReference",0,5311],[5,"ExprStruct",0,5311],[5,"ExprTuple",0,5311],[5,"ExprUnary",0,5311],[6,"Member",0,5311],[5,"Index",0,5311],[5,"FieldValue",0,5311],[5,"Generics",0,5302],[6,"GenericParam",0,5302],[5,"LifetimeParam",0,5302],[5,"TypeParam",0,5302],[5,"ConstParam",0,5302],[5,"BoundLifetimes",0,5302],[6,"TypeParamBound",0,5302],[5,"TraitBound",0,5302],[6,"TraitBoundModifier",0,5302],[5,"WhereClause",0,5302],[6,"WherePredicate",0,5302],[5,"PredicateLifetime",0,5302],[5,"PredicateType",0,5302],[6,"Lit",0,5303],[5,"LitStr",0,5303],[5,"LitByteStr",0,5303],[5,"LitCStr",0,5303],[5,"LitByte",0,5303],[5,"LitChar",0,5303],[5,"LitBool",0,5303],[5,"Macro",0,5312],[6,"MacroDelimiter",0,5312],[6,"BinOp",0,5313],[6,"UnOp",0,5313],[5,"Path",0,5314],[5,"PathSegment",0,5314],[6,"PathArguments",0,5314],[6,"GenericArgument",0,5314],[5,"AngleBracketedGenericArguments",0,5314],[5,"AssocType",0,5314],[5,"AssocConst",0,5314],[5,"Constraint",0,5314],[5,"ParenthesizedGenericArguments",0,5314],[5,"QSelf",0,5314],[6,"Visibility",0,5315],[5,"VisRestricted",0,5315],[6,"FieldMutability",0,5315],[6,"Type",0,5316],[5,"TypeArray",0,5316],[5,"TypeBareFn",0,5316],[5,"TypeGroup",0,5316],[5,"TypeImplTrait",0,5316],[5,"TypeInfer",0,5316],[5,"TypeMacro",0,5316],[5,"TypeNever",0,5316],[5,"TypeParen",0,5316],[5,"TypePath",0,5316],[5,"TypePtr",0,5316],[5,"TypeReference",0,5316],[5,"TypeSlice",0,5316],[5,"TypeTraitObject",0,5316],[5,"TypeTuple",0,5316],[5,"Abi",0,5316],[5,"BareFnArg",0,5316],[5,"BareVariadic",0,5316],[6,"ReturnType",0,5316],[1,"unit"],[6,"Ordering",5317],[1,"bool"],[10,"AsRef",5318],[10,"Sized",5319],[5,"Formatter",5320],[5,"Error",5320],[6,"Result",5321],[8,"Result",5320],[5,"Crate",2899],[5,"Super",2899],[5,"SelfType",2899],[5,"SelfValue",2899],[5,"Extern",2899],[5,"Underscore",2899],[5,"ExprMatch",0,5311],[5,"ExprRange",0,5311],[5,"ExprLoop",0,5311],[5,"ExprLet",0,5311],[5,"ExprInfer",0,5311],[5,"ExprIf",0,5311],[5,"ExprForLoop",0,5311],[5,"ExprRawAddr",0,5311],[5,"ExprYield",0,5311],[5,"ExprWhile",0,5311],[5,"ExprRepeat",0,5311],[5,"ExprUnsafe",0,5311],[5,"ExprContinue",0,5311],[5,"ExprConst",0,5311],[5,"ExprClosure",0,5311],[5,"ExprTryBlock",0,5311],[5,"ExprArray",0,5311],[5,"ExprAssign",0,5311],[5,"ExprTry",0,5311],[5,"ExprReturn",0,5311],[5,"ExprAsync",0,5311],[5,"ExprAwait",0,5311],[5,"ExprBlock",0,5311],[5,"ExprBreak",0,5311],[1,"usize"],[5,"Literal",5306],[10,"Into",5318],[6,"Option",5322],[10,"Hasher",5323],[5,"Iter",2724],[5,"IterMut",2724],[5,"Span",5306],[1,"u8"],[1,"slice"],[5,"CStr",5324],[1,"char"],[5,"TokenStream",5325],[10,"Parse",2599],[8,"ParseStream",2599],[5,"TokenStream",5306],[10,"Parser",2599],[5,"Vec",5326],[5,"ParseNestedMeta",2585],[17,"Output"],[10,"FnMut",5327],[5,"DelimSpan",5328],[1,"tuple"],[5,"String",5329],[5,"TypeId",5330],[5,"CString",5331],[5,"Cursor",2545],[6,"Delimiter",5306],[5,"TokenBuffer",2545],[5,"Punct",5306],[6,"TokenTree",5306],[10,"IdentExt",2581],[5,"Error",2599,5304],[10,"Display",5320],[5,"ParseBuffer",2599],[1,"fn"],[5,"End",2599,5332],[5,"StepCursor",2599],[5,"Nothing",2599],[5,"Lookahead1",2599,5332],[17,"Item"],[10,"IntoIterator",5333],[5,"LexError",5306],[10,"ToTokens",5334],[5,"Punctuated",2724],[10,"Peek",2599,5332],[10,"FnOnce",5327],[10,"Speculative",2720],[10,"AnyDelimiter",2720],[10,"Clone",5335],[5,"Pairs",2724],[5,"IntoPairs",2724],[5,"IntoIter",2724],[6,"Pair",2724],[10,"PartialEq",5317],[10,"Default",5336],[10,"Debug",5320],[10,"Hash",5323],[5,"PairsMut",2724],[10,"Token",2899],[10,"Spanned",2897],[5,"Group",2899],[5,"Abstract",2899],[5,"As",2899],[5,"Async",2899],[5,"Auto",2899],[5,"Await",2899],[5,"Become",2899],[5,"Box",2899],[5,"Break",2899],[5,"Const",2899],[5,"Continue",2899],[5,"Default",2899],[5,"Do",2899],[5,"Dyn",2899],[5,"Else",2899],[5,"Enum",2899],[5,"Final",2899],[5,"Fn",2899],[5,"For",2899],[5,"If",2899],[5,"Impl",2899],[5,"In",2899],[5,"Let",2899],[5,"Loop",2899],[5,"Macro",2899],[5,"Match",2899],[5,"Mod",2899],[5,"Move",2899],[5,"Mut",2899],[5,"Override",2899],[5,"Priv",2899],[5,"Pub",2899],[5,"Raw",2899],[5,"Ref",2899],[5,"Return",2899],[5,"Static",2899],[5,"Struct",2899],[5,"Trait",2899],[5,"Try",2899],[5,"Type",2899],[5,"Typeof",2899],[5,"Union",2899],[5,"Unsafe",2899],[5,"Unsized",2899],[5,"Use",2899],[5,"Virtual",2899],[5,"Where",2899],[5,"While",2899],[5,"Yield",2899],[5,"And",2899],[5,"AndAnd",2899],[5,"AndEq",2899],[5,"At",2899],[5,"Caret",2899],[5,"CaretEq",2899],[5,"Colon",2899],[5,"Comma",2899],[5,"Dollar",2899],[5,"Dot",2899],[5,"DotDot",2899],[5,"DotDotDot",2899],[5,"DotDotEq",2899],[5,"Eq",2899],[5,"EqEq",2899],[5,"FatArrow",2899],[5,"Ge",2899],[5,"Gt",2899],[5,"LArrow",2899],[5,"Le",2899],[5,"Lt",2899],[5,"Minus",2899],[5,"MinusEq",2899],[5,"Ne",2899],[5,"Not",2899],[5,"Or",2899],[5,"OrEq",2899],[5,"OrOr",2899],[5,"PathSep",2899],[5,"Percent",2899],[5,"PercentEq",2899],[5,"Plus",2899],[5,"PlusEq",2899],[5,"Pound",2899],[5,"Question",2899],[5,"RArrow",2899],[5,"Semi",2899],[5,"Shl",2899],[5,"ShlEq",2899],[5,"Shr",2899],[5,"ShrEq",2899],[5,"Slash",2899],[5,"SlashEq",2899],[5,"Star",2899],[5,"StarEq",2899],[5,"Tilde",2899],[5,"Brace",2899],[5,"Bracket",2899],[5,"Paren",2899],[10,"Visit",5016,5337]],"r":[[0,5316],[5,5314],[9,5314],[11,5314],[14,5308],[15,5308],[18,5316],[19,5316],[20,5313],[30,5302],[44,5302],[45,5314],[48,5310],[49,5310],[50,5310],[51,5310],[54,5310],[60,5304],[61,5311],[62,5311],[63,5311],[64,5311],[65,5311],[66,5311],[67,5311],[68,5311],[69,5311],[70,5311],[71,5311],[72,5311],[73,5311],[74,5311],[75,5311],[76,5311],[77,5311],[78,5311],[79,5311],[80,5311],[81,5311],[82,5311],[83,5311],[84,5311],[85,5311],[86,5311],[87,5311],[88,5311],[89,5311],[90,5311],[91,5311],[92,5311],[93,5311],[94,5311],[95,5311],[96,5311],[97,5311],[98,5311],[99,5311],[100,5311],[101,5309],[103,5315],[104,5311],[105,5309],[106,5309],[107,5309],[111,5314],[112,5302],[113,5302],[117,5306],[119,5302],[121,5311],[130,5307],[135,5302],[137,5303],[139,5303],[140,5303],[141,5303],[142,5303],[143,5303],[144,5303],[145,5303],[146,5303],[149,5312],[152,5312],[155,5311],[156,5308],[157,5308],[158,5308],[180,5314],[181,5314],[185,5314],[186,5314],[188,5302],[189,5302],[192,5314],[201,5304],[203,5316],[216,5302],[217,5302],[223,5302],[224,5316],[229,5316],[230,5316],[231,5302],[232,5316],[233,5316],[234,5316],[235,5316],[236,5316],[237,5302],[238,5302],[239,5316],[240,5316],[241,5316],[242,5316],[243,5316],[244,5316],[245,5316],[246,5313],[253,5309],[258,5315],[259,5315],[260,5302],[261,5302],[2538,5338],[2599,5332],[2601,5304],[2602,5332],[2610,5332],[2611,5304],[5016,5337],[5017,5337],[5020,5337],[5023,5337],[5026,5337],[5029,5337],[5032,5337],[5035,5337],[5038,5337],[5041,5337],[5044,5337],[5047,5337],[5050,5337],[5053,5337],[5056,5337],[5059,5337],[5062,5337],[5065,5337],[5068,5337],[5071,5337],[5074,5337],[5077,5337],[5080,5337],[5083,5337],[5086,5337],[5089,5337],[5092,5337],[5095,5337],[5098,5337],[5101,5337],[5104,5337],[5107,5337],[5110,5337],[5113,5337],[5116,5337],[5119,5337],[5122,5337],[5125,5337],[5128,5337],[5131,5337],[5134,5337],[5137,5337],[5140,5337],[5143,5337],[5146,5337],[5149,5337],[5152,5337],[5155,5337],[5158,5337],[5161,5337],[5164,5337],[5167,5337],[5170,5337],[5173,5337],[5176,5337],[5179,5337],[5182,5337],[5185,5337],[5188,5337],[5191,5337],[5194,5337],[5197,5337],[5200,5337],[5203,5337],[5206,5337],[5209,5337],[5212,5337],[5215,5337],[5218,5337],[5221,5337],[5224,5337],[5227,5337],[5230,5337],[5233,5337],[5236,5337],[5239,5337],[5242,5337],[5245,5337],[5248,5337],[5251,5337],[5254,5337],[5257,5337],[5260,5337],[5263,5337],[5266,5337],[5269,5337],[5272,5337],[5275,5337],[5278,5337],[5281,5337],[5284,5337],[5287,5337],[5290,5337],[5293,5337],[5296,5337],[5299,5337]],"b":[[898,"impl-PartialEq%3CT%3E-for-Ident"],[899,"impl-PartialEq-for-Ident"],[1014,"impl-Display-for-Ident"],[1015,"impl-IdentFragment-for-Ident"],[1016,"impl-Debug-for-Ident"],[1020,"impl-Display-for-Lifetime"],[1021,"impl-Debug-for-Lifetime"],[1053,"impl-IdentFragment-for-Member"],[1054,"impl-Debug-for-Member"],[1055,"impl-Debug-for-Index"],[1056,"impl-IdentFragment-for-Index"],[1077,"impl-Debug-for-LitInt"],[1078,"impl-Display-for-LitInt"],[1079,"impl-Display-for-LitFloat"],[1080,"impl-Debug-for-LitFloat"],[1121,"impl-From%3CCrate%3E-for-Ident"],[1122,"impl-From%3CSuper%3E-for-Ident"],[1123,"impl-From%3CSelfType%3E-for-Ident"],[1124,"impl-From%3CSelfValue%3E-for-Ident"],[1125,"impl-From%3CExtern%3E-for-Ident"],[1126,"impl-From%3CUnderscore%3E-for-Ident"],[1133,"impl-From%3CMetaNameValue%3E-for-Meta"],[1134,"impl-From%3CMetaList%3E-for-Meta"],[1135,"impl-From%3CPath%3E-for-Meta"],[1141,"impl-From%3CFieldsUnnamed%3E-for-Fields"],[1142,"impl-From%3CFieldsNamed%3E-for-Fields"],[1151,"impl-From%3CExprField%3E-for-Expr"],[1152,"impl-From%3CExprStruct%3E-for-Expr"],[1153,"impl-From%3CExprPath%3E-for-Expr"],[1154,"impl-From%3CExprMethodCall%3E-for-Expr"],[1155,"impl-From%3CExprMatch%3E-for-Expr"],[1156,"impl-From%3CExprMacro%3E-for-Expr"],[1157,"impl-From%3CExprRange%3E-for-Expr"],[1158,"impl-From%3CExprLoop%3E-for-Expr"],[1159,"impl-From%3CExprLit%3E-for-Expr"],[1160,"impl-From%3CExprLet%3E-for-Expr"],[1161,"impl-From%3CExprInfer%3E-for-Expr"],[1162,"impl-From%3CExprIndex%3E-for-Expr"],[1163,"impl-From%3CExprIf%3E-for-Expr"],[1164,"impl-From%3CExprGroup%3E-for-Expr"],[1165,"impl-From%3CExprForLoop%3E-for-Expr"],[1166,"impl-From%3CExprRawAddr%3E-for-Expr"],[1167,"impl-From%3CExprReference%3E-for-Expr"],[1168,"impl-From%3CExprYield%3E-for-Expr"],[1169,"impl-From%3CExprWhile%3E-for-Expr"],[1170,"impl-From%3CExprRepeat%3E-for-Expr"],[1171,"impl-From%3CExprUnsafe%3E-for-Expr"],[1172,"impl-From%3CExprUnary%3E-for-Expr"],[1173,"impl-From%3CExprContinue%3E-for-Expr"],[1174,"impl-From%3CExprTuple%3E-for-Expr"],[1175,"impl-From%3CExprConst%3E-for-Expr"],[1176,"impl-From%3CExprClosure%3E-for-Expr"],[1177,"impl-From%3CExprTryBlock%3E-for-Expr"],[1178,"impl-From%3CExprArray%3E-for-Expr"],[1179,"impl-From%3CExprAssign%3E-for-Expr"],[1180,"impl-From%3CExprTry%3E-for-Expr"],[1181,"impl-From%3CExprReturn%3E-for-Expr"],[1182,"impl-From%3CExprAsync%3E-for-Expr"],[1183,"impl-From%3CExprAwait%3E-for-Expr"],[1184,"impl-From%3CExprBinary%3E-for-Expr"],[1185,"impl-From%3CExprBlock%3E-for-Expr"],[1187,"impl-From%3CExprCast%3E-for-Expr"],[1188,"impl-From%3CExprParen%3E-for-Expr"],[1189,"impl-From%3CExprCall%3E-for-Expr"],[1190,"impl-From%3CExprBreak%3E-for-Expr"],[1230,"impl-From%3CIdent%3E-for-Member"],[1231,"impl-From%3Cusize%3E-for-Member"],[1233,"impl-From%3CIndex%3E-for-Member"],[1238,"impl-From%3CTypeParam%3E-for-GenericParam"],[1240,"impl-From%3CLifetimeParam%3E-for-GenericParam"],[1241,"impl-From%3CConstParam%3E-for-GenericParam"],[1247,"impl-From%3CLifetime%3E-for-TypeParamBound"],[1248,"impl-From%3CTraitBound%3E-for-TypeParamBound"],[1253,"impl-From%3CPredicateLifetime%3E-for-WherePredicate"],[1254,"impl-From%3CPredicateType%3E-for-WherePredicate"],[1258,"impl-From%3CLitChar%3E-for-Lit"],[1259,"impl-From%3CLitFloat%3E-for-Lit"],[1260,"impl-From%3CLitInt%3E-for-Lit"],[1262,"impl-From%3CLitByte%3E-for-Lit"],[1263,"impl-From%3CLitCStr%3E-for-Lit"],[1264,"impl-From%3CLitBool%3E-for-Lit"],[1265,"impl-From%3CLitStr%3E-for-Lit"],[1266,"impl-From%3CLitByteStr%3E-for-Lit"],[1296,"impl-From%3CTypePtr%3E-for-Type"],[1297,"impl-From%3CTypeTuple%3E-for-Type"],[1298,"impl-From%3CTypeArray%3E-for-Type"],[1300,"impl-From%3CTypePath%3E-for-Type"],[1301,"impl-From%3CTypeReference%3E-for-Type"],[1302,"impl-From%3CTypeParen%3E-for-Type"],[1303,"impl-From%3CTypeSlice%3E-for-Type"],[1304,"impl-From%3CTypeBareFn%3E-for-Type"],[1305,"impl-From%3CTypeNever%3E-for-Type"],[1306,"impl-From%3CTypeMacro%3E-for-Type"],[1307,"impl-From%3CTypeGroup%3E-for-Type"],[1308,"impl-From%3CTypeInfer%3E-for-Type"],[1309,"impl-From%3CTypeTraitObject%3E-for-Type"],[1310,"impl-From%3CTypeImplTrait%3E-for-Type"],[1575,"impl-IntoIterator-for-%26Fields"],[1576,"impl-IntoIterator-for-Fields"],[1577,"impl-IntoIterator-for-%26mut+Fields"],[1681,"impl-LitStr"],[1682,"impl-Parse-for-LitStr"],[1779,"impl-IdentFragment-for-Ident"],[1780,"impl-Ident"],[2650,"impl-Debug-for-Error"],[2651,"impl-Display-for-Error"],[2652,"impl-Display-for-ParseBuffer%3C\'a%3E"],[2653,"impl-Debug-for-ParseBuffer%3C\'a%3E"],[2671,"impl-IntoIterator-for-Error"],[2672,"impl-IntoIterator-for-%26Error"],[2774,"impl-Extend%3CPair%3CT,+P%3E%3E-for-Punctuated%3CT,+P%3E"],[2775,"impl-Extend%3CT%3E-for-Punctuated%3CT,+P%3E"],[2787,"impl-FromIterator%3CT%3E-for-Punctuated%3CT,+P%3E"],[2788,"impl-FromIterator%3CPair%3CT,+P%3E%3E-for-Punctuated%3CT,+P%3E"],[2803,"impl-IntoIterator-for-%26mut+Punctuated%3CT,+P%3E"],[2804,"impl-IntoIterator-for-%26Punctuated%3CT,+P%3E"],[2805,"impl-IntoIterator-for-Punctuated%3CT,+P%3E"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAALMQeAAgAAEAOgAAAH8AAACFAAAAmwAAAKkAAgCvAAAAsgAAALcAAAC8AAAA0wAAANgAAAD5AAAAAAEAAAkBCQAUARwAMgHyACYCAgAqAgUAMQIDADcCJgFfAwYAaAMBAGwDBwB1A3sA8gMAAPQDbABiBAUAbgQCAHYEAQCABCIApAQDAM8EAQDSBAEA1wQAANkEAQDdBAAA4AQBAOYEAQDrBAIA7wQEAPkEAAD8BAAAAgUAAAUFAAARBQIAFQUKADIFBAA4BWcAogUKAK4FAAAoBgIALAYAAC4GAAAxBgEANAYDADkGAAA8BgAAPgYGAEYGAQBKBgoAVwYAAFkGBwBiBgEAZQYMAHUGHACTBiIAtwYAAMoGAQDOBgMA0wYCANcGAwDcBgMA5AYEAOoGCgD2BoAAeQfgAFsIewHZCREA7AkBAO8JAgD2CQYA/wkAAAoKAAANCgAAEAoFABsKAQAfCgAAIwoDAC4KAAA2CgwARAoLAFIKAABUCgIAWgoFAGEKAABoCgAAcAoBAHYKAAB5CgAAewoAAH8KAACFCgAAiAoYAKUKAACuChAAwAoUANYKAgDbCgAA5AoBAOgKAgD0CggABgsFAA4LCwAnCw8AOAsXAL0LawORD2cAYRA3A5oTHAE="}],["synstructure",{"t":"GGFPPPKPPPPPFFFNNNNNNNONNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNQQONNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNONNNNNNMNNNNNNONNNNNNNOQNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNN","n":["AddBounds","BindStyle","BindingInfo","Both","Fields","Generics","MacroResult","Move","MoveMut","None","Ref","RefMut","Structure","VariantAst","VariantInfo","add_bounds","add_impl_generic","add_trait_bounds","add_where_predicate","ast","","","attrs","bind_with","","binding","binding_name","","bindings","bindings_mut","borrow","","","","","","borrow_mut","","","","","","bound_impl","clone","","","","","","clone_into","","","","","","clone_to_uninit","","","","","","construct","decl_attribute","decl_derive","discriminant","drain_filter","","drain_filter_variants","each","","each_variant","eq","","","","","","fields","filter","","filter_variants","fmt","","","","","","fold","","from","","","","","","gen_impl","hash","","","","","","ident","into","","","","","","into_result","into_stream","new","omitted_bindings","omitted_variants","pat","","prefix","referenced_ty_params","","","remove_binding","remove_variant","span","","style","test_derive","to_owned","","","","","","to_tokens","","try_from","","","","","","try_into","","","","","","try_new","type_id","","","","","","unbound_impl","underscore_const","unpretty_print","unsafe_bound_impl","unsafe_unbound_impl","variants","variants_mut"],"q":[[0,"synstructure"],[160,"syn::generics"],[161,"core::option"],[162,"syn::data"],[163,"syn::derive"],[164,"core::ops::function"],[165,"proc_macro2"],[166,"quote::to_tokens"],[167,"core::fmt"],[168,"core::hash"],[169,"syn::error"],[170,"proc_macro"],[171,"alloc::vec"],[172,"core::result"],[173,"core::any"],[174,"alloc::string"]],"i":"```h00`Bb0100```d000AfAj2Al132131154201354201335420135420135420131``013313354201301335420131354201335420130542013Ch042432232424533`65312453653124653124465312444`4444","f":"```````````````{{{f{bd}}h}{{f{bd}}}}{{{f{bd}}j}{{f{bd}}}}{{{f{d}}{f{l}}{f{b{A`{n}}}}h}Ab}{{{f{bd}}Ad}{{f{bd}}}}{{{f{Af}}}{{f{Ah}}}}{{{f{Aj}}}Al}{{{f{d}}}{{f{An}}}}`{{{f{bAj}}c}{{f{bAj}}}{{Bd{{f{Af}}}{{B`{Bb}}}}}}{{{f{bd}}c}{{f{bd}}}{{Bd{{f{Af}}}{{B`{Bb}}}}}}`{{{f{bAj}}c}{{f{bAj}}}{{Bd{{f{Ah}}Bf}{{B`{Bh}}}}}}{{{f{bd}}c}{{f{bd}}}{{Bd{{f{Ah}}Bf}{{B`{Bh}}}}}}{{{f{Aj}}}{{f{{Bj{Af}}}}}}{{{f{bAj}}}{{f{b{Bj{Af}}}}}}{f{{f{c}}}{}}00000{{{f{b}}}{{f{bc}}}{}}00000{{{f{d}}ce}BlBnBn}{{{f{h}}}h}{{{f{Bb}}}Bb}{{{f{Af}}}Af}{{{f{Al}}}Al}{{{f{Aj}}}Aj}{{{f{d}}}d}{{f{f{bc}}}Ab{}}00000{fAb}00000{{{f{Aj}}e}BlBn{{Bd{{f{Ah}}Bf}{{B`{c}}}}}}```{{{f{bAj}}c}Aj{{Bd{{f{Af}}}{{B`{C`}}}}}}{{{f{bd}}c}d{{Bd{{f{Af}}}{{B`{C`}}}}}}{{{f{bd}}c}d{{Bd{{f{Aj}}}{{B`{C`}}}}}}{{{f{Aj}}e}BlBn{{Bd{{f{Af}}}{{B`{c}}}}}}{{{f{d}}e}BlBn{{Bd{{f{Af}}}{{B`{c}}}}}}{{{f{d}}e}BlBn{{Bd{{f{Aj}}}{{B`{c}}}}}}{{{f{h}}{f{h}}}C`}{{{f{Bb}}{f{Bb}}}C`}{{{f{Af}}{f{Af}}}C`}{{{f{Al}}{f{Al}}}C`}{{{f{Aj}}{f{Aj}}}C`}{{{f{d}}{f{d}}}C`}`{{{f{bAj}}c}{{f{bAj}}}{{Bd{{f{Af}}}{{B`{C`}}}}}}{{{f{bd}}c}{{f{bd}}}{{Bd{{f{Af}}}{{B`{C`}}}}}}{{{f{bd}}c}{{f{bd}}}{{Bd{{f{Aj}}}{{B`{C`}}}}}}{{{f{h}}{f{bCb}}}Cd}{{{f{Bb}}{f{bCb}}}Cd}{{{f{Af}}{f{bCb}}}Cd}{{{f{Al}}{f{bCb}}}Cd}{{{f{Aj}}{f{bCb}}}Cd}{{{f{d}}{f{bCb}}}Cd}{{{f{Aj}}cg}BlBnBn{{Bd{Bl{f{Af}}}{{B`{e}}}}}}{{{f{d}}cg}BlBnBn{{Bd{Bl{f{Af}}}{{B`{e}}}}}}{cc{}}00000{{{f{d}}Bl}Bl}{{{f{h}}{f{bc}}}AbCf}{{{f{Bb}}{f{bc}}}AbCf}{{{f{Af}}{f{bc}}}AbCf}{{{f{Al}}{f{bc}}}AbCf}{{{f{Aj}}{f{bc}}}AbCf}{{{f{d}}{f{bc}}}AbCf}`{{}c{}}00000{Ch{{Cj{Bl}}}}{ChCl}{{{f{An}}}d}{{{f{Aj}}}C`}{{{f{d}}}C`}{{{f{Af}}}Bl}{{{f{Aj}}}Bl}`{{{f{Af}}}{{Cn{{f{Bh}}}}}}{{{f{Aj}}}{{Cn{{f{Bh}}}}}}{{{f{d}}}{{Cn{{f{Bh}}}}}}{{{f{bAj}}Bf}{{f{bAj}}}}{{{f{bd}}Bf}{{f{bd}}}}{fD`}0``{fc{}}00000{{{f{Bb}}{f{bBl}}}Ab}{{{f{Af}}{f{bBl}}}Ab}{c{{Db{e}}}{}{}}00000{{}{{Db{c}}}{}}00000{{{f{An}}}{{Cj{d}}}}{fDd}00000{{{f{d}}ce}BlBnBn}{{{f{bd}}C`}{{f{bd}}}}{cDfDh}22{{{f{d}}}{{f{{Bj{Aj}}}}}}{{{f{bd}}}{{f{b{Bj{Aj}}}}}}","D":"J`","p":[[0,"mut"],[5,"Structure",0],[1,"reference"],[6,"AddBounds",0],[6,"GenericParam",160],[5,"TraitBound",160],[5,"WhereClause",160],[6,"Option",161],[1,"unit"],[6,"WherePredicate",160],[5,"BindingInfo",0],[5,"Field",162],[5,"VariantInfo",0],[5,"VariantAst",0],[5,"DeriveInput",163],[17,"Output"],[6,"BindStyle",0],[10,"FnMut",164],[1,"usize"],[5,"Ident",165],[1,"slice"],[5,"TokenStream",165],[10,"ToTokens",166],[1,"bool"],[5,"Formatter",167],[8,"Result",167],[10,"Hasher",168],[10,"MacroResult",0],[8,"Result",169],[5,"TokenStream",170],[5,"Vec",171],[5,"Span",165],[6,"Result",172],[5,"TypeId",173],[5,"String",174],[10,"Display",167]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAAAEAAAAJ4A","e":"OzAAAAEAAFAACwAXAAAAHwALACwAEQBBAAAASAAGAFIABQBhAAYAdQAAAHsAAQB/ABMAlAAFAA=="}],["unicode_ident",{"t":"HH","n":["is_xid_continue","is_xid_start"],"q":[[0,"unicode_ident"]],"i":"``","f":"{bd}0","D":"b","p":[[1,"char"],[1,"bool"]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAEAEAAAAAEAAgA="}]]')); +if (typeof exports !== 'undefined') exports.searchIndex = searchIndex; +else if (window.initSearch) window.initSearch(searchIndex); +//{"start":39,"fragment_lengths":[5259,7303,174,4292,6472,978,96004,4617,219]} \ No newline at end of file diff --git a/search.desc/delog/delog-desc-0-.js b/search.desc/delog/delog-desc-0-.js new file mode 100644 index 0000000..bc9284a --- /dev/null +++ b/search.desc/delog/delog-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("delog", 0, "Compile-time configurable deferred logging (for printf()…\nThe “debug” level.\nCorresponds to the Debug log level.\nSemi-abstract characterization of the deferred loggers …\nThe “error” level.\nCorresponds to the Error log level.\nA way to pass on logs, user supplied.\nThe “info” level.\nCorresponds to the Info log level.\nAn enum representing the available verbosity levels of the …\nAn enum representing the available verbosity level filters …\nA level lower than all log levels.\nThe “payload” of a log message.\nA way to format logs, user supplied.\nTrait for either state or statistics of loggers.\nStatistics on logger usage.\nThe “trace” level.\nCorresponds to the Trace log level.\nFallible, panic-free version of the log::Log trait.\nTryLog with some usage statistics on top.\nThe “warn” level.\nCorresponds to the Warn log level.\nThe message body.\nReturns the string representation of the Level.\nReturns the string representation of the LevelFilter.\nHow often was one of the logging macros called.\nHow often was one of the logging macros called.\nthe underlying buffer\nReturns a new builder.\nCapacity of circular buffer.\nCapacity of circular buffer.\nHow many characters were claimed so far.\nGenerate a deferred logger with specified capacity and …\nThe core “read from circular buffer” method. Marked …\nThe core “write to circular buffer” method. Marked …\nThe source file containing the message.\nThe source file containing the message, if it is a 'static …\nCall the flusher.\nImplementor must handle passed log &str in some hopefully …\nHow often was the flusher called.\nHow often was the flusher called.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGenerate logging macros that can be gated by library.\nConvenient Display and other traits for binary data.\nCompactly format byte arrays and slices as hexadecimals.\nMore compactly format byte arrays and slices as …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nIterate through all supported logging levels.\nIterate through all supported filtering levels.\nThe verbosity level of the message.\nThe line containing the message.\nReturns a reference to the logger (as TryLogWithStatistics …\nReturns the most verbose logging level.\nReturns the most verbose logging level filter.\nMetadata about the log directive.\nThe module path of the message.\nThe module path of the message, if it is a 'static string.\nHow many bytes were flushed so far.\nHow many bytes were flushed so far.\nThe default, minimal renderer, and some helper functions.\nActually render the arguments (via internal static buffer).\nImplementor must render record into buf, returning the …\nRead out statistics on logger usage.\nRead out statistics on logger usage.\nHow often was one of the logging macros called without …\nHow often was one of the logging macros called without …\nThe name of the target of the directive.\nConverts self to the equivalent Level.\nConverts the Level to the equivalent LevelFilter.\nThe fallible “write to circular buffer” method. Marked …\nFallible logging call (fails when buffer is full)\nHow many bytes were logged so far.\nHow many bytes were logged so far.\nZero-sized wrapper newtype, allowing grouping bytes in …\nExplicitly construct a newtype to format with.\nThe actual number.\nThe actual separator str.\nA type that specifies a separator str.\nA type that represents the integer 1.\nA type that specifies an unsigned integer.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nThe value to be formatted.\nRenders just the record.args().\nRenders the record.args(), prefixed by level, target, and …\nThe default, minimal renderer.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nFor some reason, there seems to be no existing method to …\nRender record, based on feature flags.") \ No newline at end of file diff --git a/search.desc/flexiber/flexiber-desc-0-.js b/search.desc/flexiber/flexiber-desc-0-.js new file mode 100644 index 0000000..1240c09 --- /dev/null +++ b/search.desc/flexiber/flexiber-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("flexiber", 0, "flexiber\nClass of BER tag.\nMultiple encodables in a container.\nDecoding trait.\nDerive the Decodable trait on a struct.\nBER-TLV decoder.\nEncoding trait.\nDerive the Encodable trait on a struct.\nBER-TLV encoder.\nContains the error value\nError type.\nError type.\nOperation failed due to previous error\nClass has more than 2 bytes\nLength greater than u16::MAX\nInvalid tag\nBER-TLV-encoded length.\nIncorrect length for a given field\nContains the success value\nInteger overflow occurred (library bug!)\nMessage is longer than BER-TLV’s limits support\nResult type.\nThese are tags like in SIMPLE-TLV.\nSlice of at most Length::max() bytes.\nThe tag field consists of a single byte encoding a tag …\nThis is the common trait that types to be used as tags are …\nTypes with an associated BER-TLV Tag.\nRaw BER-TLV data object TaggedValue<Slice<'_>>.\nBER-TLV data object.\nUndecoded trailing data at end of message\nUnexpected end-of-message/nested field when decoding\nEncoded message is shorter than the expected length (i.e. …\nUnexpected tag\nTag does not fit in 3 bytes\nBorrow the inner byte slice.\nBorrow the inner byte slice\nBorrow the inner byte slice.\nAssert that this Tag matches the provided expected tag.\nAssert that this Tag matches the provided expected tag.\nAnnotate an ErrorKind with context about where it occurred,\nAttempt to decode this message using the provided decoder.\nDecode a value which impls the Decodable trait.\nDecode nested values, creating a new Decoder for the data …\nDecode nested values, creating a new Decoder for the data …\nDecode a TaggedSlice with tag checked to be as expected, …\nDecode a TaggedValue with tag checked to be as expected, …\nTo stick with one Error type, make sure the tag type can …\nEncode this value as BER-TLV using the provided Encoder.\nEncode a value which impls the Encodable trait.\nEncode a collection of values which impl the Encodable …\nEncode this value to the provided byte slice, returning a …\nEncode this value to the provided byte slice, returning a …\nEncode a collection of values which impl the Encodable …\nCompute the length of this value in bytes when encoded as …\nReturn an error with the given ErrorKind, annotating it …\nReturn an error with the given ErrorKind, annotating it …\nCall the provided function with a slice of Encodable trait …\nFinish decoding, returning the given value if there is no …\nFinish encoding to the buffer, returning a slice …\nCreate a new tagged slice, checking lengths.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCreate a new tagged slice, checking lengths.\nParse Self from the provided byte slice.\nParse Self from the provided byte slice.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nIs the inner byte slice empty?\nIs this Slice empty?\nIs the inner byte slice empty?\nDid the decoding operation fail due to an error?\nDid the decoding operation fail due to an error?\nHave we decoded all of the bytes in this Decoder?\nGet the ErrorKind which occurred.\nGet the length of the inner byte slice.\nGet the Length of this Slice\nGet the length of the inner byte slice.\nGet the maximum length supported by BER-TLV: 65,535.\nFor errors occurring inside of a nested message, extend …\nCreate a new decoder for the given byte slice.\nCreate a new encoder with the given byte slice as a …\nCreate a new Error\nCreate a new Slice, ensuring that the provided slice value …\nGet the position inside of the message where the error …\nThe tag\nConvert length to usize.\nErgonomic way to get a TaggedValue for a given tag and …\nErgonomic way to get a TaggedValue for a given tag and …\nReturn a length of 0.\nActual length\nActual tag encountered in the message\nRaw byte value of the tag\nLength of the decoded data\nExpected length\nTag the decoder was expecting (if there is a single such …\nTotal length of the remaining data left in the buffer\nTag type of the value being decoded") \ No newline at end of file diff --git a/search.desc/flexiber_derive/flexiber_derive-desc-0-.js b/search.desc/flexiber_derive/flexiber_derive-desc-0-.js new file mode 100644 index 0000000..88fb8c5 --- /dev/null +++ b/search.desc/flexiber_derive/flexiber_derive-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("flexiber_derive", 0, "Custom derive support for the flexiber crate\nDerive the Decodable trait on a struct.\nDerive the Encodable trait on a struct.") \ No newline at end of file diff --git a/search.desc/log/log-desc-0-.js b/search.desc/log/log-desc-0-.js new file mode 100644 index 0000000..c7570e6 --- /dev/null +++ b/search.desc/log/log-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("log", 0, "A lightweight logging facade.\nThe “debug” level.\nCorresponds to the Debug log level.\nThe “error” level.\nCorresponds to the Error log level.\nThe “info” level.\nCorresponds to the Info log level.\nAn enum representing the available verbosity levels of the …\nAn enum representing the available verbosity level filters …\nA trait encapsulating the operations required of a logger.\nMetadata about a log message.\nBuilder for Metadata.\nA level lower than all log levels.\nThe type returned by from_str when the string doesn’t …\nThe “payload” of a log message.\nBuilder for Record.\nThe statically resolved maximum log level.\nThe type returned by set_logger if set_logger has already …\nThe “trace” level.\nCorresponds to the Trace log level.\nThe “warn” level.\nCorresponds to the Warn log level.\nThe message body.\nSet args.\nReturns the string representation of the Level.\nReturns the string representation of the LevelFilter.\nInvoke the builder and return a Record\nReturns a Metadata object.\nReturns a new builder.\nReturns a new builder.\nLogs a message at the debug level.\nDetermines if a log message with the specified metadata …\nLogs a message at the error level.\nThe source file containing the message.\nSet file\nThe source file containing the message, if it is a 'static …\nSet file to a 'static string.\nFlushes any buffered records.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nLogs a message at the info level.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nIterate through all supported logging levels.\nIterate through all supported filtering levels.\nThe verbosity level of the message.\nSet Metadata::level.\nThe verbosity level of the message.\nSetter for level.\nThe line containing the message.\nSet line\nLogs the Record.\nThe standard logging macro.\nDetermines if a message logged at the specified level in …\nReturns a reference to the logger.\nReturns the most verbose logging level.\nReturns the most verbose logging level filter.\nReturns the current maximum log level.\nMetadata about the log directive.\nSet metadata. Construct a Metadata object with …\nThe module path of the message.\nSet module_path\nThe module path of the message, if it is a 'static string.\nSet module_path to a 'static string\nConstruct new RecordBuilder.\nConstruct a new MetadataBuilder.\nSets the global logger to a &'static Log.\nA thread-unsafe version of set_logger.\nSets the global maximum log level.\nA thread-unsafe version of set_max_level.\nThe name of the target of the directive.\nSet Metadata::target\nThe name of the target of the directive.\nSetter for target.\nConverts self to the equivalent Level.\nConverts the Level to the equivalent LevelFilter.\nLogs a message at the trace level.\nLogs a message at the warn level.") \ No newline at end of file diff --git a/search.desc/proc_macro2/proc_macro2-desc-0-.js b/search.desc/proc_macro2/proc_macro2-desc-0-.js new file mode 100644 index 0000000..d775558 --- /dev/null +++ b/search.desc/proc_macro2/proc_macro2-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("proc_macro2", 0, "github crates-io docs-rs\nE.g. + is Alone in + =, +ident or +().\n{ ... }\n[ ... ]\nDescribes how a sequence of token trees is delimited.\nA delimited token stream.\nA token stream surrounded by bracket delimiters.\nA word of Rust code, which may be a keyword or legal …\nAn identifier.\nE.g. + is Joint in += or ' is Joint in '#.\nError returned from TokenStream::from_str.\nA literal string ("hello"), byte string (b"hello"), …\nA literal character ('a'), string ("hello"), number (2.3), …\n∅ ... ∅\n( ... )\nA Punct is a single punctuation character like +, - or #.\nA single punctuation character (+, ,, $, etc.).\nWhether a Punct is followed immediately by another Punct …\nA region of source code, along with macro expansion …\nAn abstract stream of tokens, or more concretely a …\nA single token or a delimited sequence of token trees …\nReturns the value of this punctuation character as char.\nByte character literal.\nByte string literal.\nC string literal.\nThe span of the invocation of the current procedural macro.\nCharacter literal.\nReturns an object that holds this group’s span_open() and\nReturns the punctuation used as the delimiter for this …\nItems which do not have a correspondence to any API in the …\nCreates a new suffixed floating-point literal.\nCreates a new unsuffixed floating-point literal.\nCreates a new suffixed floating-point literal.\nCreates a new unsuffixed floating-point literal.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCreates a new suffixed integer literal with the specified …\nCreates a new unsuffixed integer literal with the …\nCreates a new suffixed integer literal with the specified …\nCreates a new unsuffixed integer literal with the …\nCreates a new suffixed integer literal with the specified …\nCreates a new unsuffixed integer literal with the …\nCreates a new suffixed integer literal with the specified …\nCreates a new unsuffixed integer literal with the …\nCreates a new suffixed integer literal with the specified …\nCreates a new unsuffixed integer literal with the …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nChecks if this TokenStream is empty.\nCreates a new suffixed integer literal with the specified …\nCreates a new unsuffixed integer literal with the …\nCreate a new span encompassing self and other.\nCreates a new span with the same name resolution behavior …\nThe span located at the invocation of the procedural …\nReturns an empty TokenStream containing no token trees.\nCreates a new Group with the given delimiter and token …\nCreates a new Punct from the given character and spacing.\nCreates a new Ident with the given string as well as the …\nSame as Ident::new, but creates a raw identifier (r#ident…\nCreates a new span with the same line/column information …\nConfigures the span for only this token.\nConfigures the span for this Group’s delimiters, but not …\nConfigure the span for this punctuation character.\nConfigures the span of this Ident, possibly changing its …\nConfigures the span associated for this literal.\nReturns the source text behind a span. This preserves the …\nReturns the spacing of this punctuation character, …\nReturns the span of this tree, delegating to the span …\nReturns the span for the delimiters of this token stream, …\nReturns the span for this punctuation character.\nReturns the span of this Ident.\nReturns the span encompassing this literal.\nReturns the span pointing to the closing delimiter of this …\nReturns the span pointing to the opening delimiter of this …\nReturns the TokenStream of tokens that are delimited in …\nString literal.\nReturns a Span that is a subset of self.span() containing …\nPublic implementation details for the TokenStream type, …\nCreates a new suffixed integer literal with the specified …\nCreates a new unsuffixed integer literal with the …\nCreates a new suffixed integer literal with the specified …\nCreates a new unsuffixed integer literal with the …\nCreates a new suffixed integer literal with the specified …\nCreates a new unsuffixed integer literal with the …\nCreates a new suffixed integer literal with the specified …\nCreates a new unsuffixed integer literal with the …\nCreates a new suffixed integer literal with the specified …\nCreates a new unsuffixed integer literal with the …\nConvert proc_macro2::Span to proc_macro::Span.\nCreates a new suffixed integer literal with the specified …\nCreates a new unsuffixed integer literal with the …\nAn object that holds a Group’s span_open() and …\nReturns a span for the closing punctuation of the group …\nReturns the argument unchanged.\nCalls U::from(self).\nReturns a span covering the entire delimited group.\nReturns a span for the opening punctuation of the group …\nAn iterator over TokenStream’s TokenTrees.\nReturns the argument unchanged.\nCalls U::from(self).") \ No newline at end of file diff --git a/search.desc/quote/quote-desc-0-.js b/search.desc/quote/quote-desc-0-.js new file mode 100644 index 0000000..139d763 --- /dev/null +++ b/search.desc/quote/quote-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("quote", 0, "github crates-io docs-rs\nSpecialized formatting trait used by format_ident!.\nTypes that can be interpolated inside a quote! invocation.\nTokenStream extension trait with methods for appending …\nFor use by ToTokens implementations.\nFor use by ToTokens implementations.\nFor use by ToTokens implementations.\nFor use by ToTokens implementations.\nFormat this value as an identifier fragment.\nFormatting macro for constructing Idents.\nConvert self directly into a TokenStream object.\nConvert self directly into a TokenStream object.\nThe whole point.\nSame as quote!, but applies a given span to all tokens …\nSpan associated with this IdentFragment.\nSpan associated with this IdentFragment.\nConvert self directly into a TokenStream object.\nConvert self directly into a TokenStream object.\nWrite self to the given TokenStream.") \ No newline at end of file diff --git a/search.desc/syn/syn-desc-0-.js b/search.desc/syn/syn-desc-0-.js new file mode 100644 index 0000000..cf62609 --- /dev/null +++ b/search.desc/syn/syn-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("syn", 0, "github crates-io docs-rs\nThe binary interface of a function: extern "C".\nThe + operator (addition)\nThe += operator\nThe && operator (logical and)\nThe <'a, T> in std::slice::iter<'a, T>.\nAngle bracketed arguments of a path segment: the <K, V> in …\nA slice literal expression: [a, b, c, d].\nA fixed size array type: [T; n].\nAn assignment expression: a = compute().\nAn equality constraint on an associated constant: the …\nAn equality constraint on an associated constant: the …\nA binding (equality constraint) on an associated type: the …\nA binding (equality constraint) on an associated type: the …\nAn async block: async { ... }.\nDistinguishes between attributes that decorate an item and …\nAn attribute, like #[repr(transparent)].\nAn await expression: fut.await.\nA bare function type: fn(usize) -> bool.\nAn argument in a function type: the usize in …\nThe variadic argument of a function pointer like …\nA binary operator: +, +=, &.\nA binary operation: a + b, a += b.\nThe & operator (bitwise and)\nThe &= operator\nThe | operator (bitwise or)\nThe |= operator\nThe ^ operator (bitwise xor)\nThe ^= operator\nA blocked scope: { ... }.\nA boolean literal: true or false.\nA set of bound lifetimes: for<'a, 'b, 'c>.\nA break, with an optional label to break and an optional …\nA byte literal: b'f'.\nA byte string literal: b"foo".\nA nul-terminated C-string literal: c"foo".\nA function call expression: invoke(a, b).\nA cast expression: foo as f64.\nA character literal: 'a'.\nA closure expression: |a, b| a + b.\nA const block: const { ... }.\nA const generic parameter: const LENGTH: usize.\nA const expression. Must be inside of a block.\nA const generic parameter: const LENGTH: usize.\nAn associated type bound: Iterator<Item: Display>.\nAn associated type bound: Iterator<Item: Display>.\nA continue, with an optional label.\nThe storage of a struct, enum or union data structure.\nAn enum input to a proc_macro_derive macro.\nA struct input to a proc_macro_derive macro.\nAn untagged union input to a proc_macro_derive macro.\nReturn type is not specified.\nThe * operator for dereferencing\nData structure sent to a proc_macro_derive macro.\nThe / operator (division)\nThe /= operator\nThe == operator (equality)\nContains the error value\nError returned when a Syn parser cannot parse the input …\nA Rust expression.\nA slice literal expression: [a, b, c, d].\nAn assignment expression: a = compute().\nAn async block: async { ... }.\nAn await expression: fut.await.\nA binary operation: a + b, a += b.\nA blocked scope: { ... }.\nA break, with an optional label to break and an optional …\nA function call expression: invoke(a, b).\nA cast expression: foo as f64.\nA closure expression: |a, b| a + b.\nA const block: const { ... }.\nA continue, with an optional label.\nAccess of a named struct field (obj.k) or unnamed tuple …\nA for loop: for pat in expr { ... }.\nAn expression contained within invisible delimiters.\nAn if expression with an optional else block: …\nA square bracketed indexing expression: vector[2].\nThe inferred value of a const generic argument, denoted _.\nA let guard: let Some(x) = opt.\nA literal in place of an expression: 1, "foo".\nConditionless loop: loop { ... }.\nA macro invocation expression: format!("{}", q).\nA match expression: match n { Some(n) => {}, None => {} }.\nA method call expression: x.foo::<T>(a, b).\nA parenthesized expression: (a + b).\nA path like std::mem::replace possibly containing generic …\nA range expression: 1..2, 1.., ..2, 1..=2, ..=2.\nAddress-of operation: &raw const place or &raw mut place.\nA referencing operation: &a or &mut a.\nAn array literal constructed from one repeated element: …\nA return, with an optional value to be returned.\nA struct literal expression: Point { x: 1, y: 1 }.\nA try-expression: expr?.\nA try block: try { ... }.\nA tuple expression: (a, b, c, d).\nA unary operation: !x, *x.\nAn unsafe block: unsafe { ... }.\nA while loop: while expr { ... }.\nA yield expression: yield expr.\nA field of a struct or enum variant.\nAccess of a named struct field (obj.k) or unnamed tuple …\nUnused, but reserved for RFC 3323 restrictions.\nA field-value pair in a struct literal.\nData stored within an enum variant or struct.\nNamed fields of a struct or struct variant such as …\nUnnamed fields of a tuple struct or tuple variant such as …\nA floating point literal: 1f64 or 1.0e10f64.\nA for loop: for pat in expr { ... }.\nThe >= operator (greater than or equal to)\nAn individual generic argument, like 'a, T, or Item = T.\nA generic type parameter, lifetime, or const generic: …\nLifetimes and type parameters attached to a declaration of …\nAn expression contained within invisible delimiters.\nA type contained within invisible delimiters.\nThe > operator (greater than)\nA word of Rust code, which may be a keyword or legal …\nAn if expression with an optional else block: …\nReturned by Generics::split_for_impl.\nAn impl Bound1 + Bound2 + Bound3 type where Bound is a …\nThe index of an unnamed tuple struct field.\nA square bracketed indexing expression: vector[2].\nThe inferred value of a const generic argument, denoted _.\nIndication that a type should be inferred by the compiler: …\nAn inherited visibility, which usually means private.\nAn integer literal: 1 or 1u16.\nThe <= operator (less than or equal to)\nA let guard: let Some(x) = opt.\nA Rust lifetime: 'a.\nA lifetime parameter: 'a: 'b + 'c + 'd.\nA lifetime predicate in a where clause: 'a: 'b + 'c.\nA lifetime argument.\nA lifetime definition: 'a: 'b + 'c + 'd.\nA structured list within an attribute, like …\nA Rust literal such as a string or integer or boolean.\nA literal in place of an expression: 1, "foo".\nA boolean literal: true or false.\nA byte literal: b'f'.\nA byte string literal: b"foo".\nA nul-terminated C-string literal: c"foo".\nA character literal: 'a'.\nA floating point literal: 1f64 or 1.0e10f64.\nAn integer literal: 1 or 1u16.\nA UTF-8 string literal: "foo".\nConditionless loop: loop { ... }.\nThe < operator (less than)\nA macro invocation: println!("{}", mac).\nA macro invocation expression: format!("{}", q).\nA macro in the type position.\nA grouping token that surrounds a macro body: m!(...) or …\nA match expression: match n { Some(n) => {}, None => {} }.\nA struct or tuple struct field accessed in a struct …\nContent of a compile-time structured attribute.\nA structured list within an attribute, like …\nA name-value pair within an attribute, like …\nA method call expression: x.foo::<T>(a, b).\nThe * operator (multiplication)\nThe *= operator\nA name-value pair within an attribute, like …\nNamed fields of a struct or struct variant such as …\nA named field like self.x.\nThe != operator (not equal to)\nThe - operator for negation\nThe never type: !.\nThe ! operator for logical inversion\nContains the success value\nThe || operator (logical or)\nAn unspecified invalid expression.\nA parenthesized expression: (a + b).\nA parenthesized type equivalent to the inner type.\nThe (A, B) -> C in Fn(A, B) -> C.\nArguments of a function path segment: the (A, B) -> C in …\nA path at which a named item is exported (e.g. …\nA path like std::mem::replace possibly containing generic …\nA path like std::slice::Iter, optionally qualified with a …\nAngle bracketed or parenthesized arguments of a path …\nA segment of a path together with any path arguments on …\nA lifetime predicate in a where clause: 'a: 'b + 'c.\nA type predicate in a where clause: …\nA raw pointer type: *const T or *mut T.\nA public visibility level: pub.\nThe explicit Self type in a qualified path: the T in …\nA range expression: 1..2, 1.., ..2, 1..=2, ..=2.\nAddress-of operation: &raw const place or &raw mut place.\nA referencing operation: &a or &mut a.\nA reference type: &'a T or &'a mut T.\nThe % operator (modulus)\nThe %= operator\nAn array literal constructed from one repeated element: …\nA visibility level restricted to some path: pub(self) or …\nThe result of a Syn parser.\nA return, with an optional value to be returned.\nReturn type of a function signature.\nThe << operator (shift left)\nThe <<= operator\nThe >> operator (shift right)\nThe >>= operator\nA dynamically sized slice type: [T].\nA UTF-8 string literal: "foo".\nA struct literal expression: Point { x: 1, y: 1 }.\nThe - operator (subtraction)\nThe -= operator\nA type-macro that expands to the name of the Rust type …\nA trait used as a bound on a type parameter.\nA modifier on a trait bound, currently only used for the ? …\nA trait object type dyn Bound1 + Bound2 + Bound3 where …\nA try-expression: expr?.\nA try block: try { ... }.\nA tuple expression: (a, b, c, d).\nA tuple type: (A, B, C, String).\nReturned by TypeGenerics::as_turbofish.\nThe possible types that a Rust value could have.\nA generic type parameter: T: Into<String>.\nA type predicate in a where clause: …\nA type argument.\nA particular type is returned.\nA fixed size array type: [T; n].\nA bare function type: fn(usize) -> bool.\nReturned by Generics::split_for_impl.\nA type contained within invisible delimiters.\nAn impl Bound1 + Bound2 + Bound3 type where Bound is a …\nIndication that a type should be inferred by the compiler: …\nA macro in the type position.\nThe never type: !.\nA generic type parameter: T: Into<String>.\nA trait or lifetime used as a bound on a type parameter.\nA parenthesized type equivalent to the inner type.\nA path like std::slice::Iter, optionally qualified with a …\nA raw pointer type: *const T or *mut T.\nA reference type: &'a T or &'a mut T.\nA dynamically sized slice type: [T].\nA trait object type dyn Bound1 + Bound2 + Bound3 where …\nA tuple type: (A, B, C, String).\nA unary operator: *, !, -.\nA unary operation: !x, *x.\nUnit struct or unit variant such as None.\nUnnamed fields of a tuple struct or tuple variant such as …\nAn unnamed field like self.0.\nAn unsafe block: unsafe { ... }.\nAn enum variant.\nTokens in expression position not interpreted by Syn.\nA raw token literal not interpreted by Syn.\nTokens in type position not interpreted by Syn.\nA visibility level restricted to some path: pub(self) or …\nThe visibility level of an item: inherited or pub or …\nA where clause in a definition: …\nA single predicate in a where clause: T: Deserialize<'de>.\nA while loop: while expr { ... }.\nA yield expression: yield expr.\nTurn a type’s generics like <X, Y> into a turbofish like …\nParses the literal into a selected number type.\nThe type being bounded\nTrait and lifetime bounds (Clone+Send+'static)\nParse a set of curly braces and expose their content to …\nParse a set of square brackets and expose their content to …\nA stably addressed token buffer supporting efficient …\nThe colon in Struct { x: x }. If written in shorthand like …\nIterator over the constant parameters in self.params.\nIterator over the constant parameters in self.params.\nDefine a type that supports parsing and printing a given …\nDefine a type that supports parsing and printing a …\nExplicit discriminant: Variant = 1\nExtension traits to provide parsing methods on foreign …\nContent stored in the variant.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nIf this path consists of a single ident, returns the ident.\nName of the variant.\nName of the field, if any.\n(A, B)\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns true if there are zero fields.\nDetermines whether this is a path of length 1 equal to the …\nGet an iterator over the borrowed Field items in this …\nGet an iterator over the mutably borrowed Field items in …\nReturns the number of fields.\nIterator over the lifetime parameters in self.params.\nThe for<'a> in for<'a> Foo<&'a T>\nAny lifetimes from a for binding\nIterator over the lifetime parameters in self.params.\nInitializes an empty where-clause if there is not one …\nGet an iterator over the fields of a struct or variant as …\nFacility for interpreting structured content inside of an …\nCreates a new Ident with the given string as well as the …\nPanics\nInterpret a Syn literal from a proc-macro2 literal.\nSame as Ident::new, but creates a raw identifier (r#ident…\nC\nParse a set of parentheses and expose their content to …\nParsing interface for parsing a token stream into a syntax …\nParse tokens of source code into the chosen syntax tree …\nParse a syntax tree node from the content of this string …\nParse a proc-macro2 token stream into the chosen syntax …\nParse the arguments to the attribute as a syntax tree.\nSee Attribute::parse_args.\nParse the arguments to the attribute using the given …\nSee Attribute::parse_args_with.\nParse the tokens within the macro invocation’s …\nParse the tokens within the macro invocation’s …\nParses zero or more inner attributes from the stream.\nParse the input TokenStream of a macro, triggering a …\nParse a Path containing no path arguments on any of its …\nParses a named (braced struct) field.\nParse the arguments to the attribute, expecting it to …\nSee Attribute::parse_nested_meta.\nParses zero or more outer attributes from the stream.\nQuasi-quotation macro that accepts input like the quote! …\nThis macro is parse_quote! + quote_spanned!.\nParse a string of Rust code into the chosen syntax tree …\nParses an unnamed (tuple struct) field.\nInvoke parser on the content of this string literal.\nReturns the path that identifies the interpretation of …\nReturns the path that begins this structured meta item.\nThe Foo<&'a T> in for<'a> Foo<&'a T>\nReturns whether the next token in the parse stream is one …\nA punctuated sequence of syntax tree nodes separated by …\nAn error if this path is not a single ident, as defined in …\nError if this is a Meta::Path or Meta::NameValue.\nError if this is a Meta::Path or Meta::List.\nError if this is a Meta::List or Meta::NameValue.\nConfigures the span of this Ident, possibly changing its …\nReturns the span of this Ident.\nA trait that can provide the Span of the complete contents …\nSplit a type’s generics into the pieces required for impl…\nTokens representing Rust punctuation, keywords, and …\nIterator over the type parameters in self.params.\nIterator over the type parameters in self.params.\nSyntax tree traversal to walk a shared borrow of a syntax …\nIn some positions, types may not contain the + character, …\nA cheaply copyable cursor into a TokenBuffer.\nA buffer that can be efficiently traversed multiple times, …\nIf the cursor is pointing at a Group, returns a cursor …\nCreates a cursor referencing the first token in the buffer …\nCreates a cursor referencing a static empty TokenStream.\nChecks whether the cursor is currently pointing at the end …\nReturns the argument unchanged.\nReturns the argument unchanged.\nIf the cursor is pointing at a Group with the given …\nIf the cursor is pointing at a Ident, returns it along …\nCalls U::from(self).\nCalls U::from(self).\nIf the cursor is pointing at a Lifetime, returns it along …\nIf the cursor is pointing at a Literal, return it along …\nCreates a TokenBuffer containing all the tokens from the …\nCreates a TokenBuffer containing all the tokens from the …\nIf the cursor is pointing at a Punct, returns it along …\nReturns the Span of the current token, or Span::call_site()…\nCopies all remaining tokens visible from this cursor into a\nIf the cursor is pointing at a TokenTree, returns it along …\nAdditional methods for Ident not provided by proc-macro2 …\nParses any identifier including keywords.\nPeeks any identifier including keywords. Usage: …\nStrips the raw marker r#, if any, from the beginning of an …\nContext for parsing a single property in the conventional …\nReport that the attribute’s content did not conform to …\nReturns the argument unchanged.\nCalls U::from(self).\nUsed when parsing list(...) syntax if the content inside …\nMake a parser that is usable with parse_macro_input! in a …\nUsed when parsing key = "value" syntax.\nPseudo-token used for peeking the end of a parse stream.\nContains the error value\nError returned when a Syn parser cannot parse the input …\nSupport for checking the next token in a stream to decide …\nAn empty syntax tree node that consumes no tokens when …\nContains the success value\nParsing interface implemented by all types that can be …\nCursor position within a buffered token stream.\nInput to a Syn parser function.\nParser that can parse Rust tokens into a particular syntax …\nTypes that can be parsed by looking at just one token.\nThe result of a Syn parser.\nCursor state associated with speculative parsing.\nCalls the given parser function to parse a syntax tree …\nAdd another error message to self such that when …\nProvides low-level access to the token representation …\nExtensions to the parsing API with niche applicability.\nTriggers an error at the current position of the parse …\nTriggers an error at the current position of the parse …\nTriggers an error at the current position of the parse …\nForks a parse stream so that parsing tokens out of either …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nRender the error as an invocation of compile_error!.\nReturns whether there are no more tokens remaining to be …\nConstructs a helper for peeking at the next token in this …\nUsually the ParseStream::error method will be used …\nCreates an error with the specified message spanning the …\nParses a syntax tree node of type T, advancing the …\nParse tokens of source code into the chosen syntax tree …\nParse a proc-macro2 token stream into the chosen syntax …\nParse a string of Rust code into the chosen syntax tree …\nParses zero or more occurrences of T separated by …\nLooks at the next token in the parse stream to determine …\nLooks at the next token in the parse stream to determine …\nLooks at the second-next token in the parse stream.\nLooks at the third-next token in the parse stream.\nThe source location of the error.\nReturns the Span of the next token in the parse stream, or …\nSpeculatively parses tokens from this parse stream, …\nRender the error as an invocation of compile_error!.\nExtensions to the ParseStream API to support manipulating …\nExtensions to the ParseStream API to support speculative …\nAdvance this parse stream to the position of a forked …\nReturns the delimiter, the span of the delimiter token, …\nAn iterator over owned values of type T.\nAn iterator over owned pairs of type Pair<T, P>.\nAn iterator over borrowed values of type &T.\nAn iterator over mutably borrowed values of type &mut T.\nA single syntax tree node of type T followed by its …\nAn iterator over borrowed pairs of type Pair<&T, &P>.\nAn iterator over mutably borrowed pairs of type …\nA punctuated sequence of syntax tree nodes of type T …\nClears the sequence of all values and punctuation, making …\nReturns true if either this Punctuated is empty, or it has …\nBorrows the first element in this sequence.\nMutably borrows the first element in this sequence.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nBorrows the element at the given index.\nMutably borrows the element at the given index.\nInserts an element at position index.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns an iterator over the contents of this sequence as …\nProduces this punctuated pair as a tuple of syntax tree …\nExtracts the syntax tree node from this punctuated pair, …\nDetermines whether this punctuated sequence is empty, …\nReturns an iterator over borrowed syntax tree nodes of …\nReturns an iterator over mutably borrowed syntax tree …\nBorrows the last element in this sequence.\nMutably borrows the last element in this sequence.\nReturns the number of syntax tree nodes in this punctuated …\nCreates an empty punctuated sequence.\nCreates a punctuated pair out of a syntax tree node and an …\nReturns an iterator over the contents of this sequence as …\nReturns an iterator over the contents of this sequence as …\nParses one or more occurrences of T separated by …\nParses one or more occurrences of T using the given parse …\nParses zero or more occurrences of T separated by …\nParses zero or more occurrences of T using the given parse …\nRemoves the last punctuated pair from this sequence, or …\nRemoves the trailing punctuation from this punctuated …\nBorrows the punctuation from this punctuated pair, unless …\nMutably borrows the punctuation from this punctuated pair, …\nAppends a syntax tree node onto the end of this punctuated …\nAppends a trailing punctuation onto the end of this …\nAppends a syntax tree node onto the end of this punctuated …\nDetermines whether this punctuated sequence ends with a …\nBorrows the syntax tree node from this punctuated pair.\nMutably borrows the syntax tree node from this punctuated …\nA trait that can provide the Span of the complete contents …\nReturns a Span covering the complete contents of this …\nabstract\n&\n&&\n&=\nas\nasync\n@\nauto\nawait\nbecome\nbox\n{}\n[]\nbreak\n^\n^=\n:\n,\nconst\ncontinue\ncrate\ndefault\ndo\n$\n.\n..\n...\n..=\ndyn\nelse\nenum\n=\n==\nextern\n=>\nfinal\nfn\nfor\n>=\nNone-delimited group\n>\nif\nimpl\nin\n<-\n<=\nlet\nloop\n<\nmacro\nmatch\n-\n-=\nmod\nmove\nmut\n!=\n!\n|\n|=\n||\noverride\n()\n::\n%\n%=\n+\n+=\n#\npriv\npub\n?\n->\nraw\nref\nreturn\nSelf\nself\n;\n<<\n<<=\n>>\n>>=\n/\n/=\n*\n*=\nstatic\nstruct\nsuper\n~\nMarker trait for types that represent single tokens.\ntrait\ntry\ntype\ntypeof\n_\nunion\nunsafe\nunsized\nuse\nvirtual\nwhere\nwhile\nyield\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nSyntax tree traversal to walk a shared borrow of a syntax …") \ No newline at end of file diff --git a/search.desc/synstructure/synstructure-desc-0-.js b/search.desc/synstructure/synstructure-desc-0-.js new file mode 100644 index 0000000..87104e8 --- /dev/null +++ b/search.desc/synstructure/synstructure-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("synstructure", 0, "This crate provides helper types for matching against enum …\nChanges how bounds are added\nThe type of binding to use when generating a pattern.\nInformation about a specific binding. This contains both …\nAdd for fields and generics\nFields only\nGenerics only\nHelper trait describing values which may be returned by …\nx\nmut x\nNone\nref x\nref mut x\nA wrapper around a syn::DeriveInput which provides …\nThis type is similar to syn’s Variant type, however each …\nA wrapper around a syn::DeriveInput’s variant which …\nSpecify which bounds should be generated by …\nAdds an impl<> generic parameter. This can be used when …\nAdd trait bounds for a trait with the given path for each …\nSpecify additional where predicate bounds which should be …\nReturns a reference to the underlying syn AST node which …\nReturns a VariantAst object which contains references to …\nReturns a reference to the underlying syn AST node which …\nUpdates the BindStyle for each of the passed-in fields by …\nUpdates the BindStyle for each of the passed-in fields by …\nThe name which this BindingInfo will bind to.\nUpdates the binding name for each fo the passed-in fields …\nUpdates the binding name for each fo the passed-in fields …\nReturns a slice of the bindings in this Variant.\nReturns a mut slice of the bindings in this Variant.\nNOTE: This methods’ features are superceded by …\nGenerates the token stream required to construct the …\nThe decl_attribute! macro declares a custom attribute …\nThe decl_derive! macro declares a custom derive wrapper. …\nIterates all the bindings of this Variant object and uses …\nIterates all the bindings of this Structure object and …\nIterates all the variants of this Structure object and …\nRuns the passed-in function once for each bound field, …\nRuns the passed-in function once for each bound field, …\nRuns the passed-in function once for each variant, passing …\nFilter the bindings created by this Variant object. This …\nFilter the bindings created by this Structure object. This …\nFilter the variants matched by this Structure object. This …\nRuns the passed-in function once for each bound field, …\nRuns the passed-in function once for each bound field, …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGenerate an impl block for the given struct. This impl …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nConvert this result into a Result for further processing / …\nConvert this result into a proc_macro::TokenStream, ready …\nCreate a new Structure with the variants and fields from …\nTrue if any bindings were omitted due to a filter call.\nTrue if any variants were omitted due to a filter_variants …\nGenerates the pattern fragment for this field binding.\nGenerates the match-arm pattern which could be used to …\nReturns a list of the type parameters which are referenced …\nReturns a list of the type parameters which are referenced …\nReturns a list of the type parameters which are refrenced …\nRemove the binding at the given index.\nRemove the variant at the given index.\nThe type of binding which this BindingInfo will create.\nRun a test on a custom derive. This macro expands both the …\nCreate a new Structure with the variants and fields from …\nNOTE: This methods’ features are superceded by …\nThis method is a no-op, underscore consts are used by …\nDumps an unpretty version of a tokenstream. Takes any type …\nNOTE: This methods’ features are superceded by …\nNOTE: This methods’ features are superceded by …\nReturns a slice of the variants in this Structure.\nReturns a mut slice of the variants in this Structure.") \ No newline at end of file diff --git a/search.desc/unicode_ident/unicode_ident-desc-0-.js b/search.desc/unicode_ident/unicode_ident-desc-0-.js new file mode 100644 index 0000000..6f7ed19 --- /dev/null +++ b/search.desc/unicode_ident/unicode_ident-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("unicode_ident", 0, "github crates-io docs-rs") \ No newline at end of file diff --git a/settings.html b/settings.html index 33b5e40..e425548 100644 --- a/settings.html +++ b/settings.html @@ -1 +1 @@ -Rustdoc settings

    Rustdoc settings

    Back
    \ No newline at end of file +Settings

    Rustdoc settings

    Back
    \ No newline at end of file diff --git a/src-files.js b/src-files.js index 4d1a75e..73dc1b8 100644 --- a/src-files.js +++ b/src-files.js @@ -1,13 +1,3 @@ -var srcIndex = JSON.parse('{\ -"delog":["",[],["hex.rs","lib.rs","logger.rs","macros.rs","render.rs"]],\ -"flexiber":["",[],["decoder.rs","encoder.rs","error.rs","header.rs","length.rs","lib.rs","simpletag.rs","slice.rs","tag.rs","tagged.rs","traits.rs"]],\ -"flexiber_derive":["",[],["decodable.rs","encodable.rs","lib.rs"]],\ -"log":["",[],["__private_api.rs","lib.rs","macros.rs"]],\ -"proc_macro2":["",[],["detection.rs","extra.rs","fallback.rs","lib.rs","marker.rs","parse.rs","rcvec.rs","wrapper.rs"]],\ -"quote":["",[],["ext.rs","format.rs","ident_fragment.rs","lib.rs","runtime.rs","spanned.rs","to_tokens.rs"]],\ -"syn":["",[["gen",[],["clone.rs","debug.rs","eq.rs","hash.rs","visit.rs"]]],["attr.rs","await.rs","bigint.rs","buffer.rs","custom_keyword.rs","custom_punctuation.rs","data.rs","derive.rs","discouraged.rs","drops.rs","error.rs","export.rs","expr.rs","ext.rs","gen_helper.rs","generics.rs","group.rs","ident.rs","lib.rs","lifetime.rs","lit.rs","lookahead.rs","mac.rs","macros.rs","op.rs","parse.rs","parse_macro_input.rs","parse_quote.rs","path.rs","print.rs","punctuated.rs","sealed.rs","span.rs","spanned.rs","thread.rs","token.rs","tt.rs","ty.rs","verbatim.rs"]],\ -"synstructure":["",[],["lib.rs","macros.rs"]],\ -"unicode_ident":["",[],["lib.rs","tables.rs"]],\ -"unicode_xid":["",[],["lib.rs","tables.rs"]]\ -}'); +var srcIndex = new Map(JSON.parse('[["delog",["",[],["hex.rs","lib.rs","logger.rs","macros.rs","render.rs"]]],["flexiber",["",[],["decoder.rs","encoder.rs","error.rs","header.rs","length.rs","lib.rs","simpletag.rs","slice.rs","tag.rs","tagged.rs","traits.rs"]]],["flexiber_derive",["",[],["decodable.rs","encodable.rs","lib.rs"]]],["log",["",[],["__private_api.rs","lib.rs","macros.rs"]]],["proc_macro2",["",[],["detection.rs","extra.rs","fallback.rs","lib.rs","marker.rs","parse.rs","rcvec.rs","wrapper.rs"]]],["quote",["",[],["ext.rs","format.rs","ident_fragment.rs","lib.rs","runtime.rs","spanned.rs","to_tokens.rs"]]],["syn",["",[["gen",[],["clone.rs","debug.rs","eq.rs","hash.rs","visit.rs"]]],["attr.rs","bigint.rs","buffer.rs","classify.rs","custom_keyword.rs","custom_punctuation.rs","data.rs","derive.rs","discouraged.rs","drops.rs","error.rs","export.rs","expr.rs","ext.rs","fixup.rs","generics.rs","group.rs","ident.rs","lib.rs","lifetime.rs","lit.rs","lookahead.rs","mac.rs","macros.rs","meta.rs","op.rs","parse.rs","parse_macro_input.rs","parse_quote.rs","path.rs","precedence.rs","print.rs","punctuated.rs","restriction.rs","scan_expr.rs","sealed.rs","span.rs","spanned.rs","thread.rs","token.rs","tt.rs","ty.rs","verbatim.rs"]]],["synstructure",["",[],["lib.rs","macros.rs"]]],["unicode_ident",["",[],["lib.rs","tables.rs"]]]]')); createSrcSidebar(); +//{"start":36,"fragment_lengths":[73,152,69,58,122,111,622,48,49]} \ No newline at end of file diff --git a/src/delog/hex.rs.html b/src/delog/hex.rs.html index 75864ea..f85beae 100644 --- a/src/delog/hex.rs.html +++ b/src/delog/hex.rs.html @@ -1,4 +1,5 @@ -hex.rs - source
    1
    +hex.rs - source

    delog/
    hex.rs

    +1
     2
     3
     4
    @@ -307,15 +308,14 @@
     307
     308
     309
    -310
    -
    //! Convenient `Display` and other traits for binary data.
    +310
    //! Convenient `Display` and other traits for binary data.
     //!
     //! Standard Rust uses the `fmt::UpperHex` and `LowerHex` traits to implement hexadecimal
     //! representations for use in format strings. For instance,
    -//! `format_args!("{:02X?}", &[7, 0xA1, 0xFF])` produces the string `"[07, A1, FF]"`.
    +//! `format_args!("{:02X?}", &[7, 0xA1, 0xFF])` produces the string `"[07, A1, FF]"`.
     //!
     //! ```
    -//! assert_eq!(format!("{:02X?}", [7u8, 0xA1, 0xFF].as_ref()), "[07, A1, FF]");
    +//! assert_eq!(format!("{:02X?}", [7u8, 0xA1, 0xFF].as_ref()), "[07, A1, FF]");
     //! ```
     //!
     //! However, this only works for the `Debug` trait, not `Display`; needs extra dancing
    @@ -332,13 +332,13 @@
     //!
     //! let data = &[7u8, 0xA1, 255, 0xC7];
     //!
    -//! assert_eq!(format!("{}", hexstr!(data)), "07A1FFC7");
    -//! assert_eq!(format!("{:x}", hexstr!(data)), "07a1ffc7");
    -//! assert_eq!(format!("{:2x}", hex_str!(data)), "07..c7");
    -//! assert_eq!(format!("{:<3x}", hex_str!(data)), "07 a1 ff..");
    -//! assert_eq!(format!("{:>3x}", hex_str!(data)), "..a1 ff c7");
    -//! assert_eq!(format!("{}", hex_str!(data, 2)), "07A1 FFC7");
    -//! assert_eq!(format!("{:<3}", hex_str!(data, sep: "|")), "07|A1|FF..");
    +//! assert_eq!(format!("{}", hexstr!(data)), "07A1FFC7");
    +//! assert_eq!(format!("{:x}", hexstr!(data)), "07a1ffc7");
    +//! assert_eq!(format!("{:2x}", hex_str!(data)), "07..c7");
    +//! assert_eq!(format!("{:<3x}", hex_str!(data)), "07 a1 ff..");
    +//! assert_eq!(format!("{:>3x}", hex_str!(data)), "..a1 ff c7");
    +//! assert_eq!(format!("{}", hex_str!(data, 2)), "07A1 FFC7");
    +//! assert_eq!(format!("{:<3}", hex_str!(data, sep: "|")), "07|A1|FF..");
     //! ```
     
     use core::fmt;
    @@ -363,7 +363,7 @@
     /// Sorry little replacement for the missing int to Unsigned type map in `typenum`.
     #[macro_export]
     #[doc(hidden)]
    -macro_rules! typeint {
    +macro_rules! typeint {
         ($name:ident, $n:expr) => {
             /// A type that represents the integer `N`.
             pub struct $name;
    @@ -388,17 +388,17 @@
     /// A type that specifies a separator str.
     pub trait Separator {
         /// The actual separator str.
    -    const SEPARATOR: &'static str;
    +    const SEPARATOR: &'static str;
     }
     
     #[macro_export]
     #[doc(hidden)]
    -macro_rules! typesep {
    +macro_rules! typesep {
         ($name:ident, $s:expr) => {
             /// A type that represents the integer `N`.
             pub struct $name;
             impl $crate::hex::Separator for $name {
    -            const SEPARATOR: &'static str = $s;
    +            const SEPARATOR: &'static str = $s;
             }
         };
     }
    @@ -406,7 +406,7 @@
     // /// New approach.
     // pub trait HexStrTrait {
     //     const BYTES_PER_BLOCK: usize;
    -//     const SEPARATOR: &'static str;
    +//     const SEPARATOR: &'static str;
     //     fn bytes(&self) -> &[u8];
     // }
     
    @@ -415,13 +415,13 @@
     ///
     /// Use the method with the same name to construct this from your byte array or slice,
     /// or preferrably the `hex_str!` or `hexstr!` macro.
    -pub struct HexStr<'a, T: ?Sized, U, S>
    +pub struct HexStr<'a, T: ?Sized, U, S>
     where
         U: Unsigned,
         S: Separator,
     {
         /// The value to be formatted.
    -    pub value: &'a T,
    +    pub value: &'a T,
         _bytes_per_block: PhantomData<U>,
         _separator: PhantomData<S>,
     }
    @@ -434,15 +434,15 @@
     /// ```
     /// use delog::hex_str;
     /// let four_bytes = &[7u8, 0xA1, 255, 0xC7];
    -/// assert_eq!(format!("{:x}", hex_str!(four_bytes)), "07 a1 ff c7");
    -/// assert_eq!(format!("{}", hex_str!(four_bytes, 2)), "07A1 FFC7");
    -/// assert_eq!(format!("{}", hex_str!(four_bytes, 2, sep: "|")), "07A1|FFC7");
    -/// assert_eq!(format!("{}", hex_str!(four_bytes, 3)), "07A1FF C7");
    +/// assert_eq!(format!("{:x}", hex_str!(four_bytes)), "07 a1 ff c7");
    +/// assert_eq!(format!("{}", hex_str!(four_bytes, 2)), "07A1 FFC7");
    +/// assert_eq!(format!("{}", hex_str!(four_bytes, 2, sep: "|")), "07A1|FFC7");
    +/// assert_eq!(format!("{}", hex_str!(four_bytes, 3)), "07A1FF C7");
     /// ```
    -macro_rules! hex_str {
    -    ($array:expr) => { $crate::hex_str!($array, 1, sep: " ") };
    +macro_rules! hex_str {
    +    ($array:expr) => { $crate::hex_str!($array, 1, sep: " ") };
         ($array:expr, sep: $separator:expr) => { $crate::hex_str!($array, 1, sep: $separator) };
    -    ($array:expr, $n:tt) => { $crate::hex_str!($array, $n, sep: " ") };
    +    ($array:expr, $n:tt) => { $crate::hex_str!($array, $n, sep: " ") };
         ($array:expr, $n:tt, sep: $separator:expr) => {{
             $crate::typesep!(Separator, $separator);
             $crate::typeint!(Number, $n);
    @@ -456,12 +456,12 @@
     /// ```
     /// use delog::hexstr;
     /// let four_bytes = &[7u8, 0xA1, 255, 0xC7];
    -/// assert_eq!(format!("{}", hexstr!(four_bytes)), "07A1FFC7");
    -/// assert_eq!(format!("{:x}", hexstr!(four_bytes)), "07a1ffc7");
    +/// assert_eq!(format!("{}", hexstr!(four_bytes)), "07A1FFC7");
    +/// assert_eq!(format!("{:x}", hexstr!(four_bytes)), "07a1ffc7");
     /// ```
    -macro_rules! hexstr {
    +macro_rules! hexstr {
         ($array:expr) => {
    -        $crate::hex_str!($array, sep: "")
    +        $crate::hex_str!($array, sep: "")
         }
     }
     
    @@ -483,16 +483,16 @@
     ///     const N: usize = 3;
     /// }
     ///
    -/// // typesep!(Pipe, "|");
    +/// // typesep!(Pipe, "|");
     /// struct Pipe {}
     /// impl Separator for Pipe {
    -///     const SEPARATOR: &'static str  = "|";
    +///     const SEPARATOR: &'static str  = "|";
     /// }
     ///
     /// let four_bytes = &[7u8, 0xA1, 255, 0xC7];
     /// let hex_str = HexStr::<_, U3, Pipe>(four_bytes);
     ///
    -/// assert_eq!(format!("{}", hex_str), "07A1FF|C7");
    +/// assert_eq!(format!("{}", hex_str), "07A1FF|C7");
     /// ```
     pub fn HexStr<T: ?Sized, U: Unsigned, S: Separator>(value: &T) -> HexStr<T, U, S> {
         HexStr {
    @@ -502,7 +502,7 @@
         }
     }
     
    -impl<T: ?Sized, S, U> fmt::Debug for HexStr<'_, T, U, S>
    +impl<T: ?Sized, S, U> fmt::Debug for HexStr<'_, T, U, S>
     where
         T: AsRef<[u8]>,
         U: Unsigned,
    @@ -514,7 +514,7 @@
         }
     }
     
    -impl<T: ?Sized, U, S> fmt::Display for HexStr<'_, T, U, S>
    +impl<T: ?Sized, U, S> fmt::Display for HexStr<'_, T, U, S>
     where
         T: AsRef<[u8]>,
         U: Unsigned,
    @@ -526,15 +526,15 @@
         }
     }
     
    -macro_rules! implement {
    +macro_rules! implement {
         ($Trait:ident, $padded_formatter:expr) => {
    -        impl<'a, T: ?Sized, U, S> fmt::$Trait for HexStr<'a, T, U, S>
    +        impl<'a, T: ?Sized, U, S> fmt::$Trait for HexStr<'a, T, U, S>
             where
                 T: AsRef<[u8]>,
                 U: Unsigned,
                 S: Separator,
             {
    -            fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
    +            fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
                     use core::fmt::{self, Alignment::*};
                     let max_bytes = f.width().unwrap_or(usize::MAX);
                     let bytes = self.value.as_ref();
    @@ -542,7 +542,7 @@
                     #[inline]
                     fn nontruncated_fmt(
                         bytes: &[u8],
    -                    f: &mut fmt::Formatter<'_>,
    +                    f: &mut fmt::Formatter<'_>,
                         chunk_size: usize,
                         separator: &str,
                     ) -> Result<(), fmt::Error> {
    @@ -560,8 +560,8 @@
                         Ok(())
                     }
     
    -                // const ELLIPSIS: &str = "…";
    -                const ELLIPSIS: &str = "..";
    +                // const ELLIPSIS: &str = "…";
    +                const ELLIPSIS: &str = "..";
     
                     let chunk_size = U::N;
                     let separator = S::SEPARATOR;
    @@ -591,8 +591,8 @@
         };
     }
     
    -implement!(LowerHex, "{:02x}");
    -implement!(UpperHex, "{:02X}");
    +implement!(LowerHex, "{:02x}");
    +implement!(UpperHex, "{:02X}");
     
     #[cfg(test)]
     mod test {
    @@ -601,21 +601,21 @@
         #[test]
         fn test_hex_str() {
             let buf = [1u8, 2, 3, 0xA1, 0xB7, 0xFF, 0x3];
    -        insta::assert_debug_snapshot!(format_args!("'{}'", hex_str!(&buf)));
    -        insta::assert_debug_snapshot!(format_args!("'{}'", hex_str!(&buf, 2)));
    -        insta::assert_debug_snapshot!(format_args!("'{:x}'", hex_str!(&buf, 2)));
    -        insta::assert_debug_snapshot!(format_args!("'{}'", hex_str!(&buf, 4)));
    -        insta::assert_debug_snapshot!(format_args!("'{}'", hex_str!(&buf[..], 4)));
    -        insta::assert_debug_snapshot!(format_args!("'{}'", hex_str!(&buf, 4)));
    -        insta::assert_debug_snapshot!(format_args!("'{}'", hex_str!(&buf, 4)));
    +        insta::assert_debug_snapshot!(format_args!("'{}'", hex_str!(&buf)));
    +        insta::assert_debug_snapshot!(format_args!("'{}'", hex_str!(&buf, 2)));
    +        insta::assert_debug_snapshot!(format_args!("'{:x}'", hex_str!(&buf, 2)));
    +        insta::assert_debug_snapshot!(format_args!("'{}'", hex_str!(&buf, 4)));
    +        insta::assert_debug_snapshot!(format_args!("'{}'", hex_str!(&buf[..], 4)));
    +        insta::assert_debug_snapshot!(format_args!("'{}'", hex_str!(&buf, 4)));
    +        insta::assert_debug_snapshot!(format_args!("'{}'", hex_str!(&buf, 4)));
         }
     
         #[test]
         fn test_custom_hex_str() {
             let buf = [1u8, 2, 3, 0xA1, 0xB7, 0xFF, 0x3];
             typeint!(U3, 3);
    -        typesep!(Space, " ");
    -        insta::assert_debug_snapshot!(format_args!("'{:X}'", HexStr::<_, U3, Space>(&buf),));
    +        typesep!(Space, " ");
    +        insta::assert_debug_snapshot!(format_args!("'{:X}'", HexStr::<_, U3, Space>(&buf),));
         }
     }
     
    \ No newline at end of file diff --git a/src/delog/lib.rs.html b/src/delog/lib.rs.html index d5d69d8..eb99556 100644 --- a/src/delog/lib.rs.html +++ b/src/delog/lib.rs.html @@ -1,4 +1,5 @@ -lib.rs - source
    1
    +lib.rs - source

    delog/
    lib.rs

    +1
     2
     3
     4
    @@ -182,15 +183,14 @@
     182
     183
     184
    -185
    -
    //! # Compile-time configurable deferred logging (for `printf()`-debugging *aka* tracing)
    +185
    //! # Compile-time configurable deferred logging (for `printf()`-debugging *aka* tracing)
     //!
     //! This is an implementation of the `log::Log` trait, suitable for use
     //! in both embedded and desktop environments.
     //!
     //! It has two main goals:
    -//! - logs are stored in a circular static memory buffer, so that logging is "zero-cost in the inner
    -//! loop" (apart from the formatting), with deferred actual I/O later via flushing.
    +//! - logs are stored in a circular static memory buffer, so that logging is "zero-cost in the inner
    +//! loop" (apart from the formatting), with deferred actual I/O later via flushing.
     //! - compile-time log level settings for applications with multiple library components;
     //! inactive log levels of libraries are completely compiled out.
     //!
    @@ -199,12 +199,12 @@
     //!
     //! ## Usage and defaults
     //!
    -//! > *"Global settings subtractive (default all), local settings additive (default none) but with kill-switch."*
    +//! > *"Global settings subtractive (default all), local settings additive (default none) but with kill-switch."*
     //!
     //! From `log`, we inherit:
     //! - static global filters, default `LevelFilter::Trace` (i.e., everything), set via `delog` or
     //! `log` feature flags (multiple settings result in the most restrictive filter)
    -//! - dynamic global filter, initialized in the "init"/"init_default" constructors of the
    +//! - dynamic global filter, initialized in the "init"/"init_default" constructors of the
     //! macro-generated structs implementing our `Delogger` trait. This can be changed by calls to
     //! the global `set_max_level` function in `log`.
     //!
    @@ -216,7 +216,7 @@
     //! If such a libray itself defines a feature `log-all` that is active, then logging calls with these macros are passed through
     //! and goverend by the global filters. Such a library can also define a feature such as
     //! `log-info`, which activates *exactly* the info-level logs; it is up to the library to define
    -//! logic such as "log-info implies log-warn". There is a kill-switch: if the library defines a
    +//! logic such as "log-info implies log-warn". There is a kill-switch: if the library defines a
     //! feature `log-none`, and some intermediate library activates one of the additive `log-*`
     //! features, setting `log-none` completely turns off logging for this library.
     //!
    @@ -226,20 +226,20 @@
     //! we pursue different values and requirements, namely:
     //!
     //! - **compatibility with the standard `core::fmt` traits and the standard `log` library API**.
    -//!   This means that, while libraries may "upgrade" their logging capabilities by using `delog`
    +//!   This means that, while libraries may "upgrade" their logging capabilities by using `delog`
     //!   as drop-in replacement for their logging calls (see below), any existing library that already
    -//!   uses `log` is compatible. This, for our use cases, is a huge win, as opposed to using up "weirdness
    -//!   budget" and requiring custom tooling for something that is often trivial, throw-away, simple logging.
    -//! - it follows that one can easily drop a `trace!("{:?}", &suspicious_object)` call at any time for
    +//!   uses `log` is compatible. This, for our use cases, is a huge win, as opposed to using up "weirdness
    +//!   budget" and requiring custom tooling for something that is often trivial, throw-away, simple logging.
    +//! - it follows that one can easily drop a `trace!("{:?}", &suspicious_object)` call at any time for
     //!   any object that has a (possibly automatically derived) `Debug` trait implementation – without
     //!   passing around structures and keeping on top of lifetimes.
    -//! - deferred logging: This is a typical "shared memory" logger, calls to `info!` etc.
    +//! - deferred logging: This is a typical "shared memory" logger, calls to `info!` etc.
     //!   are not directly sent to their final output, but instead are stored in a circular buffer
    -//!   that is "drained" by calling `flush` on the logger at a convenient moment, for instance
    +//!   that is "drained" by calling `flush` on the logger at a convenient moment, for instance
     //!   in an idle loop.
     //! - immediate mode logging: Sometimes one wants to bypass the deferred flushing of logs,
     //!   this is possible using either the little-known `target` argument to `info!` and friends
    -//!   with "!" as parameter, or using the additional `immediate_info!` and friends macros.
    +//!   with "!" as parameter, or using the additional `immediate_info!` and friends macros.
     //! - ability to set log levels *per library, at compile-time*. This can be easily retro-fitted
     //!   on existing `log`-based libraries, by adding the requisite features in `Cargo.toml` and
     //!   replacing `log` with `delog` (see `gate-tests` for examples of this).
    @@ -250,7 +250,7 @@
     //!
     //! **Non-goals**:
     //!
    -//! - ultimate speed or code size: Our intention are "normal" logs, not the use of logging/tracing to
    +//! - ultimate speed or code size: Our intention are "normal" logs, not the use of logging/tracing to
     //!   for stream binary data to the host. While admittedly the `core::fmt`-ing facilities are not as
     //!   efficient as one might hope, in our use cases we have sufficient flash and RAM to use these (and
     //!   some hope that, someday, eventually, maybe, the formatting machinery will be revisited and
    @@ -271,27 +271,27 @@
     //! The current circular buffer implementation (v0.1.0) is definitely unsound on desktop.
     //! For embedded use, atomics are required (so no Cortex-M0/M1, and no plans to support non-atomic
     //! platforms, which are likely to also be too resource-constrained to support the bloat inherent
    -//! in `core::fmt`). While we think the implemented circular buffer algorithm works for the "nested interrupt"
    +//! in `core::fmt`). While we think the implemented circular buffer algorithm works for the "nested interrupt"
     //! setup of NVICs, it has not been tested much.
     //! The hope is that the worst case scenario is some slightly messed up log outputs.
     //!
     //! ## Outlook
    -//! We plan to iterate towards a v0.2.0 soon, making use of a separate "flusher" for the
    -//! "immediate" logging path. For instance, when logging via serial-over-USB, one might want immediate
    +//! We plan to iterate towards a v0.2.0 soon, making use of a separate "flusher" for the
    +//! "immediate" logging path. For instance, when logging via serial-over-USB, one might want immediate
     //! logs to pend a separate RTIC interrupt handler that blocks until the logs are pushed and read
     //! (allowing one to debug the boot process of a firmware), or one might want to just write to RTT
     //! (or even semihosting xD) for these, during development.
     //!
     
     #![deny(missing_docs)]
    -#![cfg_attr(not(any(feature = "std", test)), no_std)]
    +#![cfg_attr(not(any(feature = "std", test)), no_std)]
     
     use core::fmt;
     
     pub use log;
     pub use log::{Level, LevelFilter, Record};
     
    -#[cfg(feature = "example")]
    +#[cfg(feature = "example")]
     pub mod example;
     
     pub mod hex;
    @@ -319,24 +319,24 @@
     pub trait Renderer: Send + Sync {
         /// Implementor must render record into `buf`, returning the slice containing the rendered
         /// record.
    -    fn render<'a>(&self, buf: &'a mut [u8], record: &log::Record) -> &'a [u8];
    +    fn render<'a>(&self, buf: &'a mut [u8], record: &log::Record) -> &'a [u8];
     }
     
    -static mut LOGGER: Option<&'static dyn logger::TryLogWithStatistics> = None;
    +static mut LOGGER: Option<&'static dyn logger::TryLogWithStatistics> = None;
     
     /// Returns a reference to the logger (as `TryLogWithStatistics` implementation)
    -pub fn logger() -> &'static mut Option<&'static dyn logger::TryLogWithStatistics> {
    +pub fn logger() -> &'static mut Option<&'static dyn logger::TryLogWithStatistics> {
         unsafe { &mut LOGGER }
     }
     
    -// WARNING: this is not part of the crate's public API and is subject to change at any time.
    +// WARNING: this is not part of the crate's public API and is subject to change at any time.
     // Taken from `log` crate, mutatis mutandis.
     // The methods are here and not in `macro` to avoid making the latter public.
     #[doc(hidden)]
     pub fn __private_api_try_log(
         args: fmt::Arguments,
         level: log::Level,
    -    &(target, module_path, file, line): &(&str, &'static str, &'static str, u32),
    +    &(target, module_path, file, line): &(&str, &'static str, &'static str, u32),
     ) -> core::result::Result<(), ()> {
         crate::logger().ok_or(())?.try_log(
             &log::Record::builder()
    @@ -350,16 +350,16 @@
         )
     }
     
    -// WARNING: this is not part of the crate's public API and is subject to change at any time.
    +// WARNING: this is not part of the crate's public API and is subject to change at any time.
     #[doc(hidden)]
     pub fn __private_api_try_log_lit(
         message: &str,
         level: log::Level,
    -    &(target, module_path, file, line): &(&str, &'static str, &'static str, u32),
    +    &(target, module_path, file, line): &(&str, &'static str, &'static str, u32),
     ) -> core::result::Result<(), ()> {
         crate::logger().ok_or(())?.try_log(
             &log::Record::builder()
    -            .args(format_args!("{}", message))
    +            .args(format_args!("{}", message))
                 .level(level)
                 .target(target)
                 .module_path_static(Some(module_path))
    diff --git a/src/delog/logger.rs.html b/src/delog/logger.rs.html
    index 03d18a2..2a60256 100644
    --- a/src/delog/logger.rs.html
    +++ b/src/delog/logger.rs.html
    @@ -1,4 +1,5 @@
    -logger.rs - source
    1
    +logger.rs - source

    delog/
    logger.rs

    +1
     2
     3
     4
    @@ -645,27 +646,26 @@
     645
     646
     647
    -648
    -
    use core::sync::atomic::{AtomicUsize, Ordering};
    +648
    use core::sync::atomic::{AtomicUsize, Ordering};
     use core::{cmp, ptr};
     
     /// Semi-abstract characterization of the deferred loggers that the `delog!` macro produces.
     ///
     /// # Safety
    -/// This trait is markes "unsafe" to signal that users should never (need to) "write their own",
    +/// This trait is markes "unsafe" to signal that users should never (need to) "write their own",
     /// but always go through the `delog!` macro.
     ///
     /// The user has access to the global logger via `delog::logger()`, but only as TryLog/Log
     /// implementation, not with this direct access to implementation details.
    -pub unsafe trait Delogger: log::Log + crate::TryLog + State<&'static AtomicUsize> {
    +pub unsafe trait Delogger: log::Log + crate::TryLog + State<&'static AtomicUsize> {
         /// the underlying buffer
    -    fn buffer(&self) -> &'static mut [u8];
    +    fn buffer(&self) -> &'static mut [u8];
         /// How many characters were claimed so far.
    -    fn claimed(&self) -> &'static AtomicUsize;
    +    fn claimed(&self) -> &'static AtomicUsize;
         /// Call the flusher.
         fn flush(&self, logs: &str);
         /// Actually render the arguments (via internal static buffer).
    -    fn render(&self, record: &log::Record) -> &'static [u8];
    +    fn render(&self, record: &log::Record) -> &'static [u8];
     
         /// Capacity of circular buffer.
         fn capacity(&self) -> usize {
    @@ -706,7 +706,7 @@
     ///
     /// The intention is actually that implementors of this trait also
     /// implement `log::Log` in a panic-free fashion, and simply drop logs
    -/// that can't be logged. Because, if the user can handle the error, they
    +/// that can't be logged. Because, if the user can handle the error, they
     /// would be using the fallible macros, and if not, they most likely do **not**
     /// want to crash.
     pub trait TryLog: log::Log {
    @@ -741,17 +741,17 @@
     
     /// Generate a deferred logger with specified capacity and flushing mechanism.
     ///
    -/// Note that only the final "runner" generates, initializes and flushes such a deferred logger.
    +/// Note that only the final "runner" generates, initializes and flushes such a deferred logger.
     ///
     /// Libraries simply make calls to `log::log!`, or its drop-in replacement `delog::log!`,
     /// and/or its extension `delog::log_now!`, and/or its alternatives `delog::try_log!` and  `delog::try_log_now`,
     /// and/or the local logging variants `local_log!`.
     #[cfg(not(any(
    -    feature = "max_level_off",
    -    all(not(debug_assertions), feature = "release_max_level_off")
    +    feature = "max_level_off",
    +    all(not(debug_assertions), feature = "release_max_level_off")
     )))]
     #[macro_export]
    -macro_rules! delog {
    +macro_rules! delog {
         ($logger:ident, $capacity:expr, $render_capacity:expr, $flusher:ty) => {
             delog!(
                 $logger,
    @@ -765,7 +765,7 @@
                 #[inline]
                 pub fn init_default(
                     level: $crate::log::LevelFilter,
    -                flusher: &'static $flusher,
    +                flusher: &'static $flusher,
                 ) -> Result<(), ()> {
                     $logger::init(level, flusher, $crate::render::default())
                 }
    @@ -785,7 +785,7 @@
                 #[inline]
                 pub fn init_default(
                     level: $crate::log::LevelFilter,
    -                flusher: &'static $flusher,
    +                flusher: &'static $flusher,
                 ) -> Result<(), ()> {
                     $logger::init(level, flusher, $crate::render::default())
                 }
    @@ -800,9 +800,9 @@
             #[derive(Clone, Copy)]
             /// Generated deferred logging implementation.
             pub struct $logger {
    -            flusher: &'static $flusher,
    -            renderer: &'static $renderer,
    -            // immediate_flusher: &'static $flusher,
    +            flusher: &'static $flusher,
    +            renderer: &'static $renderer,
    +            // immediate_flusher: &'static $flusher,
             }
     
             // log::Log implementations are required to be Send + Sync
    @@ -866,8 +866,8 @@
                 #[inline]
                 pub fn init(
                     level: $crate::log::LevelFilter,
    -                flusher: &'static $flusher,
    -                renderer: &'static $renderer,
    +                flusher: &'static $flusher,
    +                renderer: &'static $renderer,
                 ) -> Result<(), ()> {
                     use core::sync::atomic::{AtomicBool, Ordering};
     
    @@ -888,45 +888,45 @@
                     }
                 }
     
    -            fn get() -> &'static mut Option<$logger> {
    +            fn get() -> &'static mut Option<$logger> {
                     static mut LOGGER: Option<$logger> = None;
                     unsafe { &mut LOGGER }
                 }
     
                 pub fn flush() {
    -                // gracefully degrade if we're not initialized yet
    +                // gracefully degrade if we're not initialized yet
                     if let Some(logger) = Self::get() {
                         $crate::log::Log::flush(logger)
                     }
                 }
             }
     
    -        impl $crate::State<&'static core::sync::atomic::AtomicUsize> for $logger {
    -            fn attempts(&self) -> &'static core::sync::atomic::AtomicUsize {
    +        impl $crate::State<&'static core::sync::atomic::AtomicUsize> for $logger {
    +            fn attempts(&self) -> &'static core::sync::atomic::AtomicUsize {
                     use core::sync::atomic::AtomicUsize;
                     static LOG_ATTEMPT_COUNT: AtomicUsize = AtomicUsize::new(0);
                     &LOG_ATTEMPT_COUNT
                 }
     
    -            fn successes(&self) -> &'static core::sync::atomic::AtomicUsize {
    +            fn successes(&self) -> &'static core::sync::atomic::AtomicUsize {
                     use core::sync::atomic::AtomicUsize;
                     static LOG_SUCCESS_COUNT: AtomicUsize = AtomicUsize::new(0);
                     &LOG_SUCCESS_COUNT
                 }
     
    -            fn flushes(&self) -> &'static core::sync::atomic::AtomicUsize {
    +            fn flushes(&self) -> &'static core::sync::atomic::AtomicUsize {
                     use core::sync::atomic::AtomicUsize;
                     static LOG_FLUSH_COUNT: AtomicUsize = AtomicUsize::new(0);
                     &LOG_FLUSH_COUNT
                 }
     
    -            fn read(&self) -> &'static core::sync::atomic::AtomicUsize {
    +            fn read(&self) -> &'static core::sync::atomic::AtomicUsize {
                     use core::sync::atomic::AtomicUsize;
                     static READ: AtomicUsize = AtomicUsize::new(0);
                     &READ
                 }
     
    -            fn written(&self) -> &'static core::sync::atomic::AtomicUsize {
    +            fn written(&self) -> &'static core::sync::atomic::AtomicUsize {
                     use core::sync::atomic::AtomicUsize;
                     static WRITTEN: AtomicUsize = AtomicUsize::new(0);
                     &WRITTEN
    @@ -934,7 +934,7 @@
             }
     
             unsafe impl $crate::Delogger for $logger {
    -            fn buffer(&self) -> &'static mut [u8] {
    +            fn buffer(&self) -> &'static mut [u8] {
                     static mut BUFFER: [u8; $capacity] = [0u8; $capacity];
                     unsafe { &mut BUFFER }
                 }
    @@ -944,13 +944,13 @@
                     self.flusher.flush(logs)
                 }
     
    -            fn claimed(&self) -> &'static core::sync::atomic::AtomicUsize {
    +            fn claimed(&self) -> &'static core::sync::atomic::AtomicUsize {
                     use core::sync::atomic::AtomicUsize;
                     static CLAIMED: AtomicUsize = AtomicUsize::new(0);
                     &CLAIMED
                 }
     
    -            fn render(&self, record: &$crate::Record) -> &'static [u8] {
    +            fn render(&self, record: &$crate::Record) -> &'static [u8] {
                     static mut LOCAL_BUFFER: [u8; $render_capacity] = [0u8; $render_capacity];
     
                     let local_buffer = unsafe { &mut LOCAL_BUFFER };
    @@ -966,11 +966,11 @@
     /// Note that the cfg-gate needs to be around the entire macro, as the library
     /// calling it will not be the crate that has the `max_level_off` feature.
     #[cfg(any(
    -    feature = "max_level_off",
    -    all(not(debug_assertions), feature = "release_max_level_off")
    +    feature = "max_level_off",
    +    all(not(debug_assertions), feature = "release_max_level_off")
     ))]
     #[macro_export]
    -macro_rules! delog {
    +macro_rules! delog {
         ($logger:ident, $capacity:expr, $flusher:ty) => {
             delog!(
                 $logger,
    @@ -983,7 +983,7 @@
                 #[inline]
                 pub fn init_default(
                     level: $crate::log::LevelFilter,
    -                flusher: &'static $flusher,
    +                flusher: &'static $flusher,
                 ) -> Result<(), ()> {
                     Ok(())
                 }
    @@ -1042,13 +1042,13 @@
                 #[inline]
                 pub fn init(
                     level: $crate::log::LevelFilter,
    -                flusher: &'static $flusher,
    -                renderer: &'static $renderer,
    +                flusher: &'static $flusher,
    +                renderer: &'static $renderer,
                 ) -> Result<(), ()> {
                     Ok(())
                 }
     
    -            fn get() -> &'static mut Option<$logger> {
    +            fn get() -> &'static mut Option<$logger> {
                     static mut LOGGER: Option<$logger> = None;
                     unsafe { &mut LOGGER }
                 }
    @@ -1056,32 +1056,32 @@
                 pub fn flush() {}
             }
     
    -        impl $crate::State<&'static core::sync::atomic::AtomicUsize> for $logger {
    -            fn attempts(&self) -> &'static core::sync::atomic::AtomicUsize {
    +        impl $crate::State<&'static core::sync::atomic::AtomicUsize> for $logger {
    +            fn attempts(&self) -> &'static core::sync::atomic::AtomicUsize {
                     use core::sync::atomic::AtomicUsize;
                     static LOG_ATTEMPT_COUNT: AtomicUsize = AtomicUsize::new(0);
                     &LOG_ATTEMPT_COUNT
                 }
     
    -            fn successes(&self) -> &'static core::sync::atomic::AtomicUsize {
    +            fn successes(&self) -> &'static core::sync::atomic::AtomicUsize {
                     use core::sync::atomic::AtomicUsize;
                     static LOG_SUCCESS_COUNT: AtomicUsize = AtomicUsize::new(0);
                     &LOG_SUCCESS_COUNT
                 }
     
    -            fn flushes(&self) -> &'static core::sync::atomic::AtomicUsize {
    +            fn flushes(&self) -> &'static core::sync::atomic::AtomicUsize {
                     use core::sync::atomic::AtomicUsize;
                     static LOG_FLUSH_COUNT: AtomicUsize = AtomicUsize::new(0);
                     &LOG_FLUSH_COUNT
                 }
     
    -            fn read(&self) -> &'static core::sync::atomic::AtomicUsize {
    +            fn read(&self) -> &'static core::sync::atomic::AtomicUsize {
                     use core::sync::atomic::AtomicUsize;
                     static READ: AtomicUsize = AtomicUsize::new(0);
                     &READ
                 }
     
    -            fn written(&self) -> &'static core::sync::atomic::AtomicUsize {
    +            fn written(&self) -> &'static core::sync::atomic::AtomicUsize {
                     use core::sync::atomic::AtomicUsize;
                     static WRITTEN: AtomicUsize = AtomicUsize::new(0);
                     &WRITTEN
    @@ -1089,26 +1089,26 @@
             }
     
             unsafe impl $crate::Delogger for $logger {
    -            fn buffer(&self) -> &'static mut [u8] {
    +            fn buffer(&self) -> &'static mut [u8] {
                     unsafe { &mut [] }
                 }
     
                 fn flush(&self, logs: &str) {}
     
    -            fn claimed(&self) -> &'static core::sync::atomic::AtomicUsize {
    +            fn claimed(&self) -> &'static core::sync::atomic::AtomicUsize {
                     use core::sync::atomic::AtomicUsize;
                     static CLAIMED: AtomicUsize = AtomicUsize::new(0);
                     &CLAIMED
                 }
     
    -            fn render(&self, record: &$crate::Record) -> &'static [u8] {
    +            fn render(&self, record: &$crate::Record) -> &'static [u8] {
                     &[]
                 }
             }
         };
     }
     
    -/// The core "write to circular buffer" method. Marked unsafe to discourage use!
    +/// The core "write to circular buffer" method. Marked unsafe to discourage use!
     ///
     /// # Safety
     /// Unfortunately exposed for all to see, as the `delog!` macro needs access to it to
    @@ -1117,7 +1117,7 @@
         crate::logger::try_enqueue(delogger, record).ok();
     }
     
    -/// The fallible "write to circular buffer" method. Marked unsafe to discourage use!
    +/// The fallible "write to circular buffer" method. Marked unsafe to discourage use!
     ///
     /// # Safety
     /// Unfortunately exposed for all to see, as the `delog!` macro needs access to it to
    @@ -1125,7 +1125,7 @@
     ///
     /// This implementation needs some HEAVY testing. It is unsound on PC, where the OS
     /// can schedule threads in any manner, but assumed to be sound in ARM Cortex-M NVIC
    -/// situations, where interrupts are "nested", in the sense that one may be interrupted,
    +/// situations, where interrupts are "nested", in the sense that one may be interrupted,
     /// then the interrupter can, ..., then the interrupter hands back control, ..., and finally
     /// the original caller of this function regains control.
     ///
    @@ -1133,7 +1133,7 @@
     /// invariants `read <= written <= claimed`. Each writer pessimistically gauges sufficient
     /// capacity for its log by checking `claimed + size <= read + capacity`, accounting for the
     /// wraparound. If so, the writer **atomically advances the claim counter**, and starts copying
    -/// its data in this newly claimed space. At the end, it is the duty of the "first" caller
    +/// its data in this newly claimed space. At the end, it is the duty of the "first" caller
     /// to advance the `written` counter to the correct state.
     #[allow(unused_unsafe, unused_variables)]
     pub unsafe fn try_enqueue(
    @@ -1141,15 +1141,15 @@
         record: &log::Record,
     ) -> core::result::Result<(), ()> {
         #[cfg(any(
    -        feature = "max_level_off",
    -        all(not(debug_assertions), feature = "release_max_level_off")
    +        feature = "max_level_off",
    +        all(not(debug_assertions), feature = "release_max_level_off")
         ))]
         {
             return Ok(());
         }
         #[cfg(not(any(
    -        feature = "max_level_off",
    -        all(not(debug_assertions), feature = "release_max_level_off")
    +        feature = "max_level_off",
    +        all(not(debug_assertions), feature = "release_max_level_off")
         )))]
         {
             if record.level() > crate::log::max_level() {
    @@ -1159,7 +1159,7 @@
             // keep track of how man logs were attempted
             delogger.attempts().fetch_add(1, Ordering::SeqCst);
     
    -        if record.target() == "!" {
    +        if record.target() == "!" {
                 // todo: possibly use separate immediate_flusher
                 let input = delogger.render(record);
                 let input = unsafe { core::str::from_utf8_unchecked(input) };
    @@ -1176,7 +1176,7 @@
                 let read = delogger.read().load(Ordering::SeqCst);
                 let claimed = delogger.claimed().load(Ordering::SeqCst);
     
    -            // figure out the corner cases for "wrap-around" at usize capacity
    +            // figure out the corner cases for "wrap-around" at usize capacity
                 if claimed + size > read + capacity {
                     // not enough space, currently
                     return Err(());
    @@ -1196,7 +1196,7 @@
                 }
             };
     
    -        // find out if we're the "first" and will need to update `written` at the end:
    +        // find out if we're the "first" and will need to update `written` at the end:
             let written = delogger.written().load(Ordering::SeqCst);
             let first: bool = written == previously_claimed;
     
    @@ -1237,7 +1237,7 @@
         }
     }
     
    -/// The core "read from circular buffer" method. Marked unsafe to discourage use!
    +/// The core "read from circular buffer" method. Marked unsafe to discourage use!
     ///
     /// # Safety
     /// Unfortunately exposed for all to see, as the `delog!` macro needs access to it to
    diff --git a/src/delog/macros.rs.html b/src/delog/macros.rs.html
    index 151eb05..3d5a470 100644
    --- a/src/delog/macros.rs.html
    +++ b/src/delog/macros.rs.html
    @@ -1,4 +1,5 @@
    -macros.rs - source
    1
    +macros.rs - source

    delog/
    macros.rs

    +1
     2
     3
     4
    @@ -298,12 +299,11 @@
     298
     299
     300
    -301
    -
    /// Fallible (ungated) version of `log!`.
    +301
    /// Fallible (ungated) version of `log!`.
     #[macro_export]
     #[doc(hidden)]
    -#[cfg(not(feature = "std-log"))]
    -macro_rules! try_log {
    +#[cfg(not(feature = "std-log"))]
    +macro_rules! try_log {
         (target: $target:expr, $lvl:expr, $($arg:tt)+) => ({
             let lvl = $lvl;
             if lvl <= $crate::log::STATIC_MAX_LEVEL && lvl <= $crate::log::max_level() {
    @@ -322,8 +322,8 @@
     
     #[macro_export]
     #[doc(hidden)]
    -#[cfg(feature = "std-log")]
    -macro_rules! try_log {
    +#[cfg(feature = "std-log")]
    +macro_rules! try_log {
     
         (target: $target:expr, $lvl:expr, $($arg:tt)+) => ({
             $crate::log::log!(target: $target, $lvl, $($arg)+);
    @@ -336,18 +336,18 @@
         });
     }
     
    -// There is a syntax issue with "repetitions in binding patterns for nested macros",
    +// There is a syntax issue with "repetitions in binding patterns for nested macros",
     // with a workaround: https://github.com/rust-lang/rust/issues/35853#issuecomment-443110660
     //
    -// This is why we want to  have `($)` expressions in the following, can just imagine they're not there.
    +// This is why we want to  have `($)` expressions in the following, can just imagine they're not there.
     //
    -// Unfortunately, I couldn't get this to work, so instead we use the weird `with_dollar_sign!` instead.
    +// Unfortunately, I couldn't get this to work, so instead we use the weird `with_dollar_sign!` instead.
     
     #[macro_export]
     #[doc(hidden)]
    -macro_rules! with_dollar_sign {
    +macro_rules! with_dollar_sign {
         ($($body:tt)*) => {
    -        macro_rules! __with_dollar_sign { $($body)* }
    +        macro_rules! __with_dollar_sign { $($body)* }
             __with_dollar_sign!($);
         }
     }
    @@ -360,16 +360,16 @@
     /// To see this in action, compile documentation using `cargo doc --features example`, or inspect
     /// the `gate-tests/` subdirectory.
     #[macro_export]
    -macro_rules! generate_macros {
    +macro_rules! generate_macros {
         () => {
    -        $crate::with_dollar_sign! {
    +        $crate::with_dollar_sign! {
                 ($d:tt) => {
     
                     /// Fallible version of `debug!`.
    -                #[cfg(all(any(feature = "log-all", feature = "log-debug"), not(feature = "log-none")))]
    +                #[cfg(all(any(feature = "log-all", feature = "log-debug"), not(feature = "log-none")))]
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
    -                macro_rules! try_debug {
    +                macro_rules! try_debug {
     
                         (target: $target:expr, $d($arg:tt)+) => (
                             $crate::try_log!(target: $target, $crate::Level::Debug, $d($arg)+)
    @@ -381,20 +381,20 @@
                     }
     
                     /// Fallible version of `debug!`.
    -                #[cfg(not(all(any(feature = "log-all", feature = "log-debug"), not(feature = "log-none"))))]
    +                #[cfg(not(all(any(feature = "log-all", feature = "log-debug"), not(feature = "log-none"))))]
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
    -                macro_rules! try_debug {
    +                macro_rules! try_debug {
     
                         // (target: $target:expr, $d($arg:tt)+) => ( core::result::Result::<(), ()>::Ok(()) );
                         ($d($arg:tt)+) => ( core::result::Result::<(), ()>::Ok(()) );
                     }
     
                     /// Fallible version of `error!`.
    -                #[cfg(all(any(feature = "log-all", feature = "log-error"), not(feature = "log-none")))]
    +                #[cfg(all(any(feature = "log-all", feature = "log-error"), not(feature = "log-none")))]
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
    -                macro_rules! try_error {
    +                macro_rules! try_error {
     
                         (target: $target:expr, $d($arg:tt)+) => (
                             $crate::try_log!(target: $target, $crate::Level::Error, $d($arg)+)
    @@ -406,20 +406,20 @@
                     }
     
                     /// Fallible version of `error!`.
    -                #[cfg(not(all(any(feature = "log-all", feature = "log-error"), not(feature = "log-none"))))]
    +                #[cfg(not(all(any(feature = "log-all", feature = "log-error"), not(feature = "log-none"))))]
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
    -                macro_rules! try_error {
    +                macro_rules! try_error {
     
                         // (target: $target:expr, $d($arg:tt)+) => ( core::result::Result::<(), ()>::Ok(()) );
                         ($d($arg:tt)+) => ( core::result::Result::<(), ()>::Ok(()) );
                     }
     
                     /// Fallible version of `info!`.
    -                #[cfg(all(any(feature = "log-all", feature = "log-info"), not(feature = "log-none")))]
    +                #[cfg(all(any(feature = "log-all", feature = "log-info"), not(feature = "log-none")))]
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
    -                macro_rules! try_info {
    +                macro_rules! try_info {
     
                         (target: $target:expr, $d($arg:tt)+) => (
                             $crate::try_log!(target: $target, $crate::Level::Info, $d($arg)+)
    @@ -431,20 +431,20 @@
                     }
     
                     /// Fallible version of `info!`.
    -                #[cfg(not(all(any(feature = "log-all", feature = "log-info"), not(feature = "log-none"))))]
    +                #[cfg(not(all(any(feature = "log-all", feature = "log-info"), not(feature = "log-none"))))]
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
    -                macro_rules! try_info {
    +                macro_rules! try_info {
     
                         // (target: $target:expr, $d($arg:tt)+) => ( core::result::Result::<(), ()>::Ok(()) );
                         ($d($arg:tt)+) => ( core::result::Result::<(), ()>::Ok(()) );
                     }
     
                     /// Fallible version of `trace!`.
    -                #[cfg(all(any(feature = "log-all", feature = "log-trace"), not(feature = "log-none")))]
    +                #[cfg(all(any(feature = "log-all", feature = "log-trace"), not(feature = "log-none")))]
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
    -                macro_rules! try_trace {
    +                macro_rules! try_trace {
     
                         (target: $target:expr, $d($arg:tt)+) => (
                             $crate::try_log!(target: $target, $crate::Level::Trace, $d($arg)+)
    @@ -456,20 +456,20 @@
                     }
     
                     /// Fallible version of `trace!`.
    -                #[cfg(not(all(any(feature = "log-all", feature = "log-trace"), not(feature = "log-none"))))]
    +                #[cfg(not(all(any(feature = "log-all", feature = "log-trace"), not(feature = "log-none"))))]
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
    -                macro_rules! try_trace {
    +                macro_rules! try_trace {
     
                         (target: $target:expr, $d($arg:tt)+) => ( core::result::Result::<(), ()>::Ok(()) );
                         ($d($arg:tt)+) => ( core::result::Result::<(), ()>::Ok(()) );
                     }
     
                     /// Fallible version of `warn!`.
    -                #[cfg(all(any(feature = "log-all", feature = "log-warn"), not(feature = "log-none")))]
    +                #[cfg(all(any(feature = "log-all", feature = "log-warn"), not(feature = "log-none")))]
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
    -                macro_rules! try_warn {
    +                macro_rules! try_warn {
     
                         (target: $target:expr, $d($arg:tt)+) => (
                             $crate::try_log!(target: $target, $crate::Level::Warn, $d($arg)+)
    @@ -481,120 +481,120 @@
                     }
     
                     /// Fallible version of `warn!`.
    -                #[cfg(not(all(any(feature = "log-all", feature = "log-warn"), not(feature = "log-none"))))]
    +                #[cfg(not(all(any(feature = "log-all", feature = "log-warn"), not(feature = "log-none"))))]
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
    -                macro_rules! try_warn {
    +                macro_rules! try_warn {
     
                         (target: $target:expr, $d($arg:tt)+) => ( core::result::Result::<(), ()>::Ok(()) );
                         ($d($arg:tt)+) => ( core::result::Result::<(), ()>::Ok(()) );
                     }
     
    -                #[cfg(not(feature = "log-none"))]
    +                #[cfg(not(feature = "log-none"))]
                     /// Local version of `log!`.
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
    -                macro_rules! log {
    +                macro_rules! log {
                         (target: $target:expr, $d($arg:tt)+) => ( $crate::try_log!(target: $target, $d($arg)+).ok() );
                         ($d($arg:tt)+) => ( $crate::try_log!($d($arg)+).ok() );
                     }
     
    -                #[cfg(feature = "log-none")]
    +                #[cfg(feature = "log-none")]
                     /// Local version of `log!`.
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
    -                macro_rules! log {
    +                macro_rules! log {
                         ($d($arg:tt)+) => ( core::result::Result::<(), ()>::Ok(()) );
                     }
     
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
                     /// Local version of `debug!`.
    -                macro_rules! debug { ($d($arg:tt)+) => ( try_debug!($d($arg)+).ok() ); }
    +                macro_rules! debug { ($d($arg:tt)+) => ( try_debug!($d($arg)+).ok() ); }
     
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
                     /// Local version of `error!`.
    -                macro_rules! error { ($d($arg:tt)+) => ( try_error!($d($arg)+).ok() ); }
    +                macro_rules! error { ($d($arg:tt)+) => ( try_error!($d($arg)+).ok() ); }
     
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
                     /// Local version of `info!`.
    -                macro_rules! info { ($d($arg:tt)+) => ( try_info!($d($arg)+).ok() ); }
    +                macro_rules! info { ($d($arg:tt)+) => ( try_info!($d($arg)+).ok() ); }
     
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
                     /// Local version of `trace!`.
    -                macro_rules! trace { ($d($arg:tt)+) => ( try_trace!($d($arg)+).ok() ); }
    +                macro_rules! trace { ($d($arg:tt)+) => ( try_trace!($d($arg)+).ok() ); }
     
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
                     /// Local version of `warn!`.
    -                macro_rules! warn { ($d($arg:tt)+) => ( try_warn!($d($arg)+).ok() ); }
    +                macro_rules! warn { ($d($arg:tt)+) => ( try_warn!($d($arg)+).ok() ); }
     
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
                     /// Immediate version of `log!`.
    -                macro_rules! log_now {
    -                    ($lvl:expr, $d($arg:tt)+) => ( log!(target: "!", $lvl, $d($arg)+) );
    +                macro_rules! log_now {
    +                    ($lvl:expr, $d($arg:tt)+) => ( log!(target: "!", $lvl, $d($arg)+) );
                     }
     
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
                     /// Immediate version of `debug!`.
    -                macro_rules! debug_now { ($d($arg:tt)+) => ( debug!(target: "!", $d($arg)+) ); }
    +                macro_rules! debug_now { ($d($arg:tt)+) => ( debug!(target: "!", $d($arg)+) ); }
     
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
                     /// Immediate version of `error!`.
    -                macro_rules! error_now { ($d($arg:tt)+) => ( error!(target: "!", $d($arg)+) ); }
    +                macro_rules! error_now { ($d($arg:tt)+) => ( error!(target: "!", $d($arg)+) ); }
     
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
                     /// Immediate version of `info!`.
    -                macro_rules! info_now { ($d($arg:tt)+) => ( info!(target: "!", $d($arg)+) ); }
    +                macro_rules! info_now { ($d($arg:tt)+) => ( info!(target: "!", $d($arg)+) ); }
     
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
                     /// Immediate version of `trace!`.
    -                macro_rules! trace_now { ($d($arg:tt)+) => ( trace!(target: "!", $d($arg)+) ); }
    +                macro_rules! trace_now { ($d($arg:tt)+) => ( trace!(target: "!", $d($arg)+) ); }
     
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
                     /// Immediate version of `warn!`.
    -                macro_rules! warn_now { ($d($arg:tt)+) => ( warn!(target: "!", $d($arg)+) ); }
    +                macro_rules! warn_now { ($d($arg:tt)+) => ( warn!(target: "!", $d($arg)+) ); }
     
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
                     /// Fallible immediate version of `log!`.
    -                macro_rules! try_log_now {
    -                    ($lvl:expr, $d($arg:tt)+) => ( try_log!(target: "!", $lvl, $d($arg)+) );
    +                macro_rules! try_log_now {
    +                    ($lvl:expr, $d($arg:tt)+) => ( try_log!(target: "!", $lvl, $d($arg)+) );
                     }
     
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
                     /// Fallible immediate version of `debug!`.
    -                macro_rules! try_debug_now { ($d($arg:tt)+) => ( try_debug!(target: "!", $d($arg)+) ); }
    +                macro_rules! try_debug_now { ($d($arg:tt)+) => ( try_debug!(target: "!", $d($arg)+) ); }
     
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
                     /// Fallible immediate version of `error!`.
    -                macro_rules! try_error_now { ($d($arg:tt)+) => ( try_error!(target: "!", $d($arg)+) ); }
    +                macro_rules! try_error_now { ($d($arg:tt)+) => ( try_error!(target: "!", $d($arg)+) ); }
     
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
                     /// Fallible immediate version of `info!`.
    -                macro_rules! try_info_now { ($d($arg:tt)+) => ( try_info!(target: "!", $d($arg)+) ); }
    +                macro_rules! try_info_now { ($d($arg:tt)+) => ( try_info!(target: "!", $d($arg)+) ); }
     
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
                     /// Fallible immediate version of `trace!`.
    -                macro_rules! try_trace_now { ($d($arg:tt)+) => ( try_trace!(target: "!", $d($arg)+) ); }
    +                macro_rules! try_trace_now { ($d($arg:tt)+) => ( try_trace!(target: "!", $d($arg)+) ); }
     
                     #[macro_use] #[macro_export]
                     #[doc(hidden)]
                     /// Fallible immediate version of `warn!`.
    -                macro_rules! try_warn_now { ($d($arg:tt)+) => ( try_warn!(target: "!", $d($arg)+) ); }
    +                macro_rules! try_warn_now { ($d($arg:tt)+) => ( try_warn!(target: "!", $d($arg)+) ); }
     
                 }
             }
    diff --git a/src/delog/render.rs.html b/src/delog/render.rs.html
    index eb01e61..90c0437 100644
    --- a/src/delog/render.rs.html
    +++ b/src/delog/render.rs.html
    @@ -1,4 +1,5 @@
    -render.rs - source
    1
    +render.rs - source

    delog/
    render.rs

    +1
     2
     3
     4
    @@ -133,8 +134,7 @@
     133
     134
     135
    -136
    -
    //! The default, minimal renderer, and some helper functions.
    +136
    //! The default, minimal renderer, and some helper functions.
     
     use core::{cmp, fmt};
     
    @@ -142,7 +142,7 @@
     /// fmt::Arguments in a pre-allocated byte array.
     ///
     /// That is what this does.
    -pub fn render_arguments<'a>(buf: &'a mut [u8], args: fmt::Arguments) -> &'a [u8] {
    +pub fn render_arguments<'a>(buf: &'a mut [u8], args: fmt::Arguments) -> &'a [u8] {
         let mut writer = WriteTo::new(buf);
         core::fmt::write(&mut writer, args).ok();
         writer.endl();
    @@ -151,13 +151,13 @@
     }
     
     /// Render record, based on feature flags.
    -pub fn render_record<'a>(buf: &'a mut [u8], record: &log::Record) -> &'a [u8] {
    -    if cfg!(feature = "prefix-level") {
    +pub fn render_record<'a>(buf: &'a mut [u8], record: &log::Record) -> &'a [u8] {
    +    if cfg!(feature = "prefix-level") {
             match (record.file(), record.line()) {
                 (Some(file), Some(line)) => render_arguments(
                     buf,
                     format_args!(
    -                    "{}|{}|{}:{}: {}",
    +                    "{}|{}|{}:{}: {}",
                         record.level(),
                         record.target(),
                         file,
    @@ -167,7 +167,7 @@
                 ),
                 _ => render_arguments(
                     buf,
    -                format_args!("{}|{}: {}", record.level(), record.target(), record.args()),
    +                format_args!("{}|{}: {}", record.level(), record.target(), record.args()),
                 ),
             }
         } else {
    @@ -175,28 +175,28 @@
         }
     }
     
    -// I don't get it, why isn't this implemented already?
    -struct WriteTo<'a> {
    -    buffer: &'a mut [u8],
    +// I don't get it, why isn't this implemented already?
    +struct WriteTo<'a> {
    +    buffer: &'a mut [u8],
         // on write error (i.e. not enough space in buffer) this grows beyond
         // `buffer.len()`.
         used: usize,
     }
     
    -impl<'a> WriteTo<'a> {
    -    pub fn new(buffer: &'a mut [u8]) -> Self {
    +impl<'a> WriteTo<'a> {
    +    pub fn new(buffer: &'a mut [u8]) -> Self {
             WriteTo { buffer, used: 0 }
         }
     
         pub fn endl(&mut self) {
             if self.used < self.buffer.len() {
    -            self.buffer[self.used] = b'\n';
    +            self.buffer[self.used] = b'\n';
                 self.used += 1;
             }
         }
     }
     
    -impl<'a> core::fmt::Write for WriteTo<'a> {
    +impl<'a> core::fmt::Write for WriteTo<'a> {
         fn write_str(&mut self, s: &str) -> fmt::Result {
             if self.used > self.buffer.len() {
                 return Err(fmt::Error);
    @@ -221,13 +221,13 @@
     pub struct DefaultRenderer {}
     
     /// The default, minimal renderer.
    -pub fn default() -> &'static DefaultRenderer {
    +pub fn default() -> &'static DefaultRenderer {
         static RENDERER: DefaultRenderer = DefaultRenderer {};
         &RENDERER
     }
     
     impl Renderer for DefaultRenderer {
    -    fn render<'a>(&self, buf: &'a mut [u8], record: &log::Record) -> &'a [u8] {
    +    fn render<'a>(&self, buf: &'a mut [u8], record: &log::Record) -> &'a [u8] {
             render_arguments(buf, *record.args())
         }
     }
    @@ -240,12 +240,12 @@
     pub struct RipgrepRenderer {}
     
     impl Renderer for RipgrepRenderer {
    -    fn render<'a>(&self, buf: &'a mut [u8], record: &log::Record) -> &'a [u8] {
    +    fn render<'a>(&self, buf: &'a mut [u8], record: &log::Record) -> &'a [u8] {
             match (record.file(), record.line()) {
                 (Some(file), Some(line)) => render_arguments(
                     buf,
                     format_args!(
    -                    "{}|{}|{}:{}: {}",
    +                    "{}|{}|{}:{}: {}",
                         record.level(),
                         record.target(),
                         file,
    @@ -256,7 +256,7 @@
                 (Some(file), None) => render_arguments(
                     buf,
                     format_args!(
    -                    "{}|{}|{}: {}",
    +                    "{}|{}|{}: {}",
                         record.level(),
                         record.target(),
                         file,
    @@ -265,7 +265,7 @@
                 ),
                 _ => render_arguments(
                     buf,
    -                format_args!("{}|{}: {}", record.level(), record.target(), record.args()),
    +                format_args!("{}|{}: {}", record.level(), record.target(), record.args()),
                 ),
             }
         }
    diff --git a/src/flexiber/decoder.rs.html b/src/flexiber/decoder.rs.html
    index 6177848..74e4b98 100644
    --- a/src/flexiber/decoder.rs.html
    +++ b/src/flexiber/decoder.rs.html
    @@ -1,4 +1,5 @@
    -decoder.rs - source
    1
    +decoder.rs - source

    flexiber/
    decoder.rs

    +1
     2
     3
     4
    @@ -189,25 +190,27 @@
     189
     190
     191
    -
    use core::convert::TryInto;
    -use crate::{Decodable, ErrorKind, Length, Result, TagLike};
    +192
    +193
    +194
    use crate::{Decodable, ErrorKind, Length, Result, TagLike};
    +use core::convert::TryInto;
     
     /// BER-TLV decoder.
     #[derive(Debug)]
    -pub struct Decoder<'a> {
    +pub struct Decoder<'a> {
         /// Byte slice being decoded.
         ///
         /// In the event an error was previously encountered this will be set to
         /// `None` to prevent further decoding while in a bad state.
    -    bytes: Option<&'a [u8]>,
    +    bytes: Option<&'a [u8]>,
     
         /// Position within the decoded slice.
         position: Length,
     }
     
    -impl<'a> Decoder<'a> {
    +impl<'a> Decoder<'a> {
         /// Create a new decoder for the given byte slice.
    -    pub fn new(bytes: &'a [u8]) -> Self {
    +    pub fn new(bytes: &'a [u8]) -> Self {
             Self {
                 bytes: Some(bytes),
                 position: Length::zero(),
    @@ -215,7 +218,7 @@
         }
     
         /// Decode a value which impls the [`Decodable`] trait.
    -    pub fn decode<T: Decodable<'a>>(&mut self) -> Result<T> {
    +    pub fn decode<T: Decodable<'a>>(&mut self) -> Result<T> {
             if self.is_failed() {
                 self.error(ErrorKind::Failed)?;
             }
    @@ -227,14 +230,17 @@
         }
     
         /// Decode a TaggedValue with tag checked to be as expected, returning the value
    -    pub fn decode_tagged_value<T: Decodable<'a> + TagLike, V: Decodable<'a>>(&mut self, tag: T) -> Result<V> {
    +    pub fn decode_tagged_value<T: Decodable<'a> + TagLike, V: Decodable<'a>>(
    +        &mut self,
    +        tag: T,
    +    ) -> Result<V> {
             let tagged: crate::TaggedSlice<T> = self.decode()?;
             tagged.tag().assert_eq(tag)?;
             Self::new(tagged.as_bytes()).decode()
         }
     
         /// Decode a TaggedSlice with tag checked to be as expected, returning the value
    -    pub fn decode_tagged_slice<T: Decodable<'a> + TagLike>(&mut self, tag: T) -> Result<&'a [u8]> {
    +    pub fn decode_tagged_slice<T: Decodable<'a> + TagLike>(&mut self, tag: T) -> Result<&'a [u8]> {
             let tagged: crate::TaggedSlice<T> = self.decode()?;
             tagged.tag().assert_eq(tag)?;
             Ok(tagged.as_bytes())
    @@ -270,7 +276,7 @@
     
         /// Have we decoded all of the bytes in this [`Decoder`]?
         ///
    -    /// Returns `false` if we're not finished decoding or if a fatal error
    +    /// Returns `false` if we're not finished decoding or if a fatal error
         /// has occurred.
         pub fn is_finished(&self) -> bool {
             self.remaining().map(|rem| rem.is_empty()).unwrap_or(false)
    @@ -286,7 +292,7 @@
     
         /// Obtain a slice of bytes of the given length from the current cursor
         /// position, or return an error if we have insufficient data.
    -    pub(crate) fn bytes(&mut self, len: impl TryInto<Length>) -> Result<&'a [u8]> {
    +    pub(crate) fn bytes(&mut self, len: impl TryInto<Length>) -> Result<&'a [u8]> {
             if self.is_failed() {
                 self.error(ErrorKind::Failed)?;
             }
    @@ -308,12 +314,12 @@
         pub(crate) fn peek(&self) -> Option<u8> {
             self.remaining()
                 .ok()
    -            .and_then(|bytes| bytes.get(0).cloned())
    +            .and_then(|bytes| bytes.first().cloned())
         }
     
         /// Obtain the remaining bytes in this decoder from the current cursor
         /// position.
    -    fn remaining(&self) -> Result<&'a [u8]> {
    +    fn remaining(&self) -> Result<&'a [u8]> {
             self.bytes
                 .and_then(|b| b.get(self.position.into()..))
                 .ok_or_else(|| ErrorKind::Truncated.at(self.position))
    @@ -325,8 +331,8 @@
         }
     }
     
    -impl<'a> From<&'a [u8]> for Decoder<'a> {
    -    fn from(bytes: &'a [u8]) -> Decoder<'a> {
    +impl<'a> From<&'a [u8]> for Decoder<'a> {
    +    fn from(bytes: &'a [u8]) -> Decoder<'a> {
             Decoder::new(bytes)
         }
     }
    diff --git a/src/flexiber/encoder.rs.html b/src/flexiber/encoder.rs.html
    index 281b2e1..f58babe 100644
    --- a/src/flexiber/encoder.rs.html
    +++ b/src/flexiber/encoder.rs.html
    @@ -1,4 +1,5 @@
    -encoder.rs - source
    1
    +encoder.rs - source

    flexiber/
    encoder.rs

    +1
     2
     3
     4
    @@ -178,22 +179,28 @@
     178
     179
     180
    -
    use core::convert::{TryFrom, TryInto};
    -use crate::{Encodable, ErrorKind, header::Header, Length, Result, Tag};
    +181
    +182
    +183
    +184
    +185
    +186
    +187
    use crate::{header::Header, Encodable, ErrorKind, Length, Result, Tag};
    +use core::convert::{TryFrom, TryInto};
     
     /// BER-TLV encoder.
     #[derive(Debug)]
    -pub struct Encoder<'a> {
    +pub struct Encoder<'a> {
         /// Buffer into which BER-TLV-encoded message is written
    -    bytes: Option<&'a mut [u8]>,
    +    bytes: Option<&'a mut [u8]>,
     
         /// Total number of bytes written to buffer so far
         position: Length,
     }
     
    -impl<'a> Encoder<'a> {
    +impl<'a> Encoder<'a> {
         /// Create a new encoder with the given byte slice as a backing buffer.
    -    pub fn new(bytes: &'a mut [u8]) -> Self {
    +    pub fn new(bytes: &'a mut [u8]) -> Self {
             Self {
                 bytes: Some(bytes),
                 position: Length::zero(),
    @@ -226,7 +233,7 @@
     
         /// Finish encoding to the buffer, returning a slice containing the data
         /// written to the buffer.
    -    pub fn finish(self) -> Result<&'a [u8]> {
    +    pub fn finish(self) -> Result<&'a [u8]> {
             let position = self.position;
     
             match self.bytes {
    @@ -238,7 +245,11 @@
         }
     
         /// Encode a collection of values which impl the [`Encodable`] trait under a given tag.
    -    pub fn encode_tagged_collection(&mut self, tag: Tag, encodables: &[&dyn Encodable]) -> Result<()> {
    +    pub fn encode_tagged_collection(
    +        &mut self,
    +        tag: Tag,
    +        encodables: &[&dyn Encodable],
    +    ) -> Result<()> {
             let expected_len = Length::try_from(encodables)?;
             Header::new(tag, expected_len).and_then(|header| header.encode(self))?;
     
    @@ -306,7 +317,7 @@
             // Unfortunately tainting the buffer on error is tricky to do when
             // potentially holding a reference to the buffer, and failure to taint
             // it would not uphold the invariant that any errors should taint it.
    -        let slice = &mut self.bytes.as_mut().expect("DER encoder tainted")[range];
    +        let slice = &mut self.bytes.as_mut().expect("DER encoder tainted")[range];
             *position = end;
     
             Ok(slice)
    @@ -343,7 +354,10 @@
     
             let tv = TaggedSlice::from(Tag::application(5).constructed(), &[]).unwrap();
             let mut buf = [0u8; 4];
    -        assert_eq!(tv.encode_to_slice(&mut buf).unwrap(), &[(0b01 << 6) | (1 << 5) | 5, 0x00]);
    +        assert_eq!(
    +            tv.encode_to_slice(&mut buf).unwrap(),
    +            &[(0b01 << 6) | (1 << 5) | 5, 0x00]
    +        );
         }
     
         // use super::Encoder;
    diff --git a/src/flexiber/error.rs.html b/src/flexiber/error.rs.html
    index e7ad020..7d4f275 100644
    --- a/src/flexiber/error.rs.html
    +++ b/src/flexiber/error.rs.html
    @@ -1,4 +1,5 @@
    -error.rs - source
    1
    +error.rs - source

    flexiber/
    error.rs

    +1
     2
     3
     4
    @@ -241,9 +242,7 @@
     241
     242
     243
    -244
    -245
    -
    //! Error types.
    +244
    //! Error types.
     
     // pub use core::str::Utf8Error;
     
    @@ -296,18 +295,18 @@
     }
     
     impl fmt::Display for Error {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    -        write!(f, "{}", self.kind)?;
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +        write!(f, "{}", self.kind)?;
     
             if let Some(pos) = self.position {
    -            write!(f, " at BER-TLV byte {}", pos)?;
    +            write!(f, " at BER-TLV byte {}", pos)?;
             }
     
             Ok(())
         }
     }
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl std::error::Error for Error {}
     
     impl From<ErrorKind> for Error {
    @@ -334,14 +333,14 @@
     //     }
     // }
     
    -// #[cfg(feature = "oid")]
    +// #[cfg(feature = "oid")]
     // impl From<const_oid::Error> for Error {
     //     fn from(_: const_oid::Error) -> Error {
     //         ErrorKind::Oid.into()
     //     }
     // }
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl std::error::Error for ErrorKind {}
     
     /// Error type.
    @@ -374,11 +373,10 @@
     
         // /// Malformed OID
         // Oid,
    -
         /// Integer overflow occurred (library bug!)
         Overflow,
     
    -    /// Message is longer than BER-TLV's limits support
    +    /// Message is longer than BER-TLV's limits support
         Overlength,
     
         /// Undecoded trailing data at end of message
    @@ -429,10 +427,8 @@
         //     /// Tag of the unexpected value
         //     tag: Tag,
         // },
    -
         /// Tag does not fit in 3 bytes
         UnsupportedTagSize,
    -
     }
     
     impl ErrorKind {
    @@ -444,47 +440,49 @@
     }
     
     impl fmt::Display for ErrorKind {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
             match self {
    -            ErrorKind::Failed => write!(f, "operation failed"),
    -            ErrorKind::InvalidClass { value } => write!(f, "invalid class {}", value),
    -            ErrorKind::InvalidLength => write!(f, "length greater than protocol maximum"),
    +            ErrorKind::Failed => write!(f, "operation failed"),
    +            ErrorKind::InvalidClass { value } => write!(f, "invalid class {}", value),
    +            ErrorKind::InvalidLength => write!(f, "length greater than protocol maximum"),
                 ErrorKind::InvalidTag { byte } => {
    -                write!(f, "invalid BER-TLV tag: 0x{:02x}", byte)
    +                write!(f, "invalid BER-TLV tag: 0x{:02x}", byte)
                 }
    -            ErrorKind::Length { tag } => write!(f, "incorrect length for {}", tag),
    -            // ErrorKind::Noncanonical => write!(f, "DER is not canonically encoded"),
    -            // ErrorKind::Oid => write!(f, "malformed OID"),
    -            ErrorKind::Overflow => write!(f, "integer overflow"),
    -            ErrorKind::Overlength => write!(f, "BER-TLV message is too long"),
    +            ErrorKind::Length { tag } => write!(f, "incorrect length for {}", tag),
    +            // ErrorKind::Noncanonical => write!(f, "DER is not canonically encoded"),
    +            // ErrorKind::Oid => write!(f, "malformed OID"),
    +            ErrorKind::Overflow => write!(f, "integer overflow"),
    +            ErrorKind::Overlength => write!(f, "BER-TLV message is too long"),
                 ErrorKind::TrailingData { decoded, remaining } => {
                     write!(
                         f,
    -                    "trailing data at end of BER-TLV message: decoded {} bytes, {} bytes remaining",
    +                    "trailing data at end of BER-TLV message: decoded {} bytes, {} bytes remaining",
                         decoded, remaining
                     )
                 }
    -            ErrorKind::Truncated => write!(f, "BER-TLV message is truncated"),
    +            ErrorKind::Truncated => write!(f, "BER-TLV message is truncated"),
                 ErrorKind::Underlength { expected, actual } => write!(
                     f,
    -                "BER-TLV message too short: expected {}, got {}",
    +                "BER-TLV message too short: expected {}, got {}",
                     expected, actual
                 ),
                 ErrorKind::UnexpectedTag { expected, actual } => {
    -                write!(f, "unexpected BER-TLV tag: ")?;
    +                write!(f, "unexpected BER-TLV tag: ")?;
     
                     if let Some(tag) = expected {
    -                    write!(f, "expected {}, ", tag)?;
    +                    write!(f, "expected {}, ", tag)?;
                     }
     
    -                write!(f, "got {}", actual)
    +                write!(f, "got {}", actual)
                 }
                 // ErrorKind::UnknownTag { byte } => {
    -            //     write!(f, "unknown/unsupported ASN.1 DER tag: 0x{:02x}", byte)
    +            //     write!(f, "unknown/unsupported ASN.1 DER tag: 0x{:02x}", byte)
                 // }
    -            // ErrorKind::Utf8(e) => write!(f, "{}", e),
    -            // ErrorKind::Value { tag } => write!(f, "malformed ASN.1 DER value for {}", tag),
    -            ErrorKind::UnsupportedTagSize => write!(f, "tags occupying more than 3 octets not supported"),
    +            // ErrorKind::Utf8(e) => write!(f, "{}", e),
    +            // ErrorKind::Value { tag } => write!(f, "malformed ASN.1 DER value for {}", tag),
    +            ErrorKind::UnsupportedTagSize => {
    +                write!(f, "tags occupying more than 3 octets not supported")
    +            }
             }
         }
     }
    diff --git a/src/flexiber/header.rs.html b/src/flexiber/header.rs.html
    index d169da6..7eace28 100644
    --- a/src/flexiber/header.rs.html
    +++ b/src/flexiber/header.rs.html
    @@ -1,4 +1,5 @@
    -header.rs - source
    1
    +header.rs - source

    flexiber/
    header.rs

    +1
     2
     3
     4
    @@ -55,7 +56,9 @@
     55
     56
     57
    -
    //! BER-TLV headers.
    +58
    +59
    +60
    //! BER-TLV headers.
     
     use crate::{Decodable, Decoder, Encodable, Encoder, ErrorKind, Length, Result, TagLike};
     use core::convert::TryInto;
    @@ -80,16 +83,19 @@
         }
     }
     
    -impl<'a, T> Decodable<'a> for Header<T>
    +impl<'a, T> Decodable<'a> for Header<T>
     where
    -    T: Decodable<'a> + TagLike,
    +    T: Decodable<'a> + TagLike,
     {
    -    fn decode<'b>(decoder: &'b mut Decoder<'a>) -> Result<Header<T>> {
    +    fn decode<'b>(decoder: &'b mut Decoder<'a>) -> Result<Header<T>> {
             let tag = T::decode(decoder)?;
     
             let length = Length::decode(decoder).map_err(|e| {
                 if e.kind() == ErrorKind::Overlength {
    -                ErrorKind::Length { tag: tag.embedding() }.into()
    +                ErrorKind::Length {
    +                    tag: tag.embedding(),
    +                }
    +                .into()
                 } else {
                     e
                 }
    @@ -101,13 +107,13 @@
     
     impl<T> Encodable for Header<T>
     where
    -    T: Encodable
    +    T: Encodable,
     {
         fn encoded_length(&self) -> Result<Length> {
             self.tag.encoded_length()? + self.length.encoded_length()?
         }
     
    -    fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()> {
    +    fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()> {
             self.tag.encode(encoder)?;
             self.length.encode(encoder)
         }
    diff --git a/src/flexiber/length.rs.html b/src/flexiber/length.rs.html
    index 2f05c7b..cb17265 100644
    --- a/src/flexiber/length.rs.html
    +++ b/src/flexiber/length.rs.html
    @@ -1,4 +1,5 @@
    -length.rs - source
    1
    +length.rs - source

    flexiber/
    length.rs

    +1
     2
     3
     4
    @@ -239,9 +240,7 @@
     239
     240
     241
    -242
    -243
    -
    //! Length calculations for encoded ASN.1 DER values
    +242
    //! Length calculations for encoded ASN.1 DER values
     
     use crate::{Decodable, Decoder, Encodable, Encoder, Error, ErrorKind, Result};
     use core::{convert::TryFrom, fmt, ops::Add};
    @@ -276,12 +275,12 @@
     }
     
     /// Calculate the sum of the encoded lengths of the encodables.
    -impl<'a> TryFrom<&'a [&'a dyn Encodable]> for Length {
    +impl<'a> TryFrom<&'a [&'a dyn Encodable]> for Length {
         type Error = Error;
         fn try_from(encodables: &[&dyn Encodable]) -> Result<Length> {
             encodables
                 .iter()
    -            .fold(Ok(Length::zero()), |sum, encodable| {
    +            .try_fold(Length::zero(), |sum, encodable| {
                     sum + encodable.encoded_length()?
                 })
         }
    @@ -364,8 +363,8 @@
         }
     }
     
    -impl Decodable<'_> for Length {
    -    fn decode(decoder: &mut Decoder<'_>) -> Result<Length> {
    +impl Decodable<'_> for Length {
    +    fn decode(decoder: &mut Decoder<'_>) -> Result<Length> {
             match decoder.byte()? {
                 len if len < 0x80 => Ok(len.into()),
                 // we do not support indefinite lengths
    @@ -399,7 +398,7 @@
             }
         }
     
    -    fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()> {
    +    fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()> {
             match self.0 {
                 0..=0x7F => encoder.byte(self.0 as u8),
                 0x80..=0xFF => {
    @@ -415,9 +414,8 @@
         }
     }
     
    -
     impl fmt::Display for Length {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
             self.0.fmt(f)
         }
     }
    diff --git a/src/flexiber/lib.rs.html b/src/flexiber/lib.rs.html
    index 7bf1f6e..4481b8a 100644
    --- a/src/flexiber/lib.rs.html
    +++ b/src/flexiber/lib.rs.html
    @@ -1,4 +1,5 @@
    -lib.rs - source
    1
    +lib.rs - source

    flexiber/
    lib.rs

    +1
     2
     3
     4
    @@ -60,9 +61,7 @@
     60
     61
     62
    -63
    -64
    -
    //! # flexiber
    +63
    //! # flexiber
     //!
     //! Implementation of the BER-TLV serialization format from ISO 7816-4:2005.
     //!
    @@ -84,17 +83,17 @@
     #![forbid(unsafe_code)]
     // #![warn(missing_docs, rust_2018_idioms)]
     
    -#[cfg(feature = "alloc")]
    +#[cfg(feature = "alloc")]
     extern crate alloc;
     
     #[macro_use]
     extern crate delog;
     generate_macros!();
     
    -#[cfg(feature = "derive")]
    +#[cfg(feature = "derive")]
     pub use flexiber_derive::{Decodable, Encodable};
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     extern crate std;
     
     mod decoder;
    @@ -116,14 +115,13 @@
     pub use slice::Slice;
     pub use tag::{Class, Tag, TagLike};
     pub use tagged::{TaggedSlice, TaggedValue};
    -pub use traits::{Container, Decodable, Encodable, Tagged};
    -#[cfg(feature = "heapless")]
    +#[cfg(feature = "heapless")]
     pub use traits::EncodableHeapless;
    +pub use traits::{Container, Decodable, Encodable, Tagged};
     
     // #[derive(Clone, Copy, Debug, Decodable, Encodable, Eq, PartialEq)]
    -// struct T2<'a> {
    -//     #[tlv(simple = "0x55", slice)]
    -//     a: &'a [u8],
    +// struct T2<'a> {
    +//     #[tlv(simple = "0x55", slice)]
    +//     a: &'a [u8],
     // }
    -
     
    \ No newline at end of file diff --git a/src/flexiber/simpletag.rs.html b/src/flexiber/simpletag.rs.html index 1efacf1..921a943 100644 --- a/src/flexiber/simpletag.rs.html +++ b/src/flexiber/simpletag.rs.html @@ -1,4 +1,5 @@ -simpletag.rs - source
    1
    +simpletag.rs - source

    flexiber/
    simpletag.rs

    +1
     2
     3
     4
    @@ -70,15 +71,21 @@
     70
     71
     72
    -
    use core::convert::TryFrom;
    -use crate::{Decodable, Decoder, Encodable, Encoder, Error, ErrorKind, Length, Result, Tag, TagLike};
    +73
    +74
    +75
    +76
    +77
    use crate::{
    +    Decodable, Decoder, Encodable, Encoder, Error, ErrorKind, Length, Result, Tag, TagLike,
    +};
    +use core::convert::TryFrom;
     
     /// These are tags like in SIMPLE-TLV.
     ///
    -/// The tag field consists of a single byte encoding a tag number from 1 to 254. The values '00' and 'FF' are invalid.
    +/// The tag field consists of a single byte encoding a tag number from 1 to 254. The values '00' and 'FF' are invalid.
     ///
     /// The use case is that PIV (FIPS 201) data objects generally use BER-TLV, but, for historical reasons,
    -/// label entries with "simple" tags (in particular, tag numbers larger than 30 are still encoded
    +/// label entries with "simple" tags (in particular, tag numbers larger than 30 are still encoded
     /// as single bytes.
     #[derive(Clone, Copy, Eq, PartialEq)]
     pub struct SimpleTag(u8);
    @@ -96,12 +103,16 @@
     impl TagLike for SimpleTag {
         fn embedding(self) -> Tag {
             use crate::Class::*;
    -        Tag { class: Universal, constructed: false, number: self.0 as u16 }
    +        Tag {
    +            class: Universal,
    +            constructed: false,
    +            number: self.0 as u16,
    +        }
         }
     }
     
    -impl Decodable<'_> for SimpleTag {
    -    fn decode(decoder: &mut Decoder<'_>) -> Result<Self> {
    +impl Decodable<'_> for SimpleTag {
    +    fn decode(decoder: &mut Decoder<'_>) -> Result<Self> {
             decoder.byte().and_then(Self::try_from)
         }
     }
    @@ -111,23 +122,22 @@
             Ok(1u8.into())
         }
     
    -    fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()> {
    +    fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()> {
             encoder.byte(self.0)
         }
     }
     
    -
     #[cfg(test)]
     mod tests {
    -    use core::convert::TryFrom;
         use crate::{Encodable, SimpleTag, TaggedSlice};
    +    use core::convert::TryFrom;
     
         #[test]
         fn simple_tag() {
             let mut buf = [0u8; 384];
     
             let tag = SimpleTag::try_from(37).unwrap();
    -        let slice = &[1u8,2,3];
    +        let slice = &[1u8, 2, 3];
             let short = TaggedSlice::from(tag, slice).unwrap();
     
             assert_eq!(
    diff --git a/src/flexiber/slice.rs.html b/src/flexiber/slice.rs.html
    index 8a5b1fb..b594e64 100644
    --- a/src/flexiber/slice.rs.html
    +++ b/src/flexiber/slice.rs.html
    @@ -1,4 +1,5 @@
    -slice.rs - source
    1
    +slice.rs - source

    flexiber/
    slice.rs

    +1
     2
     3
     4
    @@ -41,25 +42,23 @@
     41
     42
     43
    -44
    -45
    -
    use core::convert::TryFrom;
    -use crate::{Length, Result};
    +44
    use crate::{Length, Result};
    +use core::convert::TryFrom;
     
     /// Slice of at most `Length::max()` bytes.
     #[derive(Copy, Clone, Debug, Eq, PartialEq)]
    -pub struct Slice<'a> {
    +pub struct Slice<'a> {
         /// Inner value
    -    inner: &'a [u8],
    +    inner: &'a [u8],
     
         /// Precomputed `Length` (avoids possible panicking conversions)
         length: Length,
     }
     
    -impl<'a> Slice<'a> {
    +impl<'a> Slice<'a> {
         /// Create a new [`Slice`], ensuring that the provided `slice` value
         /// is shorter than `Length::max()`.
    -    pub fn new(slice: &'a [u8]) -> Result<Self> {
    +    pub fn new(slice: &'a [u8]) -> Result<Self> {
             Ok(Self {
                 inner: slice,
                 length: Length::try_from(slice.len())?,
    @@ -67,7 +66,7 @@
         }
     
         /// Borrow the inner byte slice
    -    pub fn as_bytes(&self) -> &'a [u8] {
    +    pub fn as_bytes(&self) -> &'a [u8] {
             self.inner
         }
     
    @@ -82,10 +81,9 @@
         }
     }
     
    -impl AsRef<[u8]> for Slice<'_> {
    +impl AsRef<[u8]> for Slice<'_> {
         fn as_ref(&self) -> &[u8] {
             self.as_bytes()
         }
     }
    -
     
    \ No newline at end of file diff --git a/src/flexiber/tag.rs.html b/src/flexiber/tag.rs.html index 2987fe9..b3c8540 100644 --- a/src/flexiber/tag.rs.html +++ b/src/flexiber/tag.rs.html @@ -1,4 +1,5 @@ -tag.rs - source
    1
    +tag.rs - source

    flexiber/
    tag.rs

    +1
     2
     3
     4
    @@ -249,8 +250,48 @@
     249
     250
     251
    -
    use core::{convert::{TryFrom, TryInto}, fmt};
    -use crate::{Decodable, Decoder, Encodable, Encoder, Error, ErrorKind, Length, Result, TaggedValue};
    +252
    +253
    +254
    +255
    +256
    +257
    +258
    +259
    +260
    +261
    +262
    +263
    +264
    +265
    +266
    +267
    +268
    +269
    +270
    +271
    +272
    +273
    +274
    +275
    +276
    +277
    +278
    +279
    +280
    +281
    +282
    +283
    +284
    +285
    +286
    +287
    use crate::{
    +    Decodable, Decoder, Encodable, Encoder, Error, ErrorKind, Length, Result, TaggedValue,
    +};
    +use core::{
    +    convert::{TryFrom, TryInto},
    +    fmt,
    +};
     
     const CLASS_OFFSET: usize = 6;
     const CONSTRUCTED_OFFSET: usize = 5;
    @@ -285,7 +326,7 @@
         }
     }
     
    -/// The tag field consists of a single byte encoding a tag number from 1 to 254. The values '00' and 'FF' are invalid.
    +/// The tag field consists of a single byte encoding a tag number from 1 to 254. The values '00' and 'FF' are invalid.
     #[derive(Clone, Copy, Eq, PartialEq)]
     pub struct Tag {
         pub class: Class,
    @@ -293,7 +334,6 @@
         pub number: u16,
     }
     
    -
     impl Tag {
         pub const BOOLEAN: Self = Self::universal(0x1);
         pub const INTEGER: Self = Self::universal(0x1);
    @@ -309,31 +349,59 @@
         pub const SET: Self = Self::universal(0x11).constructed();
     
         pub fn from(class: Class, constructed: bool, number: u16) -> Self {
    -        Self { class, constructed, number }
    +        Self {
    +            class,
    +            constructed,
    +            number,
    +        }
         }
         pub const fn universal(number: u16) -> Self {
    -        Self { class: Class::Universal, constructed: false, number }
    +        Self {
    +            class: Class::Universal,
    +            constructed: false,
    +            number,
    +        }
         }
     
         pub const fn application(number: u16) -> Self {
    -        Self { class: Class::Application, constructed: false, number }
    +        Self {
    +            class: Class::Application,
    +            constructed: false,
    +            number,
    +        }
         }
     
         pub const fn context(number: u16) -> Self {
    -        Self { class: Class::Context, constructed: false, number }
    +        Self {
    +            class: Class::Context,
    +            constructed: false,
    +            number,
    +        }
         }
     
         pub const fn private(number: u16) -> Self {
    -        Self { class: Class::Private, constructed: false, number }
    +        Self {
    +            class: Class::Private,
    +            constructed: false,
    +            number,
    +        }
         }
     
         pub const fn constructed(self) -> Self {
    -        let Self { class, constructed: _, number } = self;
    -        Self { class, constructed: true, number }
    +        let Self {
    +            class,
    +            constructed: _,
    +            number,
    +        } = self;
    +        Self {
    +            class,
    +            constructed: true,
    +            number,
    +        }
         }
     }
     
    -impl TryFrom<&'_ [u8]> for Tag {
    +impl TryFrom<&'_ [u8]> for Tag {
         type Error = Error;
         fn try_from(encoding: &[u8]) -> Result<Self> {
             let mut decoder = Decoder::new(encoding);
    @@ -383,19 +451,23 @@
     }
     
     impl fmt::Display for Tag {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
             // f.write_str(self.type_name())
    -        // write!(f, "Tag('{:02x}')", self.0)
    +        // write!(f, "Tag('{:02x}')", self.0)
             core::fmt::Debug::fmt(self, f)
         }
     }
     
     impl fmt::Debug for Tag {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
             let mut buf = [0u8; 3];
             let mut encoder = Encoder::new(&mut buf);
             encoder.encode(self).unwrap();
    -        write!(f, "Tag(class = {:?}, constructed = {}, number = {})", self.class, self.constructed, self.number)
    +        write!(
    +            f,
    +            "Tag(class = {:?}, constructed = {}, number = {})",
    +            self.class, self.constructed, self.number
    +        )
         }
     }
     
    @@ -409,9 +481,9 @@
             }
         }
     
    -    fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()> {
    -
    -        let first_byte = ((self.class as u8) << CLASS_OFFSET) | ((self.constructed as u8) << CONSTRUCTED_OFFSET);
    +    fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()> {
    +        let first_byte =
    +            ((self.class as u8) << CLASS_OFFSET) | ((self.constructed as u8) << CONSTRUCTED_OFFSET);
     
             match self.number {
                 0..=0x1E => encoder.byte(first_byte | (self.number as u8)),
    @@ -425,15 +497,14 @@
                     encoder.byte((self.number & 0x7F) as u8)
                 }
                 0x4000..=0xFFFF => {
    -                // todo()
    -                return Err(Error::from(ErrorKind::UnsupportedTagSize));
    +                Err(Error::from(ErrorKind::UnsupportedTagSize))
                 }
             }
         }
     }
     
    -impl Decodable<'_> for Tag {
    -    fn decode(decoder: &mut Decoder<'_>) -> Result<Self> {
    +impl Decodable<'_> for Tag {
    +    fn decode(decoder: &mut Decoder<'_>) -> Result<Self> {
             let first_byte = decoder.byte()?;
             let class = (first_byte >> 6).try_into()?;
             let constructed = first_byte & CONSTRUCTED_FLAG != 0;
    @@ -441,9 +512,7 @@
             let first_byte_masked = first_byte & ((1 << 5) - 1);
     
             let number = match first_byte_masked {
    -            number @ 0..=0x1E => {
    -                number as u16
    -            }
    +            number @ 0..=0x1E => number as u16,
                 _ => {
                     let second_byte = decoder.byte()?;
                     if second_byte & NOT_LAST_TAG_OCTET_FLAG == 0 {
    @@ -461,11 +530,14 @@
                     }
                 }
             };
    -        Ok(Self { class, constructed, number })
    +        Ok(Self {
    +            class,
    +            constructed,
    +            number,
    +        })
         }
     }
     
    -
     #[cfg(test)]
     mod tests {
         use crate::{Decodable, Encodable, Tag};
    diff --git a/src/flexiber/tagged.rs.html b/src/flexiber/tagged.rs.html
    index b232b87..ef945b3 100644
    --- a/src/flexiber/tagged.rs.html
    +++ b/src/flexiber/tagged.rs.html
    @@ -1,4 +1,5 @@
    -tagged.rs - source
    1
    +tagged.rs - source

    flexiber/
    tagged.rs

    +1
     2
     3
     4
    @@ -208,20 +209,23 @@
     208
     209
     210
    -
    // //! Common handling for types backed by byte slices with enforcement of the
    +211
    // //! Common handling for types backed by byte slices with enforcement of the
     // //! format-level length limitation of 65,535 bytes.
     
    -use crate::{Decodable, Decoder, Encodable, Encoder, ErrorKind, header::Header, Length, Result, Slice, Tag, TagLike};
    +use crate::{
    +    header::Header, Decodable, Decoder, Encodable, Encoder, ErrorKind, Length, Result, Slice, Tag,
    +    TagLike,
    +};
     
     /// BER-TLV data object.
     #[derive(Clone, Copy, Debug, Eq, PartialEq)]
    -pub struct TaggedValue<V, T=Tag> {
    +pub struct TaggedValue<V, T = Tag> {
         tag: T,
         value: V,
     }
     
    -/// Raw BER-TLV data object `TaggedValue<Slice<'_>>`.
    -pub type TaggedSlice<'a, T=Tag> = TaggedValue<Slice<'a>, T>;
    +/// Raw BER-TLV data object `TaggedValue<Slice<'_>>`.
    +pub type TaggedSlice<'a, T = Tag> = TaggedValue<Slice<'a>, T>;
     
     impl<V, T> TaggedValue<V, T>
     where
    @@ -236,7 +240,7 @@
         }
     }
     
    -impl<'a, E, T> TaggedValue<&'a E, T>
    +impl<E, T> TaggedValue<&'_ E, T>
     where
         E: Encodable,
         T: Copy + Encodable,
    @@ -249,7 +253,7 @@
         }
     }
     
    -impl<'a, E, T> Encodable for TaggedValue<&'a E, T>
    +impl<E, T> Encodable for TaggedValue<&E, T>
     where
         E: Encodable,
         T: Copy + Encodable,
    @@ -257,26 +261,25 @@
         fn encoded_length(&self) -> Result<Length> {
             self.header()?.encoded_length()? + self.value.encoded_length()?
         }
    -    fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()> {
    +    fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()> {
             self.header()?.encode(encoder)?;
             encoder.encode(self.value)
         }
     }
     
    -impl<'a, T> TaggedSlice<'a, T>
    +impl<'a, T> TaggedSlice<'a, T>
     where
    -    T: Copy
    +    T: Copy,
     {
    -
         /// Create a new tagged slice, checking lengths.
    -    pub fn from(tag: T, slice: &'a [u8]) -> Result<Self> {
    +    pub fn from(tag: T, slice: &'a [u8]) -> Result<Self> {
             Slice::new(slice)
                 .map(|slice| Self { tag, value: slice })
                 .map_err(|_| (ErrorKind::InvalidLength).into())
         }
     
         /// Borrow the inner byte slice.
    -    pub fn as_bytes(&self) -> &'a [u8] {
    +    pub fn as_bytes(&self) -> &'a [u8] {
             self.value.as_bytes()
         }
     
    @@ -300,11 +303,11 @@
         }
     
         /// Decode nested values, creating a new [`Decoder`] for
    -    /// the data contained in the sequence's body and passing it to the provided
    +    /// the data contained in the sequence's body and passing it to the provided
         /// [`FnOnce`].
         pub fn decode_nested<F, R>(&self, f: F) -> Result<R>
         where
    -        F: FnOnce(&mut Decoder<'a>) -> Result<R>,
    +        F: FnOnce(&mut Decoder<'a>) -> Result<R>,
         {
             let mut nested_decoder = Decoder::new(self.as_bytes());
             let result = f(&mut nested_decoder)?;
    @@ -312,28 +315,30 @@
         }
     }
     
    -impl<'a, T> Decodable<'a> for TaggedSlice<'a, T>
    +impl<'a, T> Decodable<'a> for TaggedSlice<'a, T>
     where
    -    T: Decodable<'a> + TagLike,
    +    T: Decodable<'a> + TagLike,
     {
    -    fn decode(decoder: &mut Decoder<'a>) -> Result<Self> {
    +    fn decode(decoder: &mut Decoder<'a>) -> Result<Self> {
             let header = Header::<T>::decode(decoder)?;
             let tag = header.tag;
             let len = header.length.to_usize();
    -        let value = decoder.bytes(len).map_err(|_| ErrorKind::Length { tag: tag.embedding() })?;
    +        let value = decoder.bytes(len).map_err(|_| ErrorKind::Length {
    +            tag: tag.embedding(),
    +        })?;
             Self::from(tag, value)
         }
     }
     
    -impl<'a, T> Encodable for TaggedSlice<'a, T>
    +impl<T> Encodable for TaggedSlice<'_, T>
     where
    -    T: Copy + Encodable
    +    T: Copy + Encodable,
     {
         fn encoded_length(&self) -> Result<Length> {
             self.header()?.encoded_length()? + self.length()
         }
     
    -    fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()> {
    +    fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()> {
             self.header()?.encode(encoder)?;
             encoder.bytes(self.as_bytes())
         }
    @@ -356,11 +361,10 @@
     //         })
     // }
     
    -
     #[cfg(test)]
     mod tests {
    -    use core::convert::TryFrom;
         use crate::{Encodable, Tag, TaggedSlice};
    +    use core::convert::TryFrom;
     
         #[test]
         fn encode() {
    @@ -414,8 +418,6 @@
             let encoded = long.encode_to_slice(&mut buf).unwrap();
             assert_eq!(&encoded[..5], &[0xFF, 0x66, 0x82, 0x01, 0x00]);
             assert_eq!(&encoded[5..], slice);
    -
         }
    -
     }
     
    \ No newline at end of file diff --git a/src/flexiber/traits.rs.html b/src/flexiber/traits.rs.html index f0f6c7d..eac2668 100644 --- a/src/flexiber/traits.rs.html +++ b/src/flexiber/traits.rs.html @@ -1,4 +1,5 @@ -traits.rs - source
    1
    +traits.rs - source

    flexiber/
    traits.rs

    +1
     2
     3
     4
    @@ -648,44 +649,54 @@
     648
     649
     650
    -
    // pub use der::{Decodable, Encodable};
    +651
    +652
    +653
    +654
    +655
    +656
    +657
    +658
    +659
    +660
    +661
    +662
    +663
    +664
    +665
    // pub use der::{Decodable, Encodable};
     //! Trait definitions
     
    -use core::convert::{TryFrom, TryInto};
    -use crate::{Decoder, Encoder, Error, header::Header, Length, Result, Tag, TaggedSlice, TaggedValue, TagLike};
    +use crate::{header::Header, Decoder, Encoder, Error, Length, Result, Tag, TaggedSlice};
    +use core::convert::{TryFrom, TryInto};
     
    -#[cfg(feature = "alloc")]
    -use {
    -    alloc::vec::Vec,
    -    core::iter,
    -    crate::ErrorKind,
    -};
    +#[cfg(feature = "alloc")]
    +use {alloc::vec::Vec, core::iter};
     
    -#[cfg(feature = "heapless")]
    +#[cfg(any(feature = "heapless", feature = "alloc"))]
     use crate::ErrorKind;
     
     /// Decoding trait.
     ///
     /// Decode out of decoder, which essentially is a slice of bytes.
     ///
    -/// One way to implement this trait is to implement `TryFrom<TaggedSlice<'_>, Error = Error>`.
    -pub trait Decodable<'a>: Sized {
    +/// One way to implement this trait is to implement `TryFrom<TaggedSlice<'_>, Error = Error>`.
    +pub trait Decodable<'a>: Sized {
         /// Attempt to decode this message using the provided decoder.
    -    fn decode(decoder: &mut Decoder<'a>) -> Result<Self>;
    +    fn decode(decoder: &mut Decoder<'a>) -> Result<Self>;
     
         /// Parse `Self` from the provided byte slice.
    -    fn from_bytes(bytes: &'a [u8]) -> Result<Self> {
    +    fn from_bytes(bytes: &'a [u8]) -> Result<Self> {
             let mut decoder = Decoder::new(bytes);
             let result = Self::decode(&mut decoder)?;
             decoder.finish(result)
         }
     }
     
    -impl<'a, X> Decodable<'a> for X
    +impl<'a, X> Decodable<'a> for X
     where
    -    X: TryFrom<TaggedSlice<'a>, Error = Error>,
    +    X: TryFrom<TaggedSlice<'a>, Error = Error>,
     {
    -    fn decode(decoder: &mut Decoder<'a>) -> Result<Self> {
    +    fn decode(decoder: &mut Decoder<'a>) -> Result<Self> {
             TaggedSlice::decode(decoder)
                 .and_then(Self::try_from)
                 .or_else(|e| decoder.error(e.kind()))
    @@ -695,13 +706,18 @@
     /// This implementation is quite gotcha-y, since only one byte is peeked.
     ///
     /// It should evaluate to the desired tag via `Tag::try_from(byte)?`.
    -impl<'a, T> Decodable<'a> for Option<T>
    +impl<'a, T> Decodable<'a> for Option<T>
     where
    -    T: Decodable<'a> + Tagged,
    +    T: Decodable<'a> + Tagged,
     {
    -    fn decode(decoder: &mut Decoder<'a>) -> Result<Option<T>> {
    +    fn decode(decoder: &mut Decoder<'a>) -> Result<Option<T>> {
             if let Some(byte) = decoder.peek() {
    -            debug_now!("comparing {} against {} interpreted as {}", &T::tag(), byte, Tag::try_from(byte)?);
    +            debug_now!(
    +                "comparing {} against {} interpreted as {}",
    +                &T::tag(),
    +                byte,
    +                Tag::try_from(byte)?
    +            );
                 if T::tag() == Tag::try_from(byte)? {
                     return T::decode(decoder).map(Some);
                 }
    @@ -720,11 +736,11 @@
         fn encoded_length(&self) -> Result<Length>;
     
         /// Encode this value as BER-TLV using the provided [`Encoder`].
    -    fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>;
    +    fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()>;
     
         /// Encode this value to the provided byte slice, returning a sub-slice
         /// containing the encoded message.
    -    fn encode_to_slice<'a>(&self, buf: &'a mut [u8]) -> Result<&'a [u8]> {
    +    fn encode_to_slice<'a>(&self, buf: &'a mut [u8]) -> Result<&'a [u8]> {
             let mut encoder = Encoder::new(buf);
             self.encode(&mut encoder)?;
             encoder.finish()
    @@ -732,8 +748,8 @@
     
         /// Encode this message as BER-TLV, appending it to the provided
         /// byte vector.
    -    #[cfg(feature = "alloc")]
    -    #[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
    +    #[cfg(feature = "alloc")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
         fn encode_to_vec(&self, buf: &mut Vec<u8>) -> Result<Length> {
             let expected_len = self.encoded_length()?.to_usize();
             let current_len = buf.len();
    @@ -758,29 +774,32 @@
         }
     
         /// Serialize this message as a byte vector.
    -    #[cfg(feature = "alloc")]
    -    #[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
    +    #[cfg(feature = "alloc")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
         fn to_vec(&self) -> Result<Vec<u8>> {
             let mut buf = Vec::new();
             self.encode_to_vec(&mut buf)?;
             Ok(buf)
         }
    -
     }
     
    -#[cfg(feature = "heapless")]
    -#[cfg_attr(docsrs, doc(cfg(feature = "heapless")))]
    +#[cfg(feature = "heapless")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "heapless")))]
     /// The equivalent of the `encode_to_vec` and `to_vec` methods.
     ///
     /// Separate trait because the generic parameter `N` would make `Encodable` not object safe.
     pub trait EncodableHeapless: Encodable {
         /// Encode this message as BER-TLV, appending it to the provided
         /// heapless byte vector.
    -    fn encode_to_heapless_vec<const N: usize>(&self, buf: &mut heapless::Vec<u8, N>) -> Result<Length> {
    +    fn encode_to_heapless_vec<const N: usize>(
    +        &self,
    +        buf: &mut heapless::Vec<u8, N>,
    +    ) -> Result<Length> {
             let expected_len = self.encoded_length()?.to_usize();
             let current_len = buf.len();
    -        // TODO(nickray): add a specific error for "Overcapacity" conditional on heapless feature?
    -        buf.resize_default(current_len + expected_len).map_err(|_| Error::from(ErrorKind::Overlength))?;
    +        // TODO(nickray): add a specific error for "Overcapacity" conditional on heapless feature?
    +        buf.resize_default(current_len + expected_len)
    +            .map_err(|_| Error::from(ErrorKind::Overlength))?;
     
             let mut encoder = Encoder::new(&mut buf[current_len..]);
             self.encode(&mut encoder)?;
    @@ -805,18 +824,9 @@
         }
     }
     
    -#[cfg(feature = "heapless")]
    +#[cfg(feature = "heapless")]
     impl<X> EncodableHeapless for X where X: Encodable {}
     
    -/// Types that can be tagged.
    -pub(crate) trait Taggable<T: TagLike>: Sized {
    -    fn tagged(&self, tag: T) -> TaggedValue<&Self, T> {
    -        TaggedValue::new(tag, self)
    -    }
    -}
    -
    -impl<T, X> Taggable<T> for X where X: Sized, T: TagLike {}
    -
     // /// Types with an associated BER-TLV [`Tag`].
     // pub trait Tagged {
     //     /// BER-TLV tag
    @@ -838,7 +848,7 @@
         /// Call the provided function with a slice of [`Encodable`] trait objects
         /// representing the fields of this message.
         ///
    -    /// This method uses a callback because structs with fields which aren't
    +    /// This method uses a callback because structs with fields which aren't
         /// directly [`Encodable`] may need to construct temporary values from
         /// their fields prior to encoding.
         fn fields<F, T>(&self, f: F) -> Result<T>
    @@ -848,7 +858,7 @@
     
     impl<TaggedContainer> Encodable for TaggedContainer
     where
    -    TaggedContainer: Tagged + Container
    +    TaggedContainer: Tagged + Container,
     {
         fn encoded_length(&self) -> Result<Length> {
             #[allow(clippy::redundant_closure)]
    @@ -862,7 +872,7 @@
             Header::new(Self::tag(), value_length)?.encoded_length() + value_length
         }
     
    -    fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()> {
    +    fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()> {
             self.fields(|fields| encoder.encode_tagged_collection(Self::tag(), fields))
         }
     }
    @@ -891,20 +901,20 @@
     //         // Header::new(Self::tag(), value_length)?.encoded_length() + value_length
     //     }
     
    -//     fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()> {
    +//     fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()> {
     //         todo!();
     //         // self.fields(|fields| encoder.nested(Self::tag(), fields))
     //     }
     // }
     
    -// pub type UntaggedContainer<'a> = &'a [&'a dyn Encodable];
    +// pub type UntaggedContainer<'a> = &'a [&'a dyn Encodable];
     
    -// impl<'a> Encodable for UntaggedContainer<'a> {
    +// impl<'a> Encodable for UntaggedContainer<'a> {
     //     fn encoded_length(&self) -> Result<Length> {
     //        Length::try_from(*self)
     //     }
     
    -//     fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()> {
    +//     fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()> {
     //         for encodable in self.iter() {
     //             encodable.encode(encoder)?;
     //         }
    @@ -918,7 +928,7 @@
         }
     
         /// Encode this value as BER-TLV using the provided [`Encoder`].
    -    fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()> {
    +    fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()> {
             encoder.bytes(self)
         }
     }
    @@ -932,7 +942,7 @@
     //     }
     
     //     /// Encode this value as BER-TLV using the provided [`Encoder`].
    -//     fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()> {
    +//     fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()> {
     //         match self {
     //             Some(slice) => encoder.bytes(slice),
     //             None => Ok(())
    @@ -942,7 +952,7 @@
     
     impl<T> Encodable for Option<T>
     where
    -    T: Encodable
    +    T: Encodable,
     {
         fn encoded_length(&self) -> Result<Length> {
             match self {
    @@ -952,15 +962,15 @@
         }
     
         /// Encode this value as BER-TLV using the provided [`Encoder`].
    -    fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()> {
    +    fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()> {
             match self {
                 Some(t) => t.encode(encoder),
    -            None => Ok(())
    +            None => Ok(()),
             }
         }
     }
     
    -macro_rules! impl_array {
    +macro_rules! impl_array {
         ($($N:literal),*) => {
             $(
                 impl Encodable for [u8; $N] {
    @@ -969,13 +979,13 @@
                     }
     
                     /// Encode this value as BER-TLV using the provided [`Encoder`].
    -                fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()> {
    +                fn encode(&self, encoder: &mut Encoder<'_>) -> Result<()> {
                         encoder.bytes(self.as_ref())
                     }
                 }
     
    -            impl Decodable<'_> for [u8; $N] {
    -                fn decode(decoder: &mut Decoder<'_>) -> Result<Self> {
    +            impl Decodable<'_> for [u8; $N] {
    +                fn decode(decoder: &mut Decoder<'_>) -> Result<Self> {
                         use core::convert::TryInto;
                         let bytes: &[u8] = decoder.bytes($N as u8)?;
                         Ok(bytes.try_into().unwrap())
    @@ -986,18 +996,30 @@
     }
     
     impl_array!(
    -    0,1,2,3,4,5,6,7,8,9,
    -    10,11,12,13,14,15,16,17,18,19,
    -    20,21,22,23,24,25,26,27,28,29,
    -    30,31,32
    +    0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
    +    26, 27, 28, 29, 30, 31, 32
     );
     
     #[cfg(test)]
     mod tests {
     
    +    use super::{Container, Tagged};
    +    use crate::{Decodable, Encodable, Error, Result, Tag, TagLike, TaggedSlice, TaggedValue};
         use core::convert::TryFrom;
    -    use crate::{Decodable, Encodable, Error, Result, Tag, TaggedSlice, TagLike};
    -    use super::{Taggable, Tagged, Container};
    +
    +    /// Types that can be tagged.
    +    pub(crate) trait Taggable<T: TagLike>: Sized {
    +        fn tagged(&self, tag: T) -> TaggedValue<&Self, T> {
    +            TaggedValue::new(tag, self)
    +        }
    +    }
    +
    +    impl<T, X> Taggable<T> for X
    +    where
    +        X: Sized,
    +        T: TagLike,
    +    {
    +    }
     
         // The types [u8; 2], [u8; 3], [u8; 4] stand in here for any types for the fields
         // of a struct that are Decodable + Encodable. This means they can decode to/encode from
    @@ -1018,10 +1040,10 @@
         }
     
         // this is what needs to be done to get `Decodable`
    -    impl<'a> TryFrom<TaggedSlice<'a>> for S {
    +    impl<'a> TryFrom<TaggedSlice<'a>> for S {
             type Error = Error;
     
    -        fn try_from(tagged_slice: TaggedSlice<'a>) -> Result<S> {
    +        fn try_from(tagged_slice: TaggedSlice<'a>) -> Result<S> {
                 tagged_slice.tag().assert_eq(Tag::try_from(0x0A).unwrap())?;
                 tagged_slice.decode_nested(|decoder| {
                     let x = decoder.decode_tagged_value(Tag::try_from(0x01).unwrap())?;
    @@ -1051,24 +1073,24 @@
                     // &self.x.tagged(Tag::try_from(0x11).unwrap()),
                     &self.y.as_ref().tagged(Tag::try_from(0x02).unwrap()),
                     &self.z.as_ref().tagged(Tag::try_from(0x03).unwrap()),
    -
                 ])
             }
         }
     
         #[test]
         fn reconstruct() {
    -        let s = S { x: [1,2], y: [3,4,5], z: [6,7,8,9] };
    +        let s = S {
    +            x: [1, 2],
    +            y: [3, 4, 5],
    +            z: [6, 7, 8, 9],
    +        };
             let mut buf = [0u8; 1024];
     
             let encoded = s.encode_to_slice(&mut buf).unwrap();
     
    -        assert_eq!(encoded,
    -            &[0x0A, 15,
    -                0x01, 2, 1, 2,
    -                0x02, 3, 3, 4, 5,
    -                0x03, 4, 6, 7, 8, 9,
    -            ],
    +        assert_eq!(
    +            encoded,
    +            &[0x0A, 15, 0x01, 2, 1, 2, 0x02, 3, 3, 4, 5, 0x03, 4, 6, 7, 8, 9,],
             );
     
             let s2 = S::from_bytes(encoded).unwrap();
    @@ -1085,10 +1107,10 @@
             t: [u8; 3],
         }
     
    -    impl<'a> TryFrom<TaggedSlice<'a>> for T {
    +    impl<'a> TryFrom<TaggedSlice<'a>> for T {
             type Error = Error;
     
    -        fn try_from(tagged_slice: TaggedSlice<'a>) -> Result<Self> {
    +        fn try_from(tagged_slice: TaggedSlice<'a>) -> Result<Self> {
                 tagged_slice.tag().assert_eq(Tag::try_from(0x0B).unwrap())?;
                 tagged_slice.decode_nested(|decoder| {
                     let s = decoder.decode_tagged_value(Tag::try_from(0x01).unwrap())?;
    @@ -1117,25 +1139,27 @@
             }
         }
     
    -
         #[test]
         fn nesty() {
    -        let s = S { x: [1,2], y: [3,4,5], z: [6,7,8,9] };
    -        let t = T { s, t: [0xA, 0xB, 0xC] };
    +        let s = S {
    +            x: [1, 2],
    +            y: [3, 4, 5],
    +            z: [6, 7, 8, 9],
    +        };
    +        let t = T {
    +            s,
    +            t: [0xA, 0xB, 0xC],
    +        };
     
             let mut buf = [0u8; 1024];
     
             let encoded = t.encode_to_slice(&mut buf).unwrap();
     
    -        assert_eq!(encoded,
    -            &[0x0B, 24,
    -                0x1, 17,
    -                    0x0A, 15,
    -                        0x01, 2, 1, 2,
    -                        0x02, 3, 3, 4, 5,
    -                        0x03, 4, 6, 7, 8, 9,
    -                0x2, 3,
    -                   0xA, 0xB, 0xC
    +        assert_eq!(
    +            encoded,
    +            &[
    +                0x0B, 24, 0x1, 17, 0x0A, 15, 0x01, 2, 1, 2, 0x02, 3, 3, 4, 5, 0x03, 4, 6, 7, 8, 9,
    +                0x2, 3, 0xA, 0xB, 0xC
                 ],
             );
     
    @@ -1153,10 +1177,10 @@
             t: [u8; 3],
         }
     
    -    impl<'a> TryFrom<TaggedSlice<'a>> for T2 {
    +    impl<'a> TryFrom<TaggedSlice<'a>> for T2 {
             type Error = Error;
     
    -        fn try_from(tagged_slice: TaggedSlice<'a>) -> Result<Self> {
    +        fn try_from(tagged_slice: TaggedSlice<'a>) -> Result<Self> {
                 tagged_slice.tag().assert_eq(Tag::try_from(0x0C).unwrap())?;
                 tagged_slice.decode_nested(|decoder| {
                     let s = decoder.decode()?;
    @@ -1185,26 +1209,29 @@
             }
         }
     
    -
         #[test]
         fn nesty2() {
    -        let s = S { x: [1,2], y: [3,4,5], z: [6,7,8,9] };
    -        let t = T2 { s, t: [0xA, 0xB, 0xC] };
    +        let s = S {
    +            x: [1, 2],
    +            y: [3, 4, 5],
    +            z: [6, 7, 8, 9],
    +        };
    +        let t = T2 {
    +            s,
    +            t: [0xA, 0xB, 0xC],
    +        };
     
             let mut buf = [0u8; 1024];
     
             let encoded = t.encode_to_slice(&mut buf).unwrap();
     
    -        assert_eq!(encoded,
    +        assert_eq!(
    +            encoded,
                 // &[0xBB, 24,
    -            &[0x0C, 22,
    -                // 0x1, 17,
    -                    0x0A, 15,
    -                        0x01, 2, 1, 2,
    -                        0x02, 3, 3, 4, 5,
    -                        0x03, 4, 6, 7, 8, 9,
    -                0x2, 3,
    -                   0xA, 0xB, 0xC
    +            &[
    +                0x0C, 22, // 0x1, 17,
    +                0x0A, 15, 0x01, 2, 1, 2, 0x02, 3, 3, 4, 5, 0x03, 4, 6, 7, 8, 9, 0x2, 3, 0xA, 0xB,
    +                0xC
                 ],
             );
     
    @@ -1214,18 +1241,18 @@
         }
     
         // no tag
    -    #[derive(Clone, Copy, Debug, Eq, PartialEq)]
    -    struct T3 {
    -        // no tag
    -        s: S,
    -        // tag 0x02
    -        t: [u8; 3],
    -    }
    +    // #[derive(Clone, Copy, Debug, Eq, PartialEq)]
    +    // struct T3 {
    +    //     // no tag
    +    //     s: S,
    +    //     // tag 0x02
    +    //     t: [u8; 3],
    +    // }
     
    -    // impl<'a> TryFrom<TaggedSlice<'a>> for T2 {
    +    // impl<'a> TryFrom<TaggedSlice<'a>> for T2 {
         //     type Error = Error;
     
    -    //     fn try_from(tagged_slice: TaggedSlice<'a>) -> Result<Self> {
    +    //     fn try_from(tagged_slice: TaggedSlice<'a>) -> Result<Self> {
         //         tagged_slice.tag().assert_eq(Tag::try_from(0xCC).unwrap())?;
         //         tagged_slice.decode_nested(|decoder| {
         //             let s = decoder.decode()?;
    @@ -1252,7 +1279,6 @@
         //     }
         // }
     
    -
         // #[test]
         // fn nesty3() {
         //     let s = S { x: [1,2], y: [3,4,5], z: [6,7,8,9] };
    @@ -1285,10 +1311,14 @@
         #[test]
         fn derive_option() {
             let mut buf = [0u8; 1024];
    -        let s = S { x: [1,2], y: [3,4,5], z: [6,7,8,9] };
    +        let s = S {
    +            x: [1, 2],
    +            y: [3, 4, 5],
    +            z: [6, 7, 8, 9],
    +        };
             let encoded = s.encode_to_slice(&mut buf).unwrap();
     
    -        let mut decoder = crate::Decoder::new(&encoded);
    +        let mut decoder = crate::Decoder::new(encoded);
             let s: Option<S> = decoder.decode().unwrap();
             assert!(s.is_some());
     
    diff --git a/src/flexiber_derive/decodable.rs.html b/src/flexiber_derive/decodable.rs.html
    index 6b9d4e4..a02f5c1 100644
    --- a/src/flexiber_derive/decodable.rs.html
    +++ b/src/flexiber_derive/decodable.rs.html
    @@ -1,4 +1,5 @@
    -decodable.rs - source
    1
    +decodable.rs - source

    flexiber_derive/
    decodable.rs

    +1
     2
     3
     4
    @@ -164,8 +165,7 @@
     164
     165
     166
    -167
    -
    use proc_macro2::TokenStream;
    +167
    use proc_macro2::TokenStream;
     use quote::{quote, ToTokens};
     use syn::{Attribute, DataStruct, Field, Ident};
     use synstructure::Structure;
    @@ -182,7 +182,7 @@
     }
     
     impl DeriveDecodableStruct {
    -    pub fn derive(s: Structure<'_>, data: &DataStruct, name: &Ident, attrs: &[Attribute]) -> TokenStream {
    +    pub fn derive(s: Structure<'_>, data: &DataStruct, name: &Ident, attrs: &[Attribute]) -> TokenStream {
     
             let (tag, _slice) = extract_attrs_optional_tag(name, attrs);
     
    @@ -216,7 +216,7 @@
                     let tag_number = tag.number;
     
                     if field.slice {
    -                    quote! {
    +                    quote! {
                             let tag = ::flexiber::Tag::from(
                                 flexiber::Class::try_from(#class).unwrap(),
                                 #constructed,
    @@ -227,7 +227,7 @@
                                     // .map_err(|_| flexiber::ErrorKind::Length { tag })?;
                         }
                     } else {
    -                    quote! {
    +                    quote! {
                             let tag = ::flexiber::Tag::from(
                                 flexiber::Class::try_from(#class).unwrap(),
                                 #constructed,
    @@ -241,7 +241,7 @@
                 Tag::Simple(tag) => {
                     let field_tag = tag.0;
                     if field.slice {
    -                    quote! { let #field_name =
    +                    quote! { let #field_name =
                             decoder.decode_tagged_slice(::flexiber::SimpleTag::try_from(#field_tag).unwrap())?.try_into()
                                 .map_err(|_| {
                                     use flexiber::TagLike;
    @@ -249,7 +249,7 @@
                                 })?;
                         }
                     } else {
    -                    quote! { let #field_name = decoder.decode_tagged_value(::flexiber::SimpleTag::try_from(#field_tag).unwrap())?; }
    +                    quote! { let #field_name = decoder.decode_tagged_value(::flexiber::SimpleTag::try_from(#field_tag).unwrap())?; }
                     }
                 }
             };
    @@ -260,7 +260,7 @@
         }
     
         /// Finish deriving a struct
    -    fn finish(self, s: &Structure<'_>, tag: Option<Tag>) -> TokenStream {
    +    fn finish(self, s: &Structure<'_>, tag: Option<Tag>) -> TokenStream {
     
             let decode_fields = self.decode_fields;
             let decode_result = self.decode_result;
    @@ -273,11 +273,11 @@
                         let constructed = tag.constructed;
                         let tag_number = tag.number;
     
    -                    s.gen_impl(quote! {
    -                        gen impl<'a> core::convert::TryFrom<flexiber::TaggedSlice<'a>> for @Self {
    +                    s.gen_impl(quote! {
    +                        gen impl<'a> core::convert::TryFrom<flexiber::TaggedSlice<'a>> for @Self {
                                 type Error = flexiber::Error;
     
    -                            fn try_from(tagged_slice: flexiber::TaggedSlice<'a>) -> flexiber::Result<Self> {
    +                            fn try_from(tagged_slice: flexiber::TaggedSlice<'a>) -> flexiber::Result<Self> {
                                     use core::convert::TryInto;
                                     use flexiber::TagLike;
                                     let tag = ::flexiber::Tag::from(
    @@ -297,10 +297,10 @@
                     }
                     Tag::Simple(tag) => {
                         let tag = tag.0;
    -                    s.gen_impl(quote! {
    -                        gen impl<'a> Decodable<'a> for @Self {
    -                            fn decode(decoder: &mut Decoder<'a>) -> Result<Self> {
    -                                flexiber::TaggedSlice::<'a, flexiber::SimpleTag>::decode(decoder)
    +                    s.gen_impl(quote! {
    +                        gen impl<'a> Decodable<'a> for @Self {
    +                            fn decode(decoder: &mut Decoder<'a>) -> Result<Self> {
    +                                flexiber::TaggedSlice::<'a, flexiber::SimpleTag>::decode(decoder)
                                         .and_then(|tagged_slice| {
                                             use core::convert::TryInto;
                                             use flexiber::TagLike;
    @@ -319,9 +319,9 @@
                     }
                 }
             } else {
    -            s.gen_impl(quote! {
    -                gen impl<'a> flexiber::Decodable<'a> for @Self {
    -                    fn decode(decoder: &mut flexiber::Decoder<'a>) -> flexiber::Result<Self> {
    +            s.gen_impl(quote! {
    +                gen impl<'a> flexiber::Decodable<'a> for @Self {
    +                    fn decode(decoder: &mut flexiber::Decoder<'a>) -> flexiber::Result<Self> {
                             use core::convert::{TryFrom, TryInto};
                             #decode_fields
                             Ok(Self { #decode_result })
    diff --git a/src/flexiber_derive/encodable.rs.html b/src/flexiber_derive/encodable.rs.html
    index db7bbb8..e280401 100644
    --- a/src/flexiber_derive/encodable.rs.html
    +++ b/src/flexiber_derive/encodable.rs.html
    @@ -1,4 +1,5 @@
    -encodable.rs - source
    1
    +encodable.rs - source

    flexiber_derive/
    encodable.rs

    +1
     2
     3
     4
    @@ -147,8 +148,7 @@
     147
     148
     149
    -150
    -
    use proc_macro2::TokenStream;
    +150
    use proc_macro2::TokenStream;
     use quote::{quote, ToTokens};
     use syn::{Attribute, DataStruct, Field, Ident};
     use synstructure::Structure;
    @@ -162,7 +162,7 @@
     }
     
     impl DeriveEncodableStruct {
    -    pub fn derive(s: Structure<'_>, data: &DataStruct, name: &Ident, attrs: &[Attribute]) -> TokenStream {
    +    pub fn derive(s: Structure<'_>, data: &DataStruct, name: &Ident, attrs: &[Attribute]) -> TokenStream {
     
             let (tag, _slice) = extract_attrs_optional_tag(name, attrs);
     
    @@ -195,17 +195,17 @@
                     let tag_number = tag.number;
     
                     if field.slice {
    -                    quote! { &(::flexiber::TaggedSlice::from(flexiber::Tag::from(flexiber::Class::try_from(#class).unwrap(), #constructed, #tag_number), &self.#field_name)?), }
    +                    quote! { &(::flexiber::TaggedSlice::from(flexiber::Tag::from(flexiber::Class::try_from(#class).unwrap(), #constructed, #tag_number), &self.#field_name)?), }
                     } else {
    -                    quote! { &(::flexiber::Tag::from(flexiber::Class::try_from(#class).unwrap(), #constructed, #tag_number).with_value(&self.#field_name)), }
    +                    quote! { &(::flexiber::Tag::from(flexiber::Class::try_from(#class).unwrap(), #constructed, #tag_number).with_value(&self.#field_name)), }
                     }
                 }
                 Tag::Simple(tag) => {
                     let field_tag = tag.0;
                     if field.slice {
    -                    quote! { &(::flexiber::TaggedSlice::from(flexiber::SimpleTag::try_from(#field_tag).unwrap(), &self.#field_name)?), }
    +                    quote! { &(::flexiber::TaggedSlice::from(flexiber::SimpleTag::try_from(#field_tag).unwrap(), &self.#field_name)?), }
                     } else {
    -                    quote! { &(::flexiber::SimpleTag::try_from(#field_tag).unwrap().with_value(&self.#field_name)), }
    +                    quote! { &(::flexiber::SimpleTag::try_from(#field_tag).unwrap().with_value(&self.#field_name)), }
                     }
                 }
             };
    @@ -213,7 +213,7 @@
         }
     
         /// Finish deriving a struct
    -    fn finish(self, s: &Structure<'_>, tag: Option<Tag>) -> TokenStream {
    +    fn finish(self, s: &Structure<'_>, tag: Option<Tag>) -> TokenStream {
     
     
             let encode_fields = self.encode_fields;
    @@ -224,7 +224,7 @@
                         let class = tag.class as u8;
                         let constructed = tag.constructed;
                         let tag_number = tag.number;
    -                    s.gen_impl(quote! {
    +                    s.gen_impl(quote! {
                             gen impl flexiber::Tagged for @Self {
                                 fn tag() -> flexiber::Tag {
                                     // TODO(nickray): FIXME FIXME
    @@ -247,7 +247,7 @@
                     }
                     Tag::Simple(tag) => {
                         let tag = tag.0;
    -                    s.gen_impl(quote! {
    +                    s.gen_impl(quote! {
                             gen impl flexiber::Tagged for @Self {
                                 fn tag() -> flexiber::Tag {
                                     use core::convert::TryFrom;
    @@ -269,7 +269,7 @@
                     }
                 }
             } else {
    -            s.gen_impl(quote! {
    +            s.gen_impl(quote! {
                     gen impl flexiber::Container for @Self {
                         fn fields<F, T>(&self, field_encoder: F) -> flexiber::Result<T>
                         where
    @@ -288,7 +288,7 @@
                             self.fields(|encodables| flexiber::Length::try_from(encodables))
                         }
     
    -                    fn encode(&self, encoder: &mut flexiber::Encoder<'_>) -> flexiber::Result<()> {
    +                    fn encode(&self, encoder: &mut flexiber::Encoder<'_>) -> flexiber::Result<()> {
                             use flexiber::Container;
                             self.fields(|fields| encoder.encode_untagged_collection(fields))
                         }
    diff --git a/src/flexiber_derive/lib.rs.html b/src/flexiber_derive/lib.rs.html
    index 99d5b4e..7f0f833 100644
    --- a/src/flexiber_derive/lib.rs.html
    +++ b/src/flexiber_derive/lib.rs.html
    @@ -1,4 +1,5 @@
    -lib.rs - source
    1
    +lib.rs - source

    flexiber_derive/
    lib.rs

    +1
     2
     3
     4
    @@ -278,13 +279,141 @@
     278
     279
     280
    -
    //! Custom derive support for the `flexiber` crate
    +281
    +282
    +283
    +284
    +285
    +286
    +287
    +288
    +289
    +290
    +291
    +292
    +293
    +294
    +295
    +296
    +297
    +298
    +299
    +300
    +301
    +302
    +303
    +304
    +305
    +306
    +307
    +308
    +309
    +310
    +311
    +312
    +313
    +314
    +315
    +316
    +317
    +318
    +319
    +320
    +321
    +322
    +323
    +324
    +325
    +326
    +327
    +328
    +329
    +330
    +331
    +332
    +333
    +334
    +335
    +336
    +337
    +338
    +339
    +340
    +341
    +342
    +343
    +344
    +345
    +346
    +347
    +348
    +349
    +350
    +351
    +352
    +353
    +354
    +355
    +356
    +357
    +358
    +359
    +360
    +361
    +362
    +363
    +364
    +365
    +366
    +367
    +368
    +369
    +370
    +371
    +372
    +373
    +374
    +375
    +376
    +377
    +378
    +379
    +380
    +381
    +382
    +383
    +384
    +385
    +386
    +387
    +388
    +389
    +390
    +391
    +392
    +393
    +394
    +395
    +396
    +397
    +398
    +399
    +400
    +401
    +402
    +403
    +404
    +405
    +406
    +407
    +408
    +409
    //! Custom derive support for the `flexiber` crate
     //!
     //! With `#[tlv(slice)]` set, `Encodable` should work for fields implementing `AsRef<[u8]>`,
     //! and `Decodable` should work for fields implementing `TryFrom<[u8]>`, even if the field
     //! is not `Decodable` or `Encodable`.
     
    -#![crate_type = "proc-macro"]
    +#![crate_type = "proc-macro"]
     #![warn(rust_2018_idioms, trivial_casts, unused_qualifications)]
     
     mod decodable;
    @@ -292,11 +421,8 @@
     mod encodable;
     use encodable::DeriveEncodableStruct;
     
    -
     use proc_macro2::TokenStream;
    -use syn::{
    -    Attribute, Field, Ident, Lit, Meta, MetaList, MetaNameValue, NestedMeta,
    -};
    +use syn::{Attribute, Field, Ident, LitStr, Token};
     use synstructure::{decl_derive, Structure};
     
     decl_derive!(
    @@ -326,24 +452,24 @@
     );
     
     /// Custom derive for `flexiber::Decodable`
    -fn derive_decodable(s: Structure<'_>) -> TokenStream {
    +fn derive_decodable(s: Structure<'_>) -> TokenStream {
         let ast = s.ast();
     
         // TODO: enum support
         match &ast.data {
             syn::Data::Struct(data) => DeriveDecodableStruct::derive(s, data, &ast.ident, &ast.attrs),
    -        other => panic!("can't derive `Decodable` on: {:?}", other),
    +        other => panic!("can't derive `Decodable` on: {:?}", other),
         }
     }
     
     /// Custom derive for `flexiber::Encodable`
    -fn derive_encodable(s: Structure<'_>) -> TokenStream {
    +fn derive_encodable(s: Structure<'_>) -> TokenStream {
         let ast = s.ast();
     
         // TODO: enum support
         match &ast.data {
             syn::Data::Struct(data) => DeriveEncodableStruct::derive(s, data, &ast.ident, &ast.attrs),
    -        other => panic!("can't derive `Encodable` on: {:?}", other),
    +        other => panic!("can't derive `Encodable` on: {:?}", other),
         }
     }
     
    @@ -406,7 +532,7 @@
         pub tag: Tag,
     
         /// Whether the `#[tlv(slice)]` attribute was set
    -    pub slice: bool
    +    pub slice: bool,
     }
     
     impl FieldAttrs {
    @@ -416,7 +542,7 @@
                 .ident
                 .as_ref()
                 .cloned()
    -            .expect("no name on struct field i.e. tuple structs unsupported");
    +            .expect("no name on struct field i.e. tuple structs unsupported");
     
             let (tag, slice) = extract_attrs(&name, &field.attrs);
     
    @@ -430,117 +556,249 @@
         let mut slice = false;
     
         for attr in attrs {
    -        if !attr.path.is_ident("tlv") {
    +        if !attr.path().is_ident("tlv") {
                 continue;
             }
     
    -        match attr.parse_meta().expect("error parsing `tlv` attribute") {
    -            Meta::List(MetaList { nested, .. }) if !nested.is_empty() => {
    -                for entry in nested {
    -                    match entry {
    -                        NestedMeta::Meta(Meta::Path(path)) => {
    -                            if path.is_ident("slice") {
    -                                slice = true;
    -                            } else if path.is_ident("universal") {
    -                                tag = {
    -                                    let mut tag = if let Tag::Ber(tag) = tag {
    -                                        tag
    -                                    } else { Default::default() };
    -                                    tag.class = Class::Universal;
    -                                    tag.into()
    -                                };
    -                            } else if path.is_ident("application") {
    -                                tag = {
    -                                    let mut tag = if let Tag::Ber(tag) = tag {
    -                                        tag
    -                                    } else { Default::default() };
    -                                    tag.class = Class::Application;
    -                                    tag.into()
    -                                };
    -                            } else if path.is_ident("context") {
    -                                tag = {
    -                                    let mut tag = if let Tag::Ber(tag) = tag {
    -                                        tag
    -                                    } else { Default::default() };
    -                                    tag.class = Class::Context;
    -                                    tag.into()
    -                                };
    -                            } else if path.is_ident("private") {
    -                                tag = {
    -                                    let mut tag = if let Tag::Ber(tag) = tag {
    -                                        tag
    -                                    } else { Default::default() };
    -                                    tag.class = Class::Private;
    -                                    tag.into()
    -                                };
    -                            } else if path.is_ident("constructed") {
    -                                tag = {
    -                                    let mut tag = if let Tag::Ber(tag) = tag {
    -                                        tag
    -                                    } else { Default::default() };
    -                                    tag.constructed = true;
    -                                    tag.into()
    -                                };
    -                            } else if path.is_ident("primitive") {
    -                                tag = {
    -                                    let mut tag = if let Tag::Ber(tag) = tag {
    -                                        tag
    -                                    } else { Default::default() };
    -                                    tag.constructed = false;
    -                                    tag.into()
    -                                };
    -                            } else {
    -                                panic!("unknown `tlv` attribute for field `{}`: {:?}", name, path);
    -                            }
    -                        }
    -                        NestedMeta::Meta(Meta::NameValue(MetaNameValue {
    -                            path,
    -                            lit: Lit::Str(lit_str),
    -                            ..
    -                        })) => {
    -                            // Parse the `type = "..."` attribute
    -                            if path.is_ident("number") {
    -                                tag = {
    -                                    let possibly_with_prefix = lit_str.value();
    -                                    let without_prefix = possibly_with_prefix.trim_start_matches("0x");
    -                                    let tag_number = u16::from_str_radix(without_prefix, 16).expect("tag values must be between one and 254");
    -                                    let mut tag = if let Tag::Ber(tag) = tag {
    -                                        tag
    -                                    } else { Default::default() };
    -                                    tag.number = tag_number;
    -                                    tag_number_is_set = true;
    -                                    tag.into()
    -                                }
    -                            } else if path.is_ident("simple") {
    -                                tag = {
    -                                    let possibly_with_prefix = lit_str.value();
    -                                    let without_prefix = possibly_with_prefix.trim_start_matches("0x");
    -                                    let tag_number = u8::from_str_radix(without_prefix, 16).expect("tag values must be between one and 254");
    -                                    let mut tag = if let Tag::Simple(tag) = tag {
    -                                        tag
    -                                    } else { Default::default() };
    -                                    tag.0 = tag_number;
    -                                    tag_number_is_set = true;
    -                                    tag.into()
    -                                };
    -                            } else {
    -                                panic!("unknown `tlv` attribute for field `{}`: {:?}", name, path);
    -                            }
    -
    -                        }
    -                        other => panic!(
    -                            "a malformed `tlv` attribute for field `{}`: {:?}",
    -                            name, other
    -                        ),
    +        attr.parse_nested_meta(|meta| {
    +            let path = meta.path;
    +            if path.is_ident("slice") {
    +                slice = true;
    +            } else if path.is_ident("universal") {
    +                tag = {
    +                    let mut tag = if let Tag::Ber(tag) = tag {
    +                        tag
    +                    } else {
    +                        Default::default()
    +                    };
    +                    tag.class = Class::Universal;
    +                    tag.into()
    +                };
    +            } else if path.is_ident("application") {
    +                tag = {
    +                    let mut tag = if let Tag::Ber(tag) = tag {
    +                        tag
    +                    } else {
    +                        Default::default()
    +                    };
    +                    tag.class = Class::Application;
    +                    tag.into()
    +                };
    +            } else if path.is_ident("context") {
    +                tag = {
    +                    let mut tag = if let Tag::Ber(tag) = tag {
    +                        tag
    +                    } else {
    +                        Default::default()
    +                    };
    +                    tag.class = Class::Context;
    +                    tag.into()
    +                };
    +            } else if path.is_ident("private") {
    +                tag = {
    +                    let mut tag = if let Tag::Ber(tag) = tag {
    +                        tag
    +                    } else {
    +                        Default::default()
    +                    };
    +                    tag.class = Class::Private;
    +                    tag.into()
    +                };
    +            } else if path.is_ident("constructed") {
    +                tag = {
    +                    let mut tag = if let Tag::Ber(tag) = tag {
    +                        tag
    +                    } else {
    +                        Default::default()
    +                    };
    +                    tag.constructed = true;
    +                    tag.into()
    +                };
    +            } else if path.is_ident("primitive") {
    +                tag = {
    +                    let mut tag = if let Tag::Ber(tag) = tag {
    +                        tag
    +                    } else {
    +                        Default::default()
    +                    };
    +                    tag.constructed = false;
    +                    tag.into()
    +                };
    +            } else if path.is_ident("number") {
    +                tag = {
    +                    if !meta.input.peek(Token![=]) || !meta.input.peek2(LitStr) {
    +                        panic!("Malformed TLV attribute");
                         }
    +                    let _: Token![=] = meta.input.parse().expect("unreachable");
    +                    let lit_str: LitStr = meta.input.parse().expect("unreachable");
    +
    +                    let possibly_with_prefix = lit_str.value();
    +                    let without_prefix = possibly_with_prefix.trim_start_matches("0x");
    +                    let tag_number = u16::from_str_radix(without_prefix, 16)
    +                        .expect("tag values must be between one and 254");
    +                    let mut tag = if let Tag::Ber(tag) = tag {
    +                        tag
    +                    } else {
    +                        Default::default()
    +                    };
    +                    tag.number = tag_number;
    +                    tag_number_is_set = true;
    +                    tag.into()
                     }
    +            } else if path.is_ident("simple") {
    +                tag = {
    +                    if !meta.input.peek(Token![=]) || !meta.input.peek2(LitStr) {
    +                        panic!("Malformed TLV attribute");
    +                    }
    +                    let _: Token![=] = meta.input.parse().expect("unreachable");
    +                    let lit_str: LitStr = meta.input.parse().expect("unreachable");
    +
    +                    let possibly_with_prefix = lit_str.value();
    +                    let without_prefix = possibly_with_prefix.trim_start_matches("0x");
    +                    let tag_number = u8::from_str_radix(without_prefix, 16)
    +                        .expect("tag values must be between one and 254");
    +                    let mut tag = if let Tag::Simple(tag) = tag {
    +                        tag
    +                    } else {
    +                        Default::default()
    +                    };
    +                    tag.0 = tag_number;
    +                    tag_number_is_set = true;
    +                    tag.into()
    +                };
    +            } else {
    +                panic!("unknown `tlv` attribute for field `{}`: {:?}", name, path);
                 }
    -            other => panic!(
    -                "malformed `tlv` attribute for field `{}`: {:#?}",
    -                name, other
    -            ),
    -        }
    -    }
    +            Ok(())
    +        })
    +        .unwrap();
    +
    +        // match attr.parse_meta().expect("error parsing `tlv` attribute") {
    +        //     Meta::List(MetaList { nested, .. }) if !nested.is_empty() => {
    +        //         for entry in nested {
    +        //             match entry {
    +        //                 NestedMeta::Meta(Meta::Path(path)) => {
    +        //                     if path.is_ident("slice") {
    +        //                         slice = true;
    +        //                     } else if path.is_ident("universal") {
    +        //                         tag = {
    +        //                             let mut tag = if let Tag::Ber(tag) = tag {
    +        //                                 tag
    +        //                             } else {
    +        //                                 Default::default()
    +        //                             };
    +        //                             tag.class = Class::Universal;
    +        //                             tag.into()
    +        //                         };
    +        //                     } else if path.is_ident("application") {
    +        //                         tag = {
    +        //                             let mut tag = if let Tag::Ber(tag) = tag {
    +        //                                 tag
    +        //                             } else {
    +        //                                 Default::default()
    +        //                             };
    +        //                             tag.class = Class::Application;
    +        //                             tag.into()
    +        //                         };
    +        //                     } else if path.is_ident("context") {
    +        //                         tag = {
    +        //                             let mut tag = if let Tag::Ber(tag) = tag {
    +        //                                 tag
    +        //                             } else {
    +        //                                 Default::default()
    +        //                             };
    +        //                             tag.class = Class::Context;
    +        //                             tag.into()
    +        //                         };
    +        //                     } else if path.is_ident("private") {
    +        //                         tag = {
    +        //                             let mut tag = if let Tag::Ber(tag) = tag {
    +        //                                 tag
    +        //                             } else {
    +        //                                 Default::default()
    +        //                             };
    +        //                             tag.class = Class::Private;
    +        //                             tag.into()
    +        //                         };
    +        //                     } else if path.is_ident("constructed") {
    +        //                         tag = {
    +        //                             let mut tag = if let Tag::Ber(tag) = tag {
    +        //                                 tag
    +        //                             } else {
    +        //                                 Default::default()
    +        //                             };
    +        //                             tag.constructed = true;
    +        //                             tag.into()
    +        //                         };
    +        //                     } else if path.is_ident("primitive") {
    +        //                         tag = {
    +        //                             let mut tag = if let Tag::Ber(tag) = tag {
    +        //                                 tag
    +        //                             } else {
    +        //                                 Default::default()
    +        //                             };
    +        //                             tag.constructed = false;
    +        //                             tag.into()
    +        //                         };
    +        //                     } else {
    +        //                         panic!("unknown `tlv` attribute for field `{}`: {:?}", name, path);
    +        //                     }
    +        //                 }
    +        //                 NestedMeta::Meta(Meta::NameValue(MetaNameValue {
    +        //                     path,
    +        //                     lit: Lit::Str(lit_str),
    +        //                     ..
    +        //                 })) => {
    +        //                     // Parse the `type = "..."` attribute
    +        //                     if path.is_ident("number") {
    +        //                         tag = {
    +        //                             let possibly_with_prefix = lit_str.value();
    +        //                             let without_prefix =
    +        //                                 possibly_with_prefix.trim_start_matches("0x");
    +        //                             let tag_number = u16::from_str_radix(without_prefix, 16)
    +        //                                 .expect("tag values must be between one and 254");
    +        //                             let mut tag = if let Tag::Ber(tag) = tag {
    +        //                                 tag
    +        //                             } else {
    +        //                                 Default::default()
    +        //                             };
    +        //                             tag.number = tag_number;
    +        //                             tag_number_is_set = true;
    +        //                             tag.into()
    +        //                         }
    +        //                     } else if path.is_ident("simple") {
    +        //                         tag = {
    +        //                             let possibly_with_prefix = lit_str.value();
    +        //                             let without_prefix =
    +        //                                 possibly_with_prefix.trim_start_matches("0x");
    +        //                             let tag_number = u8::from_str_radix(without_prefix, 16)
    +        //                                 .expect("tag values must be between one and 254");
    +        //                             let mut tag = if let Tag::Simple(tag) = tag {
    +        //                                 tag
    +        //                             } else {
    +        //                                 Default::default()
    +        //                             };
    +        //                             tag.0 = tag_number;
    +        //                             tag_number_is_set = true;
    +        //                             tag.into()
    +        //                         };
    +        //                     } else {
    +        //                         panic!("unknown `tlv` attribute for field `{}`: {:?}", name, path);
    +        //                     }
    +        //                 }
    +        //                 other => panic!(
    +        //                     "a malformed `tlv` attribute for field `{}`: {:?}",
    +        //                     name, other
    +        //                 ),
    +        //             }
    +        //         }
    +        //     }
    +        //     other => panic!(
    +        //         "malformed `tlv` attribute for field `{}`: {:#?}",
    +        //         name, other
    +        //     ),
    +        // }
    +    }
     
         if tag_number_is_set {
             (Some(tag), slice)
    @@ -555,7 +813,7 @@
         if let Some(tag) = tag {
             (tag, slice)
         } else {
    -        panic!("BER-TLV tag missing for `{}`", name);
    +        panic!("BER-TLV tag missing for `{}`", name);
         }
     }
     
    \ No newline at end of file diff --git a/src/log/__private_api.rs.html b/src/log/__private_api.rs.html index 5a34cd2..f39ab8a 100644 --- a/src/log/__private_api.rs.html +++ b/src/log/__private_api.rs.html @@ -1,4 +1,5 @@ -__private_api.rs - source
    1
    +__private_api.rs - source

    log/
    __private_api.rs

    +1
     2
     3
     4
    @@ -55,61 +56,192 @@
     55
     56
     57
    -
    //! WARNING: this is not part of the crate's public API and is subject to change at any time
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    +81
    +82
    +83
    +84
    +85
    +86
    +87
    +88
    +89
    +90
    +91
    +92
    +93
    +94
    +95
    +96
    +97
    +98
    +99
    +100
    +101
    +102
    +103
    +104
    +105
    +106
    +107
    +108
    +109
    +110
    +111
    +112
    +113
    +114
    +115
    +116
    +117
    +118
    +119
    +120
    +121
    +122
    +123
    //! WARNING: this is not part of the crate's public API and is subject to change at any time
     
    -use crate::{Level, Metadata, Record};
    +use self::sealed::KVs;
    +use crate::{Level, Metadata, Record};
     use std::fmt::Arguments;
    -pub use std::option::Option;
    -pub use std::{file, format_args, line, module_path, stringify};
    +use std::panic::Location;
    +pub use std::{format_args, module_path, stringify};
     
    -#[cfg(not(feature = "kv_unstable"))]
    -pub fn log(
    -    args: Arguments,
    -    level: Level,
    -    &(target, module_path, file): &(&str, &'static str, &'static str),
    -    line: u32,
    -    kvs: Option<&[(&str, &str)]>,
    -) {
    -    if kvs.is_some() {
    -        panic!(
    -            "key-value support is experimental and must be enabled using the `kv_unstable` feature"
    -        )
    +#[cfg(not(feature = "kv"))]
    +pub type Value<'a> = &'a str;
    +
    +mod sealed {
    +    /// Types for the `kv` argument.
    +    pub trait KVs<'a> {
    +        fn into_kvs(self) -> Option<&'a [(&'a str, super::Value<'a>)]>;
         }
    -
    -    crate::logger().log(
    -        &Record::builder()
    -            .args(args)
    -            .level(level)
    -            .target(target)
    -            .module_path_static(Some(module_path))
    -            .file_static(Some(file))
    -            .line(Some(line))
    -            .build(),
    -    );
     }
     
    -#[cfg(feature = "kv_unstable")]
    -pub fn log(
    +// Types for the `kv` argument.
    +
    +impl<'a> KVs<'a> for &'a [(&'a str, Value<'a>)] {
    +    #[inline]
    +    fn into_kvs(self) -> Option<&'a [(&'a str, Value<'a>)]> {
    +        Some(self)
    +    }
    +}
    +
    +impl<'a> KVs<'a> for () {
    +    #[inline]
    +    fn into_kvs(self) -> Option<&'a [(&'a str, Value<'a>)]> {
    +        None
    +    }
    +}
    +
    +// Log implementation.
    +
    +fn log_impl(
         args: Arguments,
         level: Level,
    -    &(target, module_path, file): &(&str, &'static str, &'static str),
    -    line: u32,
    -    kvs: Option<&[(&str, &dyn crate::kv::ToValue)]>,
    +    &(target, module_path, loc): &(&str, &'static str, &'static Location),
    +    kvs: Option<&[(&str, Value)]>,
     ) {
    -    crate::logger().log(
    -        &Record::builder()
    -            .args(args)
    -            .level(level)
    -            .target(target)
    -            .module_path_static(Some(module_path))
    -            .file_static(Some(file))
    -            .line(Some(line))
    -            .key_values(&kvs)
    -            .build(),
    -    );
    +    #[cfg(not(feature = "kv"))]
    +    if kvs.is_some() {
    +        panic!("key-value support is experimental and must be enabled using the `kv` feature")
    +    }
    +
    +    let mut builder = Record::builder();
    +
    +    builder
    +        .args(args)
    +        .level(level)
    +        .target(target)
    +        .module_path_static(Some(module_path))
    +        .file_static(Some(loc.file()))
    +        .line(Some(loc.line()));
    +
    +    #[cfg(feature = "kv")]
    +    builder.key_values(&kvs);
    +
    +    crate::logger().log(&builder.build());
    +}
    +
    +pub fn log<'a, K>(
    +    args: Arguments,
    +    level: Level,
    +    target_module_path_and_loc: &(&str, &'static str, &'static Location),
    +    kvs: K,
    +) where
    +    K: KVs<'a>,
    +{
    +    log_impl(args, level, target_module_path_and_loc, kvs.into_kvs())
     }
     
     pub fn enabled(level: Level, target: &str) -> bool {
         crate::logger().enabled(&Metadata::builder().level(level).target(target).build())
     }
    +
    +#[track_caller]
    +pub fn loc() -> &'static Location<'static> {
    +    Location::caller()
    +}
    +
    +#[cfg(feature = "kv")]
    +mod kv_support {
    +    use crate::kv;
    +
    +    pub type Value<'a> = kv::Value<'a>;
    +
    +    // NOTE: Many functions here accept a double reference &&V
    +    // This is so V itself can be ?Sized, while still letting us
    +    // erase it to some dyn Trait (because &T is sized)
    +
    +    pub fn capture_to_value<'a, V: kv::ToValue + ?Sized>(v: &'a &'a V) -> Value<'a> {
    +        v.to_value()
    +    }
    +
    +    pub fn capture_debug<'a, V: core::fmt::Debug + ?Sized>(v: &'a &'a V) -> Value<'a> {
    +        Value::from_debug(v)
    +    }
    +
    +    pub fn capture_display<'a, V: core::fmt::Display + ?Sized>(v: &'a &'a V) -> Value<'a> {
    +        Value::from_display(v)
    +    }
    +
    +    #[cfg(feature = "kv_std")]
    +    pub fn capture_error<'a>(v: &'a (dyn std::error::Error + 'static)) -> Value<'a> {
    +        Value::from_dyn_error(v)
    +    }
    +
    +    #[cfg(feature = "kv_sval")]
    +    pub fn capture_sval<'a, V: sval::Value + ?Sized>(v: &'a &'a V) -> Value<'a> {
    +        Value::from_sval(v)
    +    }
    +
    +    #[cfg(feature = "kv_serde")]
    +    pub fn capture_serde<'a, V: serde::Serialize + ?Sized>(v: &'a &'a V) -> Value<'a> {
    +        Value::from_serde(v)
    +    }
    +}
    +
    +#[cfg(feature = "kv")]
    +pub use self::kv_support::*;
     
    \ No newline at end of file diff --git a/src/log/lib.rs.html b/src/log/lib.rs.html index 8317e76..88d1bf6 100644 --- a/src/log/lib.rs.html +++ b/src/log/lib.rs.html @@ -1,4 +1,5 @@ -lib.rs - source
    1
    +lib.rs - source

    log/
    lib.rs

    +1
     2
     3
     4
    @@ -1825,7 +1826,57 @@
     1825
     1826
     1827
    -
    // Copyright 2015 The Rust Project Developers. See the COPYRIGHT
    +1828
    +1829
    +1830
    +1831
    +1832
    +1833
    +1834
    +1835
    +1836
    +1837
    +1838
    +1839
    +1840
    +1841
    +1842
    +1843
    +1844
    +1845
    +1846
    +1847
    +1848
    +1849
    +1850
    +1851
    +1852
    +1853
    +1854
    +1855
    +1856
    +1857
    +1858
    +1859
    +1860
    +1861
    +1862
    +1863
    +1864
    +1865
    +1866
    +1867
    +1868
    +1869
    +1870
    +1871
    +1872
    +1873
    +1874
    +1875
    +1876
    +1877
    +1878
    // Copyright 2015 The Rust Project Developers. See the COPYRIGHT
     // file at the top-level directory of this distribution and at
     // http://rust-lang.org/COPYRIGHT.
     //
    @@ -1842,7 +1893,7 @@
     //! by this crate, and the consumer of those libraries can choose the logging
     //! implementation that is most suitable for its use case.
     //!
    -//! If no logging implementation is selected, the facade falls back to a "noop"
    +//! If no logging implementation is selected, the facade falls back to a "noop"
     //! implementation that ignores all log messages. The overhead in this case
     //! is very small - just an integer load, comparison and jump.
     //!
    @@ -1868,6 +1919,8 @@
     //! [`trace!`]: ./macro.trace.html
     //! [`println!`]: https://doc.rust-lang.org/stable/std/macro.println.html
     //!
    +//! Avoid writing expressions with side-effects in log statements. They may not be evaluated.
    +//!
     //! ## In libraries
     //!
     //! Libraries should link only to the `log` crate, and use the provided
    @@ -1875,24 +1928,24 @@
     //!
     //! ### Examples
     //!
    -//! ```edition2018
    +//! ```
     //! # #[derive(Debug)] pub struct Yak(String);
     //! # impl Yak { fn shave(&mut self, _: u32) {} }
     //! # fn find_a_razor() -> Result<u32, u32> { Ok(1) }
     //! use log::{info, warn};
     //!
     //! pub fn shave_the_yak(yak: &mut Yak) {
    -//!     info!(target: "yak_events", "Commencing yak shaving for {:?}", yak);
    +//!     info!(target: "yak_events", "Commencing yak shaving for {yak:?}");
     //!
     //!     loop {
     //!         match find_a_razor() {
     //!             Ok(razor) => {
    -//!                 info!("Razor located: {}", razor);
    +//!                 info!("Razor located: {razor}");
     //!                 yak.shave(razor);
     //!                 break;
     //!             }
     //!             Err(err) => {
    -//!                 warn!("Unable to locate a razor: {}, retrying", err);
    +//!                 warn!("Unable to locate a razor: {err}, retrying");
     //!             }
     //!         }
     //!     }
    @@ -1915,40 +1968,42 @@
     //!
     //! ## Structured logging
     //!
    -//! If you enable the `kv_unstable` feature you can associate structured values
    +//! If you enable the `kv` feature you can associate structured values
     //! with your log records. If we take the example from before, we can include
    -//! some additional context besides what's in the formatted message:
    +//! some additional context besides what's in the formatted message:
     //!
    -//! ```edition2018
    -//! # #[macro_use] extern crate serde;
    +//! ```
    +//! # use serde::Serialize;
     //! # #[derive(Debug, Serialize)] pub struct Yak(String);
     //! # impl Yak { fn shave(&mut self, _: u32) {} }
     //! # fn find_a_razor() -> Result<u32, std::io::Error> { Ok(1) }
    -//! # #[cfg(feature = "kv_unstable_serde")]
    +//! # #[cfg(feature = "kv_serde")]
     //! # fn main() {
    -//! use log::{info, warn, as_serde, as_error};
    +//! use log::{info, warn};
     //!
     //! pub fn shave_the_yak(yak: &mut Yak) {
    -//!     info!(target: "yak_events", yak = as_serde!(yak); "Commencing yak shaving");
    +//!     info!(target: "yak_events", yak:serde; "Commencing yak shaving");
     //!
     //!     loop {
     //!         match find_a_razor() {
     //!             Ok(razor) => {
    -//!                 info!(razor = razor; "Razor located");
    +//!                 info!(razor; "Razor located");
     //!                 yak.shave(razor);
     //!                 break;
     //!             }
    -//!             Err(err) => {
    -//!                 warn!(err = as_error!(err); "Unable to locate a razor, retrying");
    +//!             Err(e) => {
    +//!                 warn!(e:err; "Unable to locate a razor, retrying");
     //!             }
     //!         }
     //!     }
     //! }
     //! # }
    -//! # #[cfg(not(feature = "kv_unstable_serde"))]
    +//! # #[cfg(not(feature = "kv_serde"))]
     //! # fn main() {}
     //! ```
     //!
    +//! See the [`kv`] module documentation for more details.
    +//!
     //! # Available logging implementations
     //!
     //! In order to produce log output executables have to use
    @@ -1958,6 +2013,7 @@
     //!
     //! * Simple minimal loggers:
     //!     * [env_logger]
    +//!     * [colog]
     //!     * [simple_logger]
     //!     * [simplelog]
     //!     * [pretty_env_logger]
    @@ -1976,18 +2032,22 @@
     //!     * [win_dbg_logger]
     //!     * [db_logger]
     //!     * [log-to-defmt]
    +//!     * [logcontrol-log]
     //! * For WebAssembly binaries:
     //!     * [console_log]
     //! * For dynamic libraries:
     //!     * You may need to construct an FFI-safe wrapper over `log` to initialize in your libraries
    +//! * Utilities:
    +//!     * [log_err]
    +//!     * [log-reload]
     //!
     //! # Implementing a Logger
     //!
    -//! Loggers implement the [`Log`] trait. Here's a very basic example that simply
    +//! Loggers implement the [`Log`] trait. Here's a very basic example that simply
     //! logs all messages at the [`Error`][level_link], [`Warn`][level_link] or
     //! [`Info`][level_link] levels to stdout:
     //!
    -//! ```edition2018
    +//! ```
     //! use log::{Record, Level, Metadata};
     //!
     //! struct SimpleLogger;
    @@ -1999,7 +2059,7 @@
     //!
     //!     fn log(&self, record: &Record) {
     //!         if self.enabled(record.metadata()) {
    -//!             println!("{} - {}", record.level(), record.args());
    +//!             println!("{} - {}", record.level(), record.args());
     //!         }
     //!     }
     //!
    @@ -2012,15 +2072,15 @@
     //! Loggers are installed by calling the [`set_logger`] function. The maximum
     //! log level also needs to be adjusted via the [`set_max_level`] function. The
     //! logging facade uses this as an optimization to improve performance of log
    -//! messages at levels that are disabled. It's important to set it, as it
    +//! messages at levels that are disabled. It's important to set it, as it
     //! defaults to [`Off`][filter_link], so no log messages will ever be captured!
    -//! In the case of our example logger, we'll want to set the maximum log level
    +//! In the case of our example logger, we'll want to set the maximum log level
     //! to [`Info`][filter_link], since we ignore any [`Debug`][level_link] or
     //! [`Trace`][level_link] level log messages. A logging implementation should
     //! provide a function that wraps a call to [`set_logger`] and
     //! [`set_max_level`], handling initialization of the logger:
     //!
    -//! ```edition2018
    +//! ```
     //! # use log::{Level, Metadata};
     //! # struct SimpleLogger;
     //! # impl log::Log for SimpleLogger {
    @@ -2044,13 +2104,13 @@
     //!
     //! # Use with `std`
     //!
    -//! `set_logger` requires you to provide a `&'static Log`, which can be hard to
    +//! `set_logger` requires you to provide a `&'static Log`, which can be hard to
     //! obtain if your logger depends on some runtime configuration. The
     //! `set_boxed_logger` function is available with the `std` Cargo feature. It is
     //! identical to `set_logger` except that it takes a `Box<Log>` rather than a
    -//! `&'static Log`:
    +//! `&'static Log`:
     //!
    -//! ```edition2018
    +//! ```
     //! # use log::{Level, LevelFilter, Log, SetLoggerError, Metadata};
     //! # struct SimpleLogger;
     //! # impl log::Log for SimpleLogger {
    @@ -2059,7 +2119,7 @@
     //! #   fn flush(&self) {}
     //! # }
     //! # fn main() {}
    -//! # #[cfg(feature = "std")]
    +//! # #[cfg(feature = "std")]
     //! pub fn init() -> Result<(), SetLoggerError> {
     //!     log::set_boxed_logger(Box::new(SimpleLogger))
     //!         .map(|()| log::set_max_level(LevelFilter::Info))
    @@ -2068,9 +2128,7 @@
     //!
     //! # Compile time filters
     //!
    -//! Log levels can be statically disabled at compile time via Cargo features. Log invocations at
    -//! disabled levels will be skipped and will not even be present in the resulting binary.
    -//! This level is configured separately for release and debug builds. The features are:
    +//! Log levels can be statically disabled at compile time by enabling one of these Cargo features:
     //!
     //! * `max_level_off`
     //! * `max_level_error`
    @@ -2078,6 +2136,13 @@
     //! * `max_level_info`
     //! * `max_level_debug`
     //! * `max_level_trace`
    +//!
    +//! Log invocations at disabled levels will be skipped and will not even be present in the
    +//! resulting binary. These features control the value of the `STATIC_MAX_LEVEL` constant. The
    +//! logging macros check this value before logging a message. By default, no levels are disabled.
    +//!
    +//! It is possible to override this level for release builds only with the following features:
    +//!
     //! * `release_max_level_off`
     //! * `release_max_level_error`
     //! * `release_max_level_warn`
    @@ -2085,18 +2150,15 @@
     //! * `release_max_level_debug`
     //! * `release_max_level_trace`
     //!
    -//! These features control the value of the `STATIC_MAX_LEVEL` constant. The logging macros check
    -//! this value before logging a message. By default, no levels are disabled.
    -//!
    -//! Libraries should avoid using the max level features because they're global and can't be changed
    -//! once they're set.
    +//! Libraries should avoid using the max level features because they're global and can't be changed
    +//! once they're set.
     //!
     //! For example, a crate can disable trace level logs in debug builds and trace, debug, and info
     //! level logs in release builds with the following configuration:
     //!
     //! ```toml
     //! [dependencies]
    -//! log = { version = "0.4", features = ["max_level_debug", "release_max_level_warn"] }
    +//! log = { version = "0.4", features = ["max_level_debug", "release_max_level_warn"] }
     //! ```
     //! # Crate Feature Flags
     //!
    @@ -2109,7 +2171,7 @@
     //!
     //! ```toml
     //! [dependencies]
    -//! log = { version = "0.4", features = ["std", "serde"] }
    +//! log = { version = "0.4", features = ["std", "serde"] }
     //! ```
     //!
     //! # Version compatibility
    @@ -2127,6 +2189,7 @@
     //! [`try_set_logger_raw`]: fn.try_set_logger_raw.html
     //! [`shutdown_logger_raw`]: fn.shutdown_logger_raw.html
     //! [env_logger]: https://docs.rs/env_logger/*/env_logger/
    +//! [colog]: https://docs.rs/colog/*/colog/
     //! [simple_logger]: https://github.com/borntyping/rust-simple_logger
     //! [simplelog]: https://github.com/drakulix/simplelog.rs
     //! [pretty_env_logger]: https://docs.rs/pretty_env_logger/*/pretty_env_logger/
    @@ -2144,51 +2207,88 @@
     //! [log-to-defmt]: https://docs.rs/log-to-defmt/*/log_to_defmt/
     //! [console_log]: https://docs.rs/console_log/*/console_log/
     //! [structured-logger]: https://docs.rs/structured-logger/latest/structured_logger/
    +//! [logcontrol-log]: https://docs.rs/logcontrol-log/*/logcontrol_log/
    +//! [log_err]: https://docs.rs/log_err/*/log_err/
    +//! [log-reload]: https://docs.rs/log-reload/*/log_reload/
     
     #![doc(
    -    html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
    -    html_favicon_url = "https://www.rust-lang.org/favicon.ico",
    -    html_root_url = "https://docs.rs/log/0.4.20"
    +    html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
    +    html_favicon_url = "https://www.rust-lang.org/favicon.ico",
    +    html_root_url = "https://docs.rs/log/0.4.22"
     )]
     #![warn(missing_docs)]
     #![deny(missing_debug_implementations, unconditional_recursion)]
    -#![cfg_attr(all(not(feature = "std"), not(test)), no_std)]
    -// When compiled for the rustc compiler itself we want to make sure that this is
    -// an unstable crate
    -#![cfg_attr(rustbuild, feature(staged_api, rustc_private))]
    -#![cfg_attr(rustbuild, unstable(feature = "rustc_private", issue = "27812"))]
    +#![cfg_attr(all(not(feature = "std"), not(test)), no_std)]
     
    -#[cfg(all(not(feature = "std"), not(test)))]
    +#[cfg(any(
    +    all(feature = "max_level_off", feature = "max_level_error"),
    +    all(feature = "max_level_off", feature = "max_level_warn"),
    +    all(feature = "max_level_off", feature = "max_level_info"),
    +    all(feature = "max_level_off", feature = "max_level_debug"),
    +    all(feature = "max_level_off", feature = "max_level_trace"),
    +    all(feature = "max_level_error", feature = "max_level_warn"),
    +    all(feature = "max_level_error", feature = "max_level_info"),
    +    all(feature = "max_level_error", feature = "max_level_debug"),
    +    all(feature = "max_level_error", feature = "max_level_trace"),
    +    all(feature = "max_level_warn", feature = "max_level_info"),
    +    all(feature = "max_level_warn", feature = "max_level_debug"),
    +    all(feature = "max_level_warn", feature = "max_level_trace"),
    +    all(feature = "max_level_info", feature = "max_level_debug"),
    +    all(feature = "max_level_info", feature = "max_level_trace"),
    +    all(feature = "max_level_debug", feature = "max_level_trace"),
    +))]
    +compile_error!("multiple max_level_* features set");
    +
    +#[rustfmt::skip]
    +#[cfg(any(
    +    all(feature = "release_max_level_off", feature = "release_max_level_error"),
    +    all(feature = "release_max_level_off", feature = "release_max_level_warn"),
    +    all(feature = "release_max_level_off", feature = "release_max_level_info"),
    +    all(feature = "release_max_level_off", feature = "release_max_level_debug"),
    +    all(feature = "release_max_level_off", feature = "release_max_level_trace"),
    +    all(feature = "release_max_level_error", feature = "release_max_level_warn"),
    +    all(feature = "release_max_level_error", feature = "release_max_level_info"),
    +    all(feature = "release_max_level_error", feature = "release_max_level_debug"),
    +    all(feature = "release_max_level_error", feature = "release_max_level_trace"),
    +    all(feature = "release_max_level_warn", feature = "release_max_level_info"),
    +    all(feature = "release_max_level_warn", feature = "release_max_level_debug"),
    +    all(feature = "release_max_level_warn", feature = "release_max_level_trace"),
    +    all(feature = "release_max_level_info", feature = "release_max_level_debug"),
    +    all(feature = "release_max_level_info", feature = "release_max_level_trace"),
    +    all(feature = "release_max_level_debug", feature = "release_max_level_trace"),
    +))]
    +compile_error!("multiple release_max_level_* features set");
    +
    +#[cfg(all(not(feature = "std"), not(test)))]
     extern crate core as std;
     
    -use std::cmp;
    -#[cfg(feature = "std")]
    +use std::cfg;
    +#[cfg(feature = "std")]
     use std::error;
    -use std::fmt;
    -use std::mem;
     use std::str::FromStr;
    +use std::{cmp, fmt, mem};
     
     #[macro_use]
     mod macros;
     mod serde;
     
    -#[cfg(feature = "kv_unstable")]
    +#[cfg(feature = "kv")]
     pub mod kv;
     
    -#[cfg(target_has_atomic = "ptr")]
    +#[cfg(target_has_atomic = "ptr")]
     use std::sync::atomic::{AtomicUsize, Ordering};
     
    -#[cfg(not(target_has_atomic = "ptr"))]
    +#[cfg(not(target_has_atomic = "ptr"))]
     use std::cell::Cell;
    -#[cfg(not(target_has_atomic = "ptr"))]
    +#[cfg(not(target_has_atomic = "ptr"))]
     use std::sync::atomic::Ordering;
     
    -#[cfg(not(target_has_atomic = "ptr"))]
    +#[cfg(not(target_has_atomic = "ptr"))]
     struct AtomicUsize {
         v: Cell<usize>,
     }
     
    -#[cfg(not(target_has_atomic = "ptr"))]
    +#[cfg(not(target_has_atomic = "ptr"))]
     impl AtomicUsize {
         const fn new(v: usize) -> AtomicUsize {
             AtomicUsize { v: Cell::new(v) }
    @@ -2202,7 +2302,7 @@
             self.v.set(val)
         }
     
    -    #[cfg(target_has_atomic = "ptr")]
    +    #[cfg(target_has_atomic = "ptr")]
         fn compare_exchange(
             &self,
             current: usize,
    @@ -2220,7 +2320,7 @@
     
     // Any platform without atomics is unlikely to have multiple cores, so
     // writing via Cell will not be a race condition.
    -#[cfg(not(target_has_atomic = "ptr"))]
    +#[cfg(not(target_has_atomic = "ptr"))]
     unsafe impl Sync for AtomicUsize {}
     
     // The LOGGER static holds a pointer to the global logger. It is protected by
    @@ -2229,21 +2329,21 @@
     
     static STATE: AtomicUsize = AtomicUsize::new(0);
     
    -// There are three different states that we care about: the logger's
    -// uninitialized, the logger's initializing (set_logger's been called but
    -// LOGGER hasn't actually been set yet), or the logger's active.
    +// There are three different states that we care about: the logger's
    +// uninitialized, the logger's initializing (set_logger's been called but
    +// LOGGER hasn't actually been set yet), or the logger's active.
     const UNINITIALIZED: usize = 0;
     const INITIALIZING: usize = 1;
     const INITIALIZED: usize = 2;
     
     static MAX_LOG_LEVEL_FILTER: AtomicUsize = AtomicUsize::new(0);
     
    -static LOG_LEVEL_NAMES: [&str; 6] = ["OFF", "ERROR", "WARN", "INFO", "DEBUG", "TRACE"];
    +static LOG_LEVEL_NAMES: [&str; 6] = ["OFF", "ERROR", "WARN", "INFO", "DEBUG", "TRACE"];
     
    -static SET_LOGGER_ERROR: &str = "attempted to set a logger after the logging system \
    -                                 was already initialized";
    +static SET_LOGGER_ERROR: &str = "attempted to set a logger after the logging system \
    +                                 was already initialized";
     static LEVEL_PARSE_ERROR: &str =
    -    "attempted to convert a string that doesn't match an existing log level";
    +    "attempted to convert a string that doesn't match an existing log level";
     
     /// An enum representing the available verbosity levels of the logger.
     ///
    @@ -2254,26 +2354,26 @@
     #[repr(usize)]
     #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Debug, Hash)]
     pub enum Level {
    -    /// The "error" level.
    +    /// The "error" level.
         ///
         /// Designates very serious errors.
         // This way these line up with the discriminants for LevelFilter below
         // This works because Rust treats field-less enums the same way as C does:
         // https://doc.rust-lang.org/reference/items/enumerations.html#custom-discriminant-values-for-field-less-enumerations
         Error = 1,
    -    /// The "warn" level.
    +    /// The "warn" level.
         ///
         /// Designates hazardous situations.
         Warn,
    -    /// The "info" level.
    +    /// The "info" level.
         ///
         /// Designates useful information.
         Info,
    -    /// The "debug" level.
    +    /// The "debug" level.
         ///
         /// Designates lower priority information.
         Debug,
    -    /// The "trace" level.
    +    /// The "trace" level.
         ///
         /// Designates very low priority, often extremely verbose, information.
         Trace,
    @@ -2293,26 +2393,17 @@
         }
     }
     
    -fn ok_or<T, E>(t: Option<T>, e: E) -> Result<T, E> {
    -    match t {
    -        Some(t) => Ok(t),
    -        None => Err(e),
    -    }
    -}
    -
     impl FromStr for Level {
         type Err = ParseLevelError;
         fn from_str(level: &str) -> Result<Level, Self::Err> {
    -        ok_or(
    -            LOG_LEVEL_NAMES
    -                .iter()
    -                .position(|&name| name.eq_ignore_ascii_case(level))
    -                .into_iter()
    -                .filter(|&idx| idx != 0)
    -                .map(|idx| Level::from_usize(idx).unwrap())
    -                .next(),
    -            ParseLevelError(()),
    -        )
    +        LOG_LEVEL_NAMES
    +            .iter()
    +            .position(|&name| name.eq_ignore_ascii_case(level))
    +            .into_iter()
    +            .filter(|&idx| idx != 0)
    +            .map(|idx| Level::from_usize(idx).unwrap())
    +            .next()
    +            .ok_or(ParseLevelError(()))
         }
     }
     
    @@ -2349,7 +2440,7 @@
         /// Returns the string representation of the `Level`.
         ///
         /// This returns the same string as the `fmt::Display` implementation.
    -    pub fn as_str(&self) -> &'static str {
    +    pub fn as_str(&self) -> &'static str {
             LOG_LEVEL_NAMES[*self as usize]
         }
     
    @@ -2414,13 +2505,11 @@
     impl FromStr for LevelFilter {
         type Err = ParseLevelError;
         fn from_str(level: &str) -> Result<LevelFilter, Self::Err> {
    -        ok_or(
    -            LOG_LEVEL_NAMES
    -                .iter()
    -                .position(|&name| name.eq_ignore_ascii_case(level))
    -                .map(|p| LevelFilter::from_usize(p).unwrap()),
    -            ParseLevelError(()),
    -        )
    +        LOG_LEVEL_NAMES
    +            .iter()
    +            .position(|&name| name.eq_ignore_ascii_case(level))
    +            .map(|p| LevelFilter::from_usize(p).unwrap())
    +            .ok_or(ParseLevelError(()))
         }
     }
     
    @@ -2460,7 +2549,7 @@
         /// Returns the string representation of the `LevelFilter`.
         ///
         /// This returns the same string as the `fmt::Display` implementation.
    -    pub fn as_str(&self) -> &'static str {
    +    pub fn as_str(&self) -> &'static str {
             LOG_LEVEL_NAMES[*self as usize]
         }
     
    @@ -2484,14 +2573,14 @@
     }
     
     #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
    -enum MaybeStaticStr<'a> {
    -    Static(&'static str),
    -    Borrowed(&'a str),
    +enum MaybeStaticStr<'a> {
    +    Static(&'static str),
    +    Borrowed(&'a str),
     }
     
    -impl<'a> MaybeStaticStr<'a> {
    +impl<'a> MaybeStaticStr<'a> {
         #[inline]
    -    fn get(&self) -> &'a str {
    +    fn get(&self) -> &'a str {
             match *self {
                 MaybeStaticStr::Static(s) => s,
                 MaybeStaticStr::Borrowed(s) => s,
    @@ -2499,7 +2588,7 @@
         }
     }
     
    -/// The "payload" of a log message.
    +/// The "payload" of a log message.
     ///
     /// # Use
     ///
    @@ -2517,7 +2606,7 @@
     /// The following example shows a simple logger that displays the level,
     /// module path, and message of any `Record` that is passed to it.
     ///
    -/// ```edition2018
    +/// ```
     /// struct SimpleLogger;
     ///
     /// impl log::Log for SimpleLogger {
    @@ -2530,7 +2619,7 @@
     ///            return;
     ///        }
     ///
    -///        println!("{}:{} -- {}",
    +///        println!("{}:{} -- {}",
     ///                 record.level(),
     ///                 record.target(),
     ///                 record.args());
    @@ -2545,26 +2634,26 @@
     /// [`level()`]: struct.Record.html#method.level
     /// [`target()`]: struct.Record.html#method.target
     #[derive(Clone, Debug)]
    -pub struct Record<'a> {
    -    metadata: Metadata<'a>,
    -    args: fmt::Arguments<'a>,
    -    module_path: Option<MaybeStaticStr<'a>>,
    -    file: Option<MaybeStaticStr<'a>>,
    +pub struct Record<'a> {
    +    metadata: Metadata<'a>,
    +    args: fmt::Arguments<'a>,
    +    module_path: Option<MaybeStaticStr<'a>>,
    +    file: Option<MaybeStaticStr<'a>>,
         line: Option<u32>,
    -    #[cfg(feature = "kv_unstable")]
    -    key_values: KeyValues<'a>,
    +    #[cfg(feature = "kv")]
    +    key_values: KeyValues<'a>,
     }
     
     // This wrapper type is only needed so we can
     // `#[derive(Debug)]` on `Record`. It also
     // provides a useful `Debug` implementation for
     // the underlying `Source`.
    -#[cfg(feature = "kv_unstable")]
    +#[cfg(feature = "kv")]
     #[derive(Clone)]
    -struct KeyValues<'a>(&'a dyn kv::Source);
    +struct KeyValues<'a>(&'a dyn kv::Source);
     
    -#[cfg(feature = "kv_unstable")]
    -impl<'a> fmt::Debug for KeyValues<'a> {
    +#[cfg(feature = "kv")]
    +impl<'a> fmt::Debug for KeyValues<'a> {
         fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
             let mut visitor = f.debug_map();
             self.0.visit(&mut visitor).map_err(|_| fmt::Error)?;
    @@ -2572,22 +2661,22 @@
         }
     }
     
    -impl<'a> Record<'a> {
    +impl<'a> Record<'a> {
         /// Returns a new builder.
         #[inline]
    -    pub fn builder() -> RecordBuilder<'a> {
    +    pub fn builder() -> RecordBuilder<'a> {
             RecordBuilder::new()
         }
     
         /// The message body.
         #[inline]
    -    pub fn args(&self) -> &fmt::Arguments<'a> {
    +    pub fn args(&self) -> &fmt::Arguments<'a> {
             &self.args
         }
     
         /// Metadata about the log directive.
         #[inline]
    -    pub fn metadata(&self) -> &Metadata<'a> {
    +    pub fn metadata(&self) -> &Metadata<'a> {
             &self.metadata
         }
     
    @@ -2599,19 +2688,19 @@
     
         /// The name of the target of the directive.
         #[inline]
    -    pub fn target(&self) -> &'a str {
    +    pub fn target(&self) -> &'a str {
             self.metadata.target()
         }
     
         /// The module path of the message.
         #[inline]
    -    pub fn module_path(&self) -> Option<&'a str> {
    +    pub fn module_path(&self) -> Option<&'a str> {
             self.module_path.map(|s| s.get())
         }
     
    -    /// The module path of the message, if it is a `'static` string.
    +    /// The module path of the message, if it is a `'static` string.
         #[inline]
    -    pub fn module_path_static(&self) -> Option<&'static str> {
    +    pub fn module_path_static(&self) -> Option<&'static str> {
             match self.module_path {
                 Some(MaybeStaticStr::Static(s)) => Some(s),
                 _ => None,
    @@ -2620,13 +2709,13 @@
     
         /// The source file containing the message.
         #[inline]
    -    pub fn file(&self) -> Option<&'a str> {
    +    pub fn file(&self) -> Option<&'a str> {
             self.file.map(|s| s.get())
         }
     
    -    /// The module path of the message, if it is a `'static` string.
    +    /// The source file containing the message, if it is a `'static` string.
         #[inline]
    -    pub fn file_static(&self) -> Option<&'static str> {
    +    pub fn file_static(&self) -> Option<&'static str> {
             match self.file {
                 Some(MaybeStaticStr::Static(s)) => Some(s),
                 _ => None,
    @@ -2640,14 +2729,14 @@
         }
     
         /// The structured key-value pairs associated with the message.
    -    #[cfg(feature = "kv_unstable")]
    +    #[cfg(feature = "kv")]
         #[inline]
         pub fn key_values(&self) -> &dyn kv::Source {
             self.key_values.0
         }
     
         /// Create a new [`RecordBuilder`](struct.RecordBuilder.html) based on this record.
    -    #[cfg(feature = "kv_unstable")]
    +    #[cfg(feature = "kv")]
         #[inline]
         pub fn to_builder(&self) -> RecordBuilder {
             RecordBuilder {
    @@ -2668,155 +2757,155 @@
     
     /// Builder for [`Record`](struct.Record.html).
     ///
    -/// Typically should only be used by log library creators or for testing and "shim loggers".
    +/// Typically should only be used by log library creators or for testing and "shim loggers".
     /// The `RecordBuilder` can set the different parameters of `Record` object, and returns
     /// the created object when `build` is called.
     ///
     /// # Examples
     ///
    -/// ```edition2018
    +/// ```
     /// use log::{Level, Record};
     ///
     /// let record = Record::builder()
    -///                 .args(format_args!("Error!"))
    +///                 .args(format_args!("Error!"))
     ///                 .level(Level::Error)
    -///                 .target("myApp")
    -///                 .file(Some("server.rs"))
    +///                 .target("myApp")
    +///                 .file(Some("server.rs"))
     ///                 .line(Some(144))
    -///                 .module_path(Some("server"))
    +///                 .module_path(Some("server"))
     ///                 .build();
     /// ```
     ///
     /// Alternatively, use [`MetadataBuilder`](struct.MetadataBuilder.html):
     ///
    -/// ```edition2018
    +/// ```
     /// use log::{Record, Level, MetadataBuilder};
     ///
     /// let error_metadata = MetadataBuilder::new()
    -///                         .target("myApp")
    +///                         .target("myApp")
     ///                         .level(Level::Error)
     ///                         .build();
     ///
     /// let record = Record::builder()
     ///                 .metadata(error_metadata)
    -///                 .args(format_args!("Error!"))
    +///                 .args(format_args!("Error!"))
     ///                 .line(Some(433))
    -///                 .file(Some("app.rs"))
    -///                 .module_path(Some("server"))
    +///                 .file(Some("app.rs"))
    +///                 .module_path(Some("server"))
     ///                 .build();
     /// ```
     #[derive(Debug)]
    -pub struct RecordBuilder<'a> {
    -    record: Record<'a>,
    +pub struct RecordBuilder<'a> {
    +    record: Record<'a>,
     }
     
    -impl<'a> RecordBuilder<'a> {
    +impl<'a> RecordBuilder<'a> {
         /// Construct new `RecordBuilder`.
         ///
         /// The default options are:
         ///
    -    /// - `args`: [`format_args!("")`]
    +    /// - `args`: [`format_args!("")`]
         /// - `metadata`: [`Metadata::builder().build()`]
         /// - `module_path`: `None`
         /// - `file`: `None`
         /// - `line`: `None`
         ///
    -    /// [`format_args!("")`]: https://doc.rust-lang.org/std/macro.format_args.html
    +    /// [`format_args!("")`]: https://doc.rust-lang.org/std/macro.format_args.html
         /// [`Metadata::builder().build()`]: struct.MetadataBuilder.html#method.build
         #[inline]
    -    pub fn new() -> RecordBuilder<'a> {
    +    pub fn new() -> RecordBuilder<'a> {
             RecordBuilder {
                 record: Record {
    -                args: format_args!(""),
    +                args: format_args!(""),
                     metadata: Metadata::builder().build(),
                     module_path: None,
                     file: None,
                     line: None,
    -                #[cfg(feature = "kv_unstable")]
    -                key_values: KeyValues(&Option::None::<(kv::Key, kv::Value)>),
    +                #[cfg(feature = "kv")]
    +                key_values: KeyValues(&None::<(kv::Key, kv::Value)>),
                 },
             }
         }
     
         /// Set [`args`](struct.Record.html#method.args).
         #[inline]
    -    pub fn args(&mut self, args: fmt::Arguments<'a>) -> &mut RecordBuilder<'a> {
    +    pub fn args(&mut self, args: fmt::Arguments<'a>) -> &mut RecordBuilder<'a> {
             self.record.args = args;
             self
         }
     
         /// Set [`metadata`](struct.Record.html#method.metadata). Construct a `Metadata` object with [`MetadataBuilder`](struct.MetadataBuilder.html).
         #[inline]
    -    pub fn metadata(&mut self, metadata: Metadata<'a>) -> &mut RecordBuilder<'a> {
    +    pub fn metadata(&mut self, metadata: Metadata<'a>) -> &mut RecordBuilder<'a> {
             self.record.metadata = metadata;
             self
         }
     
         /// Set [`Metadata::level`](struct.Metadata.html#method.level).
         #[inline]
    -    pub fn level(&mut self, level: Level) -> &mut RecordBuilder<'a> {
    +    pub fn level(&mut self, level: Level) -> &mut RecordBuilder<'a> {
             self.record.metadata.level = level;
             self
         }
     
         /// Set [`Metadata::target`](struct.Metadata.html#method.target)
         #[inline]
    -    pub fn target(&mut self, target: &'a str) -> &mut RecordBuilder<'a> {
    +    pub fn target(&mut self, target: &'a str) -> &mut RecordBuilder<'a> {
             self.record.metadata.target = target;
             self
         }
     
         /// Set [`module_path`](struct.Record.html#method.module_path)
         #[inline]
    -    pub fn module_path(&mut self, path: Option<&'a str>) -> &mut RecordBuilder<'a> {
    +    pub fn module_path(&mut self, path: Option<&'a str>) -> &mut RecordBuilder<'a> {
             self.record.module_path = path.map(MaybeStaticStr::Borrowed);
             self
         }
     
    -    /// Set [`module_path`](struct.Record.html#method.module_path) to a `'static` string
    +    /// Set [`module_path`](struct.Record.html#method.module_path) to a `'static` string
         #[inline]
    -    pub fn module_path_static(&mut self, path: Option<&'static str>) -> &mut RecordBuilder<'a> {
    +    pub fn module_path_static(&mut self, path: Option<&'static str>) -> &mut RecordBuilder<'a> {
             self.record.module_path = path.map(MaybeStaticStr::Static);
             self
         }
     
         /// Set [`file`](struct.Record.html#method.file)
         #[inline]
    -    pub fn file(&mut self, file: Option<&'a str>) -> &mut RecordBuilder<'a> {
    +    pub fn file(&mut self, file: Option<&'a str>) -> &mut RecordBuilder<'a> {
             self.record.file = file.map(MaybeStaticStr::Borrowed);
             self
         }
     
    -    /// Set [`file`](struct.Record.html#method.file) to a `'static` string.
    +    /// Set [`file`](struct.Record.html#method.file) to a `'static` string.
         #[inline]
    -    pub fn file_static(&mut self, file: Option<&'static str>) -> &mut RecordBuilder<'a> {
    +    pub fn file_static(&mut self, file: Option<&'static str>) -> &mut RecordBuilder<'a> {
             self.record.file = file.map(MaybeStaticStr::Static);
             self
         }
     
         /// Set [`line`](struct.Record.html#method.line)
         #[inline]
    -    pub fn line(&mut self, line: Option<u32>) -> &mut RecordBuilder<'a> {
    +    pub fn line(&mut self, line: Option<u32>) -> &mut RecordBuilder<'a> {
             self.record.line = line;
             self
         }
     
         /// Set [`key_values`](struct.Record.html#method.key_values)
    -    #[cfg(feature = "kv_unstable")]
    +    #[cfg(feature = "kv")]
         #[inline]
    -    pub fn key_values(&mut self, kvs: &'a dyn kv::Source) -> &mut RecordBuilder<'a> {
    +    pub fn key_values(&mut self, kvs: &'a dyn kv::Source) -> &mut RecordBuilder<'a> {
             self.record.key_values = KeyValues(kvs);
             self
         }
     
         /// Invoke the builder and return a `Record`
         #[inline]
    -    pub fn build(&self) -> Record<'a> {
    +    pub fn build(&self) -> Record<'a> {
             self.record.clone()
         }
     }
     
    -impl<'a> Default for RecordBuilder<'a> {
    +impl<'a> Default for RecordBuilder<'a> {
         fn default() -> Self {
             Self::new()
         }
    @@ -2832,7 +2921,7 @@
     /// They are consumed by implementations of the `Log` trait in the
     /// `enabled` method.
     ///
    -/// `Record`s use `Metadata` to determine the log message's severity
    +/// `Record`s use `Metadata` to determine the log message's severity
     /// and target.
     ///
     /// Users should use the `log_enabled!` macro in their code to avoid
    @@ -2840,7 +2929,7 @@
     ///
     /// # Examples
     ///
    -/// ```edition2018
    +/// ```
     /// use log::{Record, Level, Metadata};
     ///
     /// struct MyLogger;
    @@ -2852,7 +2941,7 @@
     ///
     ///     fn log(&self, record: &Record) {
     ///         if self.enabled(record.metadata()) {
    -///             println!("{} - {}", record.level(), record.args());
    +///             println!("{} - {}", record.level(), record.args());
     ///         }
     ///     }
     ///     fn flush(&self) {}
    @@ -2861,15 +2950,15 @@
     /// # fn main(){}
     /// ```
     #[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
    -pub struct Metadata<'a> {
    +pub struct Metadata<'a> {
         level: Level,
    -    target: &'a str,
    +    target: &'a str,
     }
     
    -impl<'a> Metadata<'a> {
    +impl<'a> Metadata<'a> {
         /// Returns a new builder.
         #[inline]
    -    pub fn builder() -> MetadataBuilder<'a> {
    +    pub fn builder() -> MetadataBuilder<'a> {
             MetadataBuilder::new()
         }
     
    @@ -2881,21 +2970,21 @@
     
         /// The name of the target of the directive.
         #[inline]
    -    pub fn target(&self) -> &'a str {
    +    pub fn target(&self) -> &'a str {
             self.target
         }
     }
     
     /// Builder for [`Metadata`](struct.Metadata.html).
     ///
    -/// Typically should only be used by log library creators or for testing and "shim loggers".
    +/// Typically should only be used by log library creators or for testing and "shim loggers".
     /// The `MetadataBuilder` can set the different parameters of a `Metadata` object, and returns
     /// the created object when `build` is called.
     ///
     /// # Example
     ///
    -/// ```edition2018
    -/// let target = "myApp";
    +/// ```
    +/// let target = "myApp";
     /// use log::{Level, MetadataBuilder};
     /// let metadata = MetadataBuilder::new()
     ///                     .level(Level::Debug)
    @@ -2903,49 +2992,49 @@
     ///                     .build();
     /// ```
     #[derive(Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
    -pub struct MetadataBuilder<'a> {
    -    metadata: Metadata<'a>,
    +pub struct MetadataBuilder<'a> {
    +    metadata: Metadata<'a>,
     }
     
    -impl<'a> MetadataBuilder<'a> {
    +impl<'a> MetadataBuilder<'a> {
         /// Construct a new `MetadataBuilder`.
         ///
         /// The default options are:
         ///
         /// - `level`: `Level::Info`
    -    /// - `target`: `""`
    +    /// - `target`: `""`
         #[inline]
    -    pub fn new() -> MetadataBuilder<'a> {
    +    pub fn new() -> MetadataBuilder<'a> {
             MetadataBuilder {
                 metadata: Metadata {
                     level: Level::Info,
    -                target: "",
    +                target: "",
                 },
             }
         }
     
         /// Setter for [`level`](struct.Metadata.html#method.level).
         #[inline]
    -    pub fn level(&mut self, arg: Level) -> &mut MetadataBuilder<'a> {
    +    pub fn level(&mut self, arg: Level) -> &mut MetadataBuilder<'a> {
             self.metadata.level = arg;
             self
         }
     
         /// Setter for [`target`](struct.Metadata.html#method.target).
         #[inline]
    -    pub fn target(&mut self, target: &'a str) -> &mut MetadataBuilder<'a> {
    +    pub fn target(&mut self, target: &'a str) -> &mut MetadataBuilder<'a> {
             self.metadata.target = target;
             self
         }
     
         /// Returns a `Metadata` object.
         #[inline]
    -    pub fn build(&self) -> Metadata<'a> {
    +    pub fn build(&self) -> Metadata<'a> {
             self.metadata.clone()
         }
     }
     
    -impl<'a> Default for MetadataBuilder<'a> {
    +impl<'a> Default for MetadataBuilder<'a> {
         fn default() -> Self {
             Self::new()
         }
    @@ -2962,8 +3051,8 @@
         ///
         /// # For implementors
         ///
    -    /// This method isn't called automatically by the `log!` macros.
    -    /// It's up to an implementation of the `Log` trait to call `enabled` in its own
    +    /// This method isn't called automatically by the `log!` macros.
    +    /// It's up to an implementation of the `Log` trait to call `enabled` in its own
         /// `log` method implementation to guarantee that filtering is applied.
         fn enabled(&self, metadata: &Metadata) -> bool;
     
    @@ -2977,6 +3066,11 @@
         fn log(&self, record: &Record);
     
         /// Flushes any buffered records.
    +    ///
    +    /// # For implementors
    +    ///
    +    /// This method isn't called automatically by the `log!` macros.
    +    /// It can be called manually on shut-down to ensure any in-flight records are flushed.
         fn flush(&self);
     }
     
    @@ -2992,7 +3086,7 @@
         fn flush(&self) {}
     }
     
    -impl<T> Log for &'_ T
    +impl<T> Log for &'_ T
     where
         T: ?Sized + Log,
     {
    @@ -3008,7 +3102,7 @@
         }
     }
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl<T> Log for std::boxed::Box<T>
     where
         T: ?Sized + Log,
    @@ -3018,14 +3112,14 @@
         }
     
         fn log(&self, record: &Record) {
    -        self.as_ref().log(record)
    +        self.as_ref().log(record);
         }
         fn flush(&self) {
    -        self.as_ref().flush()
    +        self.as_ref().flush();
         }
     }
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl<T> Log for std::sync::Arc<T>
     where
         T: ?Sized + Log,
    @@ -3035,10 +3129,10 @@
         }
     
         fn log(&self, record: &Record) {
    -        self.as_ref().log(record)
    +        self.as_ref().log(record);
         }
         fn flush(&self) {
    -        self.as_ref().flush()
    +        self.as_ref().flush();
         }
     }
     
    @@ -3048,7 +3142,7 @@
     ///
     /// Note that `Trace` is the maximum level, because it provides the maximum amount of detail in the emitted logs.
     #[inline]
    -#[cfg(target_has_atomic = "ptr")]
    +#[cfg(target_has_atomic = "ptr")]
     pub fn set_max_level(level: LevelFilter) {
         MAX_LOG_LEVEL_FILTER.store(level as usize, Ordering::Relaxed);
     }
    @@ -3062,20 +3156,20 @@
     ///
     /// # Safety
     ///
    -/// This function is only safe to call when no other level setting function is
    -/// called while this function still executes.
    +/// This function is only safe to call when it cannot race with any other
    +/// calls to `set_max_level` or `set_max_level_racy`.
     ///
     /// This can be upheld by (for example) making sure that **there are no other
     /// threads**, and (on embedded) that **interrupts are disabled**.
     ///
    -/// Is is safe to use all other logging functions while this function runs
    +/// It is safe to use all other logging functions while this function runs
     /// (including all logging macros).
     ///
     /// [`set_max_level`]: fn.set_max_level.html
     #[inline]
     pub unsafe fn set_max_level_racy(level: LevelFilter) {
         // `MAX_LOG_LEVEL_FILTER` uses a `Cell` as the underlying primitive when a
    -    // platform doesn't support `target_has_atomic = "ptr"`, so even though this looks the same
    +    // platform doesn't support `target_has_atomic = "ptr"`, so even though this looks the same
         // as `set_max_level` it may have different safety properties.
         MAX_LOG_LEVEL_FILTER.store(level as usize, Ordering::Relaxed);
     }
    @@ -3098,7 +3192,7 @@
         // Since `LevelFilter` is `repr(usize)`,
         // this transmute is sound if and only if `MAX_LOG_LEVEL_FILTER`
         // is set to a usize that is a valid discriminant for `LevelFilter`.
    -    // Since `MAX_LOG_LEVEL_FILTER` is private, the only time it's set
    +    // Since `MAX_LOG_LEVEL_FILTER` is private, the only time it's set
         // is by `set_max_level` above, i.e. by casting a `LevelFilter` to `usize`.
         // So any usize stored in `MAX_LOG_LEVEL_FILTER` is a valid discriminant.
         unsafe { mem::transmute(MAX_LOG_LEVEL_FILTER.load(Ordering::Relaxed)) }
    @@ -3107,7 +3201,7 @@
     /// Sets the global logger to a `Box<Log>`.
     ///
     /// This is a simple convenience wrapper over `set_logger`, which takes a
    -/// `Box<Log>` rather than a `&'static Log`. See the documentation for
    +/// `Box<Log>` rather than a `&'static Log`. See the documentation for
     /// [`set_logger`] for more details.
     ///
     /// Requires the `std` feature.
    @@ -3117,12 +3211,12 @@
     /// An error is returned if a logger has already been set.
     ///
     /// [`set_logger`]: fn.set_logger.html
    -#[cfg(all(feature = "std", target_has_atomic = "ptr"))]
    +#[cfg(all(feature = "std", target_has_atomic = "ptr"))]
     pub fn set_boxed_logger(logger: Box<dyn Log>) -> Result<(), SetLoggerError> {
         set_logger_inner(|| Box::leak(logger))
     }
     
    -/// Sets the global logger to a `&'static Log`.
    +/// Sets the global logger to a `&'static Log`.
     ///
     /// This function may only be called once in the lifetime of a program. Any log
     /// events that occur before the call to `set_logger` completes will be ignored.
    @@ -3144,7 +3238,7 @@
     ///
     /// # Examples
     ///
    -/// ```edition2018
    +/// ```
     /// use log::{error, info, warn, Record, Level, Metadata, LevelFilter};
     ///
     /// static MY_LOGGER: MyLogger = MyLogger;
    @@ -3158,7 +3252,7 @@
     ///
     ///     fn log(&self, record: &Record) {
     ///         if self.enabled(record.metadata()) {
    -///             println!("{} - {}", record.level(), record.args());
    +///             println!("{} - {}", record.level(), record.args());
     ///         }
     ///     }
     ///     fn flush(&self) {}
    @@ -3168,44 +3262,39 @@
     /// log::set_logger(&MY_LOGGER).unwrap();
     /// log::set_max_level(LevelFilter::Info);
     ///
    -/// info!("hello log");
    -/// warn!("warning");
    -/// error!("oops");
    +/// info!("hello log");
    +/// warn!("warning");
    +/// error!("oops");
     /// # }
     /// ```
     ///
     /// [`set_logger_racy`]: fn.set_logger_racy.html
    -#[cfg(target_has_atomic = "ptr")]
    -pub fn set_logger(logger: &'static dyn Log) -> Result<(), SetLoggerError> {
    +#[cfg(target_has_atomic = "ptr")]
    +pub fn set_logger(logger: &'static dyn Log) -> Result<(), SetLoggerError> {
         set_logger_inner(|| logger)
     }
     
    -#[cfg(target_has_atomic = "ptr")]
    +#[cfg(target_has_atomic = "ptr")]
     fn set_logger_inner<F>(make_logger: F) -> Result<(), SetLoggerError>
     where
    -    F: FnOnce() -> &'static dyn Log,
    +    F: FnOnce() -> &'static dyn Log,
     {
    -    let old_state = match STATE.compare_exchange(
    +    match STATE.compare_exchange(
             UNINITIALIZED,
             INITIALIZING,
    -        Ordering::SeqCst,
    -        Ordering::SeqCst,
    +        Ordering::Acquire,
    +        Ordering::Relaxed,
         ) {
    -        Ok(s) | Err(s) => s,
    -    };
    -    match old_state {
    -        UNINITIALIZED => {
    +        Ok(UNINITIALIZED) => {
                 unsafe {
                     LOGGER = make_logger();
                 }
    -            STATE.store(INITIALIZED, Ordering::SeqCst);
    +            STATE.store(INITIALIZED, Ordering::Release);
                 Ok(())
             }
    -        INITIALIZING => {
    -            while STATE.load(Ordering::SeqCst) == INITIALIZING {
    -                // TODO: replace with `hint::spin_loop` once MSRV is 1.49.0.
    -                #[allow(deprecated)]
    -                std::sync::atomic::spin_loop_hint();
    +        Err(INITIALIZING) => {
    +            while STATE.load(Ordering::Relaxed) == INITIALIZING {
    +                std::hint::spin_loop();
                 }
                 Err(SetLoggerError(()))
             }
    @@ -3222,8 +3311,8 @@
     ///
     /// # Safety
     ///
    -/// This function is only safe to call when no other logger initialization
    -/// function is called while this function still executes.
    +/// This function is only safe to call when it cannot race with any other
    +/// calls to `set_logger` or `set_logger_racy`.
     ///
     /// This can be upheld by (for example) making sure that **there are no other
     /// threads**, and (on embedded) that **interrupts are disabled**.
    @@ -3232,16 +3321,16 @@
     /// (including all logging macros).
     ///
     /// [`set_logger`]: fn.set_logger.html
    -pub unsafe fn set_logger_racy(logger: &'static dyn Log) -> Result<(), SetLoggerError> {
    -    match STATE.load(Ordering::SeqCst) {
    +pub unsafe fn set_logger_racy(logger: &'static dyn Log) -> Result<(), SetLoggerError> {
    +    match STATE.load(Ordering::Acquire) {
             UNINITIALIZED => {
                 LOGGER = logger;
    -            STATE.store(INITIALIZED, Ordering::SeqCst);
    +            STATE.store(INITIALIZED, Ordering::Release);
                 Ok(())
             }
             INITIALIZING => {
                 // This is just plain UB, since we were racing another initialization function
    -            unreachable!("set_logger_racy must not be used with other initialization functions")
    +            unreachable!("set_logger_racy must not be used with other initialization functions")
             }
             _ => Err(SetLoggerError(())),
         }
    @@ -3261,10 +3350,10 @@
     }
     
     // The Error trait is not available in libcore
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl error::Error for SetLoggerError {}
     
    -/// The type returned by [`from_str`] when the string doesn't match any of the log levels.
    +/// The type returned by [`from_str`] when the string doesn't match any of the log levels.
     ///
     /// [`from_str`]: https://doc.rust-lang.org/std/str/trait.FromStr.html#tymethod.from_str
     #[allow(missing_copy_implementations)]
    @@ -3278,14 +3367,22 @@
     }
     
     // The Error trait is not available in libcore
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl error::Error for ParseLevelError {}
     
     /// Returns a reference to the logger.
     ///
     /// If a logger has not been set, a no-op implementation is returned.
    -pub fn logger() -> &'static dyn Log {
    -    if STATE.load(Ordering::SeqCst) != INITIALIZED {
    +pub fn logger() -> &'static dyn Log {
    +    // Acquire memory ordering guarantees that current thread would see any
    +    // memory writes that happened before store of the value
    +    // into `STATE` with memory ordering `Release` or stronger.
    +    //
    +    // Since the value `INITIALIZED` is written only after `LOGGER` was
    +    // initialized, observing it after `Acquire` load here makes both
    +    // write to the `LOGGER` static and initialization of the logger
    +    // internal state synchronized with current thread.
    +    if STATE.load(Ordering::Acquire) != INITIALIZED {
             static NOP: NopLogger = NopLogger;
             &NOP
         } else {
    @@ -3293,7 +3390,7 @@
         }
     }
     
    -// WARNING: this is not part of the crate's public API and is subject to change at any time
    +// WARNING: this is not part of the crate's public API and is subject to change at any time
     #[doc(hidden)]
     pub mod __private_api;
     
    @@ -3306,84 +3403,41 @@
     /// should compare the level against this value.
     ///
     /// [`logger`]: fn.logger.html
    -pub const STATIC_MAX_LEVEL: LevelFilter = MAX_LEVEL_INNER;
    -
    -const MAX_LEVEL_INNER: LevelFilter = get_max_level_inner();
    -
    -const fn get_max_level_inner() -> LevelFilter {
    -    #[allow(unreachable_code)]
    -    {
    -        #[cfg(all(not(debug_assertions), feature = "release_max_level_off"))]
    -        {
    -            return LevelFilter::Off;
    -        }
    -        #[cfg(all(not(debug_assertions), feature = "release_max_level_error"))]
    -        {
    -            return LevelFilter::Error;
    -        }
    -        #[cfg(all(not(debug_assertions), feature = "release_max_level_warn"))]
    -        {
    -            return LevelFilter::Warn;
    -        }
    -        #[cfg(all(not(debug_assertions), feature = "release_max_level_info"))]
    -        {
    -            return LevelFilter::Info;
    -        }
    -        #[cfg(all(not(debug_assertions), feature = "release_max_level_debug"))]
    -        {
    -            return LevelFilter::Debug;
    -        }
    -        #[cfg(all(not(debug_assertions), feature = "release_max_level_trace"))]
    -        {
    -            return LevelFilter::Trace;
    -        }
    -        #[cfg(feature = "max_level_off")]
    -        {
    -            return LevelFilter::Off;
    -        }
    -        #[cfg(feature = "max_level_error")]
    -        {
    -            return LevelFilter::Error;
    -        }
    -        #[cfg(feature = "max_level_warn")]
    -        {
    -            return LevelFilter::Warn;
    -        }
    -        #[cfg(feature = "max_level_info")]
    -        {
    -            return LevelFilter::Info;
    -        }
    -        #[cfg(feature = "max_level_debug")]
    -        {
    -            return LevelFilter::Debug;
    -        }
    -
    -        LevelFilter::Trace
    -    }
    -}
    +pub const STATIC_MAX_LEVEL: LevelFilter = match cfg!(debug_assertions) {
    +    false if cfg!(feature = "release_max_level_off") => LevelFilter::Off,
    +    false if cfg!(feature = "release_max_level_error") => LevelFilter::Error,
    +    false if cfg!(feature = "release_max_level_warn") => LevelFilter::Warn,
    +    false if cfg!(feature = "release_max_level_info") => LevelFilter::Info,
    +    false if cfg!(feature = "release_max_level_debug") => LevelFilter::Debug,
    +    false if cfg!(feature = "release_max_level_trace") => LevelFilter::Trace,
    +    _ if cfg!(feature = "max_level_off") => LevelFilter::Off,
    +    _ if cfg!(feature = "max_level_error") => LevelFilter::Error,
    +    _ if cfg!(feature = "max_level_warn") => LevelFilter::Warn,
    +    _ if cfg!(feature = "max_level_info") => LevelFilter::Info,
    +    _ if cfg!(feature = "max_level_debug") => LevelFilter::Debug,
    +    _ => LevelFilter::Trace,
    +};
     
     #[cfg(test)]
     mod tests {
    -    extern crate std;
    -    use super::{Level, LevelFilter, ParseLevelError};
    -    use tests::std::string::ToString;
    +    use super::{Level, LevelFilter, ParseLevelError, STATIC_MAX_LEVEL};
     
         #[test]
         fn test_levelfilter_from_str() {
             let tests = [
    -            ("off", Ok(LevelFilter::Off)),
    -            ("error", Ok(LevelFilter::Error)),
    -            ("warn", Ok(LevelFilter::Warn)),
    -            ("info", Ok(LevelFilter::Info)),
    -            ("debug", Ok(LevelFilter::Debug)),
    -            ("trace", Ok(LevelFilter::Trace)),
    -            ("OFF", Ok(LevelFilter::Off)),
    -            ("ERROR", Ok(LevelFilter::Error)),
    -            ("WARN", Ok(LevelFilter::Warn)),
    -            ("INFO", Ok(LevelFilter::Info)),
    -            ("DEBUG", Ok(LevelFilter::Debug)),
    -            ("TRACE", Ok(LevelFilter::Trace)),
    -            ("asdf", Err(ParseLevelError(()))),
    +            ("off", Ok(LevelFilter::Off)),
    +            ("error", Ok(LevelFilter::Error)),
    +            ("warn", Ok(LevelFilter::Warn)),
    +            ("info", Ok(LevelFilter::Info)),
    +            ("debug", Ok(LevelFilter::Debug)),
    +            ("trace", Ok(LevelFilter::Trace)),
    +            ("OFF", Ok(LevelFilter::Off)),
    +            ("ERROR", Ok(LevelFilter::Error)),
    +            ("WARN", Ok(LevelFilter::Warn)),
    +            ("INFO", Ok(LevelFilter::Info)),
    +            ("DEBUG", Ok(LevelFilter::Debug)),
    +            ("TRACE", Ok(LevelFilter::Trace)),
    +            ("asdf", Err(ParseLevelError(()))),
             ];
             for &(s, ref expected) in &tests {
                 assert_eq!(expected, &s.parse());
    @@ -3393,18 +3447,18 @@
         #[test]
         fn test_level_from_str() {
             let tests = [
    -            ("OFF", Err(ParseLevelError(()))),
    -            ("error", Ok(Level::Error)),
    -            ("warn", Ok(Level::Warn)),
    -            ("info", Ok(Level::Info)),
    -            ("debug", Ok(Level::Debug)),
    -            ("trace", Ok(Level::Trace)),
    -            ("ERROR", Ok(Level::Error)),
    -            ("WARN", Ok(Level::Warn)),
    -            ("INFO", Ok(Level::Info)),
    -            ("DEBUG", Ok(Level::Debug)),
    -            ("TRACE", Ok(Level::Trace)),
    -            ("asdf", Err(ParseLevelError(()))),
    +            ("OFF", Err(ParseLevelError(()))),
    +            ("error", Ok(Level::Error)),
    +            ("warn", Ok(Level::Warn)),
    +            ("info", Ok(Level::Info)),
    +            ("debug", Ok(Level::Debug)),
    +            ("trace", Ok(Level::Trace)),
    +            ("ERROR", Ok(Level::Error)),
    +            ("WARN", Ok(Level::Warn)),
    +            ("INFO", Ok(Level::Info)),
    +            ("DEBUG", Ok(Level::Debug)),
    +            ("TRACE", Ok(Level::Trace)),
    +            ("asdf", Err(ParseLevelError(()))),
             ];
             for &(s, ref expected) in &tests {
                 assert_eq!(expected, &s.parse());
    @@ -3414,11 +3468,11 @@
         #[test]
         fn test_level_as_str() {
             let tests = &[
    -            (Level::Error, "ERROR"),
    -            (Level::Warn, "WARN"),
    -            (Level::Info, "INFO"),
    -            (Level::Debug, "DEBUG"),
    -            (Level::Trace, "TRACE"),
    +            (Level::Error, "ERROR"),
    +            (Level::Warn, "WARN"),
    +            (Level::Info, "INFO"),
    +            (Level::Debug, "DEBUG"),
    +            (Level::Trace, "TRACE"),
             ];
             for (input, expected) in tests {
                 assert_eq!(*expected, input.as_str());
    @@ -3427,14 +3481,14 @@
     
         #[test]
         fn test_level_show() {
    -        assert_eq!("INFO", Level::Info.to_string());
    -        assert_eq!("ERROR", Level::Error.to_string());
    +        assert_eq!("INFO", Level::Info.to_string());
    +        assert_eq!("ERROR", Level::Error.to_string());
         }
     
         #[test]
         fn test_levelfilter_show() {
    -        assert_eq!("OFF", LevelFilter::Off.to_string());
    -        assert_eq!("ERROR", LevelFilter::Error.to_string());
    +        assert_eq!("OFF", LevelFilter::Off.to_string());
    +        assert_eq!("ERROR", LevelFilter::Error.to_string());
         }
     
         #[test]
    @@ -3467,12 +3521,12 @@
         #[test]
         fn test_level_filter_as_str() {
             let tests = &[
    -            (LevelFilter::Off, "OFF"),
    -            (LevelFilter::Error, "ERROR"),
    -            (LevelFilter::Warn, "WARN"),
    -            (LevelFilter::Info, "INFO"),
    -            (LevelFilter::Debug, "DEBUG"),
    -            (LevelFilter::Trace, "TRACE"),
    +            (LevelFilter::Off, "OFF"),
    +            (LevelFilter::Error, "ERROR"),
    +            (LevelFilter::Warn, "WARN"),
    +            (LevelFilter::Info, "INFO"),
    +            (LevelFilter::Debug, "DEBUG"),
    +            (LevelFilter::Trace, "TRACE"),
             ];
             for (input, expected) in tests {
                 assert_eq!(*expected, input.as_str());
    @@ -3480,122 +3534,170 @@
         }
     
         #[test]
    -    #[cfg(feature = "std")]
    +    #[cfg_attr(not(debug_assertions), ignore)]
    +    fn test_static_max_level_debug() {
    +        if cfg!(feature = "max_level_off") {
    +            assert_eq!(STATIC_MAX_LEVEL, LevelFilter::Off);
    +        } else if cfg!(feature = "max_level_error") {
    +            assert_eq!(STATIC_MAX_LEVEL, LevelFilter::Error);
    +        } else if cfg!(feature = "max_level_warn") {
    +            assert_eq!(STATIC_MAX_LEVEL, LevelFilter::Warn);
    +        } else if cfg!(feature = "max_level_info") {
    +            assert_eq!(STATIC_MAX_LEVEL, LevelFilter::Info);
    +        } else if cfg!(feature = "max_level_debug") {
    +            assert_eq!(STATIC_MAX_LEVEL, LevelFilter::Debug);
    +        } else {
    +            assert_eq!(STATIC_MAX_LEVEL, LevelFilter::Trace);
    +        }
    +    }
    +
    +    #[test]
    +    #[cfg_attr(debug_assertions, ignore)]
    +    fn test_static_max_level_release() {
    +        if cfg!(feature = "release_max_level_off") {
    +            assert_eq!(STATIC_MAX_LEVEL, LevelFilter::Off);
    +        } else if cfg!(feature = "release_max_level_error") {
    +            assert_eq!(STATIC_MAX_LEVEL, LevelFilter::Error);
    +        } else if cfg!(feature = "release_max_level_warn") {
    +            assert_eq!(STATIC_MAX_LEVEL, LevelFilter::Warn);
    +        } else if cfg!(feature = "release_max_level_info") {
    +            assert_eq!(STATIC_MAX_LEVEL, LevelFilter::Info);
    +        } else if cfg!(feature = "release_max_level_debug") {
    +            assert_eq!(STATIC_MAX_LEVEL, LevelFilter::Debug);
    +        } else if cfg!(feature = "release_max_level_trace") {
    +            assert_eq!(STATIC_MAX_LEVEL, LevelFilter::Trace);
    +        } else if cfg!(feature = "max_level_off") {
    +            assert_eq!(STATIC_MAX_LEVEL, LevelFilter::Off);
    +        } else if cfg!(feature = "max_level_error") {
    +            assert_eq!(STATIC_MAX_LEVEL, LevelFilter::Error);
    +        } else if cfg!(feature = "max_level_warn") {
    +            assert_eq!(STATIC_MAX_LEVEL, LevelFilter::Warn);
    +        } else if cfg!(feature = "max_level_info") {
    +            assert_eq!(STATIC_MAX_LEVEL, LevelFilter::Info);
    +        } else if cfg!(feature = "max_level_debug") {
    +            assert_eq!(STATIC_MAX_LEVEL, LevelFilter::Debug);
    +        } else {
    +            assert_eq!(STATIC_MAX_LEVEL, LevelFilter::Trace);
    +        }
    +    }
    +
    +    #[test]
    +    #[cfg(feature = "std")]
         fn test_error_trait() {
             use super::SetLoggerError;
             let e = SetLoggerError(());
             assert_eq!(
                 &e.to_string(),
    -            "attempted to set a logger after the logging system \
    -             was already initialized"
    +            "attempted to set a logger after the logging system \
    +             was already initialized"
             );
         }
     
         #[test]
         fn test_metadata_builder() {
             use super::MetadataBuilder;
    -        let target = "myApp";
    +        let target = "myApp";
             let metadata_test = MetadataBuilder::new()
                 .level(Level::Debug)
                 .target(target)
                 .build();
             assert_eq!(metadata_test.level(), Level::Debug);
    -        assert_eq!(metadata_test.target(), "myApp");
    +        assert_eq!(metadata_test.target(), "myApp");
         }
     
         #[test]
         fn test_metadata_convenience_builder() {
             use super::Metadata;
    -        let target = "myApp";
    +        let target = "myApp";
             let metadata_test = Metadata::builder()
                 .level(Level::Debug)
                 .target(target)
                 .build();
             assert_eq!(metadata_test.level(), Level::Debug);
    -        assert_eq!(metadata_test.target(), "myApp");
    +        assert_eq!(metadata_test.target(), "myApp");
         }
     
         #[test]
         fn test_record_builder() {
             use super::{MetadataBuilder, RecordBuilder};
    -        let target = "myApp";
    +        let target = "myApp";
             let metadata = MetadataBuilder::new().target(target).build();
    -        let fmt_args = format_args!("hello");
    +        let fmt_args = format_args!("hello");
             let record_test = RecordBuilder::new()
                 .args(fmt_args)
                 .metadata(metadata)
    -            .module_path(Some("foo"))
    -            .file(Some("bar"))
    +            .module_path(Some("foo"))
    +            .file(Some("bar"))
                 .line(Some(30))
                 .build();
    -        assert_eq!(record_test.metadata().target(), "myApp");
    -        assert_eq!(record_test.module_path(), Some("foo"));
    -        assert_eq!(record_test.file(), Some("bar"));
    +        assert_eq!(record_test.metadata().target(), "myApp");
    +        assert_eq!(record_test.module_path(), Some("foo"));
    +        assert_eq!(record_test.file(), Some("bar"));
             assert_eq!(record_test.line(), Some(30));
         }
     
         #[test]
         fn test_record_convenience_builder() {
             use super::{Metadata, Record};
    -        let target = "myApp";
    +        let target = "myApp";
             let metadata = Metadata::builder().target(target).build();
    -        let fmt_args = format_args!("hello");
    +        let fmt_args = format_args!("hello");
             let record_test = Record::builder()
                 .args(fmt_args)
                 .metadata(metadata)
    -            .module_path(Some("foo"))
    -            .file(Some("bar"))
    +            .module_path(Some("foo"))
    +            .file(Some("bar"))
                 .line(Some(30))
                 .build();
    -        assert_eq!(record_test.target(), "myApp");
    -        assert_eq!(record_test.module_path(), Some("foo"));
    -        assert_eq!(record_test.file(), Some("bar"));
    +        assert_eq!(record_test.target(), "myApp");
    +        assert_eq!(record_test.module_path(), Some("foo"));
    +        assert_eq!(record_test.file(), Some("bar"));
             assert_eq!(record_test.line(), Some(30));
         }
     
         #[test]
         fn test_record_complete_builder() {
             use super::{Level, Record};
    -        let target = "myApp";
    +        let target = "myApp";
             let record_test = Record::builder()
    -            .module_path(Some("foo"))
    -            .file(Some("bar"))
    +            .module_path(Some("foo"))
    +            .file(Some("bar"))
                 .line(Some(30))
                 .target(target)
                 .level(Level::Error)
                 .build();
    -        assert_eq!(record_test.target(), "myApp");
    +        assert_eq!(record_test.target(), "myApp");
             assert_eq!(record_test.level(), Level::Error);
    -        assert_eq!(record_test.module_path(), Some("foo"));
    -        assert_eq!(record_test.file(), Some("bar"));
    +        assert_eq!(record_test.module_path(), Some("foo"));
    +        assert_eq!(record_test.file(), Some("bar"));
             assert_eq!(record_test.line(), Some(30));
         }
     
         #[test]
    -    #[cfg(feature = "kv_unstable")]
    +    #[cfg(feature = "kv")]
         fn test_record_key_values_builder() {
             use super::Record;
    -        use kv::{self, Visitor};
    +        use crate::kv::{self, VisitSource};
     
    -        struct TestVisitor {
    +        struct TestVisitSource {
                 seen_pairs: usize,
             }
     
    -        impl<'kvs> Visitor<'kvs> for TestVisitor {
    +        impl<'kvs> VisitSource<'kvs> for TestVisitSource {
                 fn visit_pair(
                     &mut self,
    -                _: kv::Key<'kvs>,
    -                _: kv::Value<'kvs>,
    +                _: kv::Key<'kvs>,
    +                _: kv::Value<'kvs>,
                 ) -> Result<(), kv::Error> {
                     self.seen_pairs += 1;
                     Ok(())
                 }
             }
     
    -        let kvs: &[(&str, i32)] = &[("a", 1), ("b", 2)];
    +        let kvs: &[(&str, i32)] = &[("a", 1), ("b", 2)];
             let record_test = Record::builder().key_values(&kvs).build();
     
    -        let mut visitor = TestVisitor { seen_pairs: 0 };
    +        let mut visitor = TestVisitSource { seen_pairs: 0 };
     
             record_test.key_values().visit(&mut visitor).unwrap();
     
    @@ -3603,21 +3705,21 @@
         }
     
         #[test]
    -    #[cfg(feature = "kv_unstable")]
    +    #[cfg(feature = "kv")]
         fn test_record_key_values_get_coerce() {
             use super::Record;
     
    -        let kvs: &[(&str, &str)] = &[("a", "1"), ("b", "2")];
    +        let kvs: &[(&str, &str)] = &[("a", "1"), ("b", "2")];
             let record = Record::builder().key_values(&kvs).build();
     
             assert_eq!(
    -            "2",
    +            "2",
                 record
                     .key_values()
    -                .get("b".into())
    -                .expect("missing key")
    +                .get("b".into())
    +                .expect("missing key")
                     .to_borrowed_str()
    -                .expect("invalid value")
    +                .expect("invalid value")
             );
         }
     
    @@ -3626,28 +3728,28 @@
         #[test]
         fn test_foreign_impl() {
             use super::Log;
    -        #[cfg(feature = "std")]
    +        #[cfg(feature = "std")]
             use std::sync::Arc;
     
             fn assert_is_log<T: Log + ?Sized>() {}
     
             assert_is_log::<&dyn Log>();
     
    -        #[cfg(feature = "std")]
    +        #[cfg(feature = "std")]
             assert_is_log::<Box<dyn Log>>();
     
    -        #[cfg(feature = "std")]
    +        #[cfg(feature = "std")]
             assert_is_log::<Arc<dyn Log>>();
     
             // Assert these statements for all T: Log + ?Sized
             #[allow(unused)]
             fn forall<T: Log + ?Sized>() {
    -            #[cfg(feature = "std")]
    +            #[cfg(feature = "std")]
                 assert_is_log::<Box<T>>();
     
                 assert_is_log::<&T>();
     
    -            #[cfg(feature = "std")]
    +            #[cfg(feature = "std")]
                 assert_is_log::<Arc<T>>();
             }
         }
    diff --git a/src/log/macros.rs.html b/src/log/macros.rs.html
    index b0181ca..1fc4712 100644
    --- a/src/log/macros.rs.html
    +++ b/src/log/macros.rs.html
    @@ -1,4 +1,5 @@
    -macros.rs - source
    1
    +macros.rs - source

    log/
    macros.rs

    +1
     2
     3
     4
    @@ -238,7 +239,133 @@
     238
     239
     240
    -
    // Copyright 2014-2015 The Rust Project Developers. See the COPYRIGHT
    +241
    +242
    +243
    +244
    +245
    +246
    +247
    +248
    +249
    +250
    +251
    +252
    +253
    +254
    +255
    +256
    +257
    +258
    +259
    +260
    +261
    +262
    +263
    +264
    +265
    +266
    +267
    +268
    +269
    +270
    +271
    +272
    +273
    +274
    +275
    +276
    +277
    +278
    +279
    +280
    +281
    +282
    +283
    +284
    +285
    +286
    +287
    +288
    +289
    +290
    +291
    +292
    +293
    +294
    +295
    +296
    +297
    +298
    +299
    +300
    +301
    +302
    +303
    +304
    +305
    +306
    +307
    +308
    +309
    +310
    +311
    +312
    +313
    +314
    +315
    +316
    +317
    +318
    +319
    +320
    +321
    +322
    +323
    +324
    +325
    +326
    +327
    +328
    +329
    +330
    +331
    +332
    +333
    +334
    +335
    +336
    +337
    +338
    +339
    +340
    +341
    +342
    +343
    +344
    +345
    +346
    +347
    +348
    +349
    +350
    +351
    +352
    +353
    +354
    +355
    +356
    +357
    +358
    +359
    +360
    +361
    +362
    +363
    +364
    +365
    +366
    +367
    // Copyright 2014-2015 The Rust Project Developers. See the COPYRIGHT
     // file at the top-level directory of this distribution and at
     // http://rust-lang.org/COPYRIGHT.
     //
    @@ -255,49 +382,47 @@
     ///
     /// # Examples
     ///
    -/// ```edition2018
    +/// ```
     /// use log::{log, Level};
     ///
     /// # fn main() {
    -/// let data = (42, "Forty-two");
    -/// let private_data = "private";
    +/// let data = (42, "Forty-two");
    +/// let private_data = "private";
     ///
    -/// log!(Level::Error, "Received errors: {}, {}", data.0, data.1);
    -/// log!(target: "app_events", Level::Warn, "App warning: {}, {}, {}",
    +/// log!(Level::Error, "Received errors: {}, {}", data.0, data.1);
    +/// log!(target: "app_events", Level::Warn, "App warning: {}, {}, {}",
     ///     data.0, data.1, private_data);
     /// # }
     /// ```
     #[macro_export]
    -macro_rules! log {
    -    // log!(target: "my_target", Level::Info, key1 = 42, key2 = true; "a {} event", "log");
    -    (target: $target:expr, $lvl:expr, $($key:tt = $value:expr),+; $($arg:tt)+) => ({
    +macro_rules! log {
    +    // log!(target: "my_target", Level::Info, key1:? = 42, key2 = true; "a {} event", "log");
    +    (target: $target:expr, $lvl:expr, $($key:tt $(:$capture:tt)? $(= $value:expr)?),+; $($arg:tt)+) => ({
             let lvl = $lvl;
             if lvl <= $crate::STATIC_MAX_LEVEL && lvl <= $crate::max_level() {
    -            $crate::__private_api::log(
    +            $crate::__private_api::log::<&_>(
                     $crate::__private_api::format_args!($($arg)+),
                     lvl,
    -                &($target, $crate::__private_api::module_path!(), $crate::__private_api::file!()),
    -                $crate::__private_api::line!(),
    -                $crate::__private_api::Option::Some(&[$(($crate::__log_key!($key), &$value)),+])
    +                &($target, $crate::__private_api::module_path!(), $crate::__private_api::loc()),
    +                &[$(($crate::__log_key!($key), $crate::__log_value!($key $(:$capture)* = $($value)*))),+]
                 );
             }
         });
     
    -    // log!(target: "my_target", Level::Info, "a {} event", "log");
    +    // log!(target: "my_target", Level::Info, "a {} event", "log");
         (target: $target:expr, $lvl:expr, $($arg:tt)+) => ({
             let lvl = $lvl;
             if lvl <= $crate::STATIC_MAX_LEVEL && lvl <= $crate::max_level() {
                 $crate::__private_api::log(
                     $crate::__private_api::format_args!($($arg)+),
                     lvl,
    -                &($target, $crate::__private_api::module_path!(), $crate::__private_api::file!()),
    -                $crate::__private_api::line!(),
    -                $crate::__private_api::Option::None,
    +                &($target, $crate::__private_api::module_path!(), $crate::__private_api::loc()),
    +                (),
                 );
             }
         });
     
    -    // log!(Level::Info, "a log event")
    +    // log!(Level::Info, "a log event")
         ($lvl:expr, $($arg:tt)+) => ($crate::log!(target: $crate::__private_api::module_path!(), $lvl, $($arg)+));
     }
     
    @@ -305,23 +430,23 @@
     ///
     /// # Examples
     ///
    -/// ```edition2018
    +/// ```
     /// use log::error;
     ///
     /// # fn main() {
    -/// let (err_info, port) = ("No connection", 22);
    +/// let (err_info, port) = ("No connection", 22);
     ///
    -/// error!("Error: {} on port {}", err_info, port);
    -/// error!(target: "app_events", "App Error: {}, Port: {}", err_info, 22);
    +/// error!("Error: {err_info} on port {port}");
    +/// error!(target: "app_events", "App Error: {err_info}, Port: {port}");
     /// # }
     /// ```
     #[macro_export]
    -macro_rules! error {
    -    // error!(target: "my_target", key1 = 42, key2 = true; "a {} event", "log")
    -    // error!(target: "my_target", "a {} event", "log")
    +macro_rules! error {
    +    // error!(target: "my_target", key1 = 42, key2 = true; "a {} event", "log")
    +    // error!(target: "my_target", "a {} event", "log")
         (target: $target:expr, $($arg:tt)+) => ($crate::log!(target: $target, $crate::Level::Error, $($arg)+));
     
    -    // error!("a {} event", "log")
    +    // error!("a {} event", "log")
         ($($arg:tt)+) => ($crate::log!($crate::Level::Error, $($arg)+))
     }
     
    @@ -329,23 +454,23 @@
     ///
     /// # Examples
     ///
    -/// ```edition2018
    +/// ```
     /// use log::warn;
     ///
     /// # fn main() {
    -/// let warn_description = "Invalid Input";
    +/// let warn_description = "Invalid Input";
     ///
    -/// warn!("Warning! {}!", warn_description);
    -/// warn!(target: "input_events", "App received warning: {}", warn_description);
    +/// warn!("Warning! {warn_description}!");
    +/// warn!(target: "input_events", "App received warning: {warn_description}");
     /// # }
     /// ```
     #[macro_export]
    -macro_rules! warn {
    -    // warn!(target: "my_target", key1 = 42, key2 = true; "a {} event", "log")
    -    // warn!(target: "my_target", "a {} event", "log")
    +macro_rules! warn {
    +    // warn!(target: "my_target", key1 = 42, key2 = true; "a {} event", "log")
    +    // warn!(target: "my_target", "a {} event", "log")
         (target: $target:expr, $($arg:tt)+) => ($crate::log!(target: $target, $crate::Level::Warn, $($arg)+));
     
    -    // warn!("a {} event", "log")
    +    // warn!("a {} event", "log")
         ($($arg:tt)+) => ($crate::log!($crate::Level::Warn, $($arg)+))
     }
     
    @@ -353,25 +478,25 @@
     ///
     /// # Examples
     ///
    -/// ```edition2018
    +/// ```
     /// use log::info;
     ///
     /// # fn main() {
     /// # struct Connection { port: u32, speed: f32 }
     /// let conn_info = Connection { port: 40, speed: 3.20 };
     ///
    -/// info!("Connected to port {} at {} Mb/s", conn_info.port, conn_info.speed);
    -/// info!(target: "connection_events", "Successful connection, port: {}, speed: {}",
    +/// info!("Connected to port {} at {} Mb/s", conn_info.port, conn_info.speed);
    +/// info!(target: "connection_events", "Successful connection, port: {}, speed: {}",
     ///       conn_info.port, conn_info.speed);
     /// # }
     /// ```
     #[macro_export]
    -macro_rules! info {
    -    // info!(target: "my_target", key1 = 42, key2 = true; "a {} event", "log")
    -    // info!(target: "my_target", "a {} event", "log")
    +macro_rules! info {
    +    // info!(target: "my_target", key1 = 42, key2 = true; "a {} event", "log")
    +    // info!(target: "my_target", "a {} event", "log")
         (target: $target:expr, $($arg:tt)+) => ($crate::log!(target: $target, $crate::Level::Info, $($arg)+));
     
    -    // info!("a {} event", "log")
    +    // info!("a {} event", "log")
         ($($arg:tt)+) => ($crate::log!($crate::Level::Info, $($arg)+))
     }
     
    @@ -379,24 +504,24 @@
     ///
     /// # Examples
     ///
    -/// ```edition2018
    +/// ```
     /// use log::debug;
     ///
     /// # fn main() {
     /// # struct Position { x: f32, y: f32 }
     /// let pos = Position { x: 3.234, y: -1.223 };
     ///
    -/// debug!("New position: x: {}, y: {}", pos.x, pos.y);
    -/// debug!(target: "app_events", "New position: x: {}, y: {}", pos.x, pos.y);
    +/// debug!("New position: x: {}, y: {}", pos.x, pos.y);
    +/// debug!(target: "app_events", "New position: x: {}, y: {}", pos.x, pos.y);
     /// # }
     /// ```
     #[macro_export]
    -macro_rules! debug {
    -    // debug!(target: "my_target", key1 = 42, key2 = true; "a {} event", "log")
    -    // debug!(target: "my_target", "a {} event", "log")
    +macro_rules! debug {
    +    // debug!(target: "my_target", key1 = 42, key2 = true; "a {} event", "log")
    +    // debug!(target: "my_target", "a {} event", "log")
         (target: $target:expr, $($arg:tt)+) => ($crate::log!(target: $target, $crate::Level::Debug, $($arg)+));
     
    -    // debug!("a {} event", "log")
    +    // debug!("a {} event", "log")
         ($($arg:tt)+) => ($crate::log!($crate::Level::Debug, $($arg)+))
     }
     
    @@ -404,26 +529,26 @@
     ///
     /// # Examples
     ///
    -/// ```edition2018
    +/// ```
     /// use log::trace;
     ///
     /// # fn main() {
     /// # struct Position { x: f32, y: f32 }
     /// let pos = Position { x: 3.234, y: -1.223 };
     ///
    -/// trace!("Position is: x: {}, y: {}", pos.x, pos.y);
    -/// trace!(target: "app_events", "x is {} and y is {}",
    -///        if pos.x >= 0.0 { "positive" } else { "negative" },
    -///        if pos.y >= 0.0 { "positive" } else { "negative" });
    +/// trace!("Position is: x: {}, y: {}", pos.x, pos.y);
    +/// trace!(target: "app_events", "x is {} and y is {}",
    +///        if pos.x >= 0.0 { "positive" } else { "negative" },
    +///        if pos.y >= 0.0 { "positive" } else { "negative" });
     /// # }
     /// ```
     #[macro_export]
    -macro_rules! trace {
    -    // trace!(target: "my_target", key1 = 42, key2 = true; "a {} event", "log")
    -    // trace!(target: "my_target", "a {} event", "log")
    +macro_rules! trace {
    +    // trace!(target: "my_target", key1 = 42, key2 = true; "a {} event", "log")
    +    // trace!(target: "my_target", "a {} event", "log")
         (target: $target:expr, $($arg:tt)+) => ($crate::log!(target: $target, $crate::Level::Trace, $($arg)+));
     
    -    // trace!("a {} event", "log")
    +    // trace!("a {} event", "log")
         ($($arg:tt)+) => ($crate::log!($crate::Level::Trace, $($arg)+))
     }
     
    @@ -435,18 +560,18 @@
     ///
     /// # Examples
     ///
    -/// ```edition2018
    +/// ```
     /// use log::Level::Debug;
     /// use log::{debug, log_enabled};
     ///
     /// # fn foo() {
     /// if log_enabled!(Debug) {
     ///     let data = expensive_call();
    -///     debug!("expensive debug data: {} {}", data.x, data.y);
    +///     debug!("expensive debug data: {} {}", data.x, data.y);
     /// }
    -/// if log_enabled!(target: "Global", Debug) {
    +/// if log_enabled!(target: "Global", Debug) {
     ///    let data = expensive_call();
    -///    debug!(target: "Global", "expensive debug data: {} {}", data.x, data.y);
    +///    debug!(target: "Global", "expensive debug data: {} {}", data.x, data.y);
     /// }
     /// # }
     /// # struct Data { x: u32, y: u32 }
    @@ -454,7 +579,7 @@
     /// # fn main() {}
     /// ```
     #[macro_export]
    -macro_rules! log_enabled {
    +macro_rules! log_enabled {
         (target: $target:expr, $lvl:expr) => {{
             let lvl = $lvl;
             lvl <= $crate::STATIC_MAX_LEVEL
    @@ -466,16 +591,145 @@
         };
     }
     
    -#[doc(hidden)]
    +// These macros use a pattern of #[cfg]s to produce nicer error
    +// messages when log features aren't available
    +
    +#[doc(hidden)]
     #[macro_export]
    -macro_rules! __log_key {
    +#[cfg(feature = "kv")]
    +macro_rules! __log_key {
         // key1 = 42
         ($($args:ident)*) => {
             $crate::__private_api::stringify!($($args)*)
         };
    -    // "key1" = 42
    +    // "key1" = 42
         ($($args:expr)*) => {
             $($args)*
         };
     }
    +
    +#[doc(hidden)]
    +#[macro_export]
    +#[cfg(not(feature = "kv"))]
    +macro_rules! __log_key {
    +    ($($args:tt)*) => {
    +        compile_error!("key value support requires the `kv` feature of `log`")
    +    };
    +}
    +
    +#[doc(hidden)]
    +#[macro_export]
    +#[cfg(feature = "kv")]
    +macro_rules! __log_value {
    +    // Entrypoint
    +    ($key:tt = $args:expr) => {
    +        $crate::__log_value!(($args):value)
    +    };
    +    ($key:tt :$capture:tt = $args:expr) => {
    +        $crate::__log_value!(($args):$capture)
    +    };
    +    ($key:ident =) => {
    +        $crate::__log_value!(($key):value)
    +    };
    +    ($key:ident :$capture:tt =) => {
    +        $crate::__log_value!(($key):$capture)
    +    };
    +    // ToValue
    +    (($args:expr):value) => {
    +        $crate::__private_api::capture_to_value(&&$args)
    +    };
    +    // Debug
    +    (($args:expr):?) => {
    +        $crate::__private_api::capture_debug(&&$args)
    +    };
    +    (($args:expr):debug) => {
    +        $crate::__private_api::capture_debug(&&$args)
    +    };
    +    // Display
    +    (($args:expr):%) => {
    +        $crate::__private_api::capture_display(&&$args)
    +    };
    +    (($args:expr):display) => {
    +        $crate::__private_api::capture_display(&&$args)
    +    };
    +    //Error
    +    (($args:expr):err) => {
    +        $crate::__log_value_error!($args)
    +    };
    +    // sval::Value
    +    (($args:expr):sval) => {
    +        $crate::__log_value_sval!($args)
    +    };
    +    // serde::Serialize
    +    (($args:expr):serde) => {
    +        $crate::__log_value_serde!($args)
    +    };
    +}
    +
    +#[doc(hidden)]
    +#[macro_export]
    +#[cfg(not(feature = "kv"))]
    +macro_rules! __log_value {
    +    ($($args:tt)*) => {
    +        compile_error!("key value support requires the `kv` feature of `log`")
    +    };
    +}
    +
    +#[doc(hidden)]
    +#[macro_export]
    +#[cfg(feature = "kv_sval")]
    +macro_rules! __log_value_sval {
    +    ($args:expr) => {
    +        $crate::__private_api::capture_sval(&&$args)
    +    };
    +}
    +
    +#[doc(hidden)]
    +#[macro_export]
    +#[cfg(not(feature = "kv_sval"))]
    +macro_rules! __log_value_sval {
    +    ($args:expr) => {
    +        compile_error!("capturing values as `sval::Value` requites the `kv_sval` feature of `log`")
    +    };
    +}
    +
    +#[doc(hidden)]
    +#[macro_export]
    +#[cfg(feature = "kv_serde")]
    +macro_rules! __log_value_serde {
    +    ($args:expr) => {
    +        $crate::__private_api::capture_serde(&&$args)
    +    };
    +}
    +
    +#[doc(hidden)]
    +#[macro_export]
    +#[cfg(not(feature = "kv_serde"))]
    +macro_rules! __log_value_serde {
    +    ($args:expr) => {
    +        compile_error!(
    +            "capturing values as `serde::Serialize` requites the `kv_serde` feature of `log`"
    +        )
    +    };
    +}
    +
    +#[doc(hidden)]
    +#[macro_export]
    +#[cfg(feature = "kv_std")]
    +macro_rules! __log_value_error {
    +    ($args:expr) => {
    +        $crate::__private_api::capture_error(&$args)
    +    };
    +}
    +
    +#[doc(hidden)]
    +#[macro_export]
    +#[cfg(not(feature = "kv_std"))]
    +macro_rules! __log_value_error {
    +    ($args:expr) => {
    +        compile_error!(
    +            "capturing values as `std::error::Error` requites the `kv_std` feature of `log`"
    +        )
    +    };
    +}
     
    \ No newline at end of file diff --git a/src/proc_macro2/detection.rs.html b/src/proc_macro2/detection.rs.html index ffe0ed4..bf58aee 100644 --- a/src/proc_macro2/detection.rs.html +++ b/src/proc_macro2/detection.rs.html @@ -1,4 +1,5 @@ -detection.rs - source
    1
    +detection.rs - source

    proc_macro2/
    detection.rs

    +1
     2
     3
     4
    @@ -72,8 +73,7 @@
     72
     73
     74
    -75
    -
    use core::sync::atomic::{AtomicUsize, Ordering};
    +75
    use core::sync::atomic::{AtomicUsize, Ordering};
     use std::sync::Once;
     
     static WORKS: AtomicUsize = AtomicUsize::new(0);
    @@ -104,24 +104,24 @@
         WORKS.store(available as usize + 1, Ordering::Relaxed);
     }
     
    -// Swap in a null panic hook to avoid printing "thread panicked" to stderr,
    -// then use catch_unwind to determine whether the compiler's proc_macro is
    +// Swap in a null panic hook to avoid printing "thread panicked" to stderr,
    +// then use catch_unwind to determine whether the compiler's proc_macro is
     // working. When proc-macro2 is used from outside of a procedural macro all
    -// of the proc_macro crate's APIs currently panic.
    +// of the proc_macro crate's APIs currently panic.
     //
     // The Once is to prevent the possibility of this ordering:
     //
    -//     thread 1 calls take_hook, gets the user's original hook
    +//     thread 1 calls take_hook, gets the user's original hook
     //     thread 1 calls set_hook with the null hook
     //     thread 2 calls take_hook, thinks null hook is the original hook
     //     thread 2 calls set_hook with the null hook
     //     thread 1 calls set_hook with the actual original hook
     //     thread 2 calls set_hook with what it thinks is the original hook
     //
    -// in which the user's hook has been lost.
    +// in which the user's hook has been lost.
     //
     // There is still a race condition where a panic in a different thread can
    -// happen during the interval that the user's original panic hook is
    +// happen during the interval that the user's original panic hook is
     // unregistered such that their hook is incorrectly not called. This is
     // sufficiently unlikely and less bad than printing panic messages to stderr
     // on correct use of this crate. Maybe there is a libstd feature request
    @@ -132,7 +132,7 @@
     fn initialize() {
         use std::panic::{self, PanicInfo};
     
    -    type PanicHook = dyn Fn(&PanicInfo) + Sync + Send + 'static;
    +    type PanicHook = dyn Fn(&PanicInfo) + Sync + Send + 'static;
     
         let null_hook: Box<PanicHook> = Box::new(|_panic_info| { /* ignore */ });
         let sanity_check = &*null_hook as *const PanicHook;
    @@ -145,7 +145,7 @@
         let hopefully_null_hook = panic::take_hook();
         panic::set_hook(original_hook);
         if sanity_check != &*hopefully_null_hook {
    -        panic!("observed race condition in proc_macro2::inside_proc_macro");
    +        panic!("observed race condition in proc_macro2::inside_proc_macro");
         }
     }
     
    \ No newline at end of file diff --git a/src/proc_macro2/extra.rs.html b/src/proc_macro2/extra.rs.html index e01064a..18ff740 100644 --- a/src/proc_macro2/extra.rs.html +++ b/src/proc_macro2/extra.rs.html @@ -1,4 +1,5 @@ -extra.rs - source
    1
    +extra.rs - source

    proc_macro2/
    extra.rs

    +1
     2
     3
     4
    @@ -82,23 +83,156 @@
     82
     83
     84
    -
    //! Items which do not have a correspondence to any API in the proc_macro crate,
    +85
    +86
    +87
    +88
    +89
    +90
    +91
    +92
    +93
    +94
    +95
    +96
    +97
    +98
    +99
    +100
    +101
    +102
    +103
    +104
    +105
    +106
    +107
    +108
    +109
    +110
    +111
    +112
    +113
    +114
    +115
    +116
    +117
    +118
    +119
    +120
    +121
    +122
    +123
    +124
    +125
    +126
    +127
    +128
    +129
    +130
    +131
    +132
    +133
    +134
    +135
    +136
    +137
    +138
    +139
    +140
    +141
    +142
    +143
    +144
    +145
    +146
    +147
    +148
    +149
    +150
    +151
    //! Items which do not have a correspondence to any API in the proc_macro crate,
     //! but are necessary to include in proc-macro2.
     
     use crate::fallback;
     use crate::imp;
    -use crate::marker::Marker;
    +use crate::marker::{ProcMacroAutoTraits, MARKER};
     use crate::Span;
     use core::fmt::{self, Debug};
     
    -/// An object that holds a [`Group`]'s `span_open()` and `span_close()` together
    -/// (in a more compact representation than holding those 2 spans individually.
    +/// Invalidate any `proc_macro2::Span` that exist on the current thread.
    +///
    +/// The implementation of `Span` uses thread-local data structures and this
    +/// function clears them. Calling any method on a `Span` on the current thread
    +/// created prior to the invalidation will return incorrect values or crash.
    +///
    +/// This function is useful for programs that process more than 2<sup>32</sup>
    +/// bytes of Rust source code on the same thread. Just like rustc, proc-macro2
    +/// uses 32-bit source locations, and these wrap around when the total source
    +/// code processed by the same thread exceeds 2<sup>32</sup> bytes (4
    +/// gigabytes). After a wraparound, `Span` methods such as `source_text()` can
    +/// return wrong data.
    +///
    +/// # Example
    +///
    +/// As of late 2023, there is 200 GB of Rust code published on crates.io.
    +/// Looking at just the newest version of every crate, it is 16 GB of code. So a
    +/// workload that involves parsing it all would overflow a 32-bit source
    +/// location unless spans are being invalidated.
    +///
    +/// ```
    +/// use flate2::read::GzDecoder;
    +/// use std::ffi::OsStr;
    +/// use std::io::{BufReader, Read};
    +/// use std::str::FromStr;
    +/// use tar::Archive;
    +///
    +/// rayon::scope(|s| {
    +///     for krate in every_version_of_every_crate() {
    +///         s.spawn(move |_| {
    +///             proc_macro2::extra::invalidate_current_thread_spans();
    +///
    +///             let reader = BufReader::new(krate);
    +///             let tar = GzDecoder::new(reader);
    +///             let mut archive = Archive::new(tar);
    +///             for entry in archive.entries().unwrap() {
    +///                 let mut entry = entry.unwrap();
    +///                 let path = entry.path().unwrap();
    +///                 if path.extension() != Some(OsStr::new("rs")) {
    +///                     continue;
    +///                 }
    +///                 let mut content = String::new();
    +///                 entry.read_to_string(&mut content).unwrap();
    +///                 match proc_macro2::TokenStream::from_str(&content) {
    +///                     Ok(tokens) => {/* ... */},
    +///                     Err(_) => continue,
    +///                 }
    +///             }
    +///         });
    +///     }
    +/// });
    +/// #
    +/// # fn every_version_of_every_crate() -> Vec<std::fs::File> {
    +/// #     Vec::new()
    +/// # }
    +/// ```
    +///
    +/// # Panics
    +///
    +/// This function is not applicable to and will panic if called from a
    +/// procedural macro.
    +#[cfg(span_locations)]
    +#[cfg_attr(docsrs, doc(cfg(feature = "span-locations")))]
    +pub fn invalidate_current_thread_spans() {
    +    crate::imp::invalidate_current_thread_spans();
    +}
    +
    +/// An object that holds a [`Group`]'s `span_open()` and `span_close()` together
    +/// in a more compact representation than holding those 2 spans individually.
     ///
     /// [`Group`]: crate::Group
     #[derive(Copy, Clone)]
     pub struct DelimSpan {
         inner: DelimSpanEnum,
    -    _marker: Marker,
    +    _marker: ProcMacroAutoTraits,
     }
     
     #[derive(Copy, Clone)]
    @@ -129,7 +263,7 @@
     
             DelimSpan {
                 inner,
    -            _marker: Marker,
    +            _marker: MARKER,
             }
         }
     
    diff --git a/src/proc_macro2/fallback.rs.html b/src/proc_macro2/fallback.rs.html
    index a475939..5df7bd0 100644
    --- a/src/proc_macro2/fallback.rs.html
    +++ b/src/proc_macro2/fallback.rs.html
    @@ -1,4 +1,5 @@
    -fallback.rs - source
    1
    +fallback.rs - source

    proc_macro2/
    fallback.rs

    #[cfg(wrap_proc_macro)]
    +use crate::imp;
    +#[cfg(span_locations)]
     use crate::location::LineColumn;
     use crate::parse::{self, Cursor};
     use crate::rcvec::{RcVec, RcVecBuilder, RcVecIntoIter, RcVecMut};
    @@ -1140,19 +1279,27 @@
     use core::cmp;
     use core::fmt::{self, Debug, Display, Write};
     use core::mem::ManuallyDrop;
    +#[cfg(span_locations)]
    +use core::ops::Range;
     use core::ops::RangeBounds;
     use core::ptr;
    -use core::str::FromStr;
    -use std::path::PathBuf;
    +use core::str;
    +#[cfg(feature = "proc-macro")]
    +use core::str::FromStr;
    +use std::ffi::CStr;
    +#[cfg(wrap_proc_macro)]
    +use std::panic;
    +#[cfg(procmacro2_semver_exempt)]
    +use std::path::PathBuf;
     
    -/// Force use of proc-macro2's fallback implementation of the API for now, even
    -/// if the compiler's implementation is available.
    +/// Force use of proc-macro2's fallback implementation of the API for now, even
    +/// if the compiler's implementation is available.
     pub fn force() {
         #[cfg(wrap_proc_macro)]
         crate::detection::force_fallback();
     }
     
    -/// Resume using the compiler's implementation of the proc macro API if it is
    +/// Resume using the compiler's implementation of the proc macro API if it is
     /// available.
     pub fn unforce() {
         #[cfg(wrap_proc_macro)]
    @@ -1174,7 +1321,7 @@
             self.span
         }
     
    -    fn call_site() -> Self {
    +    pub(crate) fn call_site() -> Self {
             LexError {
                 span: Span::call_site(),
             }
    @@ -1182,13 +1329,31 @@
     }
     
     impl TokenStream {
    -    pub fn new() -> Self {
    +    pub(crate) fn new() -> Self {
             TokenStream {
                 inner: RcVecBuilder::new().build(),
             }
         }
     
    -    pub fn is_empty(&self) -> bool {
    +    pub(crate) fn from_str_checked(src: &str) -> Result<Self, LexError> {
    +        // Create a dummy file & add it to the source map
    +        let mut cursor = get_cursor(src);
    +
    +        // Strip a byte order mark if present
    +        const BYTE_ORDER_MARK: &str = "\u{feff}";
    +        if cursor.starts_with(BYTE_ORDER_MARK) {
    +            cursor = cursor.advance(BYTE_ORDER_MARK.len());
    +        }
    +
    +        parse::token_stream(cursor)
    +    }
    +
    +    #[cfg(feature = "proc-macro")]
    +    pub(crate) fn from_str_unchecked(src: &str) -> Self {
    +        Self::from_str_checked(src).unwrap()
    +    }
    +
    +    pub(crate) fn is_empty(&self) -> bool {
             self.inner.len() == 0
         }
     
    @@ -1207,7 +1372,7 @@
                 #[cfg(not(wrap_proc_macro))]
                     inner: literal,
                 ..
    -        }) if literal.repr.starts_with('-') => {
    +        }) if literal.repr.starts_with('-') => {
                 push_negative_literal(vec, literal);
             }
             _ => vec.push(token),
    @@ -1216,7 +1381,7 @@
         #[cold]
         fn push_negative_literal(mut vec: RcVecMut<TokenTree>, mut literal: Literal) {
             literal.repr.remove(0);
    -        let mut punct = crate::Punct::new('-', Spacing::Alone);
    +        let mut punct = crate::Punct::new('-', Spacing::Alone);
             punct.set_span(crate::Span::_new_fallback(literal.span));
             vec.push(TokenTree::Punct(punct));
             vec.push(TokenTree::Literal(crate::Literal::_new_fallback(literal)));
    @@ -1250,23 +1415,23 @@
     }
     
     impl TokenStreamBuilder {
    -    pub fn new() -> Self {
    +    pub(crate) fn new() -> Self {
             TokenStreamBuilder {
                 inner: RcVecBuilder::new(),
             }
         }
     
    -    pub fn with_capacity(cap: usize) -> Self {
    +    pub(crate) fn with_capacity(cap: usize) -> Self {
             TokenStreamBuilder {
                 inner: RcVecBuilder::with_capacity(cap),
             }
         }
     
    -    pub fn push_token_from_parser(&mut self, tt: TokenTree) {
    +    pub(crate) fn push_token_from_parser(&mut self, tt: TokenTree) {
             self.inner.push(tt);
         }
     
    -    pub fn build(self) -> TokenStream {
    +    pub(crate) fn build(self) -> TokenStream {
             TokenStream {
                 inner: self.inner.build(),
             }
    @@ -1280,9 +1445,9 @@
     
         // Create a dummy file & add it to the source map
         #[cfg(not(fuzzing))]
    -    SOURCE_MAP.with(|cm| {
    -        let mut cm = cm.borrow_mut();
    -        let span = cm.add_file(src);
    +    SOURCE_MAP.with(|sm| {
    +        let mut sm = sm.borrow_mut();
    +        let span = sm.add_file(src);
             Cursor {
                 rest: src,
                 off: span.lo,
    @@ -1295,26 +1460,9 @@
         Cursor { rest: src }
     }
     
    -impl FromStr for TokenStream {
    -    type Err = LexError;
    -
    -    fn from_str(src: &str) -> Result<TokenStream, LexError> {
    -        // Create a dummy file & add it to the source map
    -        let mut cursor = get_cursor(src);
    -
    -        // Strip a byte order mark if present
    -        const BYTE_ORDER_MARK: &str = "\u{feff}";
    -        if cursor.starts_with(BYTE_ORDER_MARK) {
    -            cursor = cursor.advance(BYTE_ORDER_MARK.len());
    -        }
    -
    -        parse::token_stream(cursor)
    -    }
    -}
    -
     impl Display for LexError {
         fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
    -        f.write_str("cannot parse string into token stream")
    +        f.write_str("cannot parse string into token stream")
         }
     }
     
    @@ -1323,7 +1471,7 @@
             let mut joint = false;
             for (i, tt) in self.inner.iter().enumerate() {
                 if i != 0 && !joint {
    -                write!(f, " ")?;
    +                write!(f, " ")?;
                 }
                 joint = false;
                 match tt {
    @@ -1343,28 +1491,22 @@
     
     impl Debug for TokenStream {
         fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
    -        f.write_str("TokenStream ")?;
    +        f.write_str("TokenStream ")?;
             f.debug_list().entries(self.clone()).finish()
         }
     }
     
    -#[cfg(feature = "proc-macro")]
    +#[cfg(feature = "proc-macro")]
     impl From<proc_macro::TokenStream> for TokenStream {
         fn from(inner: proc_macro::TokenStream) -> Self {
    -        inner
    -            .to_string()
    -            .parse()
    -            .expect("compiler token stream parse failed")
    +        TokenStream::from_str_unchecked(&inner.to_string())
         }
     }
     
    -#[cfg(feature = "proc-macro")]
    +#[cfg(feature = "proc-macro")]
     impl From<TokenStream> for proc_macro::TokenStream {
         fn from(inner: TokenStream) -> Self {
    -        inner
    -            .to_string()
    -            .parse()
    -            .expect("failed to parse to compiler tokens")
    +        proc_macro::TokenStream::from_str_unchecked(&inner.to_string())
         }
     }
     
    @@ -1424,33 +1566,36 @@
         }
     }
     
    -#[derive(Clone, PartialEq, Eq)]
    +#[cfg(procmacro2_semver_exempt)]
    +#[derive(Clone, PartialEq, Eq)]
     pub(crate) struct SourceFile {
         path: PathBuf,
     }
     
    -impl SourceFile {
    +#[cfg(procmacro2_semver_exempt)]
    +impl SourceFile {
         /// Get the path to this source file as a string.
    -    pub fn path(&self) -> PathBuf {
    +    pub(crate) fn path(&self) -> PathBuf {
             self.path.clone()
         }
     
    -    pub fn is_real(&self) -> bool {
    +    pub(crate) fn is_real(&self) -> bool {
             false
         }
     }
     
    -impl Debug for SourceFile {
    +#[cfg(procmacro2_semver_exempt)]
    +impl Debug for SourceFile {
         fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
    -        f.debug_struct("SourceFile")
    -            .field("path", &self.path())
    -            .field("is_real", &self.is_real())
    +        f.debug_struct("SourceFile")
    +            .field("path", &self.path())
    +            .field("is_real", &self.is_real())
                 .finish()
         }
     }
     
     #[cfg(all(span_locations, not(fuzzing)))]
    -thread_local! {
    +thread_local! {
         static SOURCE_MAP: RefCell<SourceMap> = RefCell::new(SourceMap {
             // Start with a single dummy file which all call_site() and def_site()
             // spans reference.
    @@ -1463,6 +1608,12 @@
         });
     }
     
    +#[cfg(span_locations)]
    +pub(crate) fn invalidate_current_thread_spans() {
    +    #[cfg(not(fuzzing))]
    +    SOURCE_MAP.with(|sm| sm.borrow_mut().files.truncate(1));
    +}
    +
     #[cfg(all(span_locations, not(fuzzing)))]
     struct FileInfo {
         source_text: String,
    @@ -1476,7 +1627,7 @@
         fn offset_line_column(&self, offset: usize) -> LineColumn {
             assert!(self.span_within(Span {
                 lo: offset as u32,
    -            hi: offset as u32
    +            hi: offset as u32,
             }));
             let offset = offset - self.span.lo as usize;
             match self.lines.binary_search(&offset) {
    @@ -1495,7 +1646,7 @@
             span.lo >= self.span.lo && span.hi <= self.span.hi
         }
     
    -    fn source_text(&mut self, span: Span) -> String {
    +    fn byte_range(&mut self, span: Span) -> Range<usize> {
             let lo_char = (span.lo - self.span.lo) as usize;
     
             // Look up offset of the largest already-computed char index that is
    @@ -1524,11 +1675,15 @@
     
             let trunc_lo = &self.source_text[lo_byte..];
             let char_len = (span.hi - span.lo) as usize;
    -        let source_text = match trunc_lo.char_indices().nth(char_len) {
    -            Some((offset, _ch)) => &trunc_lo[..offset],
    -            None => trunc_lo,
    -        };
    -        source_text.to_owned()
    +        lo_byte..match trunc_lo.char_indices().nth(char_len) {
    +            Some((offset, _ch)) => lo_byte + offset,
    +            None => self.source_text.len(),
    +        }
    +    }
    +
    +    fn source_text(&mut self, span: Span) -> String {
    +        let byte_range = self.byte_range(span);
    +        self.source_text[byte_range].to_owned()
         }
     }
     
    @@ -1541,7 +1696,7 @@
     
         for ch in s.chars() {
             total += 1;
    -        if ch == '\n' {
    +        if ch == '\n' {
                 lines.push(total);
             }
         }
    @@ -1557,9 +1712,9 @@
     #[cfg(all(span_locations, not(fuzzing)))]
     impl SourceMap {
         fn next_start_pos(&self) -> u32 {
    -        // Add 1 so there's always space between files.
    +        // Add 1 so there's always space between files.
             //
    -        // We'll always have at least 1 file, as we initialize our files list
    +        // We'll always have at least 1 file, as we initialize our files list
             // with a dummy file.
             self.files.last().unwrap().span.hi + 1
         }
    @@ -1588,13 +1743,13 @@
             for (i, file) in self.files.iter().enumerate() {
                 if file.span_within(span) {
                     return PathBuf::from(if i == 0 {
    -                    "<unspecified>".to_owned()
    +                    "<unspecified>".to_owned()
                     } else {
    -                    format!("<parsed string {}>", i)
    +                    format!("<parsed string {}>", i)
                     });
                 }
             }
    -        unreachable!("Invalid span with no related FileInfo!");
    +        unreachable!("Invalid span with no related FileInfo!");
         }
     
         fn fileinfo(&self, span: Span) -> &FileInfo {
    @@ -1603,7 +1758,7 @@
                     return file;
                 }
             }
    -        unreachable!("Invalid span with no related FileInfo!");
    +        unreachable!("Invalid span with no related FileInfo!");
         }
     
         fn fileinfo_mut(&mut self, span: Span) -> &mut FileInfo {
    @@ -1612,7 +1767,7 @@
                     return file;
                 }
             }
    -        unreachable!("Invalid span with no related FileInfo!");
    +        unreachable!("Invalid span with no related FileInfo!");
         }
     }
     
    @@ -1626,83 +1781,98 @@
     
     impl Span {
         #[cfg(not(span_locations))]
    -    pub fn call_site() -> Self {
    +    pub(crate) fn call_site() -> Self {
             Span {}
         }
     
         #[cfg(span_locations)]
    -    pub fn call_site() -> Self {
    +    pub(crate) fn call_site() -> Self {
             Span { lo: 0, hi: 0 }
         }
     
    -    pub fn mixed_site() -> Self {
    +    pub(crate) fn mixed_site() -> Self {
             Span::call_site()
         }
     
         #[cfg(procmacro2_semver_exempt)]
    -    pub fn def_site() -> Self {
    +    pub(crate) fn def_site() -> Self {
             Span::call_site()
         }
     
    -    pub fn resolved_at(&self, _other: Span) -> Span {
    +    pub(crate) fn resolved_at(&self, _other: Span) -> Span {
             // Stable spans consist only of line/column information, so
             // `resolved_at` and `located_at` only select which span the
             // caller wants line/column information from.
             *self
         }
     
    -    pub fn located_at(&self, other: Span) -> Span {
    +    pub(crate) fn located_at(&self, other: Span) -> Span {
             other
         }
     
         #[cfg(procmacro2_semver_exempt)]
    -    pub fn source_file(&self) -> SourceFile {
    +    pub(crate) fn source_file(&self) -> SourceFile {
             #[cfg(fuzzing)]
             return SourceFile {
    -            path: PathBuf::from("<unspecified>"),
    +            path: PathBuf::from("<unspecified>"),
             };
     
             #[cfg(not(fuzzing))]
    -        SOURCE_MAP.with(|cm| {
    -            let cm = cm.borrow();
    -            let path = cm.filepath(*self);
    +        SOURCE_MAP.with(|sm| {
    +            let sm = sm.borrow();
    +            let path = sm.filepath(*self);
                 SourceFile { path }
             })
         }
     
         #[cfg(span_locations)]
    -    pub fn start(&self) -> LineColumn {
    +    pub(crate) fn byte_range(&self) -> Range<usize> {
    +        #[cfg(fuzzing)]
    +        return 0..0;
    +
    +        #[cfg(not(fuzzing))]
    +        {
    +            if self.is_call_site() {
    +                0..0
    +            } else {
    +                SOURCE_MAP.with(|sm| sm.borrow_mut().fileinfo_mut(*self).byte_range(*self))
    +            }
    +        }
    +    }
    +
    +    #[cfg(span_locations)]
    +    pub(crate) fn start(&self) -> LineColumn {
             #[cfg(fuzzing)]
             return LineColumn { line: 0, column: 0 };
     
             #[cfg(not(fuzzing))]
    -        SOURCE_MAP.with(|cm| {
    -            let cm = cm.borrow();
    -            let fi = cm.fileinfo(*self);
    +        SOURCE_MAP.with(|sm| {
    +            let sm = sm.borrow();
    +            let fi = sm.fileinfo(*self);
                 fi.offset_line_column(self.lo as usize)
             })
         }
     
         #[cfg(span_locations)]
    -    pub fn end(&self) -> LineColumn {
    +    pub(crate) fn end(&self) -> LineColumn {
             #[cfg(fuzzing)]
             return LineColumn { line: 0, column: 0 };
     
             #[cfg(not(fuzzing))]
    -        SOURCE_MAP.with(|cm| {
    -            let cm = cm.borrow();
    -            let fi = cm.fileinfo(*self);
    +        SOURCE_MAP.with(|sm| {
    +            let sm = sm.borrow();
    +            let fi = sm.fileinfo(*self);
                 fi.offset_line_column(self.hi as usize)
             })
         }
     
         #[cfg(not(span_locations))]
    -    pub fn join(&self, _other: Span) -> Option<Span> {
    +    pub(crate) fn join(&self, _other: Span) -> Option<Span> {
             Some(Span {})
         }
     
         #[cfg(span_locations)]
    -    pub fn join(&self, other: Span) -> Option<Span> {
    +    pub(crate) fn join(&self, other: Span) -> Option<Span> {
             #[cfg(fuzzing)]
             return {
                 let _ = other;
    @@ -1710,10 +1880,10 @@
             };
     
             #[cfg(not(fuzzing))]
    -        SOURCE_MAP.with(|cm| {
    -            let cm = cm.borrow();
    +        SOURCE_MAP.with(|sm| {
    +            let sm = sm.borrow();
                 // If `other` is not within the same FileInfo as us, return None.
    -            if !cm.fileinfo(*self).span_within(other) {
    +            if !sm.fileinfo(*self).span_within(other) {
                     return None;
                 }
                 Some(Span {
    @@ -1724,12 +1894,12 @@
         }
     
         #[cfg(not(span_locations))]
    -    pub fn source_text(&self) -> Option<String> {
    +    pub(crate) fn source_text(&self) -> Option<String> {
             None
         }
     
         #[cfg(span_locations)]
    -    pub fn source_text(&self) -> Option<String> {
    +    pub(crate) fn source_text(&self) -> Option<String> {
             #[cfg(fuzzing)]
             return None;
     
    @@ -1738,7 +1908,7 @@
                 if self.is_call_site() {
                     None
                 } else {
    -                Some(SOURCE_MAP.with(|cm| cm.borrow_mut().fileinfo_mut(*self).source_text(*self)))
    +                Some(SOURCE_MAP.with(|sm| sm.borrow_mut().fileinfo_mut(*self).source_text(*self)))
                 }
             }
         }
    @@ -1778,10 +1948,10 @@
     impl Debug for Span {
         fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
             #[cfg(span_locations)]
    -        return write!(f, "bytes({}..{})", self.lo, self.hi);
    +        return write!(f, "bytes({}..{})", self.lo, self.hi);
     
             #[cfg(not(span_locations))]
    -        write!(f, "Span")
    +        write!(f, "Span")
         }
     }
     
    @@ -1794,7 +1964,7 @@
         }
     
         if cfg!(span_locations) {
    -        debug.field("span", &span);
    +        debug.field("span", &span);
         }
     }
     
    @@ -1806,7 +1976,7 @@
     }
     
     impl Group {
    -    pub fn new(delimiter: Delimiter, stream: TokenStream) -> Self {
    +    pub(crate) fn new(delimiter: Delimiter, stream: TokenStream) -> Self {
             Group {
                 delimiter,
                 stream,
    @@ -1814,33 +1984,33 @@
             }
         }
     
    -    pub fn delimiter(&self) -> Delimiter {
    +    pub(crate) fn delimiter(&self) -> Delimiter {
             self.delimiter
         }
     
    -    pub fn stream(&self) -> TokenStream {
    +    pub(crate) fn stream(&self) -> TokenStream {
             self.stream.clone()
         }
     
    -    pub fn span(&self) -> Span {
    +    pub(crate) fn span(&self) -> Span {
             self.span
         }
     
    -    pub fn span_open(&self) -> Span {
    +    pub(crate) fn span_open(&self) -> Span {
             self.span.first_byte()
         }
     
    -    pub fn span_close(&self) -> Span {
    +    pub(crate) fn span_close(&self) -> Span {
             self.span.last_byte()
         }
     
    -    pub fn set_span(&mut self, span: Span) {
    +    pub(crate) fn set_span(&mut self, span: Span) {
             self.span = span;
         }
     }
     
     impl Display for Group {
    -    // We attempt to match libproc_macro's formatting.
    +    // We attempt to match libproc_macro's formatting.
         // Empty parens: ()
         // Nonempty parens: (...)
         // Empty brackets: []
    @@ -1849,16 +2019,16 @@
         // Nonempty braces: { ... }
         fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
             let (open, close) = match self.delimiter {
    -            Delimiter::Parenthesis => ("(", ")"),
    -            Delimiter::Brace => ("{ ", "}"),
    -            Delimiter::Bracket => ("[", "]"),
    -            Delimiter::None => ("", ""),
    +            Delimiter::Parenthesis => ("(", ")"),
    +            Delimiter::Brace => ("{ ", "}"),
    +            Delimiter::Bracket => ("[", "]"),
    +            Delimiter::None => ("", ""),
             };
     
             f.write_str(open)?;
             Display::fmt(&self.stream, f)?;
             if self.delimiter == Delimiter::Brace && !self.stream.inner.is_empty() {
    -            f.write_str(" ")?;
    +            f.write_str(" ")?;
             }
             f.write_str(close)?;
     
    @@ -1868,9 +2038,9 @@
     
     impl Debug for Group {
         fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
    -        let mut debug = fmt.debug_struct("Group");
    -        debug.field("delimiter", &self.delimiter);
    -        debug.field("stream", &self.stream);
    +        let mut debug = fmt.debug_struct("Group");
    +        debug.field("delimiter", &self.delimiter);
    +        debug.field("stream", &self.stream);
             debug_span_field_if_nontrivial(&mut debug, self.span);
             debug.finish()
         }
    @@ -1878,54 +2048,65 @@
     
     #[derive(Clone)]
     pub(crate) struct Ident {
    -    sym: String,
    +    sym: Box<str>,
         span: Span,
         raw: bool,
     }
     
     impl Ident {
    -    fn _new(string: &str, raw: bool, span: Span) -> Self {
    -        validate_ident(string, raw);
    +    #[track_caller]
    +    pub(crate) fn new_checked(string: &str, span: Span) -> Self {
    +        validate_ident(string);
    +        Ident::new_unchecked(string, span)
    +    }
     
    +    pub(crate) fn new_unchecked(string: &str, span: Span) -> Self {
             Ident {
    -            sym: string.to_owned(),
    +            sym: Box::from(string),
                 span,
    -            raw,
    +            raw: false,
             }
         }
     
    -    pub fn new(string: &str, span: Span) -> Self {
    -        Ident::_new(string, false, span)
    +    #[track_caller]
    +    pub(crate) fn new_raw_checked(string: &str, span: Span) -> Self {
    +        validate_ident_raw(string);
    +        Ident::new_raw_unchecked(string, span)
         }
     
    -    pub fn new_raw(string: &str, span: Span) -> Self {
    -        Ident::_new(string, true, span)
    +    pub(crate) fn new_raw_unchecked(string: &str, span: Span) -> Self {
    +        Ident {
    +            sym: Box::from(string),
    +            span,
    +            raw: true,
    +        }
         }
     
    -    pub fn span(&self) -> Span {
    +    pub(crate) fn span(&self) -> Span {
             self.span
         }
     
    -    pub fn set_span(&mut self, span: Span) {
    +    pub(crate) fn set_span(&mut self, span: Span) {
             self.span = span;
         }
     }
     
     pub(crate) fn is_ident_start(c: char) -> bool {
    -    c == '_' || unicode_ident::is_xid_start(c)
    +    c == '_' || unicode_ident::is_xid_start(c)
     }
     
     pub(crate) fn is_ident_continue(c: char) -> bool {
         unicode_ident::is_xid_continue(c)
     }
     
    -fn validate_ident(string: &str, raw: bool) {
    +#[track_caller]
    +fn validate_ident(string: &str) {
         if string.is_empty() {
    -        panic!("Ident is not allowed to be empty; use Option<Ident>");
    +        panic!("Ident is not allowed to be empty; use Option<Ident>");
         }
     
    -    if string.bytes().all(|digit| b'0' <= digit && digit <= b'9') {
    -        panic!("Ident cannot be a number; use Literal instead");
    +    if string.bytes().all(|digit| b'0' <= digit && digit <= b'9') {
    +        panic!("Ident cannot be a number; use Literal instead");
         }
     
         fn ident_ok(string: &str) -> bool {
    @@ -1943,16 +2124,19 @@
         }
     
         if !ident_ok(string) {
    -        panic!("{:?} is not a valid Ident", string);
    +        panic!("{:?} is not a valid Ident", string);
         }
    +}
     
    -    if raw {
    -        match string {
    -            "_" | "super" | "self" | "Self" | "crate" => {
    -                panic!("`r#{}` cannot be a raw identifier", string);
    -            }
    -            _ => {}
    +#[track_caller]
    +fn validate_ident_raw(string: &str) {
    +    validate_ident(string);
    +
    +    match string {
    +        "_" | "super" | "self" | "Self" | "crate" => {
    +            panic!("`r#{}` cannot be a raw identifier", string);
             }
    +        _ => {}
         }
     }
     
    @@ -1969,9 +2153,9 @@
         fn eq(&self, other: &T) -> bool {
             let other = other.as_ref();
             if self.raw {
    -            other.starts_with("r#") && self.sym == other[2..]
    +            other.starts_with("r#") && *self.sym == other[2..]
             } else {
    -            self.sym == other
    +            *self.sym == *other
             }
         }
     }
    @@ -1979,7 +2163,7 @@
     impl Display for Ident {
         fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
             if self.raw {
    -            f.write_str("r#")?;
    +            f.write_str("r#")?;
             }
             Display::fmt(&self.sym, f)
         }
    @@ -1990,8 +2174,8 @@
         // Ident(proc_macro), Ident(r#union)
         #[cfg(not(span_locations))]
         fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
    -        let mut debug = f.debug_tuple("Ident");
    -        debug.field(&format_args!("{}", self));
    +        let mut debug = f.debug_tuple("Ident");
    +        debug.field(&format_args!("{}", self));
             debug.finish()
         }
     
    @@ -2001,8 +2185,8 @@
         // }
         #[cfg(span_locations)]
         fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
    -        let mut debug = f.debug_struct("Ident");
    -        debug.field("sym", &format_args!("{}", self));
    +        let mut debug = f.debug_struct("Ident");
    +        debug.field("sym", &format_args!("{}", self));
             debug_span_field_if_nontrivial(&mut debug, self.span);
             debug.finish()
         }
    @@ -2010,21 +2194,21 @@
     
     #[derive(Clone)]
     pub(crate) struct Literal {
    -    repr: String,
    +    pub(crate) repr: String,
         span: Span,
     }
     
    -macro_rules! suffixed_numbers {
    +macro_rules! suffixed_numbers {
         ($($name:ident => $kind:ident,)*) => ($(
    -        pub fn $name(n: $kind) -> Literal {
    -            Literal::_new(format!(concat!("{}", stringify!($kind)), n))
    +        pub(crate) fn $name(n: $kind) -> Literal {
    +            Literal::_new(format!(concat!("{}", stringify!($kind)), n))
             }
         )*)
     }
     
    -macro_rules! unsuffixed_numbers {
    +macro_rules! unsuffixed_numbers {
         ($($name:ident => $kind:ident,)*) => ($(
    -        pub fn $name(n: $kind) -> Literal {
    +        pub(crate) fn $name(n: $kind) -> Literal {
                 Literal::_new(n.to_string())
             }
         )*)
    @@ -2038,11 +2222,41 @@
             }
         }
     
    +    pub(crate) fn from_str_checked(repr: &str) -> Result<Self, LexError> {
    +        let mut cursor = get_cursor(repr);
    +        #[cfg(span_locations)]
    +        let lo = cursor.off;
    +
    +        let negative = cursor.starts_with_char('-');
    +        if negative {
    +            cursor = cursor.advance(1);
    +            if !cursor.starts_with_fn(|ch| ch.is_ascii_digit()) {
    +                return Err(LexError::call_site());
    +            }
    +        }
    +
    +        if let Ok((rest, mut literal)) = parse::literal(cursor) {
    +            if rest.is_empty() {
    +                if negative {
    +                    literal.repr.insert(0, '-');
    +                }
    +                literal.span = Span {
    +                    #[cfg(span_locations)]
    +                    lo,
    +                    #[cfg(span_locations)]
    +                    hi: rest.off,
    +                };
    +                return Ok(literal);
    +            }
    +        }
    +        Err(LexError::call_site())
    +    }
    +
         pub(crate) unsafe fn from_str_unchecked(repr: &str) -> Self {
             Literal::_new(repr.to_owned())
         }
     
    -    suffixed_numbers! {
    +    suffixed_numbers! {
             u8_suffixed => u8,
             u16_suffixed => u16,
             u32_suffixed => u32,
    @@ -2060,7 +2274,7 @@
             f64_suffixed => f64,
         }
     
    -    unsuffixed_numbers! {
    +    unsuffixed_numbers! {
             u8_unsuffixed => u8,
             u16_unsuffixed => u16,
             u32_unsuffixed => u32,
    @@ -2075,98 +2289,125 @@
             isize_unsuffixed => isize,
         }
     
    -    pub fn f32_unsuffixed(f: f32) -> Literal {
    +    pub(crate) fn f32_unsuffixed(f: f32) -> Literal {
             let mut s = f.to_string();
    -        if !s.contains('.') {
    -            s.push_str(".0");
    +        if !s.contains('.') {
    +            s.push_str(".0");
             }
             Literal::_new(s)
         }
     
    -    pub fn f64_unsuffixed(f: f64) -> Literal {
    +    pub(crate) fn f64_unsuffixed(f: f64) -> Literal {
             let mut s = f.to_string();
    -        if !s.contains('.') {
    -            s.push_str(".0");
    +        if !s.contains('.') {
    +            s.push_str(".0");
             }
             Literal::_new(s)
         }
     
    -    pub fn string(t: &str) -> Literal {
    -        let mut repr = String::with_capacity(t.len() + 2);
    -        repr.push('"');
    -        let mut chars = t.chars();
    -        while let Some(ch) = chars.next() {
    -            if ch == '\0' {
    -                repr.push_str(
    -                    if chars
    -                        .as_str()
    -                        .starts_with(|next| '0' <= next && next <= '7')
    -                    {
    -                        // circumvent clippy::octal_escapes lint
    -                        "\\x00"
    -                    } else {
    -                        "\\0"
    -                    },
    -                );
    -            } else if ch == '\'' {
    -                // escape_debug turns this into "\'" which is unnecessary.
    -                repr.push(ch);
    -            } else {
    -                repr.extend(ch.escape_debug());
    +    pub(crate) fn string(string: &str) -> Literal {
    +        let mut repr = String::with_capacity(string.len() + 2);
    +        repr.push('"');
    +        escape_utf8(string, &mut repr);
    +        repr.push('"');
    +        Literal::_new(repr)
    +    }
    +
    +    pub(crate) fn character(ch: char) -> Literal {
    +        let mut repr = String::new();
    +        repr.push('\'');
    +        if ch == '"' {
    +            // escape_debug turns this into '\"' which is unnecessary.
    +            repr.push(ch);
    +        } else {
    +            repr.extend(ch.escape_debug());
    +        }
    +        repr.push('\'');
    +        Literal::_new(repr)
    +    }
    +
    +    pub(crate) fn byte_character(byte: u8) -> Literal {
    +        let mut repr = "b'".to_string();
    +        #[allow(clippy::match_overlapping_arm)]
    +        match byte {
    +            b'\0' => repr.push_str(r"\0"),
    +            b'\t' => repr.push_str(r"\t"),
    +            b'\n' => repr.push_str(r"\n"),
    +            b'\r' => repr.push_str(r"\r"),
    +            b'\'' => repr.push_str(r"\'"),
    +            b'\\' => repr.push_str(r"\\"),
    +            b'\x20'..=b'\x7E' => repr.push(byte as char),
    +            _ => {
    +                let _ = write!(repr, r"\x{:02X}", byte);
                 }
             }
    -        repr.push('"');
    +        repr.push('\'');
             Literal::_new(repr)
         }
     
    -    pub fn character(t: char) -> Literal {
    -        let mut repr = String::new();
    -        repr.push('\'');
    -        if t == '"' {
    -            // escape_debug turns this into '\"' which is unnecessary.
    -            repr.push(t);
    -        } else {
    -            repr.extend(t.escape_debug());
    -        }
    -        repr.push('\'');
    -        Literal::_new(repr)
    -    }
    -
    -    pub fn byte_string(bytes: &[u8]) -> Literal {
    -        let mut escaped = "b\"".to_string();
    +    pub(crate) fn byte_string(bytes: &[u8]) -> Literal {
    +        let mut repr = "b\"".to_string();
             let mut bytes = bytes.iter();
             while let Some(&b) = bytes.next() {
                 #[allow(clippy::match_overlapping_arm)]
                 match b {
    -                b'\0' => escaped.push_str(match bytes.as_slice().first() {
    +                b'\0' => repr.push_str(match bytes.as_slice().first() {
                         // circumvent clippy::octal_escapes lint
    -                    Some(b'0'..=b'7') => r"\x00",
    -                    _ => r"\0",
    +                    Some(b'0'..=b'7') => r"\x00",
    +                    _ => r"\0",
                     }),
    -                b'\t' => escaped.push_str(r"\t"),
    -                b'\n' => escaped.push_str(r"\n"),
    -                b'\r' => escaped.push_str(r"\r"),
    -                b'"' => escaped.push_str("\\\""),
    -                b'\\' => escaped.push_str("\\\\"),
    -                b'\x20'..=b'\x7E' => escaped.push(b as char),
    +                b'\t' => repr.push_str(r"\t"),
    +                b'\n' => repr.push_str(r"\n"),
    +                b'\r' => repr.push_str(r"\r"),
    +                b'"' => repr.push_str("\\\""),
    +                b'\\' => repr.push_str(r"\\"),
    +                b'\x20'..=b'\x7E' => repr.push(b as char),
                     _ => {
    -                    let _ = write!(escaped, "\\x{:02X}", b);
    +                    let _ = write!(repr, r"\x{:02X}", b);
                     }
                 }
             }
    -        escaped.push('"');
    -        Literal::_new(escaped)
    +        repr.push('"');
    +        Literal::_new(repr)
         }
     
    -    pub fn span(&self) -> Span {
    +    pub(crate) fn c_string(string: &CStr) -> Literal {
    +        let mut repr = "c\"".to_string();
    +        let mut bytes = string.to_bytes();
    +        while !bytes.is_empty() {
    +            let (valid, invalid) = match str::from_utf8(bytes) {
    +                Ok(all_valid) => {
    +                    bytes = b"";
    +                    (all_valid, bytes)
    +                }
    +                Err(utf8_error) => {
    +                    let (valid, rest) = bytes.split_at(utf8_error.valid_up_to());
    +                    let valid = str::from_utf8(valid).unwrap();
    +                    let invalid = utf8_error
    +                        .error_len()
    +                        .map_or(rest, |error_len| &rest[..error_len]);
    +                    bytes = &bytes[valid.len() + invalid.len()..];
    +                    (valid, invalid)
    +                }
    +            };
    +            escape_utf8(valid, &mut repr);
    +            for &byte in invalid {
    +                let _ = write!(repr, r"\x{:02X}", byte);
    +            }
    +        }
    +        repr.push('"');
    +        Literal::_new(repr)
    +    }
    +
    +    pub(crate) fn span(&self) -> Span {
             self.span
         }
     
    -    pub fn set_span(&mut self, span: Span) {
    +    pub(crate) fn set_span(&mut self, span: Span) {
             self.span = span;
         }
     
    -    pub fn subspan<R: RangeBounds<usize>>(&self, range: R) -> Option<Span> {
    +    pub(crate) fn subspan<R: RangeBounds<usize>>(&self, range: R) -> Option<Span> {
             #[cfg(not(span_locations))]
             {
                 let _ = range;
    @@ -2208,40 +2449,6 @@
         }
     }
     
    -impl FromStr for Literal {
    -    type Err = LexError;
    -
    -    fn from_str(repr: &str) -> Result<Self, Self::Err> {
    -        let mut cursor = get_cursor(repr);
    -        #[cfg(span_locations)]
    -        let lo = cursor.off;
    -
    -        let negative = cursor.starts_with_char('-');
    -        if negative {
    -            cursor = cursor.advance(1);
    -            if !cursor.starts_with_fn(|ch| ch.is_ascii_digit()) {
    -                return Err(LexError::call_site());
    -            }
    -        }
    -
    -        if let Ok((rest, mut literal)) = parse::literal(cursor) {
    -            if rest.is_empty() {
    -                if negative {
    -                    literal.repr.insert(0, '-');
    -                }
    -                literal.span = Span {
    -                    #[cfg(span_locations)]
    -                    lo,
    -                    #[cfg(span_locations)]
    -                    hi: rest.off,
    -                };
    -                return Ok(literal);
    -            }
    -        }
    -        Err(LexError::call_site())
    -    }
    -}
    -
     impl Display for Literal {
         fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
             Display::fmt(&self.repr, f)
    @@ -2250,10 +2457,77 @@
     
     impl Debug for Literal {
         fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
    -        let mut debug = fmt.debug_struct("Literal");
    -        debug.field("lit", &format_args!("{}", self.repr));
    +        let mut debug = fmt.debug_struct("Literal");
    +        debug.field("lit", &format_args!("{}", self.repr));
             debug_span_field_if_nontrivial(&mut debug, self.span);
             debug.finish()
         }
     }
    +
    +fn escape_utf8(string: &str, repr: &mut String) {
    +    let mut chars = string.chars();
    +    while let Some(ch) = chars.next() {
    +        if ch == '\0' {
    +            repr.push_str(
    +                if chars
    +                    .as_str()
    +                    .starts_with(|next| '0' <= next && next <= '7')
    +                {
    +                    // circumvent clippy::octal_escapes lint
    +                    r"\x00"
    +                } else {
    +                    r"\0"
    +                },
    +            );
    +        } else if ch == '\'' {
    +            // escape_debug turns this into "\'" which is unnecessary.
    +            repr.push(ch);
    +        } else {
    +            repr.extend(ch.escape_debug());
    +        }
    +    }
    +}
    +
    +#[cfg(feature = "proc-macro")]
    +pub(crate) trait FromStr2: FromStr<Err = proc_macro::LexError> {
    +    #[cfg(wrap_proc_macro)]
    +    fn valid(src: &str) -> bool;
    +
    +    #[cfg(wrap_proc_macro)]
    +    fn from_str_checked(src: &str) -> Result<Self, imp::LexError> {
    +        // Validate using fallback parser, because rustc is incapable of
    +        // returning a recoverable Err for certain invalid token streams, and
    +        // will instead permanently poison the compilation.
    +        if !Self::valid(src) {
    +            return Err(imp::LexError::CompilerPanic);
    +        }
    +
    +        // Catch panic to work around https://github.com/rust-lang/rust/issues/58736.
    +        match panic::catch_unwind(|| Self::from_str(src)) {
    +            Ok(Ok(ok)) => Ok(ok),
    +            Ok(Err(lex)) => Err(imp::LexError::Compiler(lex)),
    +            Err(_panic) => Err(imp::LexError::CompilerPanic),
    +        }
    +    }
    +
    +    fn from_str_unchecked(src: &str) -> Self {
    +        Self::from_str(src).unwrap()
    +    }
    +}
    +
    +#[cfg(feature = "proc-macro")]
    +impl FromStr2 for proc_macro::TokenStream {
    +    #[cfg(wrap_proc_macro)]
    +    fn valid(src: &str) -> bool {
    +        TokenStream::from_str_checked(src).is_ok()
    +    }
    +}
    +
    +#[cfg(feature = "proc-macro")]
    +impl FromStr2 for proc_macro::Literal {
    +    #[cfg(wrap_proc_macro)]
    +    fn valid(src: &str) -> bool {
    +        Literal::from_str_checked(src).is_ok()
    +    }
    +}
     
    \ No newline at end of file diff --git a/src/proc_macro2/lib.rs.html b/src/proc_macro2/lib.rs.html index 37e391f..991e740 100644 --- a/src/proc_macro2/lib.rs.html +++ b/src/proc_macro2/lib.rs.html @@ -1,4 +1,5 @@ -lib.rs - source
    1
    +lib.rs - source

    proc_macro2/
    lib.rs

    +1
     2
     3
     4
    @@ -1316,7 +1317,77 @@
     1316
     1317
     1318
    -
    //! [![github]](https://github.com/dtolnay/proc-macro2)&ensp;[![crates-io]](https://crates.io/crates/proc-macro2)&ensp;[![docs-rs]](crate)
    +1319
    +1320
    +1321
    +1322
    +1323
    +1324
    +1325
    +1326
    +1327
    +1328
    +1329
    +1330
    +1331
    +1332
    +1333
    +1334
    +1335
    +1336
    +1337
    +1338
    +1339
    +1340
    +1341
    +1342
    +1343
    +1344
    +1345
    +1346
    +1347
    +1348
    +1349
    +1350
    +1351
    +1352
    +1353
    +1354
    +1355
    +1356
    +1357
    +1358
    +1359
    +1360
    +1361
    +1362
    +1363
    +1364
    +1365
    +1366
    +1367
    +1368
    +1369
    +1370
    +1371
    +1372
    +1373
    +1374
    +1375
    +1376
    +1377
    +1378
    +1379
    +1380
    +1381
    +1382
    +1383
    +1384
    +1385
    +1386
    +1387
    +1388
    +1389
    //! [![github]](https://github.com/dtolnay/proc-macro2)&ensp;[![crates-io]](https://crates.io/crates/proc-macro2)&ensp;[![docs-rs]](crate)
     //!
     //! [github]: https://img.shields.io/badge/github-8da0cb?style=for-the-badge&labelColor=555555&logo=github
     //! [crates-io]: https://img.shields.io/badge/crates.io-fc8d62?style=for-the-badge&labelColor=555555&logo=rust
    @@ -1324,7 +1395,7 @@
     //!
     //! <br>
     //!
    -//! A wrapper around the procedural macro API of the compiler's [`proc_macro`]
    +//! A wrapper around the procedural macro API of the compiler's [`proc_macro`]
     //! crate. This library serves two purposes:
     //!
     //! [`proc_macro`]: https://doc.rust-lang.org/proc_macro/
    @@ -1370,7 +1441,7 @@
     //! }
     //! ```
     //!
    -//! If parsing with [Syn], you'll use [`parse_macro_input!`] instead to
    +//! If parsing with [Syn], you'll use [`parse_macro_input!`] instead to
     //! propagate parse errors correctly back to the compiler when parsing fails.
     //!
     //! [`parse_macro_input!`]: https://docs.rs/syn/2.0/syn/macro.parse_macro_input.html
    @@ -1388,7 +1459,7 @@
     //! proc-macro2 may make breaking changes to them at any time.
     //!
     //! ```sh
    -//! RUSTFLAGS='--cfg procmacro2_semver_exempt' cargo build
    +//! RUSTFLAGS='--cfg procmacro2_semver_exempt' cargo build
     //! ```
     //!
     //! Note that this must not only be done for your crate, but for any crate that
    @@ -1404,22 +1475,27 @@
     //! a different thread.
     
     // Proc-macro2 types in rustdoc of other crates get linked to here.
    -#![doc(html_root_url = "https://docs.rs/proc-macro2/1.0.69")]
    +#![doc(html_root_url = "https://docs.rs/proc-macro2/1.0.92")]
     #![cfg_attr(any(proc_macro_span, super_unstable), feature(proc_macro_span))]
     #![cfg_attr(super_unstable, feature(proc_macro_def_site))]
    -#![cfg_attr(doc_cfg, feature(doc_cfg))]
    +#![cfg_attr(docsrs, feature(doc_cfg))]
    +#![deny(unsafe_op_in_unsafe_fn)]
     #![allow(
         clippy::cast_lossless,
         clippy::cast_possible_truncation,
    +    clippy::checked_conversions,
         clippy::doc_markdown,
    +    clippy::incompatible_msrv,
         clippy::items_after_statements,
         clippy::iter_without_into_iter,
         clippy::let_underscore_untyped,
         clippy::manual_assert,
         clippy::manual_range_contains,
    +    clippy::missing_panics_doc,
         clippy::missing_safety_doc,
         clippy::must_use_candidate,
         clippy::needless_doctest_main,
    +    clippy::needless_lifetimes,
         clippy::new_without_default,
         clippy::return_self_not_must_use,
         clippy::shadow_unrelated,
    @@ -1431,16 +1507,25 @@
     )]
     
     #[cfg(all(procmacro2_semver_exempt, wrap_proc_macro, not(super_unstable)))]
    -compile_error! {"\
    -    Something is not right. If you've tried to turn on \
    +compile_error! {"\
    +    Something is not right. If you've tried to turn on \
         procmacro2_semver_exempt, you need to ensure that it \
         is turned on for the compilation of the proc-macro2 \
         build script as well.
    -"}
    +"}
    +
    +#[cfg(all(
    +    procmacro2_nightly_testing,
    +    feature = "proc-macro",
    +    not(proc_macro_span)
    +))]
    +compile_error! {"\
    +    Build script probe failed to compile.
    +"}
     
     extern crate alloc;
     
    -#[cfg(feature = "proc-macro")]
    +#[cfg(feature = "proc-macro")]
     extern crate proc_macro;
     
     mod marker;
    @@ -1459,7 +1544,7 @@
     
     #[cfg(not(wrap_proc_macro))]
     use crate::fallback as imp;
    -#[path = "wrapper.rs"]
    +#[path = "wrapper.rs"]
     #[cfg(wrap_proc_macro)]
     mod imp;
     
    @@ -1467,17 +1552,21 @@
     mod location;
     
     use crate::extra::DelimSpan;
    -use crate::marker::Marker;
    +use crate::marker::{ProcMacroAutoTraits, MARKER};
     use core::cmp::Ordering;
     use core::fmt::{self, Debug, Display};
     use core::hash::{Hash, Hasher};
    +#[cfg(span_locations)]
    +use core::ops::Range;
     use core::ops::RangeBounds;
     use core::str::FromStr;
     use std::error::Error;
    +use std::ffi::CStr;
     #[cfg(procmacro2_semver_exempt)]
     use std::path::PathBuf;
     
     #[cfg(span_locations)]
    +#[cfg_attr(docsrs, doc(cfg(feature = "span-locations")))]
     pub use crate::location::LineColumn;
     
     /// An abstract stream of tokens, or more concretely a sequence of token trees.
    @@ -1490,27 +1579,27 @@
     #[derive(Clone)]
     pub struct TokenStream {
         inner: imp::TokenStream,
    -    _marker: Marker,
    +    _marker: ProcMacroAutoTraits,
     }
     
     /// Error returned from `TokenStream::from_str`.
     pub struct LexError {
         inner: imp::LexError,
    -    _marker: Marker,
    +    _marker: ProcMacroAutoTraits,
     }
     
     impl TokenStream {
         fn _new(inner: imp::TokenStream) -> Self {
             TokenStream {
                 inner,
    -            _marker: Marker,
    +            _marker: MARKER,
             }
         }
     
         fn _new_fallback(inner: fallback::TokenStream) -> Self {
             TokenStream {
    -            inner: inner.into(),
    -            _marker: Marker,
    +            inner: imp::TokenStream::from(inner),
    +            _marker: MARKER,
             }
         }
     
    @@ -1545,27 +1634,29 @@
         type Err = LexError;
     
         fn from_str(src: &str) -> Result<TokenStream, LexError> {
    -        let e = src.parse().map_err(|e| LexError {
    -            inner: e,
    -            _marker: Marker,
    -        })?;
    -        Ok(TokenStream::_new(e))
    +        match imp::TokenStream::from_str_checked(src) {
    +            Ok(tokens) => Ok(TokenStream::_new(tokens)),
    +            Err(lex) => Err(LexError {
    +                inner: lex,
    +                _marker: MARKER,
    +            }),
    +        }
         }
     }
     
    -#[cfg(feature = "proc-macro")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "proc-macro")))]
    +#[cfg(feature = "proc-macro")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "proc-macro")))]
     impl From<proc_macro::TokenStream> for TokenStream {
         fn from(inner: proc_macro::TokenStream) -> Self {
    -        TokenStream::_new(inner.into())
    +        TokenStream::_new(imp::TokenStream::from(inner))
         }
     }
     
    -#[cfg(feature = "proc-macro")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "proc-macro")))]
    +#[cfg(feature = "proc-macro")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "proc-macro")))]
     impl From<TokenStream> for proc_macro::TokenStream {
         fn from(inner: TokenStream) -> Self {
    -        inner.inner.into()
    +        proc_macro::TokenStream::from(inner.inner)
         }
     }
     
    @@ -1641,11 +1732,11 @@
     ///
     /// This type is semver exempt and not exposed by default.
     #[cfg(all(procmacro2_semver_exempt, any(not(wrap_proc_macro), super_unstable)))]
    -#[cfg_attr(doc_cfg, doc(cfg(procmacro2_semver_exempt)))]
    +#[cfg_attr(docsrs, doc(cfg(procmacro2_semver_exempt)))]
     #[derive(Clone, PartialEq, Eq)]
     pub struct SourceFile {
         inner: imp::SourceFile,
    -    _marker: Marker,
    +    _marker: ProcMacroAutoTraits,
     }
     
     #[cfg(all(procmacro2_semver_exempt, any(not(wrap_proc_macro), super_unstable)))]
    @@ -1653,7 +1744,7 @@
         fn _new(inner: imp::SourceFile) -> Self {
             SourceFile {
                 inner,
    -            _marker: Marker,
    +            _marker: MARKER,
             }
         }
     
    @@ -1675,7 +1766,7 @@
         }
     
         /// Returns `true` if this source file is a real source file, and not
    -    /// generated by an external macro's expansion.
    +    /// generated by an external macro's expansion.
         pub fn is_real(&self) -> bool {
             self.inner.is_real()
         }
    @@ -1692,21 +1783,21 @@
     #[derive(Copy, Clone)]
     pub struct Span {
         inner: imp::Span,
    -    _marker: Marker,
    +    _marker: ProcMacroAutoTraits,
     }
     
     impl Span {
         fn _new(inner: imp::Span) -> Self {
             Span {
                 inner,
    -            _marker: Marker,
    +            _marker: MARKER,
             }
         }
     
         fn _new_fallback(inner: fallback::Span) -> Self {
             Span {
    -            inner: inner.into(),
    -            _marker: Marker,
    +            inner: imp::Span::from(inner),
    +            _marker: MARKER,
             }
         }
     
    @@ -1730,7 +1821,7 @@
         ///
         /// This method is semver exempt and not exposed by default.
         #[cfg(procmacro2_semver_exempt)]
    -    #[cfg_attr(doc_cfg, doc(cfg(procmacro2_semver_exempt)))]
    +    #[cfg_attr(docsrs, doc(cfg(procmacro2_semver_exempt)))]
         pub fn def_site() -> Self {
             Span::_new(imp::Span::def_site())
         }
    @@ -1773,14 +1864,29 @@
         ///
         /// This method is semver exempt and not exposed by default.
         #[cfg(all(procmacro2_semver_exempt, any(not(wrap_proc_macro), super_unstable)))]
    -    #[cfg_attr(doc_cfg, doc(cfg(procmacro2_semver_exempt)))]
    +    #[cfg_attr(docsrs, doc(cfg(procmacro2_semver_exempt)))]
         pub fn source_file(&self) -> SourceFile {
             SourceFile::_new(self.inner.source_file())
         }
     
    +    /// Returns the span's byte position range in the source file.
    +    ///
    +    /// This method requires the `"span-locations"` feature to be enabled.
    +    ///
    +    /// When executing in a procedural macro context, the returned range is only
    +    /// accurate if compiled with a nightly toolchain. The stable toolchain does
    +    /// not have this information available. When executing outside of a
    +    /// procedural macro, such as main.rs or build.rs, the byte range is always
    +    /// accurate regardless of toolchain.
    +    #[cfg(span_locations)]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "span-locations")))]
    +    pub fn byte_range(&self) -> Range<usize> {
    +        self.inner.byte_range()
    +    }
    +
         /// Get the starting line/column in the source file for this span.
         ///
    -    /// This method requires the `"span-locations"` feature to be enabled.
    +    /// This method requires the `"span-locations"` feature to be enabled.
         ///
         /// When executing in a procedural macro context, the returned line/column
         /// are only meaningful if compiled with a nightly toolchain. The stable
    @@ -1788,14 +1894,14 @@
         /// outside of a procedural macro, such as main.rs or build.rs, the
         /// line/column are always meaningful regardless of toolchain.
         #[cfg(span_locations)]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "span-locations")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "span-locations")))]
         pub fn start(&self) -> LineColumn {
             self.inner.start()
         }
     
         /// Get the ending line/column in the source file for this span.
         ///
    -    /// This method requires the `"span-locations"` feature to be enabled.
    +    /// This method requires the `"span-locations"` feature to be enabled.
         ///
         /// When executing in a procedural macro context, the returned line/column
         /// are only meaningful if compiled with a nightly toolchain. The stable
    @@ -1803,7 +1909,7 @@
         /// outside of a procedural macro, such as main.rs or build.rs, the
         /// line/column are always meaningful regardless of toolchain.
         #[cfg(span_locations)]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "span-locations")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "span-locations")))]
         pub fn end(&self) -> LineColumn {
             self.inner.end()
         }
    @@ -1821,11 +1927,11 @@
             self.inner.join(other.inner).map(Span::_new)
         }
     
    -    /// Compares two spans to see if they're equal.
    +    /// Compares two spans to see if they're equal.
         ///
         /// This method is semver exempt and not exposed by default.
         #[cfg(procmacro2_semver_exempt)]
    -    #[cfg_attr(doc_cfg, doc(cfg(procmacro2_semver_exempt)))]
    +    #[cfg_attr(docsrs, doc(cfg(procmacro2_semver_exempt)))]
         pub fn eq(&self, other: &Span) -> bool {
             self.inner.eq(&other.inner)
         }
    @@ -1858,7 +1964,7 @@
         Ident(Ident),
         /// A single punctuation character (`+`, `,`, `$`, etc.).
         Punct(Punct),
    -    /// A literal character (`'a'`), string (`"hello"`), number (`2.3`), etc.
    +    /// A literal character (`'a'`), string (`"hello"`), number (`2.3`), etc.
         Literal(Literal),
     }
     
    @@ -1932,12 +2038,12 @@
     impl Debug for TokenTree {
         fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
             // Each of these has the name in the struct type in the derived debug,
    -        // so don't bother with an extra layer of indirection
    +        // so don't bother with an extra layer of indirection
             match self {
                 TokenTree::Group(t) => Debug::fmt(t, f),
                 TokenTree::Ident(t) => {
    -                let mut debug = f.debug_struct("Ident");
    -                debug.field("sym", &format_args!("{}", t));
    +                let mut debug = f.debug_struct("Ident");
    +                debug.field("sym", &format_args!("{}", t));
                     imp::debug_span_field_if_nontrivial(&mut debug, t.span().inner);
                     debug.finish()
                 }
    @@ -1965,13 +2071,25 @@
         Brace,
         /// `[ ... ]`
         Bracket,
    -    /// `Ø ... Ø`
    +    /// `∅ ... ∅`
         ///
    -    /// An implicit delimiter, that may, for example, appear around tokens
    -    /// coming from a "macro variable" `$var`. It is important to preserve
    +    /// An invisible delimiter, that may, for example, appear around tokens
    +    /// coming from a "macro variable" `$var`. It is important to preserve
         /// operator priorities in cases like `$var * 3` where `$var` is `1 + 2`.
    -    /// Implicit delimiters may not survive roundtrip of a token stream through
    +    /// Invisible delimiters may not survive roundtrip of a token stream through
         /// a string.
    +    ///
    +    /// <div class="warning">
    +    ///
    +    /// Note: rustc currently can ignore the grouping of tokens delimited by `None` in the output
    +    /// of a proc_macro. Only `None`-delimited groups created by a macro_rules macro in the input
    +    /// of a proc_macro macro are preserved, and only in very specific circumstances.
    +    /// Any `None`-delimited groups (re)created by a proc_macro will therefore not preserve
    +    /// operator priorities as indicated above. The other `Delimiter` variants should be used
    +    /// instead in this context. This is a rustc bug. For details, see
    +    /// [rust-lang/rust#67062](https://github.com/rust-lang/rust/issues/67062).
    +    ///
    +    /// </div>
         None,
     }
     
    @@ -1982,7 +2100,7 @@
     
         fn _new_fallback(inner: fallback::Group) -> Self {
             Group {
    -            inner: inner.into(),
    +            inner: imp::Group::from(inner),
             }
         }
     
    @@ -2042,14 +2160,14 @@
             Span::_new(self.inner.span_close())
         }
     
    -    /// Returns an object that holds this group's `span_open()` and
    +    /// Returns an object that holds this group's `span_open()` and
         /// `span_close()` together (in a more compact representation than holding
         /// those 2 spans individually).
         pub fn delim_span(&self) -> DelimSpan {
             DelimSpan::new(&self.inner)
         }
     
    -    /// Configures the span for this `Group`'s delimiters, but not its internal
    +    /// Configures the span for this `Group`'s delimiters, but not its internal
         /// tokens.
         ///
         /// This method will **not** set the span of all the internal tokens spanned
    @@ -2092,10 +2210,10 @@
     pub enum Spacing {
         /// E.g. `+` is `Alone` in `+ =`, `+ident` or `+()`.
         Alone,
    -    /// E.g. `+` is `Joint` in `+=` or `'` is `Joint` in `'#`.
    +    /// E.g. `+` is `Joint` in `+=` or `'` is `Joint` in `'#`.
         ///
    -    /// Additionally, single quote `'` can join with identifiers to form
    -    /// lifetimes `'ident`.
    +    /// Additionally, single quote `'` can join with identifiers to form
    +    /// lifetimes `'ident`.
         Joint,
     }
     
    @@ -2108,10 +2226,16 @@
         /// The returned `Punct` will have the default span of `Span::call_site()`
         /// which can be further configured with the `set_span` method below.
         pub fn new(ch: char, spacing: Spacing) -> Self {
    -        Punct {
    -            ch,
    -            spacing,
    -            span: Span::call_site(),
    +        if let '!' | '#' | '$' | '%' | '&' | '\'' | '*' | '+' | ',' | '-' | '.' | '/' | ':' | ';'
    +        | '<' | '=' | '>' | '?' | '@' | '^' | '|' | '~' = ch
    +        {
    +            Punct {
    +                ch,
    +                spacing,
    +                span: Span::call_site(),
    +            }
    +        } else {
    +            panic!("unsupported proc macro punctuation character {:?}", ch);
             }
         }
     
    @@ -2121,9 +2245,9 @@
         }
     
         /// Returns the spacing of this punctuation character, indicating whether
    -    /// it's immediately followed by another `Punct` in the token stream, so
    +    /// it's immediately followed by another `Punct` in the token stream, so
         /// they can potentially be combined into a multicharacter operator
    -    /// (`Joint`), or it's followed by some other token or whitespace (`Alone`)
    +    /// (`Joint`), or it's followed by some other token or whitespace (`Alone`)
         /// so the operator has certainly ended.
         pub fn spacing(&self) -> Spacing {
             self.spacing
    @@ -2150,9 +2274,9 @@
     
     impl Debug for Punct {
         fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
    -        let mut debug = fmt.debug_struct("Punct");
    -        debug.field("char", &self.ch);
    -        debug.field("spacing", &self.spacing);
    +        let mut debug = fmt.debug_struct("Punct");
    +        debug.field("char", &self.ch);
    +        debug.field("spacing", &self.spacing);
             imp::debug_span_field_if_nontrivial(&mut debug, self.span.inner);
             debug.finish()
         }
    @@ -2184,9 +2308,9 @@
     /// use proc_macro2::{Ident, Span};
     ///
     /// fn main() {
    -///     let call_ident = Ident::new("calligraphy", Span::call_site());
    +///     let call_ident = Ident::new("calligraphy", Span::call_site());
     ///
    -///     println!("{}", call_ident);
    +///     println!("{}", call_ident);
     /// }
     /// ```
     ///
    @@ -2197,13 +2321,13 @@
     /// use quote::quote;
     ///
     /// fn main() {
    -///     let ident = Ident::new("demo", Span::call_site());
    +///     let ident = Ident::new("demo", Span::call_site());
     ///
     ///     // Create a variable binding whose name is this ident.
     ///     let expanded = quote! { let #ident = 10; };
     ///
     ///     // Create a variable binding with a slightly different name.
    -///     let temp_ident = Ident::new(&format!("new_{}", ident), Span::call_site());
    +///     let temp_ident = Ident::new(&format!("new_{}", ident), Span::call_site());
     ///     let expanded = quote! { let #temp_ident = 10; };
     /// }
     /// ```
    @@ -2214,25 +2338,32 @@
     /// ```
     /// # use proc_macro2::{Ident, Span};
     /// #
    -/// # let ident = Ident::new("another_identifier", Span::call_site());
    +/// # let ident = Ident::new("another_identifier", Span::call_site());
     /// #
     /// // Examine the ident as a string.
     /// let ident_string = ident.to_string();
     /// if ident_string.len() > 60 {
    -///     println!("Very long identifier: {}", ident_string)
    +///     println!("Very long identifier: {}", ident_string)
     /// }
     /// ```
     #[derive(Clone)]
     pub struct Ident {
         inner: imp::Ident,
    -    _marker: Marker,
    +    _marker: ProcMacroAutoTraits,
     }
     
     impl Ident {
         fn _new(inner: imp::Ident) -> Self {
             Ident {
                 inner,
    -            _marker: Marker,
    +            _marker: MARKER,
    +        }
    +    }
    +
    +    fn _new_fallback(inner: fallback::Ident) -> Self {
    +        Ident {
    +            inner: imp::Ident::from(inner),
    +            _marker: MARKER,
             }
         }
     
    @@ -2245,13 +2376,13 @@
         /// Note that `span`, currently in rustc, configures the hygiene information
         /// for this identifier.
         ///
    -    /// As of this time `Span::call_site()` explicitly opts-in to "call-site"
    +    /// As of this time `Span::call_site()` explicitly opts-in to "call-site"
         /// hygiene meaning that identifiers created with this span will be resolved
         /// as if they were written directly at the location of the macro call, and
         /// other code at the macro call site will be able to refer to them as well.
         ///
         /// Later spans like `Span::def_site()` will allow to opt-in to
    -    /// "definition-site" hygiene meaning that identifiers created with this
    +    /// "definition-site" hygiene meaning that identifiers created with this
         /// span will be resolved at the location of the macro definition and other
         /// code at the macro call site will not be able to refer to them.
         ///
    @@ -2263,12 +2394,13 @@
         /// Panics if the input string is neither a keyword nor a legal variable
         /// name. If you are not sure whether the string contains an identifier and
         /// need to handle an error case, use
    -    /// <a href="https://docs.rs/syn/2.0/syn/fn.parse_str.html"><code
    -    ///   style="padding-right:0;">syn::parse_str</code></a><code
    -    ///   style="padding-left:0;">::&lt;Ident&gt;</code>
    +    /// <a href="https://docs.rs/syn/2.0/syn/fn.parse_str.html"><code
    +    ///   style="padding-right:0;">syn::parse_str</code></a><code
    +    ///   style="padding-left:0;">::&lt;Ident&gt;</code>
         /// rather than `Ident::new`.
    +    #[track_caller]
         pub fn new(string: &str, span: Span) -> Self {
    -        Ident::_new(imp::Ident::new(string, span.inner))
    +        Ident::_new(imp::Ident::new_checked(string, span.inner))
         }
     
         /// Same as `Ident::new`, but creates a raw identifier (`r#ident`). The
    @@ -2276,12 +2408,9 @@
         /// (including keywords, e.g. `fn`). Keywords which are usable in path
         /// segments (e.g. `self`, `super`) are not supported, and will cause a
         /// panic.
    +    #[track_caller]
         pub fn new_raw(string: &str, span: Span) -> Self {
    -        Ident::_new_raw(string, span)
    -    }
    -
    -    fn _new_raw(string: &str, span: Span) -> Self {
    -        Ident::_new(imp::Ident::new_raw(string, span.inner))
    +        Ident::_new(imp::Ident::new_raw_checked(string, span.inner))
         }
     
         /// Returns the span of this `Ident`.
    @@ -2345,8 +2474,8 @@
         }
     }
     
    -/// A literal string (`"hello"`), byte string (`b"hello"`), character (`'a'`),
    -/// byte character (`b'a'`), an integer or floating point number with or without
    +/// A literal string (`"hello"`), byte string (`b"hello"`), character (`'a'`),
    +/// byte character (`b'a'`), an integer or floating point number with or without
     /// a suffix (`1`, `1u8`, `2.3`, `2.3f32`).
     ///
     /// Boolean literals like `true` and `false` do not belong here, they are
    @@ -2354,10 +2483,10 @@
     #[derive(Clone)]
     pub struct Literal {
         inner: imp::Literal,
    -    _marker: Marker,
    +    _marker: ProcMacroAutoTraits,
     }
     
    -macro_rules! suffixed_int_literals {
    +macro_rules! suffixed_int_literals {
         ($($name:ident => $kind:ident,)*) => ($(
             /// Creates a new suffixed integer literal with the specified value.
             ///
    @@ -2376,7 +2505,7 @@
         )*)
     }
     
    -macro_rules! unsuffixed_int_literals {
    +macro_rules! unsuffixed_int_literals {
         ($($name:ident => $kind:ident,)*) => ($(
             /// Creates a new unsuffixed integer literal with the specified value.
             ///
    @@ -2401,18 +2530,18 @@
         fn _new(inner: imp::Literal) -> Self {
             Literal {
                 inner,
    -            _marker: Marker,
    +            _marker: MARKER,
             }
         }
     
         fn _new_fallback(inner: fallback::Literal) -> Self {
             Literal {
    -            inner: inner.into(),
    -            _marker: Marker,
    +            inner: imp::Literal::from(inner),
    +            _marker: MARKER,
             }
         }
     
    -    suffixed_int_literals! {
    +    suffixed_int_literals! {
             u8_suffixed => u8,
             u16_suffixed => u16,
             u32_suffixed => u32,
    @@ -2427,7 +2556,7 @@
             isize_suffixed => isize,
         }
     
    -    unsuffixed_int_literals! {
    +    unsuffixed_int_literals! {
             u8_unsuffixed => u8,
             u16_unsuffixed => u16,
             u32_unsuffixed => u32,
    @@ -2445,7 +2574,7 @@
         /// Creates a new unsuffixed floating-point literal.
         ///
         /// This constructor is similar to those like `Literal::i8_unsuffixed` where
    -    /// the float's value is emitted directly into the token but no suffix is
    +    /// the float's value is emitted directly into the token but no suffix is
         /// used, so it may be inferred to be a `f64` later in the compiler.
         /// Literals created from negative numbers may not survive round-trips
         /// through `TokenStream` or strings and may be broken into two tokens (`-`
    @@ -2481,7 +2610,7 @@
         /// Creates a new unsuffixed floating-point literal.
         ///
         /// This constructor is similar to those like `Literal::i8_unsuffixed` where
    -    /// the float's value is emitted directly into the token but no suffix is
    +    /// the float's value is emitted directly into the token but no suffix is
         /// used, so it may be inferred to be a `f64` later in the compiler.
         /// Literals created from negative numbers may not survive round-trips
         /// through `TokenStream` or strings and may be broken into two tokens (`-`
    @@ -2524,9 +2653,19 @@
             Literal::_new(imp::Literal::character(ch))
         }
     
    +    /// Byte character literal.
    +    pub fn byte_character(byte: u8) -> Literal {
    +        Literal::_new(imp::Literal::byte_character(byte))
    +    }
    +
         /// Byte string literal.
    -    pub fn byte_string(s: &[u8]) -> Literal {
    -        Literal::_new(imp::Literal::byte_string(s))
    +    pub fn byte_string(bytes: &[u8]) -> Literal {
    +        Literal::_new(imp::Literal::byte_string(bytes))
    +    }
    +
    +    /// C string literal.
    +    pub fn c_string(string: &CStr) -> Literal {
    +        Literal::_new(imp::Literal::c_string(string))
         }
     
         /// Returns the span encompassing this literal.
    @@ -2554,11 +2693,11 @@
     
         // Intended for the `quote!` macro to use when constructing a proc-macro2
         // token out of a macro_rules $:literal token, which is already known to be
    -    // a valid literal. This avoids reparsing/validating the literal's string
    +    // a valid literal. This avoids reparsing/validating the literal's string
         // representation. This is not public API other than for quote.
         #[doc(hidden)]
         pub unsafe fn from_str_unchecked(repr: &str) -> Self {
    -        Literal::_new(imp::Literal::from_str_unchecked(repr))
    +        Literal::_new(unsafe { imp::Literal::from_str_unchecked(repr) })
         }
     }
     
    @@ -2566,10 +2705,13 @@
         type Err = LexError;
     
         fn from_str(repr: &str) -> Result<Self, LexError> {
    -        repr.parse().map(Literal::_new).map_err(|inner| LexError {
    -            inner,
    -            _marker: Marker,
    -        })
    +        match imp::Literal::from_str_checked(repr) {
    +            Ok(lit) => Ok(Literal::_new(lit)),
    +            Err(lex) => Err(LexError {
    +                inner: lex,
    +                _marker: MARKER,
    +            }),
    +        }
         }
     }
     
    @@ -2587,20 +2729,20 @@
     
     /// Public implementation details for the `TokenStream` type, such as iterators.
     pub mod token_stream {
    -    use crate::marker::Marker;
    +    use crate::marker::{ProcMacroAutoTraits, MARKER};
         use crate::{imp, TokenTree};
         use core::fmt::{self, Debug};
     
         pub use crate::TokenStream;
     
    -    /// An iterator over `TokenStream`'s `TokenTree`s.
    +    /// An iterator over `TokenStream`'s `TokenTree`s.
         ///
    -    /// The iteration is "shallow", e.g. the iterator doesn't recurse into
    +    /// The iteration is "shallow", e.g. the iterator doesn't recurse into
         /// delimited groups, and returns whole groups as token trees.
         #[derive(Clone)]
         pub struct IntoIter {
             inner: imp::TokenTreeIter,
    -        _marker: Marker,
    +        _marker: ProcMacroAutoTraits,
         }
     
         impl Iterator for IntoIter {
    @@ -2617,7 +2759,7 @@
     
         impl Debug for IntoIter {
             fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
    -            f.write_str("TokenStream ")?;
    +            f.write_str("TokenStream ")?;
                 f.debug_list().entries(self.clone()).finish()
             }
         }
    @@ -2629,7 +2771,7 @@
             fn into_iter(self) -> IntoIter {
                 IntoIter {
                     inner: self.inner.into_iter(),
    -                _marker: Marker,
    +                _marker: MARKER,
                 }
             }
         }
    diff --git a/src/proc_macro2/marker.rs.html b/src/proc_macro2/marker.rs.html
    index 0092a28..d82c4a4 100644
    --- a/src/proc_macro2/marker.rs.html
    +++ b/src/proc_macro2/marker.rs.html
    @@ -1,4 +1,5 @@
    -marker.rs - source
    1
    +marker.rs - source

    proc_macro2/
    marker.rs

    +1
     2
     3
     4
    @@ -14,23 +15,20 @@
     14
     15
     16
    -17
    -18
    -
    use alloc::rc::Rc;
    +17
    use alloc::rc::Rc;
     use core::marker::PhantomData;
     use core::panic::{RefUnwindSafe, UnwindSafe};
     
     // Zero sized marker with the correct set of autotrait impls we want all proc
     // macro types to have.
    -pub(crate) type Marker = PhantomData<ProcMacroAutoTraits>;
    +#[derive(Copy, Clone)]
    +#[cfg_attr(
    +    all(procmacro2_semver_exempt, any(not(wrap_proc_macro), super_unstable)),
    +    derive(PartialEq, Eq)
    +)]
    +pub(crate) struct ProcMacroAutoTraits(PhantomData<Rc<()>>);
     
    -pub(crate) use self::value::*;
    -
    -mod value {
    -    pub(crate) use core::marker::PhantomData as Marker;
    -}
    -
    -pub(crate) struct ProcMacroAutoTraits(Rc<()>);
    +pub(crate) const MARKER: ProcMacroAutoTraits = ProcMacroAutoTraits(PhantomData);
     
     impl UnwindSafe for ProcMacroAutoTraits {}
     impl RefUnwindSafe for ProcMacroAutoTraits {}
    diff --git a/src/proc_macro2/parse.rs.html b/src/proc_macro2/parse.rs.html
    index 84de80a..ce83a60 100644
    --- a/src/proc_macro2/parse.rs.html
    +++ b/src/proc_macro2/parse.rs.html
    @@ -1,4 +1,5 @@
    -parse.rs - source
    1
    +parse.rs - source

    proc_macro2/
    parse.rs

    +1
     2
     3
     4
    @@ -987,8 +988,10 @@
     987
     988
     989
    -
    use crate::fallback::{
    -    is_ident_continue, is_ident_start, Group, LexError, Literal, Span, TokenStream,
    +990
    +991
    +992
    use crate::fallback::{
    +    self, is_ident_continue, is_ident_start, Group, Ident, LexError, Literal, Span, TokenStream,
         TokenStreamBuilder,
     };
     use crate::{Delimiter, Punct, Spacing, TokenTree};
    @@ -996,14 +999,14 @@
     use core::str::{Bytes, CharIndices, Chars};
     
     #[derive(Copy, Clone, Eq, PartialEq)]
    -pub(crate) struct Cursor<'a> {
    -    pub rest: &'a str,
    +pub(crate) struct Cursor<'a> {
    +    pub(crate) rest: &'a str,
         #[cfg(span_locations)]
    -    pub off: u32,
    +    pub(crate) off: u32,
     }
     
    -impl<'a> Cursor<'a> {
    -    pub fn advance(&self, bytes: usize) -> Cursor<'a> {
    +impl<'a> Cursor<'a> {
    +    pub(crate) fn advance(&self, bytes: usize) -> Cursor<'a> {
             let (_front, rest) = self.rest.split_at(bytes);
             Cursor {
                 rest,
    @@ -1012,22 +1015,22 @@
             }
         }
     
    -    pub fn starts_with(&self, s: &str) -> bool {
    +    pub(crate) fn starts_with(&self, s: &str) -> bool {
             self.rest.starts_with(s)
         }
     
    -    pub fn starts_with_char(&self, ch: char) -> bool {
    +    pub(crate) fn starts_with_char(&self, ch: char) -> bool {
             self.rest.starts_with(ch)
         }
     
    -    pub fn starts_with_fn<Pattern>(&self, f: Pattern) -> bool
    +    pub(crate) fn starts_with_fn<Pattern>(&self, f: Pattern) -> bool
         where
             Pattern: FnMut(char) -> bool,
         {
             self.rest.starts_with(f)
         }
     
    -    pub fn is_empty(&self) -> bool {
    +    pub(crate) fn is_empty(&self) -> bool {
             self.rest.is_empty()
         }
     
    @@ -1035,23 +1038,23 @@
             self.rest.len()
         }
     
    -    fn as_bytes(&self) -> &'a [u8] {
    +    fn as_bytes(&self) -> &'a [u8] {
             self.rest.as_bytes()
         }
     
    -    fn bytes(&self) -> Bytes<'a> {
    +    fn bytes(&self) -> Bytes<'a> {
             self.rest.bytes()
         }
     
    -    fn chars(&self) -> Chars<'a> {
    +    fn chars(&self) -> Chars<'a> {
             self.rest.chars()
         }
     
    -    fn char_indices(&self) -> CharIndices<'a> {
    +    fn char_indices(&self) -> CharIndices<'a> {
             self.rest.char_indices()
         }
     
    -    fn parse(&self, tag: &str) -> Result<Cursor<'a>, Reject> {
    +    fn parse(&self, tag: &str) -> Result<Cursor<'a>, Reject> {
             if self.starts_with(tag) {
                 Ok(self.advance(tag.len()))
             } else {
    @@ -1061,27 +1064,27 @@
     }
     
     pub(crate) struct Reject;
    -type PResult<'a, O> = Result<(Cursor<'a>, O), Reject>;
    +type PResult<'a, O> = Result<(Cursor<'a>, O), Reject>;
     
     fn skip_whitespace(input: Cursor) -> Cursor {
         let mut s = input;
     
         while !s.is_empty() {
             let byte = s.as_bytes()[0];
    -        if byte == b'/' {
    -            if s.starts_with("//")
    -                && (!s.starts_with("///") || s.starts_with("////"))
    -                && !s.starts_with("//!")
    +        if byte == b'/' {
    +            if s.starts_with("//")
    +                && (!s.starts_with("///") || s.starts_with("////"))
    +                && !s.starts_with("//!")
                 {
                     let (cursor, _) = take_until_newline_or_eof(s);
                     s = cursor;
                     continue;
    -            } else if s.starts_with("/**/") {
    +            } else if s.starts_with("/**/") {
                     s = s.advance(4);
                     continue;
    -            } else if s.starts_with("/*")
    -                && (!s.starts_with("/**") || s.starts_with("/***"))
    -                && !s.starts_with("/*!")
    +            } else if s.starts_with("/*")
    +                && (!s.starts_with("/**") || s.starts_with("/***"))
    +                && !s.starts_with("/*!")
                 {
                     match block_comment(s) {
                         Ok((rest, _)) => {
    @@ -1093,7 +1096,7 @@
                 }
             }
             match byte {
    -            b' ' | 0x09..=0x0d => {
    +            b' ' | 0x09..=0x0d => {
                     s = s.advance(1);
                     continue;
                 }
    @@ -1112,7 +1115,7 @@
     }
     
     fn block_comment(input: Cursor) -> PResult<&str> {
    -    if !input.starts_with("/*") {
    +    if !input.starts_with("/*") {
             return Err(Reject);
         }
     
    @@ -1122,15 +1125,15 @@
         let upper = bytes.len() - 1;
     
         while i < upper {
    -        if bytes[i] == b'/' && bytes[i + 1] == b'*' {
    +        if bytes[i] == b'/' && bytes[i + 1] == b'*' {
                 depth += 1;
    -            i += 1; // eat '*'
    -        } else if bytes[i] == b'*' && bytes[i + 1] == b'/' {
    +            i += 1; // eat '*'
    +        } else if bytes[i] == b'*' && bytes[i + 1] == b'/' {
                 depth -= 1;
                 if depth == 0 {
                     return Ok((input.advance(i + 2), &input.rest[..i + 2]));
                 }
    -            i += 1; // eat '/'
    +            i += 1; // eat '/'
             }
             i += 1;
         }
    @@ -1140,7 +1143,7 @@
     
     fn is_whitespace(ch: char) -> bool {
         // Rust treats left-to-right mark and right-to-left mark as whitespace
    -    ch.is_whitespace() || ch == '\u{200e}' || ch == '\u{200f}'
    +    ch.is_whitespace() || ch == '\u{200e}' || ch == '\u{200f}'
     }
     
     fn word_break(input: Cursor) -> Result<Cursor, Reject> {
    @@ -1150,9 +1153,9 @@
         }
     }
     
    -// Rustc's representation of a macro expansion error in expression position or
    +// Rustc's representation of a macro expansion error in expression position or
     // type position.
    -const ERROR: &str = "(/*ERROR*/)";
    +const ERROR: &str = "(/*ERROR*/)";
     
     pub(crate) fn token_stream(mut input: Cursor) -> Result<TokenStream, LexError> {
         let mut trees = TokenStreamBuilder::new();
    @@ -1185,9 +1188,9 @@
             };
     
             if let Some(open_delimiter) = match first {
    -            b'(' if !input.starts_with(ERROR) => Some(Delimiter::Parenthesis),
    -            b'[' => Some(Delimiter::Bracket),
    -            b'{' => Some(Delimiter::Brace),
    +            b'(' if !input.starts_with(ERROR) => Some(Delimiter::Parenthesis),
    +            b'[' => Some(Delimiter::Bracket),
    +            b'{' => Some(Delimiter::Brace),
                 _ => None,
             } {
                 input = input.advance(1);
    @@ -1197,9 +1200,9 @@
                 stack.push(frame);
                 trees = TokenStreamBuilder::new();
             } else if let Some(close_delimiter) = match first {
    -            b')' => Some(Delimiter::Parenthesis),
    -            b']' => Some(Delimiter::Bracket),
    -            b'}' => Some(Delimiter::Brace),
    +            b')' => Some(Delimiter::Parenthesis),
    +            b']' => Some(Delimiter::Bracket),
    +            b'}' => Some(Delimiter::Brace),
                 _ => None,
             } {
                 let frame = match stack.pop() {
    @@ -1271,7 +1274,7 @@
     
     fn ident(input: Cursor) -> PResult<crate::Ident> {
         if [
    -        "r\"", "r#\"", "r##", "b\"", "b\'", "br\"", "br#", "c\"", "cr\"", "cr#",
    +        "r\"", "r#\"", "r##", "b\"", "b\'", "br\"", "br#", "c\"", "cr\"", "cr#",
         ]
         .iter()
         .any(|prefix| input.starts_with(prefix))
    @@ -1283,22 +1286,24 @@
     }
     
     fn ident_any(input: Cursor) -> PResult<crate::Ident> {
    -    let raw = input.starts_with("r#");
    +    let raw = input.starts_with("r#");
         let rest = input.advance((raw as usize) << 1);
     
         let (rest, sym) = ident_not_raw(rest)?;
     
         if !raw {
    -        let ident = crate::Ident::new(sym, crate::Span::call_site());
    +        let ident =
    +            crate::Ident::_new_fallback(Ident::new_unchecked(sym, fallback::Span::call_site()));
             return Ok((rest, ident));
         }
     
         match sym {
    -        "_" | "super" | "self" | "Self" | "crate" => return Err(Reject),
    +        "_" | "super" | "self" | "Self" | "crate" => return Err(Reject),
             _ => {}
         }
     
    -    let ident = crate::Ident::_new_raw(sym, crate::Span::call_site());
    +    let ident =
    +        crate::Ident::_new_fallback(Ident::new_raw_unchecked(sym, fallback::Span::call_site()));
         Ok((rest, ident))
     }
     
    @@ -1355,9 +1360,9 @@
     }
     
     fn string(input: Cursor) -> Result<Cursor, Reject> {
    -    if let Ok(input) = input.parse("\"") {
    +    if let Ok(input) = input.parse("\"") {
             cooked_string(input)
    -    } else if let Ok(input) = input.parse("r") {
    +    } else if let Ok(input) = input.parse("r") {
             raw_string(input)
         } else {
             Err(Reject)
    @@ -1369,23 +1374,23 @@
     
         while let Some((i, ch)) = chars.next() {
             match ch {
    -            '"' => {
    +            '"' => {
                     let input = input.advance(i + 1);
                     return Ok(literal_suffix(input));
                 }
    -            '\r' => match chars.next() {
    -                Some((_, '\n')) => {}
    +            '\r' => match chars.next() {
    +                Some((_, '\n')) => {}
                     _ => break,
                 },
    -            '\\' => match chars.next() {
    -                Some((_, 'x')) => {
    +            '\\' => match chars.next() {
    +                Some((_, 'x')) => {
                         backslash_x_char(&mut chars)?;
                     }
    -                Some((_, 'n' | 'r' | 't' | '\\' | '\'' | '"' | '0')) => {}
    -                Some((_, 'u')) => {
    +                Some((_, 'n' | 'r' | 't' | '\\' | '\'' | '"' | '0')) => {}
    +                Some((_, 'u')) => {
                         backslash_u(&mut chars)?;
                     }
    -                Some((newline, ch @ ('\n' | '\r'))) => {
    +                Some((newline, ch @ ('\n' | '\r'))) => {
                         input = input.advance(newline + 1);
                         trailing_backslash(&mut input, ch as u8)?;
                         chars = input.char_indices();
    @@ -1403,12 +1408,12 @@
         let mut bytes = input.bytes().enumerate();
         while let Some((i, byte)) = bytes.next() {
             match byte {
    -            b'"' if input.rest[i + 1..].starts_with(delimiter) => {
    +            b'"' if input.rest[i + 1..].starts_with(delimiter) => {
                     let rest = input.advance(i + 1 + delimiter.len());
                     return Ok(literal_suffix(rest));
                 }
    -            b'\r' => match bytes.next() {
    -                Some((_, b'\n')) => {}
    +            b'\r' => match bytes.next() {
    +                Some((_, b'\n')) => {}
                     _ => break,
                 },
                 _ => {}
    @@ -1418,9 +1423,9 @@
     }
     
     fn byte_string(input: Cursor) -> Result<Cursor, Reject> {
    -    if let Ok(input) = input.parse("b\"") {
    +    if let Ok(input) = input.parse("b\"") {
             cooked_byte_string(input)
    -    } else if let Ok(input) = input.parse("br") {
    +    } else if let Ok(input) = input.parse("br") {
             raw_byte_string(input)
         } else {
             Err(Reject)
    @@ -1431,20 +1436,20 @@
         let mut bytes = input.bytes().enumerate();
         while let Some((offset, b)) = bytes.next() {
             match b {
    -            b'"' => {
    +            b'"' => {
                     let input = input.advance(offset + 1);
                     return Ok(literal_suffix(input));
                 }
    -            b'\r' => match bytes.next() {
    -                Some((_, b'\n')) => {}
    +            b'\r' => match bytes.next() {
    +                Some((_, b'\n')) => {}
                     _ => break,
                 },
    -            b'\\' => match bytes.next() {
    -                Some((_, b'x')) => {
    +            b'\\' => match bytes.next() {
    +                Some((_, b'x')) => {
                         backslash_x_byte(&mut bytes)?;
                     }
    -                Some((_, b'n' | b'r' | b't' | b'\\' | b'0' | b'\'' | b'"')) => {}
    -                Some((newline, b @ (b'\n' | b'\r'))) => {
    +                Some((_, b'n' | b'r' | b't' | b'\\' | b'0' | b'\'' | b'"')) => {}
    +                Some((newline, b @ (b'\n' | b'\r'))) => {
                         input = input.advance(newline + 1);
                         trailing_backslash(&mut input, b)?;
                         bytes = input.bytes().enumerate();
    @@ -1461,14 +1466,14 @@
     fn delimiter_of_raw_string(input: Cursor) -> PResult<&str> {
         for (i, byte) in input.bytes().enumerate() {
             match byte {
    -            b'"' => {
    +            b'"' => {
                     if i > 255 {
                         // https://github.com/rust-lang/rust/pull/95251
                         return Err(Reject);
                     }
                     return Ok((input.advance(i + 1), &input.rest[..i]));
                 }
    -            b'#' => {}
    +            b'#' => {}
                 _ => break,
             }
         }
    @@ -1480,12 +1485,12 @@
         let mut bytes = input.bytes().enumerate();
         while let Some((i, byte)) = bytes.next() {
             match byte {
    -            b'"' if input.rest[i + 1..].starts_with(delimiter) => {
    +            b'"' if input.rest[i + 1..].starts_with(delimiter) => {
                     let rest = input.advance(i + 1 + delimiter.len());
                     return Ok(literal_suffix(rest));
                 }
    -            b'\r' => match bytes.next() {
    -                Some((_, b'\n')) => {}
    +            b'\r' => match bytes.next() {
    +                Some((_, b'\n')) => {}
                     _ => break,
                 },
                 other => {
    @@ -1499,9 +1504,9 @@
     }
     
     fn c_string(input: Cursor) -> Result<Cursor, Reject> {
    -    if let Ok(input) = input.parse("c\"") {
    +    if let Ok(input) = input.parse("c\"") {
             cooked_c_string(input)
    -    } else if let Ok(input) = input.parse("cr") {
    +    } else if let Ok(input) = input.parse("cr") {
             raw_c_string(input)
         } else {
             Err(Reject)
    @@ -1513,15 +1518,15 @@
         let mut bytes = input.bytes().enumerate();
         while let Some((i, byte)) = bytes.next() {
             match byte {
    -            b'"' if input.rest[i + 1..].starts_with(delimiter) => {
    +            b'"' if input.rest[i + 1..].starts_with(delimiter) => {
                     let rest = input.advance(i + 1 + delimiter.len());
                     return Ok(literal_suffix(rest));
                 }
    -            b'\r' => match bytes.next() {
    -                Some((_, b'\n')) => {}
    +            b'\r' => match bytes.next() {
    +                Some((_, b'\n')) => {}
                     _ => break,
                 },
    -            b'\0' => break,
    +            b'\0' => break,
                 _ => {}
             }
         }
    @@ -1533,32 +1538,32 @@
     
         while let Some((i, ch)) = chars.next() {
             match ch {
    -            '"' => {
    +            '"' => {
                     let input = input.advance(i + 1);
                     return Ok(literal_suffix(input));
                 }
    -            '\r' => match chars.next() {
    -                Some((_, '\n')) => {}
    +            '\r' => match chars.next() {
    +                Some((_, '\n')) => {}
                     _ => break,
                 },
    -            '\\' => match chars.next() {
    -                Some((_, 'x')) => {
    +            '\\' => match chars.next() {
    +                Some((_, 'x')) => {
                         backslash_x_nonzero(&mut chars)?;
                     }
    -                Some((_, 'n' | 'r' | 't' | '\\' | '\'' | '"')) => {}
    -                Some((_, 'u')) => {
    -                    if backslash_u(&mut chars)? == '\0' {
    +                Some((_, 'n' | 'r' | 't' | '\\' | '\'' | '"')) => {}
    +                Some((_, 'u')) => {
    +                    if backslash_u(&mut chars)? == '\0' {
                             break;
                         }
                     }
    -                Some((newline, ch @ ('\n' | '\r'))) => {
    +                Some((newline, ch @ ('\n' | '\r'))) => {
                         input = input.advance(newline + 1);
                         trailing_backslash(&mut input, ch as u8)?;
                         chars = input.char_indices();
                     }
                     _ => break,
                 },
    -            '\0' => break,
    +            '\0' => break,
                 _ch => {}
             }
         }
    @@ -1566,12 +1571,12 @@
     }
     
     fn byte(input: Cursor) -> Result<Cursor, Reject> {
    -    let input = input.parse("b'")?;
    +    let input = input.parse("b'")?;
         let mut bytes = input.bytes().enumerate();
         let ok = match bytes.next().map(|(_, b)| b) {
    -        Some(b'\\') => match bytes.next().map(|(_, b)| b) {
    -            Some(b'x') => backslash_x_byte(&mut bytes).is_ok(),
    -            Some(b'n' | b'r' | b't' | b'\\' | b'0' | b'\'' | b'"') => true,
    +        Some(b'\\') => match bytes.next().map(|(_, b)| b) {
    +            Some(b'x') => backslash_x_byte(&mut bytes).is_ok(),
    +            Some(b'n' | b'r' | b't' | b'\\' | b'0' | b'\'' | b'"') => true,
                 _ => false,
             },
             b => b.is_some(),
    @@ -1583,18 +1588,18 @@
         if !input.chars().as_str().is_char_boundary(offset) {
             return Err(Reject);
         }
    -    let input = input.advance(offset).parse("'")?;
    +    let input = input.advance(offset).parse("'")?;
         Ok(literal_suffix(input))
     }
     
     fn character(input: Cursor) -> Result<Cursor, Reject> {
    -    let input = input.parse("'")?;
    +    let input = input.parse("'")?;
         let mut chars = input.char_indices();
         let ok = match chars.next().map(|(_, ch)| ch) {
    -        Some('\\') => match chars.next().map(|(_, ch)| ch) {
    -            Some('x') => backslash_x_char(&mut chars).is_ok(),
    -            Some('u') => backslash_u(&mut chars).is_ok(),
    -            Some('n' | 'r' | 't' | '\\' | '0' | '\'' | '"') => true,
    +        Some('\\') => match chars.next().map(|(_, ch)| ch) {
    +            Some('x') => backslash_x_char(&mut chars).is_ok(),
    +            Some('u') => backslash_u(&mut chars).is_ok(),
    +            Some('n' | 'r' | 't' | '\\' | '0' | '\'' | '"') => true,
                 _ => false,
             },
             ch => ch.is_some(),
    @@ -1603,11 +1608,11 @@
             return Err(Reject);
         }
         let (idx, _) = chars.next().ok_or(Reject)?;
    -    let input = input.advance(idx).parse("'")?;
    +    let input = input.advance(idx).parse("'")?;
         Ok(literal_suffix(input))
     }
     
    -macro_rules! next_ch {
    +macro_rules! next_ch {
         ($chars:ident @ $pat:pat) => {
             match $chars.next() {
                 Some((_, ch)) => match ch {
    @@ -1623,8 +1628,8 @@
     where
         I: Iterator<Item = (usize, char)>,
     {
    -    next_ch!(chars @ '0'..='7');
    -    next_ch!(chars @ '0'..='9' | 'a'..='f' | 'A'..='F');
    +    next_ch!(chars @ '0'..='7');
    +    next_ch!(chars @ '0'..='9' | 'a'..='f' | 'A'..='F');
         Ok(())
     }
     
    @@ -1632,8 +1637,8 @@
     where
         I: Iterator<Item = (usize, u8)>,
     {
    -    next_ch!(chars @ b'0'..=b'9' | b'a'..=b'f' | b'A'..=b'F');
    -    next_ch!(chars @ b'0'..=b'9' | b'a'..=b'f' | b'A'..=b'F');
    +    next_ch!(chars @ b'0'..=b'9' | b'a'..=b'f' | b'A'..=b'F');
    +    next_ch!(chars @ b'0'..=b'9' | b'a'..=b'f' | b'A'..=b'F');
         Ok(())
     }
     
    @@ -1641,9 +1646,9 @@
     where
         I: Iterator<Item = (usize, char)>,
     {
    -    let first = next_ch!(chars @ '0'..='9' | 'a'..='f' | 'A'..='F');
    -    let second = next_ch!(chars @ '0'..='9' | 'a'..='f' | 'A'..='F');
    -    if first == '0' && second == '0' {
    +    let first = next_ch!(chars @ '0'..='9' | 'a'..='f' | 'A'..='F');
    +    let second = next_ch!(chars @ '0'..='9' | 'a'..='f' | 'A'..='F');
    +    if first == '0' && second == '0' {
             Err(Reject)
         } else {
             Ok(())
    @@ -1654,16 +1659,16 @@
     where
         I: Iterator<Item = (usize, char)>,
     {
    -    next_ch!(chars @ '{');
    +    next_ch!(chars @ '{');
         let mut value = 0;
         let mut len = 0;
         for (_, ch) in chars {
             let digit = match ch {
    -            '0'..='9' => ch as u8 - b'0',
    -            'a'..='f' => 10 + ch as u8 - b'a',
    -            'A'..='F' => 10 + ch as u8 - b'A',
    -            '_' if len > 0 => continue,
    -            '}' if len > 0 => return char::from_u32(value).ok_or(Reject),
    +            '0'..='9' => ch as u8 - b'0',
    +            'a'..='f' => 10 + ch as u8 - b'a',
    +            'A'..='F' => 10 + ch as u8 - b'A',
    +            '_' if len > 0 => continue,
    +            '}' if len > 0 => return char::from_u32(value).ok_or(Reject),
                 _ => break,
             };
             if len == 6 {
    @@ -1679,11 +1684,11 @@
     fn trailing_backslash(input: &mut Cursor, mut last: u8) -> Result<(), Reject> {
         let mut whitespace = input.bytes().enumerate();
         loop {
    -        if last == b'\r' && whitespace.next().map_or(true, |(_, b)| b != b'\n') {
    +        if last == b'\r' && whitespace.next().map_or(true, |(_, b)| b != b'\n') {
                 return Err(Reject);
             }
             match whitespace.next() {
    -            Some((_, b @ (b' ' | b'\t' | b'\n' | b'\r'))) => {
    +            Some((_, b @ (b' ' | b'\t' | b'\n' | b'\r'))) => {
                     last = b;
                 }
                 Some((offset, _)) => {
    @@ -1708,7 +1713,7 @@
     fn float_digits(input: Cursor) -> Result<Cursor, Reject> {
         let mut chars = input.chars().peekable();
         match chars.next() {
    -        Some(ch) if '0' <= ch && ch <= '9' => {}
    +        Some(ch) if '0' <= ch && ch <= '9' => {}
             _ => return Err(Reject),
         }
     
    @@ -1717,25 +1722,25 @@
         let mut has_exp = false;
         while let Some(&ch) = chars.peek() {
             match ch {
    -            '0'..='9' | '_' => {
    +            '0'..='9' | '_' => {
                     chars.next();
                     len += 1;
                 }
    -            '.' => {
    +            '.' => {
                     if has_dot {
                         break;
                     }
                     chars.next();
                     if chars
                         .peek()
    -                    .map_or(false, |&ch| ch == '.' || is_ident_start(ch))
    +                    .map_or(false, |&ch| ch == '.' || is_ident_start(ch))
                     {
                         return Err(Reject);
                     }
                     len += 1;
                     has_dot = true;
                 }
    -            'e' | 'E' => {
    +            'e' | 'E' => {
                     chars.next();
                     len += 1;
                     has_exp = true;
    @@ -1759,7 +1764,7 @@
             let mut has_exp_value = false;
             while let Some(&ch) = chars.peek() {
                 match ch {
    -                '+' | '-' => {
    +                '+' | '-' => {
                         if has_exp_value {
                             break;
                         }
    @@ -1770,12 +1775,12 @@
                         len += 1;
                         has_sign = true;
                     }
    -                '0'..='9' => {
    +                '0'..='9' => {
                         chars.next();
                         len += 1;
                         has_exp_value = true;
                     }
    -                '_' => {
    +                '_' => {
                         chars.next();
                         len += 1;
                     }
    @@ -1801,13 +1806,13 @@
     }
     
     fn digits(mut input: Cursor) -> Result<Cursor, Reject> {
    -    let base = if input.starts_with("0x") {
    +    let base = if input.starts_with("0x") {
             input = input.advance(2);
             16
    -    } else if input.starts_with("0o") {
    +    } else if input.starts_with("0o") {
             input = input.advance(2);
             8
    -    } else if input.starts_with("0b") {
    +    } else if input.starts_with("0b") {
             input = input.advance(2);
             2
         } else {
    @@ -1818,25 +1823,25 @@
         let mut empty = true;
         for b in input.bytes() {
             match b {
    -            b'0'..=b'9' => {
    -                let digit = (b - b'0') as u64;
    +            b'0'..=b'9' => {
    +                let digit = (b - b'0') as u64;
                     if digit >= base {
                         return Err(Reject);
                     }
                 }
    -            b'a'..=b'f' => {
    -                let digit = 10 + (b - b'a') as u64;
    +            b'a'..=b'f' => {
    +                let digit = 10 + (b - b'a') as u64;
                     if digit >= base {
                         break;
                     }
                 }
    -            b'A'..=b'F' => {
    -                let digit = 10 + (b - b'A') as u64;
    +            b'A'..=b'F' => {
    +                let digit = 10 + (b - b'A') as u64;
                     if digit >= base {
                         break;
                     }
                 }
    -            b'_' => {
    +            b'_' => {
                     if empty && base == 10 {
                         return Err(Reject);
                     }
    @@ -1857,11 +1862,11 @@
     
     fn punct(input: Cursor) -> PResult<Punct> {
         let (rest, ch) = punct_char(input)?;
    -    if ch == '\'' {
    -        if ident_any(rest)?.0.starts_with_char('\'') {
    +    if ch == '\'' {
    +        if ident_any(rest)?.0.starts_with_char('\'') {
                 Err(Reject)
             } else {
    -            Ok((rest, Punct::new('\'', Spacing::Joint)))
    +            Ok((rest, Punct::new('\'', Spacing::Joint)))
             }
         } else {
             let kind = match punct_char(rest) {
    @@ -1873,7 +1878,7 @@
     }
     
     fn punct_char(input: Cursor) -> PResult<char> {
    -    if input.starts_with("//") || input.starts_with("/*") {
    +    if input.starts_with("//") || input.starts_with("/*") {
             // Do not accept `/` of a comment as a punct.
             return Err(Reject);
         }
    @@ -1885,7 +1890,7 @@
                 return Err(Reject);
             }
         };
    -    let recognized = "~!@#$%^&*-=+|;:,<.>/?'";
    +    let recognized = "~!@#$%^&*-=+|;:,<.>/?'";
         if recognized.contains(first) {
             Ok((input.advance(first.len_utf8()), first))
         } else {
    @@ -1893,40 +1898,41 @@
         }
     }
     
    -fn doc_comment<'a>(input: Cursor<'a>, trees: &mut TokenStreamBuilder) -> PResult<'a, ()> {
    +fn doc_comment<'a>(input: Cursor<'a>, trees: &mut TokenStreamBuilder) -> PResult<'a, ()> {
         #[cfg(span_locations)]
         let lo = input.off;
         let (rest, (comment, inner)) = doc_comment_contents(input)?;
    -    let span = crate::Span::_new_fallback(Span {
    +    let fallback_span = Span {
             #[cfg(span_locations)]
             lo,
             #[cfg(span_locations)]
             hi: rest.off,
    -    });
    +    };
    +    let span = crate::Span::_new_fallback(fallback_span);
     
         let mut scan_for_bare_cr = comment;
    -    while let Some(cr) = scan_for_bare_cr.find('\r') {
    +    while let Some(cr) = scan_for_bare_cr.find('\r') {
             let rest = &scan_for_bare_cr[cr + 1..];
    -        if !rest.starts_with('\n') {
    +        if !rest.starts_with('\n') {
                 return Err(Reject);
             }
             scan_for_bare_cr = rest;
         }
     
    -    let mut pound = Punct::new('#', Spacing::Alone);
    +    let mut pound = Punct::new('#', Spacing::Alone);
         pound.set_span(span);
         trees.push_token_from_parser(TokenTree::Punct(pound));
     
         if inner {
    -        let mut bang = Punct::new('!', Spacing::Alone);
    +        let mut bang = Punct::new('!', Spacing::Alone);
             bang.set_span(span);
             trees.push_token_from_parser(TokenTree::Punct(bang));
         }
     
    -    let doc_ident = crate::Ident::new("doc", span);
    -    let mut equal = Punct::new('=', Spacing::Alone);
    +    let doc_ident = crate::Ident::_new_fallback(Ident::new_unchecked("doc", fallback_span));
    +    let mut equal = Punct::new('=', Spacing::Alone);
         equal.set_span(span);
    -    let mut literal = crate::Literal::string(comment);
    +    let mut literal = crate::Literal::_new_fallback(Literal::string(comment));
         literal.set_span(span);
         let mut bracketed = TokenStreamBuilder::with_capacity(3);
         bracketed.push_token_from_parser(TokenTree::Ident(doc_ident));
    @@ -1941,21 +1947,21 @@
     }
     
     fn doc_comment_contents(input: Cursor) -> PResult<(&str, bool)> {
    -    if input.starts_with("//!") {
    +    if input.starts_with("//!") {
             let input = input.advance(3);
             let (input, s) = take_until_newline_or_eof(input);
             Ok((input, (s, true)))
    -    } else if input.starts_with("/*!") {
    +    } else if input.starts_with("/*!") {
             let (input, s) = block_comment(input)?;
             Ok((input, (&s[3..s.len() - 2], true)))
    -    } else if input.starts_with("///") {
    +    } else if input.starts_with("///") {
             let input = input.advance(3);
    -        if input.starts_with_char('/') {
    +        if input.starts_with_char('/') {
                 return Err(Reject);
             }
             let (input, s) = take_until_newline_or_eof(input);
             Ok((input, (s, false)))
    -    } else if input.starts_with("/**") && !input.rest[3..].starts_with('*') {
    +    } else if input.starts_with("/**") && !input.rest[3..].starts_with('*') {
             let (input, s) = block_comment(input)?;
             Ok((input, (&s[3..s.len() - 2], false)))
         } else {
    @@ -1967,9 +1973,9 @@
         let chars = input.char_indices();
     
         for (i, ch) in chars {
    -        if ch == '\n' {
    +        if ch == '\n' {
                 return (input.advance(i), &input.rest[..i]);
    -        } else if ch == '\r' && input.rest[i + 1..].starts_with('\n') {
    +        } else if ch == '\r' && input.rest[i + 1..].starts_with('\n') {
                 return (input.advance(i + 1), &input.rest[..i]);
             }
         }
    diff --git a/src/proc_macro2/rcvec.rs.html b/src/proc_macro2/rcvec.rs.html
    index 82bda62..d826476 100644
    --- a/src/proc_macro2/rcvec.rs.html
    +++ b/src/proc_macro2/rcvec.rs.html
    @@ -1,4 +1,5 @@
    -rcvec.rs - source
    1
    +rcvec.rs - source

    proc_macro2/
    rcvec.rs

    +1
     2
     3
     4
    @@ -142,8 +143,7 @@
     142
     143
     144
    -145
    -
    use alloc::rc::Rc;
    +145
    use alloc::rc::Rc;
     use alloc::vec;
     use core::mem;
     use core::panic::RefUnwindSafe;
    @@ -157,8 +157,8 @@
         inner: Vec<T>,
     }
     
    -pub(crate) struct RcVecMut<'a, T> {
    -    inner: &'a mut Vec<T>,
    +pub(crate) struct RcVecMut<'a, T> {
    +    inner: &'a mut Vec<T>,
     }
     
     #[derive(Clone)]
    @@ -167,19 +167,19 @@
     }
     
     impl<T> RcVec<T> {
    -    pub fn is_empty(&self) -> bool {
    +    pub(crate) fn is_empty(&self) -> bool {
             self.inner.is_empty()
         }
     
    -    pub fn len(&self) -> usize {
    +    pub(crate) fn len(&self) -> usize {
             self.inner.len()
         }
     
    -    pub fn iter(&self) -> slice::Iter<T> {
    +    pub(crate) fn iter(&self) -> slice::Iter<T> {
             self.inner.iter()
         }
     
    -    pub fn make_mut(&mut self) -> RcVecMut<T>
    +    pub(crate) fn make_mut(&mut self) -> RcVecMut<T>
         where
             T: Clone,
         {
    @@ -188,12 +188,12 @@
             }
         }
     
    -    pub fn get_mut(&mut self) -> Option<RcVecMut<T>> {
    +    pub(crate) fn get_mut(&mut self) -> Option<RcVecMut<T>> {
             let inner = Rc::get_mut(&mut self.inner)?;
             Some(RcVecMut { inner })
         }
     
    -    pub fn make_owned(mut self) -> RcVecBuilder<T>
    +    pub(crate) fn make_owned(mut self) -> RcVecBuilder<T>
         where
             T: Clone,
         {
    @@ -207,51 +207,51 @@
     }
     
     impl<T> RcVecBuilder<T> {
    -    pub fn new() -> Self {
    +    pub(crate) fn new() -> Self {
             RcVecBuilder { inner: Vec::new() }
         }
     
    -    pub fn with_capacity(cap: usize) -> Self {
    +    pub(crate) fn with_capacity(cap: usize) -> Self {
             RcVecBuilder {
                 inner: Vec::with_capacity(cap),
             }
         }
     
    -    pub fn push(&mut self, element: T) {
    +    pub(crate) fn push(&mut self, element: T) {
             self.inner.push(element);
         }
     
    -    pub fn extend(&mut self, iter: impl IntoIterator<Item = T>) {
    +    pub(crate) fn extend(&mut self, iter: impl IntoIterator<Item = T>) {
             self.inner.extend(iter);
         }
     
    -    pub fn as_mut(&mut self) -> RcVecMut<T> {
    +    pub(crate) fn as_mut(&mut self) -> RcVecMut<T> {
             RcVecMut {
                 inner: &mut self.inner,
             }
         }
     
    -    pub fn build(self) -> RcVec<T> {
    +    pub(crate) fn build(self) -> RcVec<T> {
             RcVec {
                 inner: Rc::new(self.inner),
             }
         }
     }
     
    -impl<'a, T> RcVecMut<'a, T> {
    -    pub fn push(&mut self, element: T) {
    +impl<'a, T> RcVecMut<'a, T> {
    +    pub(crate) fn push(&mut self, element: T) {
             self.inner.push(element);
         }
     
    -    pub fn extend(&mut self, iter: impl IntoIterator<Item = T>) {
    +    pub(crate) fn extend(&mut self, iter: impl IntoIterator<Item = T>) {
             self.inner.extend(iter);
         }
     
    -    pub fn pop(&mut self) -> Option<T> {
    +    pub(crate) fn pop(&mut self) -> Option<T> {
             self.inner.pop()
         }
     
    -    pub fn as_mut(&mut self) -> RcVecMut<T> {
    +    pub(crate) fn as_mut(&mut self) -> RcVecMut<T> {
             RcVecMut { inner: self.inner }
         }
     }
    diff --git a/src/proc_macro2/wrapper.rs.html b/src/proc_macro2/wrapper.rs.html
    index c819a3f..8e68e43 100644
    --- a/src/proc_macro2/wrapper.rs.html
    +++ b/src/proc_macro2/wrapper.rs.html
    @@ -1,4 +1,5 @@
    -wrapper.rs - source
    1
    +wrapper.rs - source

    proc_macro2/
    wrapper.rs

    +1
     2
     3
     4
    @@ -899,14 +900,117 @@
     899
     900
     901
    -
    use crate::detection::inside_proc_macro;
    +902
    +903
    +904
    +905
    +906
    +907
    +908
    +909
    +910
    +911
    +912
    +913
    +914
    +915
    +916
    +917
    +918
    +919
    +920
    +921
    +922
    +923
    +924
    +925
    +926
    +927
    +928
    +929
    +930
    +931
    +932
    +933
    +934
    +935
    +936
    +937
    +938
    +939
    +940
    +941
    +942
    +943
    +944
    +945
    +946
    +947
    +948
    +949
    +950
    +951
    +952
    +953
    +954
    +955
    +956
    +957
    +958
    +959
    +960
    +961
    +962
    +963
    +964
    +965
    +966
    +967
    +968
    +969
    +970
    +971
    +972
    +973
    +974
    +975
    +976
    +977
    +978
    +979
    +980
    +981
    +982
    +983
    +984
    +985
    +986
    +987
    +988
    +989
    +990
    +991
    +992
    +993
    +994
    +995
    +996
    +997
    +998
    +999
    +1000
    +1001
    +1002
    +1003
    use crate::detection::inside_proc_macro;
    +use crate::fallback::{self, FromStr2 as _};
     #[cfg(span_locations)]
     use crate::location::LineColumn;
    -use crate::{fallback, Delimiter, Punct, Spacing, TokenTree};
    +use crate::{Delimiter, Punct, Spacing, TokenTree};
     use core::fmt::{self, Debug, Display};
    +#[cfg(span_locations)]
    +use core::ops::Range;
     use core::ops::RangeBounds;
    -use core::str::FromStr;
    -use std::panic;
    +use std::ffi::CStr;
     #[cfg(super_unstable)]
     use std::path::PathBuf;
     
    @@ -929,18 +1033,23 @@
     pub(crate) enum LexError {
         Compiler(proc_macro::LexError),
         Fallback(fallback::LexError),
    +
    +    // Rustc was supposed to return a LexError, but it panicked instead.
    +    // https://github.com/rust-lang/rust/issues/58736
    +    CompilerPanic,
     }
     
    -impl LexError {
    -    fn call_site() -> Self {
    -        LexError::Fallback(fallback::LexError {
    -            span: fallback::Span::call_site(),
    -        })
    +#[cold]
    +fn mismatch(line: u32) -> ! {
    +    #[cfg(procmacro2_backtrace)]
    +    {
    +        let backtrace = std::backtrace::Backtrace::force_capture();
    +        panic!("compiler/fallback mismatch L{}\n\n{}", line, backtrace)
    +    }
    +    #[cfg(not(procmacro2_backtrace))]
    +    {
    +        panic!("compiler/fallback mismatch L{}", line)
         }
    -}
    -
    -fn mismatch() -> ! {
    -    panic!("compiler/fallback mismatch")
     }
     
     impl DeferredTokenStream {
    @@ -971,7 +1080,7 @@
     }
     
     impl TokenStream {
    -    pub fn new() -> Self {
    +    pub(crate) fn new() -> Self {
             if inside_proc_macro() {
                 TokenStream::Compiler(DeferredTokenStream::new(proc_macro::TokenStream::new()))
             } else {
    @@ -979,7 +1088,19 @@
             }
         }
     
    -    pub fn is_empty(&self) -> bool {
    +    pub(crate) fn from_str_checked(src: &str) -> Result<Self, LexError> {
    +        if inside_proc_macro() {
    +            Ok(TokenStream::Compiler(DeferredTokenStream::new(
    +                proc_macro::TokenStream::from_str_checked(src)?,
    +            )))
    +        } else {
    +            Ok(TokenStream::Fallback(
    +                fallback::TokenStream::from_str_checked(src)?,
    +            ))
    +        }
    +    }
    +
    +    pub(crate) fn is_empty(&self) -> bool {
             match self {
                 TokenStream::Compiler(tts) => tts.is_empty(),
                 TokenStream::Fallback(tts) => tts.is_empty(),
    @@ -989,38 +1110,18 @@
         fn unwrap_nightly(self) -> proc_macro::TokenStream {
             match self {
                 TokenStream::Compiler(s) => s.into_token_stream(),
    -            TokenStream::Fallback(_) => mismatch(),
    +            TokenStream::Fallback(_) => mismatch(line!()),
             }
         }
     
         fn unwrap_stable(self) -> fallback::TokenStream {
             match self {
    -            TokenStream::Compiler(_) => mismatch(),
    +            TokenStream::Compiler(_) => mismatch(line!()),
                 TokenStream::Fallback(s) => s,
             }
         }
     }
     
    -impl FromStr for TokenStream {
    -    type Err = LexError;
    -
    -    fn from_str(src: &str) -> Result<TokenStream, LexError> {
    -        if inside_proc_macro() {
    -            Ok(TokenStream::Compiler(DeferredTokenStream::new(
    -                proc_macro_parse(src)?,
    -            )))
    -        } else {
    -            Ok(TokenStream::Fallback(src.parse()?))
    -        }
    -    }
    -}
    -
    -// Work around https://github.com/rust-lang/rust/issues/58736.
    -fn proc_macro_parse(src: &str) -> Result<proc_macro::TokenStream, LexError> {
    -    let result = panic::catch_unwind(|| src.parse().map_err(LexError::Compiler));
    -    result.unwrap_or_else(|_| Err(LexError::call_site()))
    -}
    -
     impl Display for TokenStream {
         fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
             match self {
    @@ -1040,7 +1141,9 @@
         fn from(inner: TokenStream) -> Self {
             match inner {
                 TokenStream::Compiler(inner) => inner.into_token_stream(),
    -            TokenStream::Fallback(inner) => inner.to_string().parse().unwrap(),
    +            TokenStream::Fallback(inner) => {
    +                proc_macro::TokenStream::from_str_unchecked(&inner.to_string())
    +            }
             }
         }
     }
    @@ -1054,7 +1157,7 @@
     // Assumes inside_proc_macro().
     fn into_compiler_token(token: TokenTree) -> proc_macro::TokenTree {
         match token {
    -        TokenTree::Group(tt) => tt.inner.unwrap_nightly().into(),
    +        TokenTree::Group(tt) => proc_macro::TokenTree::Group(tt.inner.unwrap_nightly()),
             TokenTree::Punct(tt) => {
                 let spacing = match tt.spacing() {
                     Spacing::Joint => proc_macro::Spacing::Joint,
    @@ -1062,19 +1165,21 @@
                 };
                 let mut punct = proc_macro::Punct::new(tt.as_char(), spacing);
                 punct.set_span(tt.span().inner.unwrap_nightly());
    -            punct.into()
    +            proc_macro::TokenTree::Punct(punct)
             }
    -        TokenTree::Ident(tt) => tt.inner.unwrap_nightly().into(),
    -        TokenTree::Literal(tt) => tt.inner.unwrap_nightly().into(),
    +        TokenTree::Ident(tt) => proc_macro::TokenTree::Ident(tt.inner.unwrap_nightly()),
    +        TokenTree::Literal(tt) => proc_macro::TokenTree::Literal(tt.inner.unwrap_nightly()),
         }
     }
     
     impl From<TokenTree> for TokenStream {
         fn from(token: TokenTree) -> Self {
             if inside_proc_macro() {
    -            TokenStream::Compiler(DeferredTokenStream::new(into_compiler_token(token).into()))
    +            TokenStream::Compiler(DeferredTokenStream::new(proc_macro::TokenStream::from(
    +                into_compiler_token(token),
    +            )))
             } else {
    -            TokenStream::Fallback(token.into())
    +            TokenStream::Fallback(fallback::TokenStream::from(token))
             }
         }
     }
    @@ -1099,14 +1204,14 @@
                     first.evaluate_now();
                     first.stream.extend(streams.map(|s| match s {
                         TokenStream::Compiler(s) => s.into_token_stream(),
    -                    TokenStream::Fallback(_) => mismatch(),
    +                    TokenStream::Fallback(_) => mismatch(line!()),
                     }));
                     TokenStream::Compiler(first)
                 }
                 Some(TokenStream::Fallback(mut first)) => {
                     first.extend(streams.map(|s| match s {
                         TokenStream::Fallback(s) => s,
    -                    TokenStream::Compiler(_) => mismatch(),
    +                    TokenStream::Compiler(_) => mismatch(line!()),
                     }));
                     TokenStream::Fallback(first)
                 }
    @@ -1156,7 +1261,7 @@
     impl LexError {
         pub(crate) fn span(&self) -> Span {
             match self {
    -            LexError::Compiler(_) => Span::call_site(),
    +            LexError::Compiler(_) | LexError::CompilerPanic => Span::call_site(),
                 LexError::Fallback(e) => Span::Fallback(e.span()),
             }
         }
    @@ -1179,6 +1284,10 @@
             match self {
                 LexError::Compiler(e) => Debug::fmt(e, f),
                 LexError::Fallback(e) => Debug::fmt(e, f),
    +            LexError::CompilerPanic => {
    +                let fallback = fallback::LexError::call_site();
    +                Debug::fmt(&fallback, f)
    +            }
             }
         }
     }
    @@ -1188,6 +1297,10 @@
             match self {
                 LexError::Compiler(e) => Display::fmt(e, f),
                 LexError::Fallback(e) => Display::fmt(e, f),
    +            LexError::CompilerPanic => {
    +                let fallback = fallback::LexError::call_site();
    +                Display::fmt(&fallback, f)
    +            }
             }
         }
     }
    @@ -1221,7 +1334,9 @@
                 TokenTreeIter::Fallback(iter) => return iter.next(),
             };
             Some(match token {
    -            proc_macro::TokenTree::Group(tt) => crate::Group::_new(Group::Compiler(tt)).into(),
    +            proc_macro::TokenTree::Group(tt) => {
    +                TokenTree::Group(crate::Group::_new(Group::Compiler(tt)))
    +            }
                 proc_macro::TokenTree::Punct(tt) => {
                     let spacing = match tt.spacing() {
                         proc_macro::Spacing::Joint => Spacing::Joint,
    @@ -1229,10 +1344,14 @@
                     };
                     let mut o = Punct::new(tt.as_char(), spacing);
                     o.set_span(crate::Span::_new(Span::Compiler(tt.span())));
    -                o.into()
    +                TokenTree::Punct(o)
    +            }
    +            proc_macro::TokenTree::Ident(s) => {
    +                TokenTree::Ident(crate::Ident::_new(Ident::Compiler(s)))
    +            }
    +            proc_macro::TokenTree::Literal(l) => {
    +                TokenTree::Literal(crate::Literal::_new(Literal::Compiler(l)))
                 }
    -            proc_macro::TokenTree::Ident(s) => crate::Ident::_new(Ident::Compiler(s)).into(),
    -            proc_macro::TokenTree::Literal(l) => crate::Literal::_new(Literal::Compiler(l)).into(),
             })
         }
     
    @@ -1258,14 +1377,14 @@
         }
     
         /// Get the path to this source file as a string.
    -    pub fn path(&self) -> PathBuf {
    +    pub(crate) fn path(&self) -> PathBuf {
             match self {
                 SourceFile::Compiler(a) => a.path(),
                 SourceFile::Fallback(a) => a.path(),
             }
         }
     
    -    pub fn is_real(&self) -> bool {
    +    pub(crate) fn is_real(&self) -> bool {
             match self {
                 SourceFile::Compiler(a) => a.is_real(),
                 SourceFile::Fallback(a) => a.is_real(),
    @@ -1290,7 +1409,7 @@
     }
     
     impl Span {
    -    pub fn call_site() -> Self {
    +    pub(crate) fn call_site() -> Self {
             if inside_proc_macro() {
                 Span::Compiler(proc_macro::Span::call_site())
             } else {
    @@ -1298,7 +1417,7 @@
             }
         }
     
    -    pub fn mixed_site() -> Self {
    +    pub(crate) fn mixed_site() -> Self {
             if inside_proc_macro() {
                 Span::Compiler(proc_macro::Span::mixed_site())
             } else {
    @@ -1307,7 +1426,7 @@
         }
     
         #[cfg(super_unstable)]
    -    pub fn def_site() -> Self {
    +    pub(crate) fn def_site() -> Self {
             if inside_proc_macro() {
                 Span::Compiler(proc_macro::Span::def_site())
             } else {
    @@ -1315,31 +1434,33 @@
             }
         }
     
    -    pub fn resolved_at(&self, other: Span) -> Span {
    +    pub(crate) fn resolved_at(&self, other: Span) -> Span {
             match (self, other) {
                 (Span::Compiler(a), Span::Compiler(b)) => Span::Compiler(a.resolved_at(b)),
                 (Span::Fallback(a), Span::Fallback(b)) => Span::Fallback(a.resolved_at(b)),
    -            _ => mismatch(),
    +            (Span::Compiler(_), Span::Fallback(_)) => mismatch(line!()),
    +            (Span::Fallback(_), Span::Compiler(_)) => mismatch(line!()),
             }
         }
     
    -    pub fn located_at(&self, other: Span) -> Span {
    +    pub(crate) fn located_at(&self, other: Span) -> Span {
             match (self, other) {
                 (Span::Compiler(a), Span::Compiler(b)) => Span::Compiler(a.located_at(b)),
                 (Span::Fallback(a), Span::Fallback(b)) => Span::Fallback(a.located_at(b)),
    -            _ => mismatch(),
    +            (Span::Compiler(_), Span::Fallback(_)) => mismatch(line!()),
    +            (Span::Fallback(_), Span::Compiler(_)) => mismatch(line!()),
             }
         }
     
    -    pub fn unwrap(self) -> proc_macro::Span {
    +    pub(crate) fn unwrap(self) -> proc_macro::Span {
             match self {
                 Span::Compiler(s) => s,
    -            Span::Fallback(_) => panic!("proc_macro::Span is only available in procedural macros"),
    +            Span::Fallback(_) => panic!("proc_macro::Span is only available in procedural macros"),
             }
         }
     
         #[cfg(super_unstable)]
    -    pub fn source_file(&self) -> SourceFile {
    +    pub(crate) fn source_file(&self) -> SourceFile {
             match self {
                 Span::Compiler(s) => SourceFile::nightly(s.source_file()),
                 Span::Fallback(s) => SourceFile::Fallback(s.source_file()),
    @@ -1347,22 +1468,48 @@
         }
     
         #[cfg(span_locations)]
    -    pub fn start(&self) -> LineColumn {
    +    pub(crate) fn byte_range(&self) -> Range<usize> {
             match self {
    -            Span::Compiler(_) => LineColumn { line: 0, column: 0 },
    +            #[cfg(proc_macro_span)]
    +            Span::Compiler(s) => s.byte_range(),
    +            #[cfg(not(proc_macro_span))]
    +            Span::Compiler(_) => 0..0,
    +            Span::Fallback(s) => s.byte_range(),
    +        }
    +    }
    +
    +    #[cfg(span_locations)]
    +    pub(crate) fn start(&self) -> LineColumn {
    +        match self {
    +            #[cfg(proc_macro_span)]
    +            Span::Compiler(s) => LineColumn {
    +                line: s.line(),
    +                column: s.column().saturating_sub(1),
    +            },
    +            #[cfg(not(proc_macro_span))]
    +            Span::Compiler(_) => LineColumn { line: 0, column: 0 },
                 Span::Fallback(s) => s.start(),
             }
         }
     
         #[cfg(span_locations)]
    -    pub fn end(&self) -> LineColumn {
    +    pub(crate) fn end(&self) -> LineColumn {
             match self {
    -            Span::Compiler(_) => LineColumn { line: 0, column: 0 },
    +            #[cfg(proc_macro_span)]
    +            Span::Compiler(s) => {
    +                let end = s.end();
    +                LineColumn {
    +                    line: end.line(),
    +                    column: end.column().saturating_sub(1),
    +                }
    +            }
    +            #[cfg(not(proc_macro_span))]
    +            Span::Compiler(_) => LineColumn { line: 0, column: 0 },
                 Span::Fallback(s) => s.end(),
             }
         }
     
    -    pub fn join(&self, other: Span) -> Option<Span> {
    +    pub(crate) fn join(&self, other: Span) -> Option<Span> {
             let ret = match (self, other) {
                 #[cfg(proc_macro_span)]
                 (Span::Compiler(a), Span::Compiler(b)) => Span::Compiler(a.join(b)?),
    @@ -1373,7 +1520,7 @@
         }
     
         #[cfg(super_unstable)]
    -    pub fn eq(&self, other: &Span) -> bool {
    +    pub(crate) fn eq(&self, other: &Span) -> bool {
             match (self, other) {
                 (Span::Compiler(a), Span::Compiler(b)) => a.eq(b),
                 (Span::Fallback(a), Span::Fallback(b)) => a.eq(b),
    @@ -1381,7 +1528,7 @@
             }
         }
     
    -    pub fn source_text(&self) -> Option<String> {
    +    pub(crate) fn source_text(&self) -> Option<String> {
             match self {
                 #[cfg(not(no_source_text))]
                 Span::Compiler(s) => s.source_text(),
    @@ -1394,7 +1541,7 @@
         fn unwrap_nightly(self) -> proc_macro::Span {
             match self {
                 Span::Compiler(s) => s,
    -            Span::Fallback(_) => mismatch(),
    +            Span::Fallback(_) => mismatch(line!()),
             }
         }
     }
    @@ -1423,7 +1570,7 @@
     pub(crate) fn debug_span_field_if_nontrivial(debug: &mut fmt::DebugStruct, span: Span) {
         match span {
             Span::Compiler(s) => {
    -            debug.field("span", &s);
    +            debug.field("span", &s);
             }
             Span::Fallback(s) => fallback::debug_span_field_if_nontrivial(debug, s),
         }
    @@ -1436,7 +1583,7 @@
     }
     
     impl Group {
    -    pub fn new(delimiter: Delimiter, stream: TokenStream) -> Self {
    +    pub(crate) fn new(delimiter: Delimiter, stream: TokenStream) -> Self {
             match stream {
                 TokenStream::Compiler(tts) => {
                     let delimiter = match delimiter {
    @@ -1453,7 +1600,7 @@
             }
         }
     
    -    pub fn delimiter(&self) -> Delimiter {
    +    pub(crate) fn delimiter(&self) -> Delimiter {
             match self {
                 Group::Compiler(g) => match g.delimiter() {
                     proc_macro::Delimiter::Parenthesis => Delimiter::Parenthesis,
    @@ -1465,46 +1612,47 @@
             }
         }
     
    -    pub fn stream(&self) -> TokenStream {
    +    pub(crate) fn stream(&self) -> TokenStream {
             match self {
                 Group::Compiler(g) => TokenStream::Compiler(DeferredTokenStream::new(g.stream())),
                 Group::Fallback(g) => TokenStream::Fallback(g.stream()),
             }
         }
     
    -    pub fn span(&self) -> Span {
    +    pub(crate) fn span(&self) -> Span {
             match self {
                 Group::Compiler(g) => Span::Compiler(g.span()),
                 Group::Fallback(g) => Span::Fallback(g.span()),
             }
         }
     
    -    pub fn span_open(&self) -> Span {
    +    pub(crate) fn span_open(&self) -> Span {
             match self {
                 Group::Compiler(g) => Span::Compiler(g.span_open()),
                 Group::Fallback(g) => Span::Fallback(g.span_open()),
             }
         }
     
    -    pub fn span_close(&self) -> Span {
    +    pub(crate) fn span_close(&self) -> Span {
             match self {
                 Group::Compiler(g) => Span::Compiler(g.span_close()),
                 Group::Fallback(g) => Span::Fallback(g.span_close()),
             }
         }
     
    -    pub fn set_span(&mut self, span: Span) {
    +    pub(crate) fn set_span(&mut self, span: Span) {
             match (self, span) {
                 (Group::Compiler(g), Span::Compiler(s)) => g.set_span(s),
                 (Group::Fallback(g), Span::Fallback(s)) => g.set_span(s),
    -            _ => mismatch(),
    +            (Group::Compiler(_), Span::Fallback(_)) => mismatch(line!()),
    +            (Group::Fallback(_), Span::Compiler(_)) => mismatch(line!()),
             }
         }
     
         fn unwrap_nightly(self) -> proc_macro::Group {
             match self {
                 Group::Compiler(g) => g,
    -            Group::Fallback(_) => mismatch(),
    +            Group::Fallback(_) => mismatch(line!()),
             }
         }
     }
    @@ -1540,49 +1688,59 @@
     }
     
     impl Ident {
    -    pub fn new(string: &str, span: Span) -> Self {
    +    #[track_caller]
    +    pub(crate) fn new_checked(string: &str, span: Span) -> Self {
             match span {
                 Span::Compiler(s) => Ident::Compiler(proc_macro::Ident::new(string, s)),
    -            Span::Fallback(s) => Ident::Fallback(fallback::Ident::new(string, s)),
    +            Span::Fallback(s) => Ident::Fallback(fallback::Ident::new_checked(string, s)),
             }
         }
     
    -    pub fn new_raw(string: &str, span: Span) -> Self {
    +    #[track_caller]
    +    pub(crate) fn new_raw_checked(string: &str, span: Span) -> Self {
             match span {
                 Span::Compiler(s) => Ident::Compiler(proc_macro::Ident::new_raw(string, s)),
    -            Span::Fallback(s) => Ident::Fallback(fallback::Ident::new_raw(string, s)),
    +            Span::Fallback(s) => Ident::Fallback(fallback::Ident::new_raw_checked(string, s)),
             }
         }
     
    -    pub fn span(&self) -> Span {
    +    pub(crate) fn span(&self) -> Span {
             match self {
                 Ident::Compiler(t) => Span::Compiler(t.span()),
                 Ident::Fallback(t) => Span::Fallback(t.span()),
             }
         }
     
    -    pub fn set_span(&mut self, span: Span) {
    +    pub(crate) fn set_span(&mut self, span: Span) {
             match (self, span) {
                 (Ident::Compiler(t), Span::Compiler(s)) => t.set_span(s),
                 (Ident::Fallback(t), Span::Fallback(s)) => t.set_span(s),
    -            _ => mismatch(),
    +            (Ident::Compiler(_), Span::Fallback(_)) => mismatch(line!()),
    +            (Ident::Fallback(_), Span::Compiler(_)) => mismatch(line!()),
             }
         }
     
         fn unwrap_nightly(self) -> proc_macro::Ident {
             match self {
                 Ident::Compiler(s) => s,
    -            Ident::Fallback(_) => mismatch(),
    +            Ident::Fallback(_) => mismatch(line!()),
             }
         }
     }
     
    +impl From<fallback::Ident> for Ident {
    +    fn from(inner: fallback::Ident) -> Self {
    +        Ident::Fallback(inner)
    +    }
    +}
    +
     impl PartialEq for Ident {
         fn eq(&self, other: &Ident) -> bool {
             match (self, other) {
                 (Ident::Compiler(t), Ident::Compiler(o)) => t.to_string() == o.to_string(),
                 (Ident::Fallback(t), Ident::Fallback(o)) => t == o,
    -            _ => mismatch(),
    +            (Ident::Compiler(_), Ident::Fallback(_)) => mismatch(line!()),
    +            (Ident::Fallback(_), Ident::Compiler(_)) => mismatch(line!()),
             }
         }
     }
    @@ -1624,9 +1782,9 @@
         Fallback(fallback::Literal),
     }
     
    -macro_rules! suffixed_numbers {
    +macro_rules! suffixed_numbers {
         ($($name:ident => $kind:ident,)*) => ($(
    -        pub fn $name(n: $kind) -> Literal {
    +        pub(crate) fn $name(n: $kind) -> Literal {
                 if inside_proc_macro() {
                     Literal::Compiler(proc_macro::Literal::$name(n))
                 } else {
    @@ -1636,9 +1794,9 @@
         )*)
     }
     
    -macro_rules! unsuffixed_integers {
    +macro_rules! unsuffixed_integers {
         ($($name:ident => $kind:ident,)*) => ($(
    -        pub fn $name(n: $kind) -> Literal {
    +        pub(crate) fn $name(n: $kind) -> Literal {
                 if inside_proc_macro() {
                     Literal::Compiler(proc_macro::Literal::$name(n))
                 } else {
    @@ -1649,15 +1807,25 @@
     }
     
     impl Literal {
    -    pub unsafe fn from_str_unchecked(repr: &str) -> Self {
    +    pub(crate) fn from_str_checked(repr: &str) -> Result<Self, LexError> {
             if inside_proc_macro() {
    -            Literal::Compiler(proc_macro::Literal::from_str(repr).expect("invalid literal"))
    +            let literal = proc_macro::Literal::from_str_checked(repr)?;
    +            Ok(Literal::Compiler(literal))
             } else {
    -            Literal::Fallback(fallback::Literal::from_str_unchecked(repr))
    +            let literal = fallback::Literal::from_str_checked(repr)?;
    +            Ok(Literal::Fallback(literal))
             }
         }
     
    -    suffixed_numbers! {
    +    pub(crate) unsafe fn from_str_unchecked(repr: &str) -> Self {
    +        if inside_proc_macro() {
    +            Literal::Compiler(proc_macro::Literal::from_str_unchecked(repr))
    +        } else {
    +            Literal::Fallback(unsafe { fallback::Literal::from_str_unchecked(repr) })
    +        }
    +    }
    +
    +    suffixed_numbers! {
             u8_suffixed => u8,
             u16_suffixed => u16,
             u32_suffixed => u32,
    @@ -1675,7 +1843,7 @@
             f64_suffixed => f64,
         }
     
    -    unsuffixed_integers! {
    +    unsuffixed_integers! {
             u8_unsuffixed => u8,
             u16_unsuffixed => u16,
             u32_unsuffixed => u32,
    @@ -1690,7 +1858,7 @@
             isize_unsuffixed => isize,
         }
     
    -    pub fn f32_unsuffixed(f: f32) -> Literal {
    +    pub(crate) fn f32_unsuffixed(f: f32) -> Literal {
             if inside_proc_macro() {
                 Literal::Compiler(proc_macro::Literal::f32_unsuffixed(f))
             } else {
    @@ -1698,7 +1866,7 @@
             }
         }
     
    -    pub fn f64_unsuffixed(f: f64) -> Literal {
    +    pub(crate) fn f64_unsuffixed(f: f64) -> Literal {
             if inside_proc_macro() {
                 Literal::Compiler(proc_macro::Literal::f64_unsuffixed(f))
             } else {
    @@ -1706,23 +1874,42 @@
             }
         }
     
    -    pub fn string(t: &str) -> Literal {
    +    pub(crate) fn string(string: &str) -> Literal {
             if inside_proc_macro() {
    -            Literal::Compiler(proc_macro::Literal::string(t))
    +            Literal::Compiler(proc_macro::Literal::string(string))
             } else {
    -            Literal::Fallback(fallback::Literal::string(t))
    +            Literal::Fallback(fallback::Literal::string(string))
             }
         }
     
    -    pub fn character(t: char) -> Literal {
    +    pub(crate) fn character(ch: char) -> Literal {
             if inside_proc_macro() {
    -            Literal::Compiler(proc_macro::Literal::character(t))
    +            Literal::Compiler(proc_macro::Literal::character(ch))
             } else {
    -            Literal::Fallback(fallback::Literal::character(t))
    +            Literal::Fallback(fallback::Literal::character(ch))
             }
         }
     
    -    pub fn byte_string(bytes: &[u8]) -> Literal {
    +    pub(crate) fn byte_character(byte: u8) -> Literal {
    +        if inside_proc_macro() {
    +            Literal::Compiler({
    +                #[cfg(not(no_literal_byte_character))]
    +                {
    +                    proc_macro::Literal::byte_character(byte)
    +                }
    +
    +                #[cfg(no_literal_byte_character)]
    +                {
    +                    let fallback = fallback::Literal::byte_character(byte);
    +                    proc_macro::Literal::from_str_unchecked(&fallback.repr)
    +                }
    +            })
    +        } else {
    +            Literal::Fallback(fallback::Literal::byte_character(byte))
    +        }
    +    }
    +
    +    pub(crate) fn byte_string(bytes: &[u8]) -> Literal {
             if inside_proc_macro() {
                 Literal::Compiler(proc_macro::Literal::byte_string(bytes))
             } else {
    @@ -1730,22 +1917,42 @@
             }
         }
     
    -    pub fn span(&self) -> Span {
    +    pub(crate) fn c_string(string: &CStr) -> Literal {
    +        if inside_proc_macro() {
    +            Literal::Compiler({
    +                #[cfg(not(no_literal_c_string))]
    +                {
    +                    proc_macro::Literal::c_string(string)
    +                }
    +
    +                #[cfg(no_literal_c_string)]
    +                {
    +                    let fallback = fallback::Literal::c_string(string);
    +                    proc_macro::Literal::from_str_unchecked(&fallback.repr)
    +                }
    +            })
    +        } else {
    +            Literal::Fallback(fallback::Literal::c_string(string))
    +        }
    +    }
    +
    +    pub(crate) fn span(&self) -> Span {
             match self {
                 Literal::Compiler(lit) => Span::Compiler(lit.span()),
                 Literal::Fallback(lit) => Span::Fallback(lit.span()),
             }
         }
     
    -    pub fn set_span(&mut self, span: Span) {
    +    pub(crate) fn set_span(&mut self, span: Span) {
             match (self, span) {
                 (Literal::Compiler(lit), Span::Compiler(s)) => lit.set_span(s),
                 (Literal::Fallback(lit), Span::Fallback(s)) => lit.set_span(s),
    -            _ => mismatch(),
    +            (Literal::Compiler(_), Span::Fallback(_)) => mismatch(line!()),
    +            (Literal::Fallback(_), Span::Compiler(_)) => mismatch(line!()),
             }
         }
     
    -    pub fn subspan<R: RangeBounds<usize>>(&self, range: R) -> Option<Span> {
    +    pub(crate) fn subspan<R: RangeBounds<usize>>(&self, range: R) -> Option<Span> {
             match self {
                 #[cfg(proc_macro_span)]
                 Literal::Compiler(lit) => lit.subspan(range).map(Span::Compiler),
    @@ -1758,7 +1965,7 @@
         fn unwrap_nightly(self) -> proc_macro::Literal {
             match self {
                 Literal::Compiler(s) => s,
    -            Literal::Fallback(_) => mismatch(),
    +            Literal::Fallback(_) => mismatch(line!()),
             }
         }
     }
    @@ -1769,20 +1976,6 @@
         }
     }
     
    -impl FromStr for Literal {
    -    type Err = LexError;
    -
    -    fn from_str(repr: &str) -> Result<Self, Self::Err> {
    -        if inside_proc_macro() {
    -            let literal = proc_macro::Literal::from_str(repr)?;
    -            Ok(Literal::Compiler(literal))
    -        } else {
    -            let literal = fallback::Literal::from_str(repr)?;
    -            Ok(Literal::Fallback(literal))
    -        }
    -    }
    -}
    -
     impl Display for Literal {
         fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
             match self {
    @@ -1800,4 +1993,15 @@
             }
         }
     }
    +
    +#[cfg(span_locations)]
    +pub(crate) fn invalidate_current_thread_spans() {
    +    if inside_proc_macro() {
    +        panic!(
    +            "proc_macro2::extra::invalidate_current_thread_spans is not available in procedural macros"
    +        );
    +    } else {
    +        crate::fallback::invalidate_current_thread_spans();
    +    }
    +}
     
    \ No newline at end of file diff --git a/src/quote/ext.rs.html b/src/quote/ext.rs.html index 96be58c..374b4c1 100644 --- a/src/quote/ext.rs.html +++ b/src/quote/ext.rs.html @@ -1,4 +1,5 @@ -ext.rs - source
    1
    +ext.rs - source

    quote/
    ext.rs

    +1
     2
     3
     4
    @@ -107,8 +108,7 @@
     107
     108
     109
    -110
    -
    use super::ToTokens;
    +110
    use super::ToTokens;
     use core::iter;
     use proc_macro2::{TokenStream, TokenTree};
     
    @@ -138,7 +138,7 @@
         /// }
         ///
         /// let tokens = quote!(#X);
    -    /// assert_eq!(tokens.to_string(), "true false");
    +    /// assert_eq!(tokens.to_string(), "true false");
         /// ```
         fn append_all<I>(&mut self, iter: I)
         where
    diff --git a/src/quote/format.rs.html b/src/quote/format.rs.html
    index dc933b8..176bcd6 100644
    --- a/src/quote/format.rs.html
    +++ b/src/quote/format.rs.html
    @@ -1,4 +1,5 @@
    -format.rs - source
    1
    +format.rs - source

    quote/
    format.rs

    +1
     2
     3
     4
    @@ -165,8 +166,7 @@
     165
     166
     167
    -168
    -
    /// Formatting macro for constructing `Ident`s.
    +168
    /// Formatting macro for constructing `Ident`s.
     ///
     /// <br>
     ///
    @@ -210,10 +210,10 @@
     ///
     /// ```
     /// # use quote::format_ident;
    -/// # let ident = format_ident!("Ident");
    +/// # let ident = format_ident!("Ident");
     /// // If `ident` is an Ident, the span of `my_ident` will be inherited from it.
    -/// let my_ident = format_ident!("My{}{}", ident, "IsCool");
    -/// assert_eq!(my_ident, "MyIdentIsCool");
    +/// let my_ident = format_ident!("My{}{}", ident, "IsCool");
    +/// assert_eq!(my_ident, "MyIdentIsCool");
     /// ```
     ///
     /// Alternatively, the span can be overridden by passing the `span` named
    @@ -221,11 +221,11 @@
     ///
     /// ```
     /// # use quote::format_ident;
    -/// # const IGNORE_TOKENS: &'static str = stringify! {
    +/// # const IGNORE_TOKENS: &'static str = stringify! {
     /// let my_span = /* ... */;
     /// # };
     /// # let my_span = proc_macro2::Span::call_site();
    -/// format_ident!("MyIdent", span = my_span);
    +/// format_ident!("MyIdent", span = my_span);
     /// ```
     ///
     /// [`Span`]: proc_macro2::Span
    @@ -245,14 +245,14 @@
     /// Composing raw and non-raw identifiers:
     /// ```
     /// # use quote::format_ident;
    -/// let my_ident = format_ident!("My{}", "Ident");
    -/// assert_eq!(my_ident, "MyIdent");
    +/// let my_ident = format_ident!("My{}", "Ident");
    +/// assert_eq!(my_ident, "MyIdent");
     ///
    -/// let raw = format_ident!("r#Raw");
    -/// assert_eq!(raw, "r#Raw");
    +/// let raw = format_ident!("r#Raw");
    +/// assert_eq!(raw, "r#Raw");
     ///
    -/// let my_ident_raw = format_ident!("{}Is{}", my_ident, raw);
    -/// assert_eq!(my_ident_raw, "MyIdentIsRaw");
    +/// let my_ident_raw = format_ident!("{}Is{}", my_ident, raw);
    +/// assert_eq!(my_ident_raw, "MyIdentIsRaw");
     /// ```
     ///
     /// Integer formatting options:
    @@ -260,23 +260,23 @@
     /// # use quote::format_ident;
     /// let num: u32 = 10;
     ///
    -/// let decimal = format_ident!("Id_{}", num);
    -/// assert_eq!(decimal, "Id_10");
    +/// let decimal = format_ident!("Id_{}", num);
    +/// assert_eq!(decimal, "Id_10");
     ///
    -/// let octal = format_ident!("Id_{:o}", num);
    -/// assert_eq!(octal, "Id_12");
    +/// let octal = format_ident!("Id_{:o}", num);
    +/// assert_eq!(octal, "Id_12");
     ///
    -/// let binary = format_ident!("Id_{:b}", num);
    -/// assert_eq!(binary, "Id_1010");
    +/// let binary = format_ident!("Id_{:b}", num);
    +/// assert_eq!(binary, "Id_1010");
     ///
    -/// let lower_hex = format_ident!("Id_{:x}", num);
    -/// assert_eq!(lower_hex, "Id_a");
    +/// let lower_hex = format_ident!("Id_{:x}", num);
    +/// assert_eq!(lower_hex, "Id_a");
     ///
    -/// let upper_hex = format_ident!("Id_{:X}", num);
    -/// assert_eq!(upper_hex, "Id_A");
    +/// let upper_hex = format_ident!("Id_{:X}", num);
    +/// assert_eq!(upper_hex, "Id_A");
     /// ```
     #[macro_export]
    -macro_rules! format_ident {
    +macro_rules! format_ident {
         ($fmt:expr) => {
             $crate::format_ident_impl!([
                 $crate::__private::Option::None,
    @@ -294,7 +294,7 @@
     
     #[macro_export]
     #[doc(hidden)]
    -macro_rules! format_ident_impl {
    +macro_rules! format_ident_impl {
         // Final state
         ([$span:expr, $($fmt:tt)*]) => {
             $crate::__private::mk_ident(
    diff --git a/src/quote/ident_fragment.rs.html b/src/quote/ident_fragment.rs.html
    index 882f5f1..d0ac082 100644
    --- a/src/quote/ident_fragment.rs.html
    +++ b/src/quote/ident_fragment.rs.html
    @@ -1,4 +1,5 @@
    -ident_fragment.rs - source
    1
    +ident_fragment.rs - source

    quote/
    ident_fragment.rs

    +1
     2
     3
     4
    @@ -85,8 +86,7 @@
     85
     86
     87
    -88
    -
    use alloc::borrow::Cow;
    +88
    use alloc::borrow::Cow;
     use core::fmt;
     use proc_macro2::{Ident, Span};
     
    @@ -137,7 +137,7 @@
     
         fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
             let id = self.to_string();
    -        if let Some(id) = id.strip_prefix("r#") {
    +        if let Some(id) = id.strip_prefix("r#") {
                 fmt::Display::fmt(id, f)
             } else {
                 fmt::Display::fmt(&id[..], f)
    @@ -145,7 +145,7 @@
         }
     }
     
    -impl<T> IdentFragment for Cow<'_, T>
    +impl<T> IdentFragment for Cow<'_, T>
     where
         T: IdentFragment + ToOwned + ?Sized,
     {
    @@ -160,7 +160,7 @@
     
     // Limited set of types which this is implemented for, as we want to avoid types
     // which will often include non-identifier characters in their `Display` impl.
    -macro_rules! ident_fragment_display {
    +macro_rules! ident_fragment_display {
         ($($T:ty),*) => {
             $(
                 impl IdentFragment for $T {
    diff --git a/src/quote/lib.rs.html b/src/quote/lib.rs.html
    index 43b4e8e..32a8baa 100644
    --- a/src/quote/lib.rs.html
    +++ b/src/quote/lib.rs.html
    @@ -1,4 +1,5 @@
    -lib.rs - source
    1
    +lib.rs - source

    quote/
    lib.rs

    +1
     2
     3
     4
    @@ -1442,7 +1443,26 @@
     1442
     1443
     1444
    -
    //! [![github]](https://github.com/dtolnay/quote)&ensp;[![crates-io]](https://crates.io/crates/quote)&ensp;[![docs-rs]](https://docs.rs/quote)
    +1445
    +1446
    +1447
    +1448
    +1449
    +1450
    +1451
    +1452
    +1453
    +1454
    +1455
    +1456
    +1457
    +1458
    +1459
    +1460
    +1461
    +1462
    +1463
    +1464
    //! [![github]](https://github.com/dtolnay/quote)&ensp;[![crates-io]](https://crates.io/crates/quote)&ensp;[![docs-rs]](https://docs.rs/quote)
     //!
     //! [github]: https://img.shields.io/badge/github-8da0cb?style=for-the-badge&labelColor=555555&logo=github
     //! [crates-io]: https://img.shields.io/badge/crates.io-fc8d62?style=for-the-badge&labelColor=555555&logo=rust
    @@ -1457,17 +1477,17 @@
     //!
     //! Procedural macros in Rust receive a stream of tokens as input, execute
     //! arbitrary Rust code to determine how to manipulate those tokens, and produce
    -//! a stream of tokens to hand back to the compiler to compile into the caller's
    +//! a stream of tokens to hand back to the compiler to compile into the caller's
     //! crate. Quasi-quoting is a solution to one piece of that &mdash; producing
     //! tokens to return to the compiler.
     //!
     //! The idea of quasi-quoting is that we write *code* that we treat as *data*.
     //! Within the `quote!` macro, we can write what looks like code to our text
    -//! editor or IDE. We get all the benefits of the editor's brace matching,
    +//! editor or IDE. We get all the benefits of the editor's brace matching,
     //! syntax highlighting, indentation, and maybe autocompletion. But rather than
     //! compiling that as code into the current crate, we can treat it as data, pass
     //! it around, mutate it, and eventually hand it back to the compiler as tokens
    -//! to compile into the macro caller's crate.
    +//! to compile into the macro caller's crate.
     //!
     //! This crate is motivated by the procedural macro use case, but is a
     //! general-purpose Rust quasi-quoting library and is not specific to procedural
    @@ -1475,7 +1495,7 @@
     //!
     //! ```toml
     //! [dependencies]
    -//! quote = "1.0"
    +//! quote = "1.0"
     //! ```
     //!
     //! <br>
    @@ -1495,16 +1515,16 @@
     //! ```
     //! # use quote::quote;
     //! #
    -//! # let generics = "";
    -//! # let where_clause = "";
    -//! # let field_ty = "";
    -//! # let item_ty = "";
    -//! # let path = "";
    -//! # let value = "";
    +//! # let generics = "";
    +//! # let where_clause = "";
    +//! # let field_ty = "";
    +//! # let item_ty = "";
    +//! # let path = "";
    +//! # let value = "";
     //! #
     //! let tokens = quote! {
     //!     struct SerializeWith #generics #where_clause {
    -//!         value: &'a #field_ty,
    +//!         value: &'a #field_ty,
     //!         phantom: core::marker::PhantomData<#item_ty>,
     //!     }
     //!
    @@ -1536,7 +1556,7 @@
     //! [prettyplease]: https://github.com/dtolnay/prettyplease
     
     // Quote types in rustdoc of other crates get linked to here.
    -#![doc(html_root_url = "https://docs.rs/quote/1.0.33")]
    +#![doc(html_root_url = "https://docs.rs/quote/1.0.37")]
     #![allow(
         clippy::doc_markdown,
         clippy::missing_errors_doc,
    @@ -1548,7 +1568,7 @@
     
     extern crate alloc;
     
    -#[cfg(feature = "proc-macro")]
    +#[cfg(feature = "proc-macro")]
     extern crate proc_macro;
     
     mod ext;
    @@ -1558,7 +1578,7 @@
     
     // Not public API.
     #[doc(hidden)]
    -#[path = "runtime.rs"]
    +#[path = "runtime.rs"]
     pub mod __private;
     
     pub use crate::ext::TokenStreamExt;
    @@ -1569,545 +1589,565 @@
     #[doc(hidden)]
     pub mod spanned;
     
    -/// The whole point.
    -///
    -/// Performs variable interpolation against the input and produces it as
    -/// [`proc_macro2::TokenStream`].
    -///
    -/// Note: for returning tokens to the compiler in a procedural macro, use
    -/// `.into()` on the result to convert to [`proc_macro::TokenStream`].
    -///
    -/// [`TokenStream`]: https://docs.rs/proc-macro2/1.0/proc_macro2/struct.TokenStream.html
    -///
    -/// <br>
    -///
    -/// # Interpolation
    -///
    -/// Variable interpolation is done with `#var` (similar to `$var` in
    -/// `macro_rules!` macros). This grabs the `var` variable that is currently in
    -/// scope and inserts it in that location in the output tokens. Any type
    -/// implementing the [`ToTokens`] trait can be interpolated. This includes most
    -/// Rust primitive types as well as most of the syntax tree types from the [Syn]
    -/// crate.
    -///
    -/// [`ToTokens`]: trait.ToTokens.html
    -/// [Syn]: https://github.com/dtolnay/syn
    -///
    -/// Repetition is done using `#(...)*` or `#(...),*` again similar to
    -/// `macro_rules!`. This iterates through the elements of any variable
    -/// interpolated within the repetition and inserts a copy of the repetition body
    -/// for each one. The variables in an interpolation may be a `Vec`, slice,
    -/// `BTreeSet`, or any `Iterator`.
    -///
    -/// - `#(#var)*` — no separators
    -/// - `#(#var),*` — the character before the asterisk is used as a separator
    -/// - `#( struct #var; )*` — the repetition can contain other tokens
    -/// - `#( #k => println!("{}", #v), )*` — even multiple interpolations
    -///
    -/// <br>
    -///
    -/// # Hygiene
    -///
    -/// Any interpolated tokens preserve the `Span` information provided by their
    -/// `ToTokens` implementation. Tokens that originate within the `quote!`
    -/// invocation are spanned with [`Span::call_site()`].
    -///
    -/// [`Span::call_site()`]: https://docs.rs/proc-macro2/1.0/proc_macro2/struct.Span.html#method.call_site
    -///
    -/// A different span can be provided through the [`quote_spanned!`] macro.
    -///
    -/// [`quote_spanned!`]: macro.quote_spanned.html
    -///
    -/// <br>
    -///
    -/// # Return type
    -///
    -/// The macro evaluates to an expression of type `proc_macro2::TokenStream`.
    -/// Meanwhile Rust procedural macros are expected to return the type
    -/// `proc_macro::TokenStream`.
    -///
    -/// The difference between the two types is that `proc_macro` types are entirely
    -/// specific to procedural macros and cannot ever exist in code outside of a
    -/// procedural macro, while `proc_macro2` types may exist anywhere including
    -/// tests and non-macro code like main.rs and build.rs. This is why even the
    -/// procedural macro ecosystem is largely built around `proc_macro2`, because
    -/// that ensures the libraries are unit testable and accessible in non-macro
    -/// contexts.
    -///
    -/// There is a [`From`]-conversion in both directions so returning the output of
    -/// `quote!` from a procedural macro usually looks like `tokens.into()` or
    -/// `proc_macro::TokenStream::from(tokens)`.
    -///
    -/// [`From`]: https://doc.rust-lang.org/std/convert/trait.From.html
    -///
    -/// <br>
    -///
    -/// # Examples
    -///
    -/// ### Procedural macro
    -///
    -/// The structure of a basic procedural macro is as follows. Refer to the [Syn]
    -/// crate for further useful guidance on using `quote!` as part of a procedural
    -/// macro.
    -///
    -/// [Syn]: https://github.com/dtolnay/syn
    -///
    -/// ```
    -/// # #[cfg(any())]
    -/// extern crate proc_macro;
    -/// # extern crate proc_macro2;
    -///
    -/// # #[cfg(any())]
    -/// use proc_macro::TokenStream;
    -/// # use proc_macro2::TokenStream;
    -/// use quote::quote;
    -///
    -/// # const IGNORE_TOKENS: &'static str = stringify! {
    -/// #[proc_macro_derive(HeapSize)]
    -/// # };
    -/// pub fn derive_heap_size(input: TokenStream) -> TokenStream {
    -///     // Parse the input and figure out what implementation to generate...
    -///     # const IGNORE_TOKENS: &'static str = stringify! {
    -///     let name = /* ... */;
    -///     let expr = /* ... */;
    -///     # };
    -///     #
    -///     # let name = 0;
    -///     # let expr = 0;
    -///
    -///     let expanded = quote! {
    -///         // The generated impl.
    -///         impl heapsize::HeapSize for #name {
    -///             fn heap_size_of_children(&self) -> usize {
    -///                 #expr
    -///             }
    -///         }
    -///     };
    -///
    -///     // Hand the output tokens back to the compiler.
    -///     TokenStream::from(expanded)
    -/// }
    -/// ```
    -///
    -/// <p><br></p>
    -///
    -/// ### Combining quoted fragments
    -///
    -/// Usually you don't end up constructing an entire final `TokenStream` in one
    -/// piece. Different parts may come from different helper functions. The tokens
    -/// produced by `quote!` themselves implement `ToTokens` and so can be
    -/// interpolated into later `quote!` invocations to build up a final result.
    -///
    -/// ```
    -/// # use quote::quote;
    -/// #
    -/// let type_definition = quote! {...};
    -/// let methods = quote! {...};
    -///
    -/// let tokens = quote! {
    -///     #type_definition
    -///     #methods
    -/// };
    -/// ```
    -///
    -/// <p><br></p>
    -///
    -/// ### Constructing identifiers
    -///
    -/// Suppose we have an identifier `ident` which came from somewhere in a macro
    -/// input and we need to modify it in some way for the macro output. Let's
    -/// consider prepending the identifier with an underscore.
    -///
    -/// Simply interpolating the identifier next to an underscore will not have the
    -/// behavior of concatenating them. The underscore and the identifier will
    -/// continue to be two separate tokens as if you had written `_ x`.
    -///
    -/// ```
    -/// # use proc_macro2::{self as syn, Span};
    -/// # use quote::quote;
    -/// #
    -/// # let ident = syn::Ident::new("i", Span::call_site());
    -/// #
    -/// // incorrect
    -/// quote! {
    -///     let mut _#ident = 0;
    -/// }
    -/// # ;
    -/// ```
    -///
    -/// The solution is to build a new identifier token with the correct value. As
    -/// this is such a common case, the [`format_ident!`] macro provides a
    -/// convenient utility for doing so correctly.
    -///
    -/// ```
    -/// # use proc_macro2::{Ident, Span};
    -/// # use quote::{format_ident, quote};
    -/// #
    -/// # let ident = Ident::new("i", Span::call_site());
    -/// #
    -/// let varname = format_ident!("_{}", ident);
    -/// quote! {
    -///     let mut #varname = 0;
    -/// }
    -/// # ;
    -/// ```
    -///
    -/// Alternatively, the APIs provided by Syn and proc-macro2 can be used to
    -/// directly build the identifier. This is roughly equivalent to the above, but
    -/// will not handle `ident` being a raw identifier.
    -///
    -/// ```
    -/// # use proc_macro2::{self as syn, Span};
    -/// # use quote::quote;
    -/// #
    -/// # let ident = syn::Ident::new("i", Span::call_site());
    -/// #
    -/// let concatenated = format!("_{}", ident);
    -/// let varname = syn::Ident::new(&concatenated, ident.span());
    -/// quote! {
    -///     let mut #varname = 0;
    -/// }
    -/// # ;
    -/// ```
    -///
    -/// <p><br></p>
    -///
    -/// ### Making method calls
    -///
    -/// Let's say our macro requires some type specified in the macro input to have
    -/// a constructor called `new`. We have the type in a variable called
    -/// `field_type` of type `syn::Type` and want to invoke the constructor.
    -///
    -/// ```
    -/// # use quote::quote;
    -/// #
    -/// # let field_type = quote!(...);
    -/// #
    -/// // incorrect
    -/// quote! {
    -///     let value = #field_type::new();
    -/// }
    -/// # ;
    -/// ```
    -///
    -/// This works only sometimes. If `field_type` is `String`, the expanded code
    -/// contains `String::new()` which is fine. But if `field_type` is something
    -/// like `Vec<i32>` then the expanded code is `Vec<i32>::new()` which is invalid
    -/// syntax. Ordinarily in handwritten Rust we would write `Vec::<i32>::new()`
    -/// but for macros often the following is more convenient.
    -///
    -/// ```
    -/// # use quote::quote;
    -/// #
    -/// # let field_type = quote!(...);
    -/// #
    -/// quote! {
    -///     let value = <#field_type>::new();
    -/// }
    -/// # ;
    -/// ```
    -///
    -/// This expands to `<Vec<i32>>::new()` which behaves correctly.
    -///
    -/// A similar pattern is appropriate for trait methods.
    -///
    -/// ```
    -/// # use quote::quote;
    -/// #
    -/// # let field_type = quote!(...);
    -/// #
    -/// quote! {
    -///     let value = <#field_type as core::default::Default>::default();
    -/// }
    -/// # ;
    -/// ```
    -///
    -/// <p><br></p>
    -///
    -/// ### Interpolating text inside of doc comments
    -///
    -/// Neither doc comments nor string literals get interpolation behavior in
    -/// quote:
    -///
    -/// ```compile_fail
    -/// quote! {
    -///     /// try to interpolate: #ident
    -///     ///
    -///     /// ...
    -/// }
    -/// ```
    -///
    -/// ```compile_fail
    -/// quote! {
    -///     #[doc = "try to interpolate: #ident"]
    -/// }
    -/// ```
    -///
    -/// Instead the best way to build doc comments that involve variables is by
    -/// formatting the doc string literal outside of quote.
    -///
    -/// ```rust
    -/// # use proc_macro2::{Ident, Span};
    -/// # use quote::quote;
    -/// #
    -/// # const IGNORE: &str = stringify! {
    -/// let msg = format!(...);
    -/// # };
    -/// #
    -/// # let ident = Ident::new("var", Span::call_site());
    -/// # let msg = format!("try to interpolate: {}", ident);
    -/// quote! {
    -///     #[doc = #msg]
    -///     ///
    -///     /// ...
    -/// }
    -/// # ;
    -/// ```
    -///
    -/// <p><br></p>
    -///
    -/// ### Indexing into a tuple struct
    -///
    -/// When interpolating indices of a tuple or tuple struct, we need them not to
    -/// appears suffixed as integer literals by interpolating them as [`syn::Index`]
    -/// instead.
    -///
    -/// [`syn::Index`]: https://docs.rs/syn/1.0/syn/struct.Index.html
    -///
    -/// ```compile_fail
    -/// let i = 0usize..self.fields.len();
    -///
    -/// // expands to 0 + self.0usize.heap_size() + self.1usize.heap_size() + ...
    -/// // which is not valid syntax
    -/// quote! {
    -///     0 #( + self.#i.heap_size() )*
    -/// }
    -/// ```
    -///
    -/// ```
    -/// # use proc_macro2::{Ident, TokenStream};
    -/// # use quote::quote;
    -/// #
    -/// # mod syn {
    -/// #     use proc_macro2::{Literal, TokenStream};
    -/// #     use quote::{ToTokens, TokenStreamExt};
    -/// #
    -/// #     pub struct Index(usize);
    -/// #
    -/// #     impl From<usize> for Index {
    -/// #         fn from(i: usize) -> Self {
    -/// #             Index(i)
    -/// #         }
    -/// #     }
    -/// #
    -/// #     impl ToTokens for Index {
    -/// #         fn to_tokens(&self, tokens: &mut TokenStream) {
    -/// #             tokens.append(Literal::usize_unsuffixed(self.0));
    -/// #         }
    -/// #     }
    -/// # }
    -/// #
    -/// # struct Struct {
    -/// #     fields: Vec<Ident>,
    -/// # }
    -/// #
    -/// # impl Struct {
    -/// #     fn example(&self) -> TokenStream {
    -/// let i = (0..self.fields.len()).map(syn::Index::from);
    -///
    -/// // expands to 0 + self.0.heap_size() + self.1.heap_size() + ...
    -/// quote! {
    -///     0 #( + self.#i.heap_size() )*
    -/// }
    -/// #     }
    -/// # }
    -/// ```
    -#[cfg(doc)]
    -#[macro_export]
    -macro_rules! quote {
    -    ($($tt:tt)*) => {
    -        ...
    -    };
    +macro_rules! __quote {
    +    ($quote:item) => {
    +        /// The whole point.
    +        ///
    +        /// Performs variable interpolation against the input and produces it as
    +        /// [`proc_macro2::TokenStream`].
    +        ///
    +        /// Note: for returning tokens to the compiler in a procedural macro, use
    +        /// `.into()` on the result to convert to [`proc_macro::TokenStream`].
    +        ///
    +        /// [`TokenStream`]: https://docs.rs/proc-macro2/1.0/proc_macro2/struct.TokenStream.html
    +        ///
    +        /// <br>
    +        ///
    +        /// # Interpolation
    +        ///
    +        /// Variable interpolation is done with `#var` (similar to `$var` in
    +        /// `macro_rules!` macros). This grabs the `var` variable that is currently in
    +        /// scope and inserts it in that location in the output tokens. Any type
    +        /// implementing the [`ToTokens`] trait can be interpolated. This includes most
    +        /// Rust primitive types as well as most of the syntax tree types from the [Syn]
    +        /// crate.
    +        ///
    +        /// [`ToTokens`]: trait.ToTokens.html
    +        /// [Syn]: https://github.com/dtolnay/syn
    +        ///
    +        /// Repetition is done using `#(...)*` or `#(...),*` again similar to
    +        /// `macro_rules!`. This iterates through the elements of any variable
    +        /// interpolated within the repetition and inserts a copy of the repetition body
    +        /// for each one. The variables in an interpolation may be a `Vec`, slice,
    +        /// `BTreeSet`, or any `Iterator`.
    +        ///
    +        /// - `#(#var)*` — no separators
    +        /// - `#(#var),*` — the character before the asterisk is used as a separator
    +        /// - `#( struct #var; )*` — the repetition can contain other tokens
    +        /// - `#( #k => println!("{}", #v), )*` — even multiple interpolations
    +        ///
    +        /// <br>
    +        ///
    +        /// # Hygiene
    +        ///
    +        /// Any interpolated tokens preserve the `Span` information provided by their
    +        /// `ToTokens` implementation. Tokens that originate within the `quote!`
    +        /// invocation are spanned with [`Span::call_site()`].
    +        ///
    +        /// [`Span::call_site()`]: https://docs.rs/proc-macro2/1.0/proc_macro2/struct.Span.html#method.call_site
    +        ///
    +        /// A different span can be provided through the [`quote_spanned!`] macro.
    +        ///
    +        /// [`quote_spanned!`]: macro.quote_spanned.html
    +        ///
    +        /// <br>
    +        ///
    +        /// # Return type
    +        ///
    +        /// The macro evaluates to an expression of type `proc_macro2::TokenStream`.
    +        /// Meanwhile Rust procedural macros are expected to return the type
    +        /// `proc_macro::TokenStream`.
    +        ///
    +        /// The difference between the two types is that `proc_macro` types are entirely
    +        /// specific to procedural macros and cannot ever exist in code outside of a
    +        /// procedural macro, while `proc_macro2` types may exist anywhere including
    +        /// tests and non-macro code like main.rs and build.rs. This is why even the
    +        /// procedural macro ecosystem is largely built around `proc_macro2`, because
    +        /// that ensures the libraries are unit testable and accessible in non-macro
    +        /// contexts.
    +        ///
    +        /// There is a [`From`]-conversion in both directions so returning the output of
    +        /// `quote!` from a procedural macro usually looks like `tokens.into()` or
    +        /// `proc_macro::TokenStream::from(tokens)`.
    +        ///
    +        /// [`From`]: https://doc.rust-lang.org/std/convert/trait.From.html
    +        ///
    +        /// <br>
    +        ///
    +        /// # Examples
    +        ///
    +        /// ### Procedural macro
    +        ///
    +        /// The structure of a basic procedural macro is as follows. Refer to the [Syn]
    +        /// crate for further useful guidance on using `quote!` as part of a procedural
    +        /// macro.
    +        ///
    +        /// [Syn]: https://github.com/dtolnay/syn
    +        ///
    +        /// ```
    +        /// # #[cfg(any())]
    +        /// extern crate proc_macro;
    +        /// # extern crate proc_macro2;
    +        ///
    +        /// # #[cfg(any())]
    +        /// use proc_macro::TokenStream;
    +        /// # use proc_macro2::TokenStream;
    +        /// use quote::quote;
    +        ///
    +        /// # const IGNORE_TOKENS: &'static str = stringify! {
    +        /// #[proc_macro_derive(HeapSize)]
    +        /// # };
    +        /// pub fn derive_heap_size(input: TokenStream) -> TokenStream {
    +        ///     // Parse the input and figure out what implementation to generate...
    +        ///     # const IGNORE_TOKENS: &'static str = stringify! {
    +        ///     let name = /* ... */;
    +        ///     let expr = /* ... */;
    +        ///     # };
    +        ///     #
    +        ///     # let name = 0;
    +        ///     # let expr = 0;
    +        ///
    +        ///     let expanded = quote! {
    +        ///         // The generated impl.
    +        ///         impl heapsize::HeapSize for #name {
    +        ///             fn heap_size_of_children(&self) -> usize {
    +        ///                 #expr
    +        ///             }
    +        ///         }
    +        ///     };
    +        ///
    +        ///     // Hand the output tokens back to the compiler.
    +        ///     TokenStream::from(expanded)
    +        /// }
    +        /// ```
    +        ///
    +        /// <p><br></p>
    +        ///
    +        /// ### Combining quoted fragments
    +        ///
    +        /// Usually you don't end up constructing an entire final `TokenStream` in one
    +        /// piece. Different parts may come from different helper functions. The tokens
    +        /// produced by `quote!` themselves implement `ToTokens` and so can be
    +        /// interpolated into later `quote!` invocations to build up a final result.
    +        ///
    +        /// ```
    +        /// # use quote::quote;
    +        /// #
    +        /// let type_definition = quote! {...};
    +        /// let methods = quote! {...};
    +        ///
    +        /// let tokens = quote! {
    +        ///     #type_definition
    +        ///     #methods
    +        /// };
    +        /// ```
    +        ///
    +        /// <p><br></p>
    +        ///
    +        /// ### Constructing identifiers
    +        ///
    +        /// Suppose we have an identifier `ident` which came from somewhere in a macro
    +        /// input and we need to modify it in some way for the macro output. Let's
    +        /// consider prepending the identifier with an underscore.
    +        ///
    +        /// Simply interpolating the identifier next to an underscore will not have the
    +        /// behavior of concatenating them. The underscore and the identifier will
    +        /// continue to be two separate tokens as if you had written `_ x`.
    +        ///
    +        /// ```
    +        /// # use proc_macro2::{self as syn, Span};
    +        /// # use quote::quote;
    +        /// #
    +        /// # let ident = syn::Ident::new("i", Span::call_site());
    +        /// #
    +        /// // incorrect
    +        /// quote! {
    +        ///     let mut _#ident = 0;
    +        /// }
    +        /// # ;
    +        /// ```
    +        ///
    +        /// The solution is to build a new identifier token with the correct value. As
    +        /// this is such a common case, the [`format_ident!`] macro provides a
    +        /// convenient utility for doing so correctly.
    +        ///
    +        /// ```
    +        /// # use proc_macro2::{Ident, Span};
    +        /// # use quote::{format_ident, quote};
    +        /// #
    +        /// # let ident = Ident::new("i", Span::call_site());
    +        /// #
    +        /// let varname = format_ident!("_{}", ident);
    +        /// quote! {
    +        ///     let mut #varname = 0;
    +        /// }
    +        /// # ;
    +        /// ```
    +        ///
    +        /// Alternatively, the APIs provided by Syn and proc-macro2 can be used to
    +        /// directly build the identifier. This is roughly equivalent to the above, but
    +        /// will not handle `ident` being a raw identifier.
    +        ///
    +        /// ```
    +        /// # use proc_macro2::{self as syn, Span};
    +        /// # use quote::quote;
    +        /// #
    +        /// # let ident = syn::Ident::new("i", Span::call_site());
    +        /// #
    +        /// let concatenated = format!("_{}", ident);
    +        /// let varname = syn::Ident::new(&concatenated, ident.span());
    +        /// quote! {
    +        ///     let mut #varname = 0;
    +        /// }
    +        /// # ;
    +        /// ```
    +        ///
    +        /// <p><br></p>
    +        ///
    +        /// ### Making method calls
    +        ///
    +        /// Let's say our macro requires some type specified in the macro input to have
    +        /// a constructor called `new`. We have the type in a variable called
    +        /// `field_type` of type `syn::Type` and want to invoke the constructor.
    +        ///
    +        /// ```
    +        /// # use quote::quote;
    +        /// #
    +        /// # let field_type = quote!(...);
    +        /// #
    +        /// // incorrect
    +        /// quote! {
    +        ///     let value = #field_type::new();
    +        /// }
    +        /// # ;
    +        /// ```
    +        ///
    +        /// This works only sometimes. If `field_type` is `String`, the expanded code
    +        /// contains `String::new()` which is fine. But if `field_type` is something
    +        /// like `Vec<i32>` then the expanded code is `Vec<i32>::new()` which is invalid
    +        /// syntax. Ordinarily in handwritten Rust we would write `Vec::<i32>::new()`
    +        /// but for macros often the following is more convenient.
    +        ///
    +        /// ```
    +        /// # use quote::quote;
    +        /// #
    +        /// # let field_type = quote!(...);
    +        /// #
    +        /// quote! {
    +        ///     let value = <#field_type>::new();
    +        /// }
    +        /// # ;
    +        /// ```
    +        ///
    +        /// This expands to `<Vec<i32>>::new()` which behaves correctly.
    +        ///
    +        /// A similar pattern is appropriate for trait methods.
    +        ///
    +        /// ```
    +        /// # use quote::quote;
    +        /// #
    +        /// # let field_type = quote!(...);
    +        /// #
    +        /// quote! {
    +        ///     let value = <#field_type as core::default::Default>::default();
    +        /// }
    +        /// # ;
    +        /// ```
    +        ///
    +        /// <p><br></p>
    +        ///
    +        /// ### Interpolating text inside of doc comments
    +        ///
    +        /// Neither doc comments nor string literals get interpolation behavior in
    +        /// quote:
    +        ///
    +        /// ```compile_fail
    +        /// quote! {
    +        ///     /// try to interpolate: #ident
    +        ///     ///
    +        ///     /// ...
    +        /// }
    +        /// ```
    +        ///
    +        /// ```compile_fail
    +        /// quote! {
    +        ///     #[doc = "try to interpolate: #ident"]
    +        /// }
    +        /// ```
    +        ///
    +        /// Instead the best way to build doc comments that involve variables is by
    +        /// formatting the doc string literal outside of quote.
    +        ///
    +        /// ```rust
    +        /// # use proc_macro2::{Ident, Span};
    +        /// # use quote::quote;
    +        /// #
    +        /// # const IGNORE: &str = stringify! {
    +        /// let msg = format!(...);
    +        /// # };
    +        /// #
    +        /// # let ident = Ident::new("var", Span::call_site());
    +        /// # let msg = format!("try to interpolate: {}", ident);
    +        /// quote! {
    +        ///     #[doc = #msg]
    +        ///     ///
    +        ///     /// ...
    +        /// }
    +        /// # ;
    +        /// ```
    +        ///
    +        /// <p><br></p>
    +        ///
    +        /// ### Indexing into a tuple struct
    +        ///
    +        /// When interpolating indices of a tuple or tuple struct, we need them not to
    +        /// appears suffixed as integer literals by interpolating them as [`syn::Index`]
    +        /// instead.
    +        ///
    +        /// [`syn::Index`]: https://docs.rs/syn/2.0/syn/struct.Index.html
    +        ///
    +        /// ```compile_fail
    +        /// let i = 0usize..self.fields.len();
    +        ///
    +        /// // expands to 0 + self.0usize.heap_size() + self.1usize.heap_size() + ...
    +        /// // which is not valid syntax
    +        /// quote! {
    +        ///     0 #( + self.#i.heap_size() )*
    +        /// }
    +        /// ```
    +        ///
    +        /// ```
    +        /// # use proc_macro2::{Ident, TokenStream};
    +        /// # use quote::quote;
    +        /// #
    +        /// # mod syn {
    +        /// #     use proc_macro2::{Literal, TokenStream};
    +        /// #     use quote::{ToTokens, TokenStreamExt};
    +        /// #
    +        /// #     pub struct Index(usize);
    +        /// #
    +        /// #     impl From<usize> for Index {
    +        /// #         fn from(i: usize) -> Self {
    +        /// #             Index(i)
    +        /// #         }
    +        /// #     }
    +        /// #
    +        /// #     impl ToTokens for Index {
    +        /// #         fn to_tokens(&self, tokens: &mut TokenStream) {
    +        /// #             tokens.append(Literal::usize_unsuffixed(self.0));
    +        /// #         }
    +        /// #     }
    +        /// # }
    +        /// #
    +        /// # struct Struct {
    +        /// #     fields: Vec<Ident>,
    +        /// # }
    +        /// #
    +        /// # impl Struct {
    +        /// #     fn example(&self) -> TokenStream {
    +        /// let i = (0..self.fields.len()).map(syn::Index::from);
    +        ///
    +        /// // expands to 0 + self.0.heap_size() + self.1.heap_size() + ...
    +        /// quote! {
    +        ///     0 #( + self.#i.heap_size() )*
    +        /// }
    +        /// #     }
    +        /// # }
    +        /// ```
    +        $quote
    +    };
     }
     
    +#[cfg(doc)]
    +__quote![
    +    #[macro_export]
    +    macro_rules! quote {
    +        ($($tt:tt)*) => {
    +            ...
    +        };
    +    }
    +];
    +
     #[cfg(not(doc))]
    -#[macro_export]
    -macro_rules! quote {
    -    () => {
    -        $crate::__private::TokenStream::new()
    -    };
    +__quote![
    +    #[macro_export]
    +    macro_rules! quote {
    +        () => {
    +            $crate::__private::TokenStream::new()
    +        };
     
    -    // Special case rule for a single tt, for performance.
    -    ($tt:tt) => {{
    -        let mut _s = $crate::__private::TokenStream::new();
    -        $crate::quote_token!{$tt _s}
    -        _s
    -    }};
    +        // Special case rule for a single tt, for performance.
    +        ($tt:tt) => {{
    +            let mut _s = $crate::__private::TokenStream::new();
    +            $crate::quote_token!{$tt _s}
    +            _s
    +        }};
     
    -    // Special case rules for two tts, for performance.
    -    (# $var:ident) => {{
    -        let mut _s = $crate::__private::TokenStream::new();
    -        $crate::ToTokens::to_tokens(&$var, &mut _s);
    -        _s
    -    }};
    -    ($tt1:tt $tt2:tt) => {{
    -        let mut _s = $crate::__private::TokenStream::new();
    -        $crate::quote_token!{$tt1 _s}
    -        $crate::quote_token!{$tt2 _s}
    -        _s
    -    }};
    +        // Special case rules for two tts, for performance.
    +        (# $var:ident) => {{
    +            let mut _s = $crate::__private::TokenStream::new();
    +            $crate::ToTokens::to_tokens(&$var, &mut _s);
    +            _s
    +        }};
    +        ($tt1:tt $tt2:tt) => {{
    +            let mut _s = $crate::__private::TokenStream::new();
    +            $crate::quote_token!{$tt1 _s}
    +            $crate::quote_token!{$tt2 _s}
    +            _s
    +        }};
     
    -    // Rule for any other number of tokens.
    -    ($($tt:tt)*) => {{
    -        let mut _s = $crate::__private::TokenStream::new();
    -        $crate::quote_each_token!{_s $($tt)*}
    -        _s
    -    }};
    +        // Rule for any other number of tokens.
    +        ($($tt:tt)*) => {{
    +            let mut _s = $crate::__private::TokenStream::new();
    +            $crate::quote_each_token!{_s $($tt)*}
    +            _s
    +        }};
    +    }
    +];
    +
    +macro_rules! __quote_spanned {
    +    ($quote_spanned:item) => {
    +        /// Same as `quote!`, but applies a given span to all tokens originating within
    +        /// the macro invocation.
    +        ///
    +        /// <br>
    +        ///
    +        /// # Syntax
    +        ///
    +        /// A span expression of type [`Span`], followed by `=>`, followed by the tokens
    +        /// to quote. The span expression should be brief &mdash; use a variable for
    +        /// anything more than a few characters. There should be no space before the
    +        /// `=>` token.
    +        ///
    +        /// [`Span`]: https://docs.rs/proc-macro2/1.0/proc_macro2/struct.Span.html
    +        ///
    +        /// ```
    +        /// # use proc_macro2::Span;
    +        /// # use quote::quote_spanned;
    +        /// #
    +        /// # const IGNORE_TOKENS: &'static str = stringify! {
    +        /// let span = /* ... */;
    +        /// # };
    +        /// # let span = Span::call_site();
    +        /// # let init = 0;
    +        ///
    +        /// // On one line, use parentheses.
    +        /// let tokens = quote_spanned!(span=> Box::into_raw(Box::new(#init)));
    +        ///
    +        /// // On multiple lines, place the span at the top and use braces.
    +        /// let tokens = quote_spanned! {span=>
    +        ///     Box::into_raw(Box::new(#init))
    +        /// };
    +        /// ```
    +        ///
    +        /// The lack of space before the `=>` should look jarring to Rust programmers
    +        /// and this is intentional. The formatting is designed to be visibly
    +        /// off-balance and draw the eye a particular way, due to the span expression
    +        /// being evaluated in the context of the procedural macro and the remaining
    +        /// tokens being evaluated in the generated code.
    +        ///
    +        /// <br>
    +        ///
    +        /// # Hygiene
    +        ///
    +        /// Any interpolated tokens preserve the `Span` information provided by their
    +        /// `ToTokens` implementation. Tokens that originate within the `quote_spanned!`
    +        /// invocation are spanned with the given span argument.
    +        ///
    +        /// <br>
    +        ///
    +        /// # Example
    +        ///
    +        /// The following procedural macro code uses `quote_spanned!` to assert that a
    +        /// particular Rust type implements the [`Sync`] trait so that references can be
    +        /// safely shared between threads.
    +        ///
    +        /// [`Sync`]: https://doc.rust-lang.org/std/marker/trait.Sync.html
    +        ///
    +        /// ```
    +        /// # use quote::{quote_spanned, TokenStreamExt, ToTokens};
    +        /// # use proc_macro2::{Span, TokenStream};
    +        /// #
    +        /// # struct Type;
    +        /// #
    +        /// # impl Type {
    +        /// #     fn span(&self) -> Span {
    +        /// #         Span::call_site()
    +        /// #     }
    +        /// # }
    +        /// #
    +        /// # impl ToTokens for Type {
    +        /// #     fn to_tokens(&self, _tokens: &mut TokenStream) {}
    +        /// # }
    +        /// #
    +        /// # let ty = Type;
    +        /// # let call_site = Span::call_site();
    +        /// #
    +        /// let ty_span = ty.span();
    +        /// let assert_sync = quote_spanned! {ty_span=>
    +        ///     struct _AssertSync where #ty: Sync;
    +        /// };
    +        /// ```
    +        ///
    +        /// If the assertion fails, the user will see an error like the following. The
    +        /// input span of their type is highlighted in the error.
    +        ///
    +        /// ```text
    +        /// error[E0277]: the trait bound `*const (): std::marker::Sync` is not satisfied
    +        ///   --> src/main.rs:10:21
    +        ///    |
    +        /// 10 |     static ref PTR: *const () = &();
    +        ///    |                     ^^^^^^^^^ `*const ()` cannot be shared between threads safely
    +        /// ```
    +        ///
    +        /// In this example it is important for the where-clause to be spanned with the
    +        /// line/column information of the user's input type so that error messages are
    +        /// placed appropriately by the compiler.
    +        $quote_spanned
    +    };
     }
     
    -/// Same as `quote!`, but applies a given span to all tokens originating within
    -/// the macro invocation.
    -///
    -/// <br>
    -///
    -/// # Syntax
    -///
    -/// A span expression of type [`Span`], followed by `=>`, followed by the tokens
    -/// to quote. The span expression should be brief &mdash; use a variable for
    -/// anything more than a few characters. There should be no space before the
    -/// `=>` token.
    -///
    -/// [`Span`]: https://docs.rs/proc-macro2/1.0/proc_macro2/struct.Span.html
    -///
    -/// ```
    -/// # use proc_macro2::Span;
    -/// # use quote::quote_spanned;
    -/// #
    -/// # const IGNORE_TOKENS: &'static str = stringify! {
    -/// let span = /* ... */;
    -/// # };
    -/// # let span = Span::call_site();
    -/// # let init = 0;
    -///
    -/// // On one line, use parentheses.
    -/// let tokens = quote_spanned!(span=> Box::into_raw(Box::new(#init)));
    -///
    -/// // On multiple lines, place the span at the top and use braces.
    -/// let tokens = quote_spanned! {span=>
    -///     Box::into_raw(Box::new(#init))
    -/// };
    -/// ```
    -///
    -/// The lack of space before the `=>` should look jarring to Rust programmers
    -/// and this is intentional. The formatting is designed to be visibly
    -/// off-balance and draw the eye a particular way, due to the span expression
    -/// being evaluated in the context of the procedural macro and the remaining
    -/// tokens being evaluated in the generated code.
    -///
    -/// <br>
    -///
    -/// # Hygiene
    -///
    -/// Any interpolated tokens preserve the `Span` information provided by their
    -/// `ToTokens` implementation. Tokens that originate within the `quote_spanned!`
    -/// invocation are spanned with the given span argument.
    -///
    -/// <br>
    -///
    -/// # Example
    -///
    -/// The following procedural macro code uses `quote_spanned!` to assert that a
    -/// particular Rust type implements the [`Sync`] trait so that references can be
    -/// safely shared between threads.
    -///
    -/// [`Sync`]: https://doc.rust-lang.org/std/marker/trait.Sync.html
    -///
    -/// ```
    -/// # use quote::{quote_spanned, TokenStreamExt, ToTokens};
    -/// # use proc_macro2::{Span, TokenStream};
    -/// #
    -/// # struct Type;
    -/// #
    -/// # impl Type {
    -/// #     fn span(&self) -> Span {
    -/// #         Span::call_site()
    -/// #     }
    -/// # }
    -/// #
    -/// # impl ToTokens for Type {
    -/// #     fn to_tokens(&self, _tokens: &mut TokenStream) {}
    -/// # }
    -/// #
    -/// # let ty = Type;
    -/// # let call_site = Span::call_site();
    -/// #
    -/// let ty_span = ty.span();
    -/// let assert_sync = quote_spanned! {ty_span=>
    -///     struct _AssertSync where #ty: Sync;
    -/// };
    -/// ```
    -///
    -/// If the assertion fails, the user will see an error like the following. The
    -/// input span of their type is highlighted in the error.
    -///
    -/// ```text
    -/// error[E0277]: the trait bound `*const (): std::marker::Sync` is not satisfied
    -///   --> src/main.rs:10:21
    -///    |
    -/// 10 |     static ref PTR: *const () = &();
    -///    |                     ^^^^^^^^^ `*const ()` cannot be shared between threads safely
    -/// ```
    -///
    -/// In this example it is important for the where-clause to be spanned with the
    -/// line/column information of the user's input type so that error messages are
    -/// placed appropriately by the compiler.
    -#[cfg(doc)]
    -#[macro_export]
    -macro_rules! quote_spanned {
    -    ($span:expr=> $($tt:tt)*) => {
    -        ...
    -    };
    -}
    +#[cfg(doc)]
    +__quote_spanned![
    +    #[macro_export]
    +    macro_rules! quote_spanned {
    +        ($span:expr=> $($tt:tt)*) => {
    +            ...
    +        };
    +    }
    +];
     
     #[cfg(not(doc))]
    -#[macro_export]
    -macro_rules! quote_spanned {
    -    ($span:expr=>) => {{
    -        let _: $crate::__private::Span = $crate::__private::get_span($span).__into_span();
    -        $crate::__private::TokenStream::new()
    -    }};
    +__quote_spanned![
    +    #[macro_export]
    +    macro_rules! quote_spanned {
    +        ($span:expr=>) => {{
    +            let _: $crate::__private::Span = $crate::__private::get_span($span).__into_span();
    +            $crate::__private::TokenStream::new()
    +        }};
     
    -    // Special case rule for a single tt, for performance.
    -    ($span:expr=> $tt:tt) => {{
    -        let mut _s = $crate::__private::TokenStream::new();
    -        let _span: $crate::__private::Span = $crate::__private::get_span($span).__into_span();
    -        $crate::quote_token_spanned!{$tt _s _span}
    -        _s
    -    }};
    +        // Special case rule for a single tt, for performance.
    +        ($span:expr=> $tt:tt) => {{
    +            let mut _s = $crate::__private::TokenStream::new();
    +            let _span: $crate::__private::Span = $crate::__private::get_span($span).__into_span();
    +            $crate::quote_token_spanned!{$tt _s _span}
    +            _s
    +        }};
     
    -    // Special case rules for two tts, for performance.
    -    ($span:expr=> # $var:ident) => {{
    -        let mut _s = $crate::__private::TokenStream::new();
    -        let _: $crate::__private::Span = $crate::__private::get_span($span).__into_span();
    -        $crate::ToTokens::to_tokens(&$var, &mut _s);
    -        _s
    -    }};
    -    ($span:expr=> $tt1:tt $tt2:tt) => {{
    -        let mut _s = $crate::__private::TokenStream::new();
    -        let _span: $crate::__private::Span = $crate::__private::get_span($span).__into_span();
    -        $crate::quote_token_spanned!{$tt1 _s _span}
    -        $crate::quote_token_spanned!{$tt2 _s _span}
    -        _s
    -    }};
    +        // Special case rules for two tts, for performance.
    +        ($span:expr=> # $var:ident) => {{
    +            let mut _s = $crate::__private::TokenStream::new();
    +            let _: $crate::__private::Span = $crate::__private::get_span($span).__into_span();
    +            $crate::ToTokens::to_tokens(&$var, &mut _s);
    +            _s
    +        }};
    +        ($span:expr=> $tt1:tt $tt2:tt) => {{
    +            let mut _s = $crate::__private::TokenStream::new();
    +            let _span: $crate::__private::Span = $crate::__private::get_span($span).__into_span();
    +            $crate::quote_token_spanned!{$tt1 _s _span}
    +            $crate::quote_token_spanned!{$tt2 _s _span}
    +            _s
    +        }};
     
    -    // Rule for any other number of tokens.
    -    ($span:expr=> $($tt:tt)*) => {{
    -        let mut _s = $crate::__private::TokenStream::new();
    -        let _span: $crate::__private::Span = $crate::__private::get_span($span).__into_span();
    -        $crate::quote_each_token_spanned!{_s _span $($tt)*}
    -        _s
    -    }};
    -}
    +        // Rule for any other number of tokens.
    +        ($span:expr=> $($tt:tt)*) => {{
    +            let mut _s = $crate::__private::TokenStream::new();
    +            let _span: $crate::__private::Span = $crate::__private::get_span($span).__into_span();
    +            $crate::quote_each_token_spanned!{_s _span $($tt)*}
    +            _s
    +        }};
    +    }
    +];
     
     // Extract the names of all #metavariables and pass them to the $call macro.
     //
    @@ -2117,9 +2157,9 @@
     //       then!(... e);
     #[macro_export]
     #[doc(hidden)]
    -macro_rules! pounded_var_names {
    -    ($call:ident! $extra:tt $($tts:tt)*) => {
    -        $crate::pounded_var_names_with_context!{$call! $extra
    +macro_rules! pounded_var_names {
    +    ($call:ident! $extra:tt $($tts:tt)*) => {
    +        $crate::pounded_var_names_with_context!{$call! $extra
                 (@ $($tts)*)
                 ($($tts)* @)
             }
    @@ -2128,39 +2168,39 @@
     
     #[macro_export]
     #[doc(hidden)]
    -macro_rules! pounded_var_names_with_context {
    -    ($call:ident! $extra:tt ($($b1:tt)*) ($($curr:tt)*)) => {
    +macro_rules! pounded_var_names_with_context {
    +    ($call:ident! $extra:tt ($($b1:tt)*) ($($curr:tt)*)) => {
             $(
    -            $crate::pounded_var_with_context!{$call! $extra $b1 $curr}
    +            $crate::pounded_var_with_context!{$call! $extra $b1 $curr}
             )*
         };
     }
     
     #[macro_export]
     #[doc(hidden)]
    -macro_rules! pounded_var_with_context {
    -    ($call:ident! $extra:tt $b1:tt ( $($inner:tt)* )) => {
    -        $crate::pounded_var_names!{$call! $extra $($inner)*}
    +macro_rules! pounded_var_with_context {
    +    ($call:ident! $extra:tt $b1:tt ( $($inner:tt)* )) => {
    +        $crate::pounded_var_names!{$call! $extra $($inner)*}
         };
     
    -    ($call:ident! $extra:tt $b1:tt [ $($inner:tt)* ]) => {
    -        $crate::pounded_var_names!{$call! $extra $($inner)*}
    +    ($call:ident! $extra:tt $b1:tt [ $($inner:tt)* ]) => {
    +        $crate::pounded_var_names!{$call! $extra $($inner)*}
         };
     
    -    ($call:ident! $extra:tt $b1:tt { $($inner:tt)* }) => {
    -        $crate::pounded_var_names!{$call! $extra $($inner)*}
    +    ($call:ident! $extra:tt $b1:tt { $($inner:tt)* }) => {
    +        $crate::pounded_var_names!{$call! $extra $($inner)*}
         };
     
         ($call:ident!($($extra:tt)*) # $var:ident) => {
             $crate::$call!($($extra)* $var);
         };
     
    -    ($call:ident! $extra:tt $b1:tt $curr:tt) => {};
    +    ($call:ident! $extra:tt $b1:tt $curr:tt) => {};
     }
     
     #[macro_export]
     #[doc(hidden)]
    -macro_rules! quote_bind_into_iter {
    +macro_rules! quote_bind_into_iter {
         ($has_iter:ident $var:ident) => {
             // `mut` may be unused if $var occurs multiple times in the list.
             #[allow(unused_mut)]
    @@ -2171,7 +2211,7 @@
     
     #[macro_export]
     #[doc(hidden)]
    -macro_rules! quote_bind_next_or_break {
    +macro_rules! quote_bind_next_or_break {
         ($var:ident) => {
             let $var = match $var.next() {
                 Some(_x) => $crate::__private::RepInterp(_x),
    @@ -2183,8 +2223,8 @@
     // The obvious way to write this macro is as a tt muncher. This implementation
     // does something more complex for two reasons.
     //
    -//   - With a tt muncher it's easy to hit Rust's built-in recursion_limit, which
    -//     this implementation avoids because it isn't tail recursive.
    +//   - With a tt muncher it's easy to hit Rust's built-in recursion_limit, which
    +//     this implementation avoids because it isn't tail recursive.
     //
     //   - Compile times for a tt muncher are quadratic relative to the length of
     //     the input. This implementation is linear, so it will be faster
    @@ -2250,7 +2290,7 @@
     //     correspond to one of the original input tokens, so turns into nothing.
     #[macro_export]
     #[doc(hidden)]
    -macro_rules! quote_each_token {
    +macro_rules! quote_each_token {
         ($tokens:ident $($tts:tt)*) => {
             $crate::quote_tokens_with_context!{$tokens
                 (@ @ @ @ @ @ $($tts)*)
    @@ -2267,7 +2307,7 @@
     // See the explanation on quote_each_token.
     #[macro_export]
     #[doc(hidden)]
    -macro_rules! quote_each_token_spanned {
    +macro_rules! quote_each_token_spanned {
         ($tokens:ident $span:ident $($tts:tt)*) => {
             $crate::quote_tokens_with_context_spanned!{$tokens $span
                 (@ @ @ @ @ @ $($tts)*)
    @@ -2284,7 +2324,7 @@
     // See the explanation on quote_each_token.
     #[macro_export]
     #[doc(hidden)]
    -macro_rules! quote_tokens_with_context {
    +macro_rules! quote_tokens_with_context {
         ($tokens:ident
             ($($b3:tt)*) ($($b2:tt)*) ($($b1:tt)*)
             ($($curr:tt)*)
    @@ -2299,7 +2339,7 @@
     // See the explanation on quote_each_token.
     #[macro_export]
     #[doc(hidden)]
    -macro_rules! quote_tokens_with_context_spanned {
    +macro_rules! quote_tokens_with_context_spanned {
         ($tokens:ident $span:ident
             ($($b3:tt)*) ($($b2:tt)*) ($($b1:tt)*)
             ($($curr:tt)*)
    @@ -2314,7 +2354,7 @@
     // See the explanation on quote_each_token.
     #[macro_export]
     #[doc(hidden)]
    -macro_rules! quote_token_with_context {
    +macro_rules! quote_token_with_context {
         // Unparenthesized `@` indicates this call does not correspond to one of the
         // original input tokens. Ignore it.
         ($tokens:ident $b3:tt $b2:tt $b1:tt @ $a1:tt $a2:tt $a3:tt) => {};
    @@ -2387,7 +2427,7 @@
     // quote_token_with_context.
     #[macro_export]
     #[doc(hidden)]
    -macro_rules! quote_token_with_context_spanned {
    +macro_rules! quote_token_with_context_spanned {
         ($tokens:ident $span:ident $b3:tt $b2:tt $b1:tt @ $a1:tt $a2:tt $a3:tt) => {};
     
         ($tokens:ident $span:ident $b3:tt $b2:tt $b1:tt (#) ( $($inner:tt)* ) * $a3:tt) => {{
    @@ -2438,14 +2478,14 @@
     
     // These rules are ordered by approximate token frequency, at least for the
     // first 10 or so, to improve compile times. Having `ident` first is by far the
    -// most important because it's typically 2-3x more common than the next most
    +// most important because it's typically 2-3x more common than the next most
     // common token.
     //
     // Separately, we put the token being matched in the very front so that failing
     // rules may fail to match as quickly as possible.
     #[macro_export]
     #[doc(hidden)]
    -macro_rules! quote_token {
    +macro_rules! quote_token {
         ($ident:ident $tokens:ident) => {
             $crate::__private::push_ident(&mut $tokens, stringify!($ident));
         };
    @@ -2666,7 +2706,7 @@
     // See the comment above `quote_token!` about the rule ordering.
     #[macro_export]
     #[doc(hidden)]
    -macro_rules! quote_token_spanned {
    +macro_rules! quote_token_spanned {
         ($ident:ident $tokens:ident $span:ident) => {
             $crate::__private::push_ident_spanned(&mut $tokens, $span, stringify!($ident));
         };
    diff --git a/src/quote/runtime.rs.html b/src/quote/runtime.rs.html
    index a3cacd0..3c41016 100644
    --- a/src/quote/runtime.rs.html
    +++ b/src/quote/runtime.rs.html
    @@ -1,4 +1,5 @@
    -runtime.rs - source
    1
    +runtime.rs - source

    quote/
    runtime.rs

    +1
     2
     3
     4
    @@ -527,8 +528,7 @@
     527
     528
     529
    -530
    -
    use self::get_span::{GetSpan, GetSpanBase, GetSpanInner};
    +530
    use self::get_span::{GetSpan, GetSpanBase, GetSpanInner};
     use crate::{IdentFragment, ToTokens, TokenStreamExt};
     use core::fmt;
     use core::iter;
    @@ -626,56 +626,56 @@
         /// Extension trait providing the `quote_into_iter` method for types that
         /// can be referenced as an iterator.
         #[doc(hidden)]
    -    pub trait RepAsIteratorExt<'q> {
    +    pub trait RepAsIteratorExt<'q> {
             type Iter: Iterator;
     
    -        fn quote_into_iter(&'q self) -> (Self::Iter, HasIter);
    +        fn quote_into_iter(&'q self) -> (Self::Iter, HasIter);
         }
     
    -    impl<'q, 'a, T: RepAsIteratorExt<'q> + ?Sized> RepAsIteratorExt<'q> for &'a T {
    +    impl<'q, 'a, T: RepAsIteratorExt<'q> + ?Sized> RepAsIteratorExt<'q> for &'a T {
             type Iter = T::Iter;
     
    -        fn quote_into_iter(&'q self) -> (Self::Iter, HasIter) {
    +        fn quote_into_iter(&'q self) -> (Self::Iter, HasIter) {
                 <T as RepAsIteratorExt>::quote_into_iter(*self)
             }
         }
     
    -    impl<'q, 'a, T: RepAsIteratorExt<'q> + ?Sized> RepAsIteratorExt<'q> for &'a mut T {
    +    impl<'q, 'a, T: RepAsIteratorExt<'q> + ?Sized> RepAsIteratorExt<'q> for &'a mut T {
             type Iter = T::Iter;
     
    -        fn quote_into_iter(&'q self) -> (Self::Iter, HasIter) {
    +        fn quote_into_iter(&'q self) -> (Self::Iter, HasIter) {
                 <T as RepAsIteratorExt>::quote_into_iter(*self)
             }
         }
     
    -    impl<'q, T: 'q> RepAsIteratorExt<'q> for [T] {
    -        type Iter = slice::Iter<'q, T>;
    +    impl<'q, T: 'q> RepAsIteratorExt<'q> for [T] {
    +        type Iter = slice::Iter<'q, T>;
     
    -        fn quote_into_iter(&'q self) -> (Self::Iter, HasIter) {
    +        fn quote_into_iter(&'q self) -> (Self::Iter, HasIter) {
                 (self.iter(), HasIter)
             }
         }
     
    -    impl<'q, T: 'q> RepAsIteratorExt<'q> for Vec<T> {
    -        type Iter = slice::Iter<'q, T>;
    +    impl<'q, T: 'q> RepAsIteratorExt<'q> for Vec<T> {
    +        type Iter = slice::Iter<'q, T>;
     
    -        fn quote_into_iter(&'q self) -> (Self::Iter, HasIter) {
    +        fn quote_into_iter(&'q self) -> (Self::Iter, HasIter) {
                 (self.iter(), HasIter)
             }
         }
     
    -    impl<'q, T: 'q> RepAsIteratorExt<'q> for BTreeSet<T> {
    -        type Iter = btree_set::Iter<'q, T>;
    +    impl<'q, T: 'q> RepAsIteratorExt<'q> for BTreeSet<T> {
    +        type Iter = btree_set::Iter<'q, T>;
     
    -        fn quote_into_iter(&'q self) -> (Self::Iter, HasIter) {
    +        fn quote_into_iter(&'q self) -> (Self::Iter, HasIter) {
                 (self.iter(), HasIter)
             }
         }
     
    -    impl<'q, T: RepAsIteratorExt<'q>> RepAsIteratorExt<'q> for RepInterp<T> {
    +    impl<'q, T: RepAsIteratorExt<'q>> RepAsIteratorExt<'q> for RepInterp<T> {
             type Iter = T::Iter;
     
    -        fn quote_into_iter(&'q self) -> (Self::Iter, HasIter) {
    +        fn quote_into_iter(&'q self) -> (Self::Iter, HasIter) {
                 self.0.quote_into_iter()
             }
         }
    @@ -787,13 +787,13 @@
     
     #[doc(hidden)]
     pub fn parse(tokens: &mut TokenStream, s: &str) {
    -    let s: TokenStream = s.parse().expect("invalid token stream");
    +    let s: TokenStream = s.parse().expect("invalid token stream");
         tokens.extend(iter::once(s));
     }
     
     #[doc(hidden)]
     pub fn parse_spanned(tokens: &mut TokenStream, span: Span, s: &str) {
    -    let s: TokenStream = s.parse().expect("invalid token stream");
    +    let s: TokenStream = s.parse().expect("invalid token stream");
         tokens.extend(s.into_iter().map(|t| respan_token_tree(t, span)));
     }
     
    @@ -827,19 +827,19 @@
     
     #[doc(hidden)]
     pub fn push_lifetime(tokens: &mut TokenStream, lifetime: &str) {
    -    struct Lifetime<'a> {
    -        name: &'a str,
    +    struct Lifetime<'a> {
    +        name: &'a str,
             state: u8,
         }
     
    -    impl<'a> Iterator for Lifetime<'a> {
    +    impl<'a> Iterator for Lifetime<'a> {
             type Item = TokenTree;
     
             fn next(&mut self) -> Option<Self::Item> {
                 match self.state {
                     0 => {
                         self.state = 1;
    -                    Some(TokenTree::Punct(Punct::new('\'', Spacing::Joint)))
    +                    Some(TokenTree::Punct(Punct::new('\'', Spacing::Joint)))
                     }
                     1 => {
                         self.state = 2;
    @@ -858,20 +858,20 @@
     
     #[doc(hidden)]
     pub fn push_lifetime_spanned(tokens: &mut TokenStream, span: Span, lifetime: &str) {
    -    struct Lifetime<'a> {
    -        name: &'a str,
    +    struct Lifetime<'a> {
    +        name: &'a str,
             span: Span,
             state: u8,
         }
     
    -    impl<'a> Iterator for Lifetime<'a> {
    +    impl<'a> Iterator for Lifetime<'a> {
             type Item = TokenTree;
     
             fn next(&mut self) -> Option<Self::Item> {
                 match self.state {
                     0 => {
                         self.state = 1;
    -                    let mut apostrophe = Punct::new('\'', Spacing::Joint);
    +                    let mut apostrophe = Punct::new('\'', Spacing::Joint);
                         apostrophe.set_span(self.span);
                         Some(TokenTree::Punct(apostrophe))
                     }
    @@ -891,7 +891,7 @@
         });
     }
     
    -macro_rules! push_punct {
    +macro_rules! push_punct {
         ($name:ident $spanned:ident $char1:tt) => {
             #[doc(hidden)]
             pub fn $name(tokens: &mut TokenStream) {
    @@ -942,50 +942,50 @@
         };
     }
     
    -push_punct!(push_add push_add_spanned '+');
    -push_punct!(push_add_eq push_add_eq_spanned '+' '=');
    -push_punct!(push_and push_and_spanned '&');
    -push_punct!(push_and_and push_and_and_spanned '&' '&');
    -push_punct!(push_and_eq push_and_eq_spanned '&' '=');
    -push_punct!(push_at push_at_spanned '@');
    -push_punct!(push_bang push_bang_spanned '!');
    -push_punct!(push_caret push_caret_spanned '^');
    -push_punct!(push_caret_eq push_caret_eq_spanned '^' '=');
    -push_punct!(push_colon push_colon_spanned ':');
    -push_punct!(push_colon2 push_colon2_spanned ':' ':');
    -push_punct!(push_comma push_comma_spanned ',');
    -push_punct!(push_div push_div_spanned '/');
    -push_punct!(push_div_eq push_div_eq_spanned '/' '=');
    -push_punct!(push_dot push_dot_spanned '.');
    -push_punct!(push_dot2 push_dot2_spanned '.' '.');
    -push_punct!(push_dot3 push_dot3_spanned '.' '.' '.');
    -push_punct!(push_dot_dot_eq push_dot_dot_eq_spanned '.' '.' '=');
    -push_punct!(push_eq push_eq_spanned '=');
    -push_punct!(push_eq_eq push_eq_eq_spanned '=' '=');
    -push_punct!(push_ge push_ge_spanned '>' '=');
    -push_punct!(push_gt push_gt_spanned '>');
    -push_punct!(push_le push_le_spanned '<' '=');
    -push_punct!(push_lt push_lt_spanned '<');
    -push_punct!(push_mul_eq push_mul_eq_spanned '*' '=');
    -push_punct!(push_ne push_ne_spanned '!' '=');
    -push_punct!(push_or push_or_spanned '|');
    -push_punct!(push_or_eq push_or_eq_spanned '|' '=');
    -push_punct!(push_or_or push_or_or_spanned '|' '|');
    -push_punct!(push_pound push_pound_spanned '#');
    -push_punct!(push_question push_question_spanned '?');
    -push_punct!(push_rarrow push_rarrow_spanned '-' '>');
    -push_punct!(push_larrow push_larrow_spanned '<' '-');
    -push_punct!(push_rem push_rem_spanned '%');
    -push_punct!(push_rem_eq push_rem_eq_spanned '%' '=');
    -push_punct!(push_fat_arrow push_fat_arrow_spanned '=' '>');
    -push_punct!(push_semi push_semi_spanned ';');
    -push_punct!(push_shl push_shl_spanned '<' '<');
    -push_punct!(push_shl_eq push_shl_eq_spanned '<' '<' '=');
    -push_punct!(push_shr push_shr_spanned '>' '>');
    -push_punct!(push_shr_eq push_shr_eq_spanned '>' '>' '=');
    -push_punct!(push_star push_star_spanned '*');
    -push_punct!(push_sub push_sub_spanned '-');
    -push_punct!(push_sub_eq push_sub_eq_spanned '-' '=');
    +push_punct!(push_add push_add_spanned '+');
    +push_punct!(push_add_eq push_add_eq_spanned '+' '=');
    +push_punct!(push_and push_and_spanned '&');
    +push_punct!(push_and_and push_and_and_spanned '&' '&');
    +push_punct!(push_and_eq push_and_eq_spanned '&' '=');
    +push_punct!(push_at push_at_spanned '@');
    +push_punct!(push_bang push_bang_spanned '!');
    +push_punct!(push_caret push_caret_spanned '^');
    +push_punct!(push_caret_eq push_caret_eq_spanned '^' '=');
    +push_punct!(push_colon push_colon_spanned ':');
    +push_punct!(push_colon2 push_colon2_spanned ':' ':');
    +push_punct!(push_comma push_comma_spanned ',');
    +push_punct!(push_div push_div_spanned '/');
    +push_punct!(push_div_eq push_div_eq_spanned '/' '=');
    +push_punct!(push_dot push_dot_spanned '.');
    +push_punct!(push_dot2 push_dot2_spanned '.' '.');
    +push_punct!(push_dot3 push_dot3_spanned '.' '.' '.');
    +push_punct!(push_dot_dot_eq push_dot_dot_eq_spanned '.' '.' '=');
    +push_punct!(push_eq push_eq_spanned '=');
    +push_punct!(push_eq_eq push_eq_eq_spanned '=' '=');
    +push_punct!(push_ge push_ge_spanned '>' '=');
    +push_punct!(push_gt push_gt_spanned '>');
    +push_punct!(push_le push_le_spanned '<' '=');
    +push_punct!(push_lt push_lt_spanned '<');
    +push_punct!(push_mul_eq push_mul_eq_spanned '*' '=');
    +push_punct!(push_ne push_ne_spanned '!' '=');
    +push_punct!(push_or push_or_spanned '|');
    +push_punct!(push_or_eq push_or_eq_spanned '|' '=');
    +push_punct!(push_or_or push_or_or_spanned '|' '|');
    +push_punct!(push_pound push_pound_spanned '#');
    +push_punct!(push_question push_question_spanned '?');
    +push_punct!(push_rarrow push_rarrow_spanned '-' '>');
    +push_punct!(push_larrow push_larrow_spanned '<' '-');
    +push_punct!(push_rem push_rem_spanned '%');
    +push_punct!(push_rem_eq push_rem_eq_spanned '%' '=');
    +push_punct!(push_fat_arrow push_fat_arrow_spanned '=' '>');
    +push_punct!(push_semi push_semi_spanned ';');
    +push_punct!(push_shl push_shl_spanned '<' '<');
    +push_punct!(push_shl_eq push_shl_eq_spanned '<' '<' '=');
    +push_punct!(push_shr push_shr_spanned '>' '>');
    +push_punct!(push_shr_eq push_shr_eq_spanned '>' '>' '=');
    +push_punct!(push_star push_star_spanned '*');
    +push_punct!(push_sub push_sub_spanned '-');
    +push_punct!(push_sub_eq push_sub_eq_spanned '-' '=');
     
     #[doc(hidden)]
     pub fn push_underscore(tokens: &mut TokenStream) {
    @@ -994,7 +994,7 @@
     
     #[doc(hidden)]
     pub fn push_underscore_spanned(tokens: &mut TokenStream, span: Span) {
    -    tokens.append(Ident::new("_", span));
    +    tokens.append(Ident::new("_", span));
     }
     
     // Helper method for constructing identifiers from the `format_ident!` macro,
    @@ -1006,7 +1006,7 @@
     }
     
     fn ident_maybe_raw(id: &str, span: Span) -> Ident {
    -    if let Some(id) = id.strip_prefix("r#") {
    +    if let Some(id) = id.strip_prefix("r#") {
             Ident::new_raw(id, span)
         } else {
             Ident::new(id, span)
    diff --git a/src/quote/spanned.rs.html b/src/quote/spanned.rs.html
    index e0630d2..73a55ad 100644
    --- a/src/quote/spanned.rs.html
    +++ b/src/quote/spanned.rs.html
    @@ -1,4 +1,5 @@
    -spanned.rs - source
    1
    +spanned.rs - source

    quote/
    spanned.rs

    +1
     2
     3
     4
    @@ -47,8 +48,7 @@
     47
     48
     49
    -50
    -
    use crate::ToTokens;
    +50
    use crate::ToTokens;
     use proc_macro2::extra::DelimSpan;
     use proc_macro2::{Span, TokenStream};
     
    diff --git a/src/quote/to_tokens.rs.html b/src/quote/to_tokens.rs.html
    index 305907d..69c4095 100644
    --- a/src/quote/to_tokens.rs.html
    +++ b/src/quote/to_tokens.rs.html
    @@ -1,4 +1,5 @@
    -to_tokens.rs - source
    1
    +to_tokens.rs - source

    quote/
    to_tokens.rs

    +1
     2
     3
     4
    @@ -207,11 +208,77 @@
     207
     208
     209
    -
    use super::TokenStreamExt;
    +210
    +211
    +212
    +213
    +214
    +215
    +216
    +217
    +218
    +219
    +220
    +221
    +222
    +223
    +224
    +225
    +226
    +227
    +228
    +229
    +230
    +231
    +232
    +233
    +234
    +235
    +236
    +237
    +238
    +239
    +240
    +241
    +242
    +243
    +244
    +245
    +246
    +247
    +248
    +249
    +250
    +251
    +252
    +253
    +254
    +255
    +256
    +257
    +258
    +259
    +260
    +261
    +262
    +263
    +264
    +265
    +266
    +267
    +268
    +269
    +270
    +271
    +272
    +273
    +274
    +275
    use super::TokenStreamExt;
     use alloc::borrow::Cow;
     use alloc::rc::Rc;
     use core::iter;
     use proc_macro2::{Group, Ident, Literal, Punct, Span, TokenStream, TokenTree};
    +use std::ffi::{CStr, CString};
     
     /// Types that can be interpolated inside a `quote!` invocation.
     ///
    @@ -243,8 +310,8 @@
         ///         for (i, segment) in self.segments.iter().enumerate() {
         ///             if i > 0 || self.global {
         ///                 // Double colon `::`
    -    ///                 tokens.append(Punct::new(':', Spacing::Joint));
    -    ///                 tokens.append(Punct::new(':', Spacing::Alone));
    +    ///                 tokens.append(Punct::new(':', Spacing::Joint));
    +    ///                 tokens.append(Punct::new(':', Spacing::Alone));
         ///             }
         ///             segment.to_tokens(tokens);
         ///         }
    @@ -283,19 +350,19 @@
         }
     }
     
    -impl<'a, T: ?Sized + ToTokens> ToTokens for &'a T {
    +impl<'a, T: ?Sized + ToTokens> ToTokens for &'a T {
         fn to_tokens(&self, tokens: &mut TokenStream) {
             (**self).to_tokens(tokens);
         }
     }
     
    -impl<'a, T: ?Sized + ToTokens> ToTokens for &'a mut T {
    +impl<'a, T: ?Sized + ToTokens> ToTokens for &'a mut T {
         fn to_tokens(&self, tokens: &mut TokenStream) {
             (**self).to_tokens(tokens);
         }
     }
     
    -impl<'a, T: ?Sized + ToOwned + ToTokens> ToTokens for Cow<'a, T> {
    +impl<'a, T: ?Sized + ToOwned + ToTokens> ToTokens for Cow<'a, T> {
         fn to_tokens(&self, tokens: &mut TokenStream) {
             (**self).to_tokens(tokens);
         }
    @@ -315,7 +382,7 @@
     
     impl<T: ToTokens> ToTokens for Option<T> {
         fn to_tokens(&self, tokens: &mut TokenStream) {
    -        if let Some(ref t) = *self {
    +        if let Some(t) = self {
                 t.to_tokens(tokens);
             }
         }
    @@ -333,35 +400,88 @@
         }
     }
     
    -macro_rules! primitive {
    -    ($($t:ident => $name:ident)*) => {
    -        $(
    -            impl ToTokens for $t {
    -                fn to_tokens(&self, tokens: &mut TokenStream) {
    -                    tokens.append(Literal::$name(*self));
    -                }
    -            }
    -        )*
    -    };
    +impl ToTokens for i8 {
    +    fn to_tokens(&self, tokens: &mut TokenStream) {
    +        tokens.append(Literal::i8_suffixed(*self));
    +    }
     }
     
    -primitive! {
    -    i8 => i8_suffixed
    -    i16 => i16_suffixed
    -    i32 => i32_suffixed
    -    i64 => i64_suffixed
    -    i128 => i128_suffixed
    -    isize => isize_suffixed
    +impl ToTokens for i16 {
    +    fn to_tokens(&self, tokens: &mut TokenStream) {
    +        tokens.append(Literal::i16_suffixed(*self));
    +    }
    +}
     
    -    u8 => u8_suffixed
    -    u16 => u16_suffixed
    -    u32 => u32_suffixed
    -    u64 => u64_suffixed
    -    u128 => u128_suffixed
    -    usize => usize_suffixed
    +impl ToTokens for i32 {
    +    fn to_tokens(&self, tokens: &mut TokenStream) {
    +        tokens.append(Literal::i32_suffixed(*self));
    +    }
    +}
     
    -    f32 => f32_suffixed
    -    f64 => f64_suffixed
    +impl ToTokens for i64 {
    +    fn to_tokens(&self, tokens: &mut TokenStream) {
    +        tokens.append(Literal::i64_suffixed(*self));
    +    }
    +}
    +
    +impl ToTokens for i128 {
    +    fn to_tokens(&self, tokens: &mut TokenStream) {
    +        tokens.append(Literal::i128_suffixed(*self));
    +    }
    +}
    +
    +impl ToTokens for isize {
    +    fn to_tokens(&self, tokens: &mut TokenStream) {
    +        tokens.append(Literal::isize_suffixed(*self));
    +    }
    +}
    +
    +impl ToTokens for u8 {
    +    fn to_tokens(&self, tokens: &mut TokenStream) {
    +        tokens.append(Literal::u8_suffixed(*self));
    +    }
    +}
    +
    +impl ToTokens for u16 {
    +    fn to_tokens(&self, tokens: &mut TokenStream) {
    +        tokens.append(Literal::u16_suffixed(*self));
    +    }
    +}
    +
    +impl ToTokens for u32 {
    +    fn to_tokens(&self, tokens: &mut TokenStream) {
    +        tokens.append(Literal::u32_suffixed(*self));
    +    }
    +}
    +
    +impl ToTokens for u64 {
    +    fn to_tokens(&self, tokens: &mut TokenStream) {
    +        tokens.append(Literal::u64_suffixed(*self));
    +    }
    +}
    +
    +impl ToTokens for u128 {
    +    fn to_tokens(&self, tokens: &mut TokenStream) {
    +        tokens.append(Literal::u128_suffixed(*self));
    +    }
    +}
    +
    +impl ToTokens for usize {
    +    fn to_tokens(&self, tokens: &mut TokenStream) {
    +        tokens.append(Literal::usize_suffixed(*self));
    +    }
    +}
    +
    +impl ToTokens for f32 {
    +    fn to_tokens(&self, tokens: &mut TokenStream) {
    +        tokens.append(Literal::f32_suffixed(*self));
    +    }
    +}
    +
    +impl ToTokens for f64 {
    +    fn to_tokens(&self, tokens: &mut TokenStream) {
    +        tokens.append(Literal::f64_suffixed(*self));
    +    }
     }
     
     impl ToTokens for char {
    @@ -372,11 +492,23 @@
     
     impl ToTokens for bool {
         fn to_tokens(&self, tokens: &mut TokenStream) {
    -        let word = if *self { "true" } else { "false" };
    +        let word = if *self { "true" } else { "false" };
             tokens.append(Ident::new(word, Span::call_site()));
         }
     }
     
    +impl ToTokens for CStr {
    +    fn to_tokens(&self, tokens: &mut TokenStream) {
    +        tokens.append(Literal::c_string(self));
    +    }
    +}
    +
    +impl ToTokens for CString {
    +    fn to_tokens(&self, tokens: &mut TokenStream) {
    +        tokens.append(Literal::c_string(self));
    +    }
    +}
    +
     impl ToTokens for Group {
         fn to_tokens(&self, tokens: &mut TokenStream) {
             tokens.append(self.clone());
    @@ -402,14 +534,14 @@
     }
     
     impl ToTokens for TokenTree {
    -    fn to_tokens(&self, dst: &mut TokenStream) {
    -        dst.append(self.clone());
    +    fn to_tokens(&self, tokens: &mut TokenStream) {
    +        tokens.append(self.clone());
         }
     }
     
     impl ToTokens for TokenStream {
    -    fn to_tokens(&self, dst: &mut TokenStream) {
    -        dst.extend(iter::once(self.clone()));
    +    fn to_tokens(&self, tokens: &mut TokenStream) {
    +        tokens.extend(iter::once(self.clone()));
         }
     
         fn into_token_stream(self) -> TokenStream {
    diff --git a/src/syn/attr.rs.html b/src/syn/attr.rs.html
    index ae83eb4..21a5296 100644
    --- a/src/syn/attr.rs.html
    +++ b/src/syn/attr.rs.html
    @@ -1,4 +1,5 @@
    -attr.rs - source
    1
    +attr.rs - source

    syn/
    attr.rs

    +1
     2
     3
     4
    @@ -660,22 +661,199 @@
     660
     661
     662
    -
    use super::*;
    -use crate::punctuated::Punctuated;
    +663
    +664
    +665
    +666
    +667
    +668
    +669
    +670
    +671
    +672
    +673
    +674
    +675
    +676
    +677
    +678
    +679
    +680
    +681
    +682
    +683
    +684
    +685
    +686
    +687
    +688
    +689
    +690
    +691
    +692
    +693
    +694
    +695
    +696
    +697
    +698
    +699
    +700
    +701
    +702
    +703
    +704
    +705
    +706
    +707
    +708
    +709
    +710
    +711
    +712
    +713
    +714
    +715
    +716
    +717
    +718
    +719
    +720
    +721
    +722
    +723
    +724
    +725
    +726
    +727
    +728
    +729
    +730
    +731
    +732
    +733
    +734
    +735
    +736
    +737
    +738
    +739
    +740
    +741
    +742
    +743
    +744
    +745
    +746
    +747
    +748
    +749
    +750
    +751
    +752
    +753
    +754
    +755
    +756
    +757
    +758
    +759
    +760
    +761
    +762
    +763
    +764
    +765
    +766
    +767
    +768
    +769
    +770
    +771
    +772
    +773
    +774
    +775
    +776
    +777
    +778
    +779
    +780
    +781
    +782
    +783
    +784
    +785
    +786
    +787
    +788
    +789
    +790
    +791
    +792
    +793
    +794
    +795
    +796
    +797
    +798
    +799
    +800
    +801
    +802
    +803
    +804
    +805
    +806
    +807
    +808
    +809
    +810
    +811
    +812
    +813
    +814
    +815
    +816
    +817
    +818
    +819
    +820
    +821
    +822
    +823
    +824
    +825
    +826
    +827
    +828
    +829
    +830
    +831
    +832
    +833
    +834
    +835
    +836
    #[cfg(feature = "parsing")]
    +use crate::error::Error;
    +#[cfg(feature = "parsing")]
    +use crate::error::Result;
    +use crate::expr::Expr;
    +use crate::mac::MacroDelimiter;
    +#[cfg(feature = "parsing")]
    +use crate::meta::{self, ParseNestedMeta};
    +#[cfg(feature = "parsing")]
    +use crate::parse::{Parse, ParseStream, Parser};
    +use crate::path::Path;
    +use crate::token;
     use proc_macro2::TokenStream;
    -use std::iter;
    -use std::slice;
    +#[cfg(feature = "printing")]
    +use std::iter;
    +#[cfg(feature = "printing")]
    +use std::slice;
     
    -#[cfg(feature = "parsing")]
    -use crate::parse::{Parse, ParseBuffer, ParseStream, Parser, Result};
    -#[cfg(feature = "parsing")]
    -use crate::punctuated::Pair;
    -
    -ast_struct! {
    -    /// An attribute like `#[repr(transparent)]`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    +ast_struct! {
    +    /// An attribute, like `#[repr(transparent)]`.
         ///
         /// <br>
         ///
    @@ -685,27 +863,52 @@
         ///
         /// - Outer attributes like `#[repr(transparent)]`. These appear outside or
         ///   in front of the item they describe.
    +    ///
         /// - Inner attributes like `#![feature(proc_macro)]`. These appear inside
         ///   of the item they describe, usually a module.
    -    /// - Outer doc comments like `/// # Example`.
    -    /// - Inner doc comments like `//! Please file an issue`.
    -    /// - Outer block comments `/** # Example */`.
    -    /// - Inner block comments `/*! Please file an issue */`.
    +    ///
    +    /// - Outer one-line doc comments like `/// Example`.
    +    ///
    +    /// - Inner one-line doc comments like `//! Please file an issue`.
    +    ///
    +    /// - Outer documentation blocks `/** Example */`.
    +    ///
    +    /// - Inner documentation blocks `/*! Please file an issue */`.
         ///
         /// The `style` field of type `AttrStyle` distinguishes whether an attribute
    -    /// is outer or inner. Doc comments and block comments are promoted to
    -    /// attributes, as this is how they are processed by the compiler and by
    +    /// is outer or inner.
    +    ///
    +    /// Every attribute has a `path` that indicates the intended interpretation
    +    /// of the rest of the attribute's contents. The path and the optional
    +    /// additional contents are represented together in the `meta` field of the
    +    /// attribute in three possible varieties:
    +    ///
    +    /// - Meta::Path &mdash; attributes whose information content conveys just a
    +    ///   path, for example the `#[test]` attribute.
    +    ///
    +    /// - Meta::List &mdash; attributes that carry arbitrary tokens after the
    +    ///   path, surrounded by a delimiter (parenthesis, bracket, or brace). For
    +    ///   example `#[derive(Copy)]` or `#[precondition(x < 5)]`.
    +    ///
    +    /// - Meta::NameValue &mdash; attributes with an `=` sign after the path,
    +    ///   followed by a Rust expression. For example `#[path =
    +    ///   "sys/windows.rs"]`.
    +    ///
    +    /// All doc comments are represented in the NameValue style with a path of
    +    /// "doc", as this is how they are processed by the compiler and by
         /// `macro_rules!` macros.
         ///
    -    /// The `path` field gives the possibly colon-delimited path against which
    -    /// the attribute is resolved. It is equal to `"doc"` for desugared doc
    -    /// comments. The `tokens` field contains the rest of the attribute body as
    -    /// tokens.
    -    ///
         /// ```text
    -    /// #[derive(Copy)]      #[crate::precondition x < 5]
    -    ///   ^^^^^^~~~~~~         ^^^^^^^^^^^^^^^^^^^ ~~~~~
    -    ///   path  tokens                 path        tokens
    +    /// #[derive(Copy, Clone)]
    +    ///   ~~~~~~Path
    +    ///   ^^^^^^^^^^^^^^^^^^^Meta::List
    +    ///
    +    /// #[path = "sys/windows.rs"]
    +    ///   ~~~~Path
    +    ///   ^^^^^^^^^^^^^^^^^^^^^^^Meta::NameValue
    +    ///
    +    /// #[test]
    +    ///   ^^^^Meta::Path
         /// ```
         ///
         /// <br>
    @@ -718,9 +921,9 @@
         /// [`Attribute::parse_outer`] or [`Attribute::parse_inner`] depending on
         /// which you intend to parse.
         ///
    -    /// [`Parse`]: parse::Parse
    -    /// [`ParseStream::parse`]: parse::ParseBuffer::parse
    -    /// [`ParseStream::call`]: parse::ParseBuffer::call
    +    /// [`Parse`]: crate::parse::Parse
    +    /// [`ParseStream::parse`]: crate::parse::ParseBuffer::parse
    +    /// [`ParseStream::call`]: crate::parse::ParseBuffer::call
         ///
         /// ```
         /// use syn::{Attribute, Ident, Result, Token};
    @@ -728,7 +931,7 @@
         ///
         /// // Parses a unit struct with attributes.
         /// //
    -    /// //     #[path = "s.tmpl"]
    +    /// //     #[path = "s.tmpl"]
         /// //     struct S;
         /// struct UnitStruct {
         ///     attrs: Vec<Attribute>,
    @@ -755,18 +958,13 @@
         ///
         /// The grammar of attributes in Rust is very flexible, which makes the
         /// syntax tree not that useful on its own. In particular, arguments of the
    -    /// attribute are held in an arbitrary `tokens: TokenStream`. Macros are
    -    /// expected to check the `path` of the attribute, decide whether they
    -    /// recognize it, and then parse the remaining tokens according to whatever
    -    /// grammar they wish to require for that kind of attribute.
    +    /// `Meta::List` variety of attribute are held in an arbitrary `tokens:
    +    /// TokenStream`. Macros are expected to check the `path` of the attribute,
    +    /// decide whether they recognize it, and then parse the remaining tokens
    +    /// according to whatever grammar they wish to require for that kind of
    +    /// attribute. Use [`parse_args()`] to parse those tokens into the expected
    +    /// data structure.
         ///
    -    /// If the attribute you are parsing is expected to conform to the
    -    /// conventional structured form of attribute, use [`parse_meta()`] to
    -    /// obtain that structured representation. If the attribute follows some
    -    /// other grammar of its own, use [`parse_args()`] to parse that into the
    -    /// expected data structure.
    -    ///
    -    /// [`parse_meta()`]: Attribute::parse_meta
         /// [`parse_args()`]: Attribute::parse_args
         ///
         /// <p><br></p>
    @@ -775,7 +973,7 @@
         ///
         /// The compiler transforms doc comments, such as `/// comment` and `/*!
         /// comment */`, into attributes before macros are expanded. Each comment is
    -    /// expanded into an attribute of the form `#[doc = r"comment"]`.
    +    /// expanded into an attribute of the form `#[doc = r"comment"]`.
         ///
         /// As an example, the following `mod` items are expanded identically:
         ///
    @@ -794,109 +992,253 @@
         ///     }
         /// };
         /// let attr: ItemMod = parse_quote! {
    -    ///     #[doc = r" Single line doc comments"]
    -    ///     #[doc = r" We write so many!"]
    -    ///     #[doc = r"
    +    ///     #[doc = r" Single line doc comments"]
    +    ///     #[doc = r" We write so many!"]
    +    ///     #[doc = r"
         ///      * Multi-line comments...
         ///      * May span many lines
    -    ///      "]
    +    ///      "]
         ///     mod example {
    -    ///         #![doc = r" Of course, they can be inner too"]
    -    ///         #![doc = r" And fit in a single line "]
    +    ///         #![doc = r" Of course, they can be inner too"]
    +    ///         #![doc = r" And fit in a single line "]
         ///     }
         /// };
         /// assert_eq!(doc, attr);
         /// ```
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct Attribute {
             pub pound_token: Token![#],
             pub style: AttrStyle,
             pub bracket_token: token::Bracket,
    -        pub path: Path,
    -        pub tokens: TokenStream,
    +        pub meta: Meta,
         }
     }
     
     impl Attribute {
    -    /// Parses the content of the attribute, consisting of the path and tokens,
    -    /// as a [`Meta`] if possible.
    +    /// Returns the path that identifies the interpretation of this attribute.
         ///
    -    /// *This function is available only if Syn is built with the `"parsing"`
    -    /// feature.*
    -    #[cfg(feature = "parsing")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    -    pub fn parse_meta(&self) -> Result<Meta> {
    -        fn clone_ident_segment(segment: &PathSegment) -> PathSegment {
    -            PathSegment {
    -                ident: segment.ident.clone(),
    -                arguments: PathArguments::None,
    -            }
    -        }
    -
    -        let path = Path {
    -            leading_colon: self
    -                .path
    -                .leading_colon
    -                .as_ref()
    -                .map(|colon| Token![::](colon.spans)),
    -            segments: self
    -                .path
    -                .segments
    -                .pairs()
    -                .map(|pair| match pair {
    -                    Pair::Punctuated(seg, punct) => {
    -                        Pair::Punctuated(clone_ident_segment(seg), Token![::](punct.spans))
    -                    }
    -                    Pair::End(seg) => Pair::End(clone_ident_segment(seg)),
    -                })
    -                .collect(),
    -        };
    -
    -        let parser = |input: ParseStream| parsing::parse_meta_after_path(path, input);
    -        parse::Parser::parse2(parser, self.tokens.clone())
    +    /// For example this would return the `test` in `#[test]`, the `derive` in
    +    /// `#[derive(Copy)]`, and the `path` in `#[path = "sys/windows.rs"]`.
    +    pub fn path(&self) -> &Path {
    +        self.meta.path()
         }
     
         /// Parse the arguments to the attribute as a syntax tree.
         ///
    -    /// This is similar to `syn::parse2::<T>(attr.tokens)` except that:
    +    /// This is similar to pulling out the `TokenStream` from `Meta::List` and
    +    /// doing `syn::parse2::<T>(meta_list.tokens)`, except that using
    +    /// `parse_args` the error message has a more useful span when `tokens` is
    +    /// empty.
         ///
    -    /// - the surrounding delimiters are *not* included in the input to the
    -    ///   parser; and
    -    /// - the error message has a more useful span when `tokens` is empty.
    +    /// The surrounding delimiters are *not* included in the input to the
    +    /// parser.
         ///
         /// ```text
         /// #[my_attr(value < 5)]
         ///           ^^^^^^^^^ what gets parsed
         /// ```
         ///
    -    /// *This function is available only if Syn is built with the `"parsing"`
    -    /// feature.*
    -    #[cfg(feature = "parsing")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    /// # Example
    +    ///
    +    /// ```
    +    /// use syn::{parse_quote, Attribute, Expr};
    +    ///
    +    /// let attr: Attribute = parse_quote! {
    +    ///     #[precondition(value < 5)]
    +    /// };
    +    ///
    +    /// if attr.path().is_ident("precondition") {
    +    ///     let precondition: Expr = attr.parse_args()?;
    +    ///     // ...
    +    /// }
    +    /// # anyhow::Ok(())
    +    /// ```
    +    #[cfg(feature = "parsing")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         pub fn parse_args<T: Parse>(&self) -> Result<T> {
             self.parse_args_with(T::parse)
         }
     
         /// Parse the arguments to the attribute using the given parser.
         ///
    -    /// *This function is available only if Syn is built with the `"parsing"`
    -    /// feature.*
    -    #[cfg(feature = "parsing")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    /// # Example
    +    ///
    +    /// ```
    +    /// use syn::{parse_quote, Attribute};
    +    ///
    +    /// let attr: Attribute = parse_quote! {
    +    ///     #[inception { #[brrrrrrraaaaawwwwrwrrrmrmrmmrmrmmmmm] }]
    +    /// };
    +    ///
    +    /// let bwom = attr.parse_args_with(Attribute::parse_outer)?;
    +    ///
    +    /// // Attribute does not have a Parse impl, so we couldn't directly do:
    +    /// // let bwom: Attribute = attr.parse_args()?;
    +    /// # anyhow::Ok(())
    +    /// ```
    +    #[cfg(feature = "parsing")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         pub fn parse_args_with<F: Parser>(&self, parser: F) -> Result<F::Output> {
    -        let parser = |input: ParseStream| {
    -            let args = enter_args(self, input)?;
    -            parse::parse_stream(parser, &args)
    -        };
    -        parser.parse2(self.tokens.clone())
    +        match &self.meta {
    +            Meta::Path(path) => Err(crate::error::new2(
    +                path.segments.first().unwrap().ident.span(),
    +                path.segments.last().unwrap().ident.span(),
    +                format!(
    +                    "expected attribute arguments in parentheses: {}[{}(...)]",
    +                    parsing::DisplayAttrStyle(&self.style),
    +                    parsing::DisplayPath(path),
    +                ),
    +            )),
    +            Meta::NameValue(meta) => Err(Error::new(
    +                meta.eq_token.span,
    +                format_args!(
    +                    "expected parentheses: {}[{}(...)]",
    +                    parsing::DisplayAttrStyle(&self.style),
    +                    parsing::DisplayPath(&meta.path),
    +                ),
    +            )),
    +            Meta::List(meta) => meta.parse_args_with(parser),
    +        }
    +    }
    +
    +    /// Parse the arguments to the attribute, expecting it to follow the
    +    /// conventional structure used by most of Rust's built-in attributes.
    +    ///
    +    /// The [*Meta Item Attribute Syntax*][syntax] section in the Rust reference
    +    /// explains the convention in more detail. Not all attributes follow this
    +    /// convention, so [`parse_args()`][Self::parse_args] is available if you
    +    /// need to parse arbitrarily goofy attribute syntax.
    +    ///
    +    /// [syntax]: https://doc.rust-lang.org/reference/attributes.html#meta-item-attribute-syntax
    +    ///
    +    /// # Example
    +    ///
    +    /// We'll parse a struct, and then parse some of Rust's `#[repr]` attribute
    +    /// syntax.
    +    ///
    +    /// ```
    +    /// use syn::{parenthesized, parse_quote, token, ItemStruct, LitInt};
    +    ///
    +    /// let input: ItemStruct = parse_quote! {
    +    ///     #[repr(C, align(4))]
    +    ///     pub struct MyStruct(u16, u32);
    +    /// };
    +    ///
    +    /// let mut repr_c = false;
    +    /// let mut repr_transparent = false;
    +    /// let mut repr_align = None::<usize>;
    +    /// let mut repr_packed = None::<usize>;
    +    /// for attr in &input.attrs {
    +    ///     if attr.path().is_ident("repr") {
    +    ///         attr.parse_nested_meta(|meta| {
    +    ///             // #[repr(C)]
    +    ///             if meta.path.is_ident("C") {
    +    ///                 repr_c = true;
    +    ///                 return Ok(());
    +    ///             }
    +    ///
    +    ///             // #[repr(transparent)]
    +    ///             if meta.path.is_ident("transparent") {
    +    ///                 repr_transparent = true;
    +    ///                 return Ok(());
    +    ///             }
    +    ///
    +    ///             // #[repr(align(N))]
    +    ///             if meta.path.is_ident("align") {
    +    ///                 let content;
    +    ///                 parenthesized!(content in meta.input);
    +    ///                 let lit: LitInt = content.parse()?;
    +    ///                 let n: usize = lit.base10_parse()?;
    +    ///                 repr_align = Some(n);
    +    ///                 return Ok(());
    +    ///             }
    +    ///
    +    ///             // #[repr(packed)] or #[repr(packed(N))], omitted N means 1
    +    ///             if meta.path.is_ident("packed") {
    +    ///                 if meta.input.peek(token::Paren) {
    +    ///                     let content;
    +    ///                     parenthesized!(content in meta.input);
    +    ///                     let lit: LitInt = content.parse()?;
    +    ///                     let n: usize = lit.base10_parse()?;
    +    ///                     repr_packed = Some(n);
    +    ///                 } else {
    +    ///                     repr_packed = Some(1);
    +    ///                 }
    +    ///                 return Ok(());
    +    ///             }
    +    ///
    +    ///             Err(meta.error("unrecognized repr"))
    +    ///         })?;
    +    ///     }
    +    /// }
    +    /// # anyhow::Ok(())
    +    /// ```
    +    ///
    +    /// # Alternatives
    +    ///
    +    /// In some cases, for attributes which have nested layers of structured
    +    /// content, the following less flexible approach might be more convenient:
    +    ///
    +    /// ```
    +    /// # use syn::{parse_quote, ItemStruct};
    +    /// #
    +    /// # let input: ItemStruct = parse_quote! {
    +    /// #     #[repr(C, align(4))]
    +    /// #     pub struct MyStruct(u16, u32);
    +    /// # };
    +    /// #
    +    /// use syn::punctuated::Punctuated;
    +    /// use syn::{parenthesized, token, Error, LitInt, Meta, Token};
    +    ///
    +    /// let mut repr_c = false;
    +    /// let mut repr_transparent = false;
    +    /// let mut repr_align = None::<usize>;
    +    /// let mut repr_packed = None::<usize>;
    +    /// for attr in &input.attrs {
    +    ///     if attr.path().is_ident("repr") {
    +    ///         let nested = attr.parse_args_with(Punctuated::<Meta, Token![,]>::parse_terminated)?;
    +    ///         for meta in nested {
    +    ///             match meta {
    +    ///                 // #[repr(C)]
    +    ///                 Meta::Path(path) if path.is_ident("C") => {
    +    ///                     repr_c = true;
    +    ///                 }
    +    ///
    +    ///                 // #[repr(align(N))]
    +    ///                 Meta::List(meta) if meta.path.is_ident("align") => {
    +    ///                     let lit: LitInt = meta.parse_args()?;
    +    ///                     let n: usize = lit.base10_parse()?;
    +    ///                     repr_align = Some(n);
    +    ///                 }
    +    ///
    +    ///                 /* ... */
    +    ///
    +    ///                 _ => {
    +    ///                     return Err(Error::new_spanned(meta, "unrecognized repr"));
    +    ///                 }
    +    ///             }
    +    ///         }
    +    ///     }
    +    /// }
    +    /// # Ok(())
    +    /// ```
    +    #[cfg(feature = "parsing")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
    +    pub fn parse_nested_meta(
    +        &self,
    +        logic: impl FnMut(ParseNestedMeta) -> Result<()>,
    +    ) -> Result<()> {
    +        self.parse_args_with(meta::parser(logic))
         }
     
         /// Parses zero or more outer attributes from the stream.
         ///
    -    /// *This function is available only if Syn is built with the `"parsing"`
    -    /// feature.*
    -    #[cfg(feature = "parsing")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    /// # Example
    +    ///
    +    /// See
    +    /// [*Parsing from tokens to Attribute*](#parsing-from-tokens-to-attribute).
    +    #[cfg(feature = "parsing")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         pub fn parse_outer(input: ParseStream) -> Result<Vec<Self>> {
             let mut attrs = Vec::new();
             while input.peek(Token![#]) {
    @@ -907,10 +1249,12 @@
     
         /// Parses zero or more inner attributes from the stream.
         ///
    -    /// *This function is available only if Syn is built with the `"parsing"`
    -    /// feature.*
    -    #[cfg(feature = "parsing")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    /// # Example
    +    ///
    +    /// See
    +    /// [*Parsing from tokens to Attribute*](#parsing-from-tokens-to-attribute).
    +    #[cfg(feature = "parsing")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         pub fn parse_inner(input: ParseStream) -> Result<Vec<Self>> {
             let mut attrs = Vec::new();
             parsing::parse_inner(input, &mut attrs)?;
    @@ -918,65 +1262,10 @@
         }
     }
     
    -#[cfg(feature = "parsing")]
    -fn expected_parentheses(attr: &Attribute) -> String {
    -    let style = match attr.style {
    -        AttrStyle::Outer => "#",
    -        AttrStyle::Inner(_) => "#!",
    -    };
    -
    -    let mut path = String::new();
    -    for segment in &attr.path.segments {
    -        if !path.is_empty() || attr.path.leading_colon.is_some() {
    -            path += "::";
    -        }
    -        path += &segment.ident.to_string();
    -    }
    -
    -    format!("{}[{}(...)]", style, path)
    -}
    -
    -#[cfg(feature = "parsing")]
    -fn enter_args<'a>(attr: &Attribute, input: ParseStream<'a>) -> Result<ParseBuffer<'a>> {
    -    if input.is_empty() {
    -        let expected = expected_parentheses(attr);
    -        let msg = format!("expected attribute arguments in parentheses: {}", expected);
    -        return Err(crate::error::new2(
    -            attr.pound_token.span,
    -            attr.bracket_token.span,
    -            msg,
    -        ));
    -    } else if input.peek(Token![=]) {
    -        let expected = expected_parentheses(attr);
    -        let msg = format!("expected parentheses: {}", expected);
    -        return Err(input.error(msg));
    -    };
    -
    -    let content;
    -    if input.peek(token::Paren) {
    -        parenthesized!(content in input);
    -    } else if input.peek(token::Bracket) {
    -        bracketed!(content in input);
    -    } else if input.peek(token::Brace) {
    -        braced!(content in input);
    -    } else {
    -        return Err(input.error("unexpected token in attribute arguments"));
    -    }
    -
    -    if input.is_empty() {
    -        Ok(content)
    -    } else {
    -        Err(input.error("unexpected token in attribute arguments"))
    -    }
    -}
    -
    -ast_enum! {
    +ast_enum! {
         /// Distinguishes between attributes that decorate an item and attributes
         /// that are contained within an item.
         ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    ///
         /// # Outer attributes
         ///
         /// - `#[repr(transparent)]`
    @@ -988,19 +1277,16 @@
         /// - `#![feature(proc_macro)]`
         /// - `//! # Example`
         /// - `/*! Please file an issue */`
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub enum AttrStyle {
             Outer,
             Inner(Token![!]),
         }
     }
     
    -ast_enum_of_structs! {
    +ast_enum! {
         /// Content of a compile-time structured attribute.
         ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    ///
         /// ## Path
         ///
         /// A meta path is like the `test` in `#[test]`.
    @@ -1011,57 +1297,51 @@
         ///
         /// ## NameValue
         ///
    -    /// A name-value meta is like the `path = "..."` in `#[path =
    -    /// "sys/windows.rs"]`.
    +    /// A name-value meta is like the `path = "..."` in `#[path =
    +    /// "sys/windows.rs"]`.
         ///
         /// # Syntax tree enum
         ///
         /// This type is a [syntax tree enum].
         ///
    -    /// [syntax tree enum]: Expr#syntax-tree-enums
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    /// [syntax tree enum]: crate::expr::Expr#syntax-tree-enums
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub enum Meta {
             Path(Path),
     
             /// A structured list within an attribute, like `derive(Copy, Clone)`.
             List(MetaList),
     
    -        /// A name-value pair within an attribute, like `feature = "nightly"`.
    +        /// A name-value pair within an attribute, like `feature = "nightly"`.
             NameValue(MetaNameValue),
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A structured list within an attribute, like `derive(Copy, Clone)`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct MetaList {
             pub path: Path,
    -        pub paren_token: token::Paren,
    -        pub nested: Punctuated<NestedMeta, Token![,]>,
    +        pub delimiter: MacroDelimiter,
    +        pub tokens: TokenStream,
         }
     }
     
    -ast_struct! {
    -    /// A name-value pair within an attribute, like `feature = "nightly"`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +ast_struct! {
    +    /// A name-value pair within an attribute, like `feature = "nightly"`.
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct MetaNameValue {
             pub path: Path,
             pub eq_token: Token![=],
    -        pub lit: Lit,
    +        pub value: Expr,
         }
     }
     
     impl Meta {
    -    /// Returns the identifier that begins this structured meta item.
    +    /// Returns the path that begins this structured meta item.
         ///
         /// For example this would return the `test` in `#[test]`, the `derive` in
    -    /// `#[derive(Copy)]`, and the `path` in `#[path = "sys/windows.rs"]`.
    +    /// `#[derive(Copy)]`, and the `path` in `#[path = "sys/windows.rs"]`.
         pub fn path(&self) -> &Path {
             match self {
                 Meta::Path(path) => path,
    @@ -1069,71 +1349,95 @@
                 Meta::NameValue(meta) => &meta.path,
             }
         }
    -}
     
    -ast_enum_of_structs! {
    -    /// Element of a compile-time attribute list.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    -    pub enum NestedMeta {
    -        /// A structured meta item, like the `Copy` in `#[derive(Copy)]` which
    -        /// would be a nested `Meta::Path`.
    -        Meta(Meta),
    +    /// Error if this is a `Meta::List` or `Meta::NameValue`.
    +    #[cfg(feature = "parsing")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
    +    pub fn require_path_only(&self) -> Result<&Path> {
    +        let error_span = match self {
    +            Meta::Path(path) => return Ok(path),
    +            Meta::List(meta) => meta.delimiter.span().open(),
    +            Meta::NameValue(meta) => meta.eq_token.span,
    +        };
    +        Err(Error::new(error_span, "unexpected token in attribute"))
    +    }
     
    -        /// A Rust literal, like the `"new_name"` in `#[rename("new_name")]`.
    -        Lit(Lit),
    +    /// Error if this is a `Meta::Path` or `Meta::NameValue`.
    +    #[cfg(feature = "parsing")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
    +    pub fn require_list(&self) -> Result<&MetaList> {
    +        match self {
    +            Meta::List(meta) => Ok(meta),
    +            Meta::Path(path) => Err(crate::error::new2(
    +                path.segments.first().unwrap().ident.span(),
    +                path.segments.last().unwrap().ident.span(),
    +                format!(
    +                    "expected attribute arguments in parentheses: `{}(...)`",
    +                    parsing::DisplayPath(path),
    +                ),
    +            )),
    +            Meta::NameValue(meta) => Err(Error::new(meta.eq_token.span, "expected `(`")),
    +        }
    +    }
    +
    +    /// Error if this is a `Meta::Path` or `Meta::List`.
    +    #[cfg(feature = "parsing")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
    +    pub fn require_name_value(&self) -> Result<&MetaNameValue> {
    +        match self {
    +            Meta::NameValue(meta) => Ok(meta),
    +            Meta::Path(path) => Err(crate::error::new2(
    +                path.segments.first().unwrap().ident.span(),
    +                path.segments.last().unwrap().ident.span(),
    +                format!(
    +                    "expected a value for this attribute: `{} = ...`",
    +                    parsing::DisplayPath(path),
    +                ),
    +            )),
    +            Meta::List(meta) => Err(Error::new(meta.delimiter.span().open(), "expected `=`")),
    +        }
         }
     }
     
    -/// Conventional argument type associated with an invocation of an attribute
    -/// macro.
    -///
    -/// For example if we are developing an attribute macro that is intended to be
    -/// invoked on function items as follows:
    -///
    -/// ```
    -/// # const IGNORE: &str = stringify! {
    -/// #[my_attribute(path = "/v1/refresh")]
    -/// # };
    -/// pub fn refresh() {
    -///     /* ... */
    -/// }
    -/// ```
    -///
    -/// The implementation of this macro would want to parse its attribute arguments
    -/// as type `AttributeArgs`.
    -///
    -/// ```
    -/// # extern crate proc_macro;
    -/// #
    -/// use proc_macro::TokenStream;
    -/// use syn::{parse_macro_input, AttributeArgs, ItemFn};
    -///
    -/// # const IGNORE: &str = stringify! {
    -/// #[proc_macro_attribute]
    -/// # };
    -/// pub fn my_attribute(args: TokenStream, input: TokenStream) -> TokenStream {
    -///     let args = parse_macro_input!(args as AttributeArgs);
    -///     let input = parse_macro_input!(input as ItemFn);
    -///
    -///     /* ... */
    -/// #   "".parse().unwrap()
    -/// }
    -/// ```
    -#[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    -pub type AttributeArgs = Vec<NestedMeta>;
    +impl MetaList {
    +    /// See [`Attribute::parse_args`].
    +    #[cfg(feature = "parsing")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
    +    pub fn parse_args<T: Parse>(&self) -> Result<T> {
    +        self.parse_args_with(T::parse)
    +    }
     
    -pub trait FilterAttrs<'a> {
    -    type Ret: Iterator<Item = &'a Attribute>;
    +    /// See [`Attribute::parse_args_with`].
    +    #[cfg(feature = "parsing")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
    +    pub fn parse_args_with<F: Parser>(&self, parser: F) -> Result<F::Output> {
    +        let scope = self.delimiter.span().close();
    +        crate::parse::parse_scoped(parser, scope, self.tokens.clone())
    +    }
     
    -    fn outer(self) -> Self::Ret;
    -    fn inner(self) -> Self::Ret;
    +    /// See [`Attribute::parse_nested_meta`].
    +    #[cfg(feature = "parsing")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
    +    pub fn parse_nested_meta(
    +        &self,
    +        logic: impl FnMut(ParseNestedMeta) -> Result<()>,
    +    ) -> Result<()> {
    +        self.parse_args_with(meta::parser(logic))
    +    }
     }
     
    -impl<'a> FilterAttrs<'a> for &'a [Attribute] {
    -    type Ret = iter::Filter<slice::Iter<'a, Attribute>, fn(&&Attribute) -> bool>;
    +#[cfg(feature = "printing")]
    +pub(crate) trait FilterAttrs<'a> {
    +    type Ret: Iterator<Item = &'a Attribute>;
    +
    +    fn outer(self) -> Self::Ret;
    +    #[cfg(feature = "full")]
    +    fn inner(self) -> Self::Ret;
    +}
    +
    +#[cfg(feature = "printing")]
    +impl<'a> FilterAttrs<'a> for &'a [Attribute] {
    +    type Ret = iter::Filter<slice::Iter<'a, Attribute>, fn(&&Attribute) -> bool>;
     
         fn outer(self) -> Self::Ret {
             fn is_outer(attr: &&Attribute) -> bool {
    @@ -1145,7 +1449,8 @@
             self.iter().filter(is_outer)
         }
     
    -    fn inner(self) -> Self::Ret {
    +    #[cfg(feature = "full")]
    +    fn inner(self) -> Self::Ret {
             fn is_inner(attr: &&Attribute) -> bool {
                 match attr.style {
                     AttrStyle::Inner(_) => true,
    @@ -1156,107 +1461,101 @@
         }
     }
     
    -#[cfg(feature = "parsing")]
    -pub mod parsing {
    -    use super::*;
    -    use crate::ext::IdentExt;
    -    use crate::parse::{Parse, ParseStream, Result};
    +impl From<Path> for Meta {
    +    fn from(meta: Path) -> Meta {
    +        Meta::Path(meta)
    +    }
    +}
     
    -    pub fn parse_inner(input: ParseStream, attrs: &mut Vec<Attribute>) -> Result<()> {
    +impl From<MetaList> for Meta {
    +    fn from(meta: MetaList) -> Meta {
    +        Meta::List(meta)
    +    }
    +}
    +
    +impl From<MetaNameValue> for Meta {
    +    fn from(meta: MetaNameValue) -> Meta {
    +        Meta::NameValue(meta)
    +    }
    +}
    +
    +#[cfg(feature = "parsing")]
    +pub(crate) mod parsing {
    +    use crate::attr::{AttrStyle, Attribute, Meta, MetaList, MetaNameValue};
    +    use crate::error::Result;
    +    use crate::expr::{Expr, ExprLit};
    +    use crate::lit::Lit;
    +    use crate::parse::discouraged::Speculative as _;
    +    use crate::parse::{Parse, ParseStream};
    +    use crate::path::Path;
    +    use crate::{mac, token};
    +    use proc_macro2::Ident;
    +    use std::fmt::{self, Display};
    +
    +    pub(crate) fn parse_inner(input: ParseStream, attrs: &mut Vec<Attribute>) -> Result<()> {
             while input.peek(Token![#]) && input.peek2(Token![!]) {
    -            attrs.push(input.call(parsing::single_parse_inner)?);
    +            attrs.push(input.call(single_parse_inner)?);
             }
             Ok(())
         }
     
    -    pub fn single_parse_inner(input: ParseStream) -> Result<Attribute> {
    +    pub(crate) fn single_parse_inner(input: ParseStream) -> Result<Attribute> {
             let content;
             Ok(Attribute {
                 pound_token: input.parse()?,
                 style: AttrStyle::Inner(input.parse()?),
                 bracket_token: bracketed!(content in input),
    -            path: content.call(Path::parse_mod_style)?,
    -            tokens: content.parse()?,
    +            meta: content.parse()?,
             })
         }
     
    -    pub fn single_parse_outer(input: ParseStream) -> Result<Attribute> {
    +    pub(crate) fn single_parse_outer(input: ParseStream) -> Result<Attribute> {
             let content;
             Ok(Attribute {
                 pound_token: input.parse()?,
                 style: AttrStyle::Outer,
                 bracket_token: bracketed!(content in input),
    -            path: content.call(Path::parse_mod_style)?,
    -            tokens: content.parse()?,
    +            meta: content.parse()?,
             })
         }
     
    -    // Like Path::parse_mod_style but accepts keywords in the path.
    -    fn parse_meta_path(input: ParseStream) -> Result<Path> {
    -        Ok(Path {
    -            leading_colon: input.parse()?,
    -            segments: {
    -                let mut segments = Punctuated::new();
    -                while input.peek(Ident::peek_any) {
    -                    let ident = Ident::parse_any(input)?;
    -                    segments.push_value(PathSegment::from(ident));
    -                    if !input.peek(Token![::]) {
    -                        break;
    -                    }
    -                    let punct = input.parse()?;
    -                    segments.push_punct(punct);
    -                }
    -                if segments.is_empty() {
    -                    return Err(input.error("expected path"));
    -                } else if segments.trailing_punct() {
    -                    return Err(input.error("expected path segment"));
    -                }
    -                segments
    -            },
    -        })
    -    }
    -
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for Meta {
             fn parse(input: ParseStream) -> Result<Self> {
    -            let path = input.call(parse_meta_path)?;
    +            let path = parse_outermost_meta_path(input)?;
                 parse_meta_after_path(path, input)
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for MetaList {
             fn parse(input: ParseStream) -> Result<Self> {
    -            let path = input.call(parse_meta_path)?;
    +            let path = parse_outermost_meta_path(input)?;
                 parse_meta_list_after_path(path, input)
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for MetaNameValue {
             fn parse(input: ParseStream) -> Result<Self> {
    -            let path = input.call(parse_meta_path)?;
    +            let path = parse_outermost_meta_path(input)?;
                 parse_meta_name_value_after_path(path, input)
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    -    impl Parse for NestedMeta {
    -        fn parse(input: ParseStream) -> Result<Self> {
    -            if input.peek(Lit) && !(input.peek(LitBool) && input.peek2(Token![=])) {
    -                input.parse().map(NestedMeta::Lit)
    -            } else if input.peek(Ident::peek_any)
    -                || input.peek(Token![::]) && input.peek3(Ident::peek_any)
    -            {
    -                input.parse().map(NestedMeta::Meta)
    -            } else {
    -                Err(input.error("expected identifier or literal"))
    -            }
    +    // Unlike meta::parse_meta_path which accepts arbitrary keywords in the path,
    +    // only the `unsafe` keyword is accepted as an attribute's outermost path.
    +    fn parse_outermost_meta_path(input: ParseStream) -> Result<Path> {
    +        if input.peek(Token![unsafe]) {
    +            let unsafe_token: Token![unsafe] = input.parse()?;
    +            Ok(Path::from(Ident::new("unsafe", unsafe_token.span)))
    +        } else {
    +            Path::parse_mod_style(input)
             }
         }
     
    -    pub fn parse_meta_after_path(path: Path, input: ParseStream) -> Result<Meta> {
    -        if input.peek(token::Paren) {
    +    pub(crate) fn parse_meta_after_path(path: Path, input: ParseStream) -> Result<Meta> {
    +        if input.peek(token::Paren) || input.peek(token::Bracket) || input.peek(token::Brace) {
                 parse_meta_list_after_path(path, input).map(Meta::List)
             } else if input.peek(Token![=]) {
                 parse_meta_name_value_after_path(path, input).map(Meta::NameValue)
    @@ -1266,30 +1565,71 @@
         }
     
         fn parse_meta_list_after_path(path: Path, input: ParseStream) -> Result<MetaList> {
    -        let content;
    +        let (delimiter, tokens) = mac::parse_delimiter(input)?;
             Ok(MetaList {
                 path,
    -            paren_token: parenthesized!(content in input),
    -            nested: content.parse_terminated(NestedMeta::parse)?,
    +            delimiter,
    +            tokens,
             })
         }
     
         fn parse_meta_name_value_after_path(path: Path, input: ParseStream) -> Result<MetaNameValue> {
    +        let eq_token: Token![=] = input.parse()?;
    +        let ahead = input.fork();
    +        let lit: Option<Lit> = ahead.parse()?;
    +        let value = if let (Some(lit), true) = (lit, ahead.is_empty()) {
    +            input.advance_to(&ahead);
    +            Expr::Lit(ExprLit {
    +                attrs: Vec::new(),
    +                lit,
    +            })
    +        } else if input.peek(Token![#]) && input.peek2(token::Bracket) {
    +            return Err(input.error("unexpected attribute inside of attribute"));
    +        } else {
    +            input.parse()?
    +        };
             Ok(MetaNameValue {
                 path,
    -            eq_token: input.parse()?,
    -            lit: input.parse()?,
    +            eq_token,
    +            value,
             })
         }
    +
    +    pub(super) struct DisplayAttrStyle<'a>(pub &'a AttrStyle);
    +
    +    impl<'a> Display for DisplayAttrStyle<'a> {
    +        fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +            formatter.write_str(match self.0 {
    +                AttrStyle::Outer => "#",
    +                AttrStyle::Inner(_) => "#!",
    +            })
    +        }
    +    }
    +
    +    pub(super) struct DisplayPath<'a>(pub &'a Path);
    +
    +    impl<'a> Display for DisplayPath<'a> {
    +        fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +            for (i, segment) in self.0.segments.iter().enumerate() {
    +                if i > 0 || self.0.leading_colon.is_some() {
    +                    formatter.write_str("::")?;
    +                }
    +                write!(formatter, "{}", segment.ident)?;
    +            }
    +            Ok(())
    +        }
    +    }
     }
     
    -#[cfg(feature = "printing")]
    +#[cfg(feature = "printing")]
     mod printing {
    -    use super::*;
    +    use crate::attr::{AttrStyle, Attribute, Meta, MetaList, MetaNameValue};
    +    use crate::path;
    +    use crate::path::printing::PathStyle;
         use proc_macro2::TokenStream;
         use quote::ToTokens;
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for Attribute {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 self.pound_token.to_tokens(tokens);
    @@ -1297,28 +1637,36 @@
                     b.to_tokens(tokens);
                 }
                 self.bracket_token.surround(tokens, |tokens| {
    -                self.path.to_tokens(tokens);
    -                self.tokens.to_tokens(tokens);
    +                self.meta.to_tokens(tokens);
                 });
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for Meta {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            match self {
    +                Meta::Path(path) => path::printing::print_path(tokens, path, PathStyle::Mod),
    +                Meta::List(meta_list) => meta_list.to_tokens(tokens),
    +                Meta::NameValue(meta_name_value) => meta_name_value.to_tokens(tokens),
    +            }
    +        }
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for MetaList {
             fn to_tokens(&self, tokens: &mut TokenStream) {
    -            self.path.to_tokens(tokens);
    -            self.paren_token.surround(tokens, |tokens| {
    -                self.nested.to_tokens(tokens);
    -            });
    +            path::printing::print_path(tokens, &self.path, PathStyle::Mod);
    +            self.delimiter.surround(tokens, self.tokens.clone());
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for MetaNameValue {
             fn to_tokens(&self, tokens: &mut TokenStream) {
    -            self.path.to_tokens(tokens);
    +            path::printing::print_path(tokens, &self.path, PathStyle::Mod);
                 self.eq_token.to_tokens(tokens);
    -            self.lit.to_tokens(tokens);
    +            self.value.to_tokens(tokens);
             }
         }
     }
    diff --git a/src/syn/await.rs.html b/src/syn/await.rs.html
    deleted file mode 100644
    index 76e86f6..0000000
    --- a/src/syn/await.rs.html
    +++ /dev/null
    @@ -1,5 +0,0 @@
    -await.rs - source
    1
    -2
    -
    // See include!("await.rs") in token.rs.
    -export_token_macro! {[await]}
    -
    \ No newline at end of file diff --git a/src/syn/bigint.rs.html b/src/syn/bigint.rs.html index 83c0dd5..a5aef2e 100644 --- a/src/syn/bigint.rs.html +++ b/src/syn/bigint.rs.html @@ -1,4 +1,5 @@ -bigint.rs - source
    1
    +bigint.rs - source

    syn/
    bigint.rs

    +1
     2
     3
     4
    @@ -63,32 +64,31 @@
     63
     64
     65
    -66
    -
    use std::ops::{AddAssign, MulAssign};
    +66
    use std::ops::{AddAssign, MulAssign};
     
     // For implementing base10_digits() accessor on LitInt.
    -pub struct BigInt {
    +pub(crate) struct BigInt {
         digits: Vec<u8>,
     }
     
     impl BigInt {
    -    pub fn new() -> Self {
    +    pub(crate) fn new() -> Self {
             BigInt { digits: Vec::new() }
         }
     
    -    pub fn to_string(&self) -> String {
    +    pub(crate) fn to_string(&self) -> String {
             let mut repr = String::with_capacity(self.digits.len());
     
             let mut has_nonzero = false;
             for digit in self.digits.iter().rev() {
                 has_nonzero |= *digit != 0;
                 if has_nonzero {
    -                repr.push((*digit + b'0') as char);
    +                repr.push((*digit + b'0') as char);
                 }
             }
     
             if repr.is_empty() {
    -            repr.push('0');
    +            repr.push('0');
             }
     
             repr
    diff --git a/src/syn/buffer.rs.html b/src/syn/buffer.rs.html
    index f72a1aa..9dc2fc3 100644
    --- a/src/syn/buffer.rs.html
    +++ b/src/syn/buffer.rs.html
    @@ -1,4 +1,5 @@
    -buffer.rs - source
    1
    +buffer.rs - source

    syn/
    buffer.rs

    +1
     2
     3
     4
    @@ -396,21 +397,49 @@
     396
     397
     398
    -
    //! A stably addressed token buffer supporting efficient traversal based on a
    +399
    +400
    +401
    +402
    +403
    +404
    +405
    +406
    +407
    +408
    +409
    +410
    +411
    +412
    +413
    +414
    +415
    +416
    +417
    +418
    +419
    +420
    +421
    +422
    +423
    +424
    +425
    +426
    +427
    +428
    +429
    +430
    +431
    +432
    +433
    //! A stably addressed token buffer supporting efficient traversal based on a
     //! cheaply copyable cursor.
    -//!
    -//! *This module is available only if Syn is built with the `"parsing"` feature.*
     
     // This module is heavily commented as it contains most of the unsafe code in
     // Syn, and caution should be used when editing it. The public-facing interface
     // is 100% safe but the implementation is fragile internally.
     
    -#[cfg(all(
    -    not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
    -    feature = "proc-macro"
    -))]
    -use crate::proc_macro as pm;
    -use crate::Lifetime;
    +use crate::Lifetime;
    +use proc_macro2::extra::DelimSpan;
     use proc_macro2::{Delimiter, Group, Ident, Literal, Punct, Spacing, Span, TokenStream, TokenTree};
     use std::cmp::Ordering;
     use std::marker::PhantomData;
    @@ -424,15 +453,14 @@
         Ident(Ident),
         Punct(Punct),
         Literal(Literal),
    -    // End entries contain the offset (negative) to the start of the buffer.
    -    End(isize),
    +    // End entries contain the offset (negative) to the start of the buffer, and
    +    // offset (negative) to the matching Group entry.
    +    End(isize, isize),
     }
     
     /// A buffer that can be efficiently traversed multiple times, unlike
     /// `TokenStream` which requires a deep copy in order to traverse more than
     /// once.
    -///
    -/// *This type is available only if Syn is built with the `"parsing"` feature.*
     pub struct TokenBuffer {
         // NOTE: Do not implement clone on this - while the current design could be
         // cloned, other designs which could be desirable may not be cloneable.
    @@ -448,12 +476,15 @@
                     TokenTree::Literal(literal) => entries.push(Entry::Literal(literal)),
                     TokenTree::Group(group) => {
                         let group_start_index = entries.len();
    -                    entries.push(Entry::End(0)); // we replace this below
    +                    entries.push(Entry::End(0, 0)); // we replace this below
                         Self::recursive_new(entries, group.stream());
                         let group_end_index = entries.len();
    -                    entries.push(Entry::End(-(group_end_index as isize)));
    -                    let group_end_offset = group_end_index - group_start_index;
    -                    entries[group_start_index] = Entry::Group(group, group_end_offset);
    +                    let group_offset = group_end_index - group_start_index;
    +                    entries.push(Entry::End(
    +                        -(group_end_index as isize),
    +                        -(group_offset as isize),
    +                    ));
    +                    entries[group_start_index] = Entry::Group(group, group_offset);
                     }
                 }
             }
    @@ -461,14 +492,9 @@
     
         /// Creates a `TokenBuffer` containing all the tokens from the input
         /// `proc_macro::TokenStream`.
    -    ///
    -    /// *This method is available only if Syn is built with both the `"parsing"` and
    -    /// `"proc-macro"` features.*
    -    #[cfg(all(
    -        not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
    -        feature = "proc-macro"
    -    ))]
    -    pub fn new(stream: pm::TokenStream) -> Self {
    +    #[cfg(feature = "proc-macro")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "proc-macro")))]
    +    pub fn new(stream: proc_macro::TokenStream) -> Self {
             Self::new2(stream.into())
         }
     
    @@ -477,7 +503,7 @@
         pub fn new2(stream: TokenStream) -> Self {
             let mut entries = Vec::new();
             Self::recursive_new(&mut entries, stream);
    -        entries.push(Entry::End(-(entries.len() as isize)));
    +        entries.push(Entry::End(-(entries.len() as isize), 0));
             Self {
                 entries: entries.into_boxed_slice(),
             }
    @@ -499,26 +525,21 @@
     ///
     /// An empty `Cursor` can be created directly, or one may create a `TokenBuffer`
     /// object and get a cursor to its first token with `begin()`.
    -///
    -/// Two cursors are equal if they have the same location in the same input
    -/// stream, and have the same scope.
    -///
    -/// *This type is available only if Syn is built with the `"parsing"` feature.*
    -pub struct Cursor<'a> {
    +pub struct Cursor<'a> {
         // The current entry which the `Cursor` is pointing at.
         ptr: *const Entry,
         // This is the only `Entry::End` object which this cursor is allowed to
         // point at. All other `End` objects are skipped over in `Cursor::create`.
         scope: *const Entry,
    -    // Cursor is covariant in 'a. This field ensures that our pointers are still
    +    // Cursor is covariant in 'a. This field ensures that our pointers are still
         // valid.
    -    marker: PhantomData<&'a Entry>,
    +    marker: PhantomData<&'a Entry>,
     }
     
    -impl<'a> Cursor<'a> {
    +impl<'a> Cursor<'a> {
         /// Creates a cursor referencing a static empty TokenStream.
         pub fn empty() -> Self {
    -        // It's safe in this situation for us to put an `Entry` object in global
    +        // It's safe in this situation for us to put an `Entry` object in global
             // storage, despite it not actually being safe to send across threads
             // (`Ident` is a reference into a thread-local table). This is because
             // this entry never includes a `Ident` object.
    @@ -527,7 +548,7 @@
             // object in global storage.
             struct UnsafeSyncEntry(Entry);
             unsafe impl Sync for UnsafeSyncEntry {}
    -        static EMPTY_ENTRY: UnsafeSyncEntry = UnsafeSyncEntry(Entry::End(0));
    +        static EMPTY_ENTRY: UnsafeSyncEntry = UnsafeSyncEntry(Entry::End(0, 0));
     
             Cursor {
                 ptr: &EMPTY_ENTRY.0,
    @@ -540,15 +561,15 @@
         /// `None`-delimited scopes when the cursor reaches the end of them,
         /// allowing for them to be treated transparently.
         unsafe fn create(mut ptr: *const Entry, scope: *const Entry) -> Self {
    -        // NOTE: If we're looking at a `End`, we want to advance the cursor
    -        // past it, unless `ptr == scope`, which means that we're at the edge of
    -        // our cursor's scope. We should only have `ptr != scope` at the exit
    +        // NOTE: If we're looking at a `End`, we want to advance the cursor
    +        // past it, unless `ptr == scope`, which means that we're at the edge of
    +        // our cursor's scope. We should only have `ptr != scope` at the exit
             // from None-delimited groups entered with `ignore_none`.
    -        while let Entry::End(_) = *ptr {
    +        while let Entry::End(..) = unsafe { &*ptr } {
                 if ptr == scope {
                     break;
                 }
    -            ptr = ptr.add(1);
    +            ptr = unsafe { ptr.add(1) };
             }
     
             Cursor {
    @@ -559,7 +580,7 @@
         }
     
         /// Get the current entry.
    -    fn entry(self) -> &'a Entry {
    +    fn entry(self) -> &'a Entry {
             unsafe { &*self.ptr }
         }
     
    @@ -569,8 +590,8 @@
         ///
         /// If the cursor is looking at an `Entry::Group`, the bumped cursor will
         /// point at the first token in the group (with the same scope end).
    -    unsafe fn bump_ignore_group(self) -> Cursor<'a> {
    -        Cursor::create(self.ptr.offset(1), self.scope)
    +    unsafe fn bump_ignore_group(self) -> Cursor<'a> {
    +        unsafe { Cursor::create(self.ptr.offset(1), self.scope) }
         }
     
         /// While the cursor is looking at a `None`-delimited group, move it to look
    @@ -591,35 +612,13 @@
         /// Checks whether the cursor is currently pointing at the end of its valid
         /// scope.
         pub fn eof(self) -> bool {
    -        // We're at eof if we're at the end of our scope.
    +        // We're at eof if we're at the end of our scope.
             self.ptr == self.scope
         }
     
    -    /// If the cursor is pointing at a `Group` with the given delimiter, returns
    -    /// a cursor into that group and one pointing to the next `TokenTree`.
    -    pub fn group(mut self, delim: Delimiter) -> Option<(Cursor<'a>, Span, Cursor<'a>)> {
    -        // If we're not trying to enter a none-delimited group, we want to
    -        // ignore them. We have to make sure to _not_ ignore them when we want
    -        // to enter them, of course. For obvious reasons.
    -        if delim != Delimiter::None {
    -            self.ignore_none();
    -        }
    -
    -        if let Entry::Group(group, end_offset) = self.entry() {
    -            if group.delimiter() == delim {
    -                let end_of_group = unsafe { self.ptr.add(*end_offset) };
    -                let inside_of_group = unsafe { Cursor::create(self.ptr.add(1), end_of_group) };
    -                let after_group = unsafe { Cursor::create(end_of_group, self.scope) };
    -                return Some((inside_of_group, group.span(), after_group));
    -            }
    -        }
    -
    -        None
    -    }
    -
         /// If the cursor is pointing at a `Ident`, returns it along with a cursor
         /// pointing at the next `TokenTree`.
    -    pub fn ident(mut self) -> Option<(Ident, Cursor<'a>)> {
    +    pub fn ident(mut self) -> Option<(Ident, Cursor<'a>)> {
             self.ignore_none();
             match self.entry() {
                 Entry::Ident(ident) => Some((ident.clone(), unsafe { self.bump_ignore_group() })),
    @@ -629,10 +628,10 @@
     
         /// If the cursor is pointing at a `Punct`, returns it along with a cursor
         /// pointing at the next `TokenTree`.
    -    pub fn punct(mut self) -> Option<(Punct, Cursor<'a>)> {
    +    pub fn punct(mut self) -> Option<(Punct, Cursor<'a>)> {
             self.ignore_none();
             match self.entry() {
    -            Entry::Punct(punct) if punct.as_char() != '\'' => {
    +            Entry::Punct(punct) if punct.as_char() != '\'' => {
                     Some((punct.clone(), unsafe { self.bump_ignore_group() }))
                 }
                 _ => None,
    @@ -641,7 +640,7 @@
     
         /// If the cursor is pointing at a `Literal`, return it along with a cursor
         /// pointing at the next `TokenTree`.
    -    pub fn literal(mut self) -> Option<(Literal, Cursor<'a>)> {
    +    pub fn literal(mut self) -> Option<(Literal, Cursor<'a>)> {
             self.ignore_none();
             match self.entry() {
                 Entry::Literal(literal) => Some((literal.clone(), unsafe { self.bump_ignore_group() })),
    @@ -651,10 +650,10 @@
     
         /// If the cursor is pointing at a `Lifetime`, returns it along with a
         /// cursor pointing at the next `TokenTree`.
    -    pub fn lifetime(mut self) -> Option<(Lifetime, Cursor<'a>)> {
    +    pub fn lifetime(mut self) -> Option<(Lifetime, Cursor<'a>)> {
             self.ignore_none();
             match self.entry() {
    -            Entry::Punct(punct) if punct.as_char() == '\'' && punct.spacing() == Spacing::Joint => {
    +            Entry::Punct(punct) if punct.as_char() == '\'' && punct.spacing() == Spacing::Joint => {
                     let next = unsafe { self.bump_ignore_group() };
                     let (ident, rest) = next.ident()?;
                     let lifetime = Lifetime {
    @@ -667,6 +666,54 @@
             }
         }
     
    +    /// If the cursor is pointing at a `Group` with the given delimiter, returns
    +    /// a cursor into that group and one pointing to the next `TokenTree`.
    +    pub fn group(mut self, delim: Delimiter) -> Option<(Cursor<'a>, DelimSpan, Cursor<'a>)> {
    +        // If we're not trying to enter a none-delimited group, we want to
    +        // ignore them. We have to make sure to _not_ ignore them when we want
    +        // to enter them, of course. For obvious reasons.
    +        if delim != Delimiter::None {
    +            self.ignore_none();
    +        }
    +
    +        if let Entry::Group(group, end_offset) = self.entry() {
    +            if group.delimiter() == delim {
    +                let span = group.delim_span();
    +                let end_of_group = unsafe { self.ptr.add(*end_offset) };
    +                let inside_of_group = unsafe { Cursor::create(self.ptr.add(1), end_of_group) };
    +                let after_group = unsafe { Cursor::create(end_of_group, self.scope) };
    +                return Some((inside_of_group, span, after_group));
    +            }
    +        }
    +
    +        None
    +    }
    +
    +    /// If the cursor is pointing at a `Group`, returns a cursor into the group
    +    /// and one pointing to the next `TokenTree`.
    +    pub fn any_group(self) -> Option<(Cursor<'a>, Delimiter, DelimSpan, Cursor<'a>)> {
    +        if let Entry::Group(group, end_offset) = self.entry() {
    +            let delimiter = group.delimiter();
    +            let span = group.delim_span();
    +            let end_of_group = unsafe { self.ptr.add(*end_offset) };
    +            let inside_of_group = unsafe { Cursor::create(self.ptr.add(1), end_of_group) };
    +            let after_group = unsafe { Cursor::create(end_of_group, self.scope) };
    +            return Some((inside_of_group, delimiter, span, after_group));
    +        }
    +
    +        None
    +    }
    +
    +    pub(crate) fn any_group_token(self) -> Option<(Group, Cursor<'a>)> {
    +        if let Entry::Group(group, end_offset) = self.entry() {
    +            let end_of_group = unsafe { self.ptr.add(*end_offset) };
    +            let after_group = unsafe { Cursor::create(end_of_group, self.scope) };
    +            return Some((group.clone(), after_group));
    +        }
    +
    +        None
    +    }
    +
         /// Copies all remaining tokens visible from this cursor into a
         /// `TokenStream`.
         pub fn token_stream(self) -> TokenStream {
    @@ -686,13 +733,13 @@
         ///
         /// This method does not treat `None`-delimited groups as transparent, and
         /// will return a `Group(None, ..)` if the cursor is looking at one.
    -    pub fn token_tree(self) -> Option<(TokenTree, Cursor<'a>)> {
    +    pub fn token_tree(self) -> Option<(TokenTree, Cursor<'a>)> {
             let (tree, len) = match self.entry() {
                 Entry::Group(group, end_offset) => (group.clone().into(), *end_offset),
                 Entry::Literal(literal) => (literal.clone().into(), 1),
                 Entry::Ident(ident) => (ident.clone().into(), 1),
                 Entry::Punct(punct) => (punct.clone().into(), 1),
    -            Entry::End(_) => return None,
    +            Entry::End(..) => return None,
             };
     
             let rest = unsafe { Cursor::create(self.ptr.add(len), self.scope) };
    @@ -701,26 +748,45 @@
     
         /// Returns the `Span` of the current token, or `Span::call_site()` if this
         /// cursor points to eof.
    -    pub fn span(self) -> Span {
    +    pub fn span(mut self) -> Span {
             match self.entry() {
                 Entry::Group(group, _) => group.span(),
                 Entry::Literal(literal) => literal.span(),
                 Entry::Ident(ident) => ident.span(),
                 Entry::Punct(punct) => punct.span(),
    -            Entry::End(_) => Span::call_site(),
    +            Entry::End(_, offset) => {
    +                self.ptr = unsafe { self.ptr.offset(*offset) };
    +                if let Entry::Group(group, _) = self.entry() {
    +                    group.span_close()
    +                } else {
    +                    Span::call_site()
    +                }
    +            }
             }
         }
     
    -    /// Skip over the next token without cloning it. Returns `None` if this
    -    /// cursor points to eof.
    -    ///
    -    /// This method treats `'lifetimes` as a single token.
    -    pub(crate) fn skip(self) -> Option<Cursor<'a>> {
    -        let len = match self.entry() {
    -            Entry::End(_) => return None,
    +    /// Returns the `Span` of the token immediately prior to the position of
    +    /// this cursor, or of the current token if there is no previous one.
    +    #[cfg(any(feature = "full", feature = "derive"))]
    +    pub(crate) fn prev_span(mut self) -> Span {
    +        if start_of_buffer(self) < self.ptr {
    +            self.ptr = unsafe { self.ptr.offset(-1) };
    +        }
    +        self.span()
    +    }
     
    -            // Treat lifetimes as a single tt for the purposes of 'skip'.
    -            Entry::Punct(punct) if punct.as_char() == '\'' && punct.spacing() == Spacing::Joint => {
    +    /// Skip over the next token that is not a None-delimited group, without
    +    /// cloning it. Returns `None` if this cursor points to eof.
    +    ///
    +    /// This method treats `'lifetimes` as a single token.
    +    pub(crate) fn skip(mut self) -> Option<Cursor<'a>> {
    +        self.ignore_none();
    +
    +        let len = match self.entry() {
    +            Entry::End(..) => return None,
    +
    +            // Treat lifetimes as a single tt for the purposes of 'skip'.
    +            Entry::Punct(punct) if punct.as_char() == '\'' && punct.spacing() == Spacing::Joint => {
                     match unsafe { &*self.ptr.add(1) } {
                         Entry::Ident(_) => 2,
                         _ => 1,
    @@ -733,28 +799,38 @@
     
             Some(unsafe { Cursor::create(self.ptr.add(len), self.scope) })
         }
    +
    +    pub(crate) fn scope_delimiter(self) -> Delimiter {
    +        match unsafe { &*self.scope } {
    +            Entry::End(_, offset) => match unsafe { &*self.scope.offset(*offset) } {
    +                Entry::Group(group, _) => group.delimiter(),
    +                _ => Delimiter::None,
    +            },
    +            _ => unreachable!(),
    +        }
    +    }
     }
     
    -impl<'a> Copy for Cursor<'a> {}
    +impl<'a> Copy for Cursor<'a> {}
     
    -impl<'a> Clone for Cursor<'a> {
    +impl<'a> Clone for Cursor<'a> {
         fn clone(&self) -> Self {
             *self
         }
     }
     
    -impl<'a> Eq for Cursor<'a> {}
    +impl<'a> Eq for Cursor<'a> {}
     
    -impl<'a> PartialEq for Cursor<'a> {
    +impl<'a> PartialEq for Cursor<'a> {
         fn eq(&self, other: &Self) -> bool {
             self.ptr == other.ptr
         }
     }
     
    -impl<'a> PartialOrd for Cursor<'a> {
    +impl<'a> PartialOrd for Cursor<'a> {
         fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
             if same_buffer(*self, *other) {
    -            Some(self.ptr.cmp(&other.ptr))
    +            Some(cmp_assuming_same_buffer(*self, *other))
             } else {
                 None
             }
    @@ -766,18 +842,19 @@
     }
     
     pub(crate) fn same_buffer(a: Cursor, b: Cursor) -> bool {
    +    start_of_buffer(a) == start_of_buffer(b)
    +}
    +
    +fn start_of_buffer(cursor: Cursor) -> *const Entry {
         unsafe {
    -        match (&*a.scope, &*b.scope) {
    -            (Entry::End(a_offset), Entry::End(b_offset)) => {
    -                a.scope.offset(*a_offset) == b.scope.offset(*b_offset)
    -            }
    +        match &*cursor.scope {
    +            Entry::End(offset, _) => cursor.scope.offset(*offset),
                 _ => unreachable!(),
             }
         }
     }
     
    -#[cfg(any(feature = "full", feature = "derive"))]
    -pub(crate) fn cmp_assuming_same_buffer(a: Cursor, b: Cursor) -> Ordering {
    +pub(crate) fn cmp_assuming_same_buffer(a: Cursor, b: Cursor) -> Ordering {
         a.ptr.cmp(&b.ptr)
     }
     
    @@ -787,11 +864,4 @@
             _ => cursor.span(),
         }
     }
    -
    -pub(crate) fn close_span_of_group(cursor: Cursor) -> Span {
    -    match cursor.entry() {
    -        Entry::Group(group, _) => group.span_close(),
    -        _ => cursor.span(),
    -    }
    -}
     
    \ No newline at end of file diff --git a/src/syn/classify.rs.html b/src/syn/classify.rs.html new file mode 100644 index 0000000..b6f93ec --- /dev/null +++ b/src/syn/classify.rs.html @@ -0,0 +1,795 @@ +classify.rs - source

    syn/
    classify.rs

    +1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    +81
    +82
    +83
    +84
    +85
    +86
    +87
    +88
    +89
    +90
    +91
    +92
    +93
    +94
    +95
    +96
    +97
    +98
    +99
    +100
    +101
    +102
    +103
    +104
    +105
    +106
    +107
    +108
    +109
    +110
    +111
    +112
    +113
    +114
    +115
    +116
    +117
    +118
    +119
    +120
    +121
    +122
    +123
    +124
    +125
    +126
    +127
    +128
    +129
    +130
    +131
    +132
    +133
    +134
    +135
    +136
    +137
    +138
    +139
    +140
    +141
    +142
    +143
    +144
    +145
    +146
    +147
    +148
    +149
    +150
    +151
    +152
    +153
    +154
    +155
    +156
    +157
    +158
    +159
    +160
    +161
    +162
    +163
    +164
    +165
    +166
    +167
    +168
    +169
    +170
    +171
    +172
    +173
    +174
    +175
    +176
    +177
    +178
    +179
    +180
    +181
    +182
    +183
    +184
    +185
    +186
    +187
    +188
    +189
    +190
    +191
    +192
    +193
    +194
    +195
    +196
    +197
    +198
    +199
    +200
    +201
    +202
    +203
    +204
    +205
    +206
    +207
    +208
    +209
    +210
    +211
    +212
    +213
    +214
    +215
    +216
    +217
    +218
    +219
    +220
    +221
    +222
    +223
    +224
    +225
    +226
    +227
    +228
    +229
    +230
    +231
    +232
    +233
    +234
    +235
    +236
    +237
    +238
    +239
    +240
    +241
    +242
    +243
    +244
    +245
    +246
    +247
    +248
    +249
    +250
    +251
    +252
    +253
    +254
    +255
    +256
    +257
    +258
    +259
    +260
    +261
    +262
    +263
    +264
    +265
    +266
    +267
    +268
    +269
    +270
    +271
    +272
    +273
    +274
    +275
    +276
    +277
    +278
    +279
    +280
    +281
    +282
    +283
    +284
    +285
    +286
    +287
    +288
    +289
    +290
    +291
    +292
    +293
    +294
    +295
    +296
    +297
    +298
    +299
    +300
    +301
    +302
    +303
    +304
    +305
    +306
    +307
    +308
    +309
    +310
    +311
    +312
    +313
    +314
    +315
    +316
    +317
    +318
    +319
    +320
    +321
    +322
    +323
    +324
    +325
    +326
    +327
    +328
    +329
    +330
    +331
    +332
    +333
    +334
    +335
    +336
    +337
    +338
    +339
    +340
    +341
    +342
    +343
    +344
    +345
    +346
    +347
    +348
    +349
    +350
    +351
    +352
    +353
    +354
    +355
    +356
    +357
    +358
    +359
    +360
    +361
    +362
    +363
    +364
    +365
    +366
    +367
    +368
    +369
    +370
    +371
    +372
    +373
    +374
    +375
    +376
    +377
    +378
    +379
    +380
    +381
    +382
    +383
    +384
    +385
    +386
    +387
    +388
    +389
    +390
    +391
    +392
    +393
    +394
    +395
    +396
    +397
    #[cfg(feature = "full")]
    +use crate::expr::Expr;
    +#[cfg(any(feature = "printing", feature = "full"))]
    +use crate::generics::TypeParamBound;
    +#[cfg(any(feature = "printing", feature = "full"))]
    +use crate::path::{Path, PathArguments};
    +#[cfg(any(feature = "printing", feature = "full"))]
    +use crate::punctuated::Punctuated;
    +#[cfg(any(feature = "printing", feature = "full"))]
    +use crate::ty::{ReturnType, Type};
    +#[cfg(feature = "full")]
    +use proc_macro2::{Delimiter, TokenStream, TokenTree};
    +#[cfg(any(feature = "printing", feature = "full"))]
    +use std::ops::ControlFlow;
    +
    +#[cfg(feature = "full")]
    +pub(crate) fn requires_semi_to_be_stmt(expr: &Expr) -> bool {
    +    match expr {
    +        Expr::Macro(expr) => !expr.mac.delimiter.is_brace(),
    +        _ => requires_comma_to_be_match_arm(expr),
    +    }
    +}
    +
    +#[cfg(feature = "full")]
    +pub(crate) fn requires_comma_to_be_match_arm(expr: &Expr) -> bool {
    +    match expr {
    +        Expr::If(_)
    +        | Expr::Match(_)
    +        | Expr::Block(_) | Expr::Unsafe(_) // both under ExprKind::Block in rustc
    +        | Expr::While(_)
    +        | Expr::Loop(_)
    +        | Expr::ForLoop(_)
    +        | Expr::TryBlock(_)
    +        | Expr::Const(_) => false,
    +
    +        Expr::Array(_)
    +        | Expr::Assign(_)
    +        | Expr::Async(_)
    +        | Expr::Await(_)
    +        | Expr::Binary(_)
    +        | Expr::Break(_)
    +        | Expr::Call(_)
    +        | Expr::Cast(_)
    +        | Expr::Closure(_)
    +        | Expr::Continue(_)
    +        | Expr::Field(_)
    +        | Expr::Group(_)
    +        | Expr::Index(_)
    +        | Expr::Infer(_)
    +        | Expr::Let(_)
    +        | Expr::Lit(_)
    +        | Expr::Macro(_)
    +        | Expr::MethodCall(_)
    +        | Expr::Paren(_)
    +        | Expr::Path(_)
    +        | Expr::Range(_)
    +        | Expr::RawAddr(_)
    +        | Expr::Reference(_)
    +        | Expr::Repeat(_)
    +        | Expr::Return(_)
    +        | Expr::Struct(_)
    +        | Expr::Try(_)
    +        | Expr::Tuple(_)
    +        | Expr::Unary(_)
    +        | Expr::Yield(_)
    +        | Expr::Verbatim(_) => true
    +    }
    +}
    +
    +#[cfg(all(feature = "printing", feature = "full"))]
    +pub(crate) fn confusable_with_adjacent_block(mut expr: &Expr) -> bool {
    +    let mut stack = Vec::new();
    +
    +    while let Some(next) = match expr {
    +        Expr::Assign(e) => {
    +            stack.push(&e.right);
    +            Some(&e.left)
    +        }
    +        Expr::Await(e) => Some(&e.base),
    +        Expr::Binary(e) => {
    +            stack.push(&e.right);
    +            Some(&e.left)
    +        }
    +        Expr::Break(e) => {
    +            if let Some(Expr::Block(_)) = e.expr.as_deref() {
    +                return true;
    +            }
    +            stack.pop()
    +        }
    +        Expr::Call(e) => Some(&e.func),
    +        Expr::Cast(e) => Some(&e.expr),
    +        Expr::Closure(e) => Some(&e.body),
    +        Expr::Field(e) => Some(&e.base),
    +        Expr::Index(e) => Some(&e.expr),
    +        Expr::MethodCall(e) => Some(&e.receiver),
    +        Expr::Range(e) => {
    +            if let Some(Expr::Block(_)) = e.end.as_deref() {
    +                return true;
    +            }
    +            match (&e.start, &e.end) {
    +                (Some(start), end) => {
    +                    stack.extend(end);
    +                    Some(start)
    +                }
    +                (None, Some(end)) => Some(end),
    +                (None, None) => stack.pop(),
    +            }
    +        }
    +        Expr::RawAddr(e) => Some(&e.expr),
    +        Expr::Reference(e) => Some(&e.expr),
    +        Expr::Return(e) => {
    +            if e.expr.is_none() && stack.is_empty() {
    +                return true;
    +            }
    +            stack.pop()
    +        }
    +        Expr::Struct(_) => return true,
    +        Expr::Try(e) => Some(&e.expr),
    +        Expr::Unary(e) => Some(&e.expr),
    +        Expr::Yield(e) => {
    +            if e.expr.is_none() && stack.is_empty() {
    +                return true;
    +            }
    +            stack.pop()
    +        }
    +
    +        Expr::Array(_)
    +        | Expr::Async(_)
    +        | Expr::Block(_)
    +        | Expr::Const(_)
    +        | Expr::Continue(_)
    +        | Expr::ForLoop(_)
    +        | Expr::Group(_)
    +        | Expr::If(_)
    +        | Expr::Infer(_)
    +        | Expr::Let(_)
    +        | Expr::Lit(_)
    +        | Expr::Loop(_)
    +        | Expr::Macro(_)
    +        | Expr::Match(_)
    +        | Expr::Paren(_)
    +        | Expr::Path(_)
    +        | Expr::Repeat(_)
    +        | Expr::TryBlock(_)
    +        | Expr::Tuple(_)
    +        | Expr::Unsafe(_)
    +        | Expr::Verbatim(_)
    +        | Expr::While(_) => stack.pop(),
    +    } {
    +        expr = next;
    +    }
    +
    +    false
    +}
    +
    +#[cfg(feature = "printing")]
    +pub(crate) fn trailing_unparameterized_path(mut ty: &Type) -> bool {
    +    loop {
    +        match ty {
    +            Type::BareFn(t) => match &t.output {
    +                ReturnType::Default => return false,
    +                ReturnType::Type(_, ret) => ty = ret,
    +            },
    +            Type::ImplTrait(t) => match last_type_in_bounds(&t.bounds) {
    +                ControlFlow::Break(trailing_path) => return trailing_path,
    +                ControlFlow::Continue(t) => ty = t,
    +            },
    +            Type::Path(t) => match last_type_in_path(&t.path) {
    +                ControlFlow::Break(trailing_path) => return trailing_path,
    +                ControlFlow::Continue(t) => ty = t,
    +            },
    +            Type::Ptr(t) => ty = &t.elem,
    +            Type::Reference(t) => ty = &t.elem,
    +            Type::TraitObject(t) => match last_type_in_bounds(&t.bounds) {
    +                ControlFlow::Break(trailing_path) => return trailing_path,
    +                ControlFlow::Continue(t) => ty = t,
    +            },
    +
    +            Type::Array(_)
    +            | Type::Group(_)
    +            | Type::Infer(_)
    +            | Type::Macro(_)
    +            | Type::Never(_)
    +            | Type::Paren(_)
    +            | Type::Slice(_)
    +            | Type::Tuple(_)
    +            | Type::Verbatim(_) => return false,
    +        }
    +    }
    +
    +    fn last_type_in_path(path: &Path) -> ControlFlow<bool, &Type> {
    +        match &path.segments.last().unwrap().arguments {
    +            PathArguments::None => ControlFlow::Break(true),
    +            PathArguments::AngleBracketed(_) => ControlFlow::Break(false),
    +            PathArguments::Parenthesized(arg) => match &arg.output {
    +                ReturnType::Default => ControlFlow::Break(false),
    +                ReturnType::Type(_, ret) => ControlFlow::Continue(ret),
    +            },
    +        }
    +    }
    +
    +    fn last_type_in_bounds(
    +        bounds: &Punctuated<TypeParamBound, Token![+]>,
    +    ) -> ControlFlow<bool, &Type> {
    +        match bounds.last().unwrap() {
    +            TypeParamBound::Trait(t) => last_type_in_path(&t.path),
    +            TypeParamBound::Lifetime(_)
    +            | TypeParamBound::PreciseCapture(_)
    +            | TypeParamBound::Verbatim(_) => ControlFlow::Break(false),
    +        }
    +    }
    +}
    +
    +/// Whether the expression's first token is the label of a loop/block.
    +#[cfg(all(feature = "printing", feature = "full"))]
    +pub(crate) fn expr_leading_label(mut expr: &Expr) -> bool {
    +    loop {
    +        match expr {
    +            Expr::Block(e) => return e.label.is_some(),
    +            Expr::ForLoop(e) => return e.label.is_some(),
    +            Expr::Loop(e) => return e.label.is_some(),
    +            Expr::While(e) => return e.label.is_some(),
    +
    +            Expr::Assign(e) => expr = &e.left,
    +            Expr::Await(e) => expr = &e.base,
    +            Expr::Binary(e) => expr = &e.left,
    +            Expr::Call(e) => expr = &e.func,
    +            Expr::Cast(e) => expr = &e.expr,
    +            Expr::Field(e) => expr = &e.base,
    +            Expr::Index(e) => expr = &e.expr,
    +            Expr::MethodCall(e) => expr = &e.receiver,
    +            Expr::Range(e) => match &e.start {
    +                Some(start) => expr = start,
    +                None => return false,
    +            },
    +            Expr::Try(e) => expr = &e.expr,
    +
    +            Expr::Array(_)
    +            | Expr::Async(_)
    +            | Expr::Break(_)
    +            | Expr::Closure(_)
    +            | Expr::Const(_)
    +            | Expr::Continue(_)
    +            | Expr::Group(_)
    +            | Expr::If(_)
    +            | Expr::Infer(_)
    +            | Expr::Let(_)
    +            | Expr::Lit(_)
    +            | Expr::Macro(_)
    +            | Expr::Match(_)
    +            | Expr::Paren(_)
    +            | Expr::Path(_)
    +            | Expr::RawAddr(_)
    +            | Expr::Reference(_)
    +            | Expr::Repeat(_)
    +            | Expr::Return(_)
    +            | Expr::Struct(_)
    +            | Expr::TryBlock(_)
    +            | Expr::Tuple(_)
    +            | Expr::Unary(_)
    +            | Expr::Unsafe(_)
    +            | Expr::Verbatim(_)
    +            | Expr::Yield(_) => return false,
    +        }
    +    }
    +}
    +
    +/// Whether the expression's last token is `}`.
    +#[cfg(feature = "full")]
    +pub(crate) fn expr_trailing_brace(mut expr: &Expr) -> bool {
    +    loop {
    +        match expr {
    +            Expr::Async(_)
    +            | Expr::Block(_)
    +            | Expr::Const(_)
    +            | Expr::ForLoop(_)
    +            | Expr::If(_)
    +            | Expr::Loop(_)
    +            | Expr::Match(_)
    +            | Expr::Struct(_)
    +            | Expr::TryBlock(_)
    +            | Expr::Unsafe(_)
    +            | Expr::While(_) => return true,
    +
    +            Expr::Assign(e) => expr = &e.right,
    +            Expr::Binary(e) => expr = &e.right,
    +            Expr::Break(e) => match &e.expr {
    +                Some(e) => expr = e,
    +                None => return false,
    +            },
    +            Expr::Cast(e) => return type_trailing_brace(&e.ty),
    +            Expr::Closure(e) => expr = &e.body,
    +            Expr::Let(e) => expr = &e.expr,
    +            Expr::Macro(e) => return e.mac.delimiter.is_brace(),
    +            Expr::Range(e) => match &e.end {
    +                Some(end) => expr = end,
    +                None => return false,
    +            },
    +            Expr::RawAddr(e) => expr = &e.expr,
    +            Expr::Reference(e) => expr = &e.expr,
    +            Expr::Return(e) => match &e.expr {
    +                Some(e) => expr = e,
    +                None => return false,
    +            },
    +            Expr::Unary(e) => expr = &e.expr,
    +            Expr::Verbatim(e) => return tokens_trailing_brace(e),
    +            Expr::Yield(e) => match &e.expr {
    +                Some(e) => expr = e,
    +                None => return false,
    +            },
    +
    +            Expr::Array(_)
    +            | Expr::Await(_)
    +            | Expr::Call(_)
    +            | Expr::Continue(_)
    +            | Expr::Field(_)
    +            | Expr::Group(_)
    +            | Expr::Index(_)
    +            | Expr::Infer(_)
    +            | Expr::Lit(_)
    +            | Expr::MethodCall(_)
    +            | Expr::Paren(_)
    +            | Expr::Path(_)
    +            | Expr::Repeat(_)
    +            | Expr::Try(_)
    +            | Expr::Tuple(_) => return false,
    +        }
    +    }
    +
    +    fn type_trailing_brace(mut ty: &Type) -> bool {
    +        loop {
    +            match ty {
    +                Type::BareFn(t) => match &t.output {
    +                    ReturnType::Default => return false,
    +                    ReturnType::Type(_, ret) => ty = ret,
    +                },
    +                Type::ImplTrait(t) => match last_type_in_bounds(&t.bounds) {
    +                    ControlFlow::Break(trailing_brace) => return trailing_brace,
    +                    ControlFlow::Continue(t) => ty = t,
    +                },
    +                Type::Macro(t) => return t.mac.delimiter.is_brace(),
    +                Type::Path(t) => match last_type_in_path(&t.path) {
    +                    Some(t) => ty = t,
    +                    None => return false,
    +                },
    +                Type::Ptr(t) => ty = &t.elem,
    +                Type::Reference(t) => ty = &t.elem,
    +                Type::TraitObject(t) => match last_type_in_bounds(&t.bounds) {
    +                    ControlFlow::Break(trailing_brace) => return trailing_brace,
    +                    ControlFlow::Continue(t) => ty = t,
    +                },
    +                Type::Verbatim(t) => return tokens_trailing_brace(t),
    +
    +                Type::Array(_)
    +                | Type::Group(_)
    +                | Type::Infer(_)
    +                | Type::Never(_)
    +                | Type::Paren(_)
    +                | Type::Slice(_)
    +                | Type::Tuple(_) => return false,
    +            }
    +        }
    +    }
    +
    +    fn last_type_in_path(path: &Path) -> Option<&Type> {
    +        match &path.segments.last().unwrap().arguments {
    +            PathArguments::None | PathArguments::AngleBracketed(_) => None,
    +            PathArguments::Parenthesized(arg) => match &arg.output {
    +                ReturnType::Default => None,
    +                ReturnType::Type(_, ret) => Some(ret),
    +            },
    +        }
    +    }
    +
    +    fn last_type_in_bounds(
    +        bounds: &Punctuated<TypeParamBound, Token![+]>,
    +    ) -> ControlFlow<bool, &Type> {
    +        match bounds.last().unwrap() {
    +            TypeParamBound::Trait(t) => match last_type_in_path(&t.path) {
    +                Some(t) => ControlFlow::Continue(t),
    +                None => ControlFlow::Break(false),
    +            },
    +            TypeParamBound::Lifetime(_) | TypeParamBound::PreciseCapture(_) => {
    +                ControlFlow::Break(false)
    +            }
    +            TypeParamBound::Verbatim(t) => ControlFlow::Break(tokens_trailing_brace(t)),
    +        }
    +    }
    +
    +    fn tokens_trailing_brace(tokens: &TokenStream) -> bool {
    +        if let Some(TokenTree::Group(last)) = tokens.clone().into_iter().last() {
    +            last.delimiter() == Delimiter::Brace
    +        } else {
    +            false
    +        }
    +    }
    +}
    +
    \ No newline at end of file diff --git a/src/syn/custom_keyword.rs.html b/src/syn/custom_keyword.rs.html index 28c2323..65b63eb 100644 --- a/src/syn/custom_keyword.rs.html +++ b/src/syn/custom_keyword.rs.html @@ -1,4 +1,5 @@ -custom_keyword.rs - source
    1
    +custom_keyword.rs - source

    syn/
    custom_keyword.rs

    +1
     2
     3
     4
    @@ -251,7 +252,13 @@
     251
     252
     253
    -
    /// Define a type that supports parsing and printing a given identifier as if it
    +254
    +255
    +256
    +257
    +258
    +259
    +260
    /// Define a type that supports parsing and printing a given identifier as if it
     /// were a keyword.
     ///
     /// # Usage
    @@ -286,7 +293,7 @@
     ///
     /// # Example
     ///
    -/// This example parses input that looks like `bool = true` or `str = "value"`.
    +/// This example parses input that looks like `bool = true` or `str = "value"`.
     /// The key must be either the identifier `bool` or the identifier `str`. If
     /// `bool`, the value may be either `true` or `false`. If `str`, the value may
     /// be any string literal.
    @@ -340,56 +347,59 @@
     /// }
     /// ```
     #[macro_export]
    -macro_rules! custom_keyword {
    +macro_rules! custom_keyword {
         ($ident:ident) => {
             #[allow(non_camel_case_types)]
             pub struct $ident {
    -            pub span: $crate::__private::Span,
    +            #[allow(dead_code)]
    +            pub span: $crate::__private::Span,
             }
     
             #[doc(hidden)]
             #[allow(dead_code, non_snake_case)]
    -        pub fn $ident<__S: $crate::__private::IntoSpans<[$crate::__private::Span; 1]>>(
    +        pub fn $ident<__S: $crate::__private::IntoSpans<$crate::__private::Span>>(
                 span: __S,
             ) -> $ident {
                 $ident {
    -                span: $crate::__private::IntoSpans::into_spans(span)[0],
    +                span: $crate::__private::IntoSpans::into_spans(span),
                 }
             }
     
    -        impl $crate::__private::Default for $ident {
    -            fn default() -> Self {
    -                $ident {
    -                    span: $crate::__private::Span::call_site(),
    +        const _: () = {
    +            impl $crate::__private::Default for $ident {
    +                fn default() -> Self {
    +                    $ident {
    +                        span: $crate::__private::Span::call_site(),
    +                    }
                     }
                 }
    -        }
     
    -        $crate::impl_parse_for_custom_keyword!($ident);
    -        $crate::impl_to_tokens_for_custom_keyword!($ident);
    -        $crate::impl_clone_for_custom_keyword!($ident);
    -        $crate::impl_extra_traits_for_custom_keyword!($ident);
    +            $crate::impl_parse_for_custom_keyword!($ident);
    +            $crate::impl_to_tokens_for_custom_keyword!($ident);
    +            $crate::impl_clone_for_custom_keyword!($ident);
    +            $crate::impl_extra_traits_for_custom_keyword!($ident);
    +        };
         };
     }
     
     // Not public API.
    -#[cfg(feature = "parsing")]
    +#[cfg(feature = "parsing")]
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! impl_parse_for_custom_keyword {
    +macro_rules! impl_parse_for_custom_keyword {
         ($ident:ident) => {
             // For peek.
    -        impl $crate::token::CustomToken for $ident {
    +        impl $crate::__private::CustomToken for $ident {
                 fn peek(cursor: $crate::buffer::Cursor) -> $crate::__private::bool {
                     if let $crate::__private::Some((ident, _rest)) = cursor.ident() {
    -                    ident == stringify!($ident)
    +                    ident == $crate::__private::stringify!($ident)
                     } else {
                         false
                     }
                 }
     
    -            fn display() -> &'static $crate::__private::str {
    -                concat!("`", stringify!($ident), "`")
    +            fn display() -> &'static $crate::__private::str {
    +                $crate::__private::concat!("`", $crate::__private::stringify!($ident), "`")
                 }
             }
     
    @@ -397,15 +407,15 @@
                 fn parse(input: $crate::parse::ParseStream) -> $crate::parse::Result<$ident> {
                     input.step(|cursor| {
                         if let $crate::__private::Some((ident, rest)) = cursor.ident() {
    -                        if ident == stringify!($ident) {
    +                        if ident == $crate::__private::stringify!($ident) {
                                 return $crate::__private::Ok(($ident { span: ident.span() }, rest));
                             }
                         }
    -                    $crate::__private::Err(cursor.error(concat!(
    -                        "expected `",
    -                        stringify!($ident),
    -                        "`"
    -                    )))
    +                    $crate::__private::Err(cursor.error($crate::__private::concat!(
    +                        "expected `",
    +                        $crate::__private::stringify!($ident),
    +                        "`",
    +                    )))
                     })
                 }
             }
    @@ -413,22 +423,22 @@
     }
     
     // Not public API.
    -#[cfg(not(feature = "parsing"))]
    +#[cfg(not(feature = "parsing"))]
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! impl_parse_for_custom_keyword {
    +macro_rules! impl_parse_for_custom_keyword {
         ($ident:ident) => {};
     }
     
     // Not public API.
    -#[cfg(feature = "printing")]
    +#[cfg(feature = "printing")]
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! impl_to_tokens_for_custom_keyword {
    +macro_rules! impl_to_tokens_for_custom_keyword {
         ($ident:ident) => {
             impl $crate::__private::ToTokens for $ident {
                 fn to_tokens(&self, tokens: &mut $crate::__private::TokenStream2) {
    -                let ident = $crate::Ident::new(stringify!($ident), self.span);
    +                let ident = $crate::Ident::new($crate::__private::stringify!($ident), self.span);
                     $crate::__private::TokenStreamExt::append(tokens, ident);
                 }
             }
    @@ -436,18 +446,18 @@
     }
     
     // Not public API.
    -#[cfg(not(feature = "printing"))]
    +#[cfg(not(feature = "printing"))]
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! impl_to_tokens_for_custom_keyword {
    +macro_rules! impl_to_tokens_for_custom_keyword {
         ($ident:ident) => {};
     }
     
     // Not public API.
    -#[cfg(feature = "clone-impls")]
    +#[cfg(feature = "clone-impls")]
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! impl_clone_for_custom_keyword {
    +macro_rules! impl_clone_for_custom_keyword {
         ($ident:ident) => {
             impl $crate::__private::Copy for $ident {}
     
    @@ -461,24 +471,28 @@
     }
     
     // Not public API.
    -#[cfg(not(feature = "clone-impls"))]
    +#[cfg(not(feature = "clone-impls"))]
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! impl_clone_for_custom_keyword {
    +macro_rules! impl_clone_for_custom_keyword {
         ($ident:ident) => {};
     }
     
     // Not public API.
    -#[cfg(feature = "extra-traits")]
    +#[cfg(feature = "extra-traits")]
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! impl_extra_traits_for_custom_keyword {
    +macro_rules! impl_extra_traits_for_custom_keyword {
         ($ident:ident) => {
             impl $crate::__private::Debug for $ident {
    -            fn fmt(&self, f: &mut $crate::__private::Formatter) -> $crate::__private::fmt::Result {
    +            fn fmt(&self, f: &mut $crate::__private::Formatter) -> $crate::__private::FmtResult {
                     $crate::__private::Formatter::write_str(
                         f,
    -                    concat!("Keyword [", stringify!($ident), "]"),
    +                    $crate::__private::concat!(
    +                        "Keyword [",
    +                        $crate::__private::stringify!($ident),
    +                        "]",
    +                    ),
                     )
                 }
             }
    @@ -498,10 +512,10 @@
     }
     
     // Not public API.
    -#[cfg(not(feature = "extra-traits"))]
    +#[cfg(not(feature = "extra-traits"))]
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! impl_extra_traits_for_custom_keyword {
    +macro_rules! impl_extra_traits_for_custom_keyword {
         ($ident:ident) => {};
     }
     
    \ No newline at end of file diff --git a/src/syn/custom_punctuation.rs.html b/src/syn/custom_punctuation.rs.html index 6366940..c35319c 100644 --- a/src/syn/custom_punctuation.rs.html +++ b/src/syn/custom_punctuation.rs.html @@ -1,4 +1,5 @@ -custom_punctuation.rs - source
    1
    +custom_punctuation.rs - source

    syn/
    custom_punctuation.rs

    +1
     2
     3
     4
    @@ -298,7 +299,10 @@
     298
     299
     300
    -
    /// Define a type that supports parsing and printing a multi-character symbol
    +301
    +302
    +303
    +304
    /// Define a type that supports parsing and printing a multi-character symbol
     /// as if it were a punctuation token.
     ///
     /// # Usage
    @@ -370,15 +374,16 @@
     /// }
     ///
     /// fn main() {
    -///     let input = r#" a::b </> c::d::e "#;
    +///     let input = r#" a::b </> c::d::e "#;
     ///     let _: PathSegments = syn::parse_str(input).unwrap();
     /// }
     /// ```
     #[macro_export]
    -macro_rules! custom_punctuation {
    +macro_rules! custom_punctuation {
         ($ident:ident, $($tt:tt)+) => {
             pub struct $ident {
    -            pub spans: $crate::custom_punctuation_repr!($($tt)+),
    +            #[allow(dead_code)]
    +            pub spans: $crate::custom_punctuation_repr!($($tt)+),
             }
     
             #[doc(hidden)]
    @@ -392,39 +397,41 @@
                 }
             }
     
    -        impl $crate::__private::Default for $ident {
    -            fn default() -> Self {
    -                $ident($crate::__private::Span::call_site())
    +        const _: () = {
    +            impl $crate::__private::Default for $ident {
    +                fn default() -> Self {
    +                    $ident($crate::__private::Span::call_site())
    +                }
                 }
    -        }
     
    -        $crate::impl_parse_for_custom_punctuation!($ident, $($tt)+);
    -        $crate::impl_to_tokens_for_custom_punctuation!($ident, $($tt)+);
    -        $crate::impl_clone_for_custom_punctuation!($ident, $($tt)+);
    -        $crate::impl_extra_traits_for_custom_punctuation!($ident, $($tt)+);
    +            $crate::impl_parse_for_custom_punctuation!($ident, $($tt)+);
    +            $crate::impl_to_tokens_for_custom_punctuation!($ident, $($tt)+);
    +            $crate::impl_clone_for_custom_punctuation!($ident, $($tt)+);
    +            $crate::impl_extra_traits_for_custom_punctuation!($ident, $($tt)+);
    +        };
         };
     }
     
     // Not public API.
    -#[cfg(feature = "parsing")]
    +#[cfg(feature = "parsing")]
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! impl_parse_for_custom_punctuation {
    +macro_rules! impl_parse_for_custom_punctuation {
         ($ident:ident, $($tt:tt)+) => {
    -        impl $crate::token::CustomToken for $ident {
    -            fn peek(cursor: $crate::buffer::Cursor) -> bool {
    -                $crate::token::parsing::peek_punct(cursor, $crate::stringify_punct!($($tt)+))
    +        impl $crate::__private::CustomToken for $ident {
    +            fn peek(cursor: $crate::buffer::Cursor) -> $crate::__private::bool {
    +                $crate::__private::peek_punct(cursor, $crate::stringify_punct!($($tt)+))
                 }
     
    -            fn display() -> &'static $crate::__private::str {
    -                concat!("`", $crate::stringify_punct!($($tt)+), "`")
    +            fn display() -> &'static $crate::__private::str {
    +                $crate::__private::concat!("`", $crate::stringify_punct!($($tt)+), "`")
                 }
             }
     
             impl $crate::parse::Parse for $ident {
                 fn parse(input: $crate::parse::ParseStream) -> $crate::parse::Result<$ident> {
                     let spans: $crate::custom_punctuation_repr!($($tt)+) =
    -                    $crate::token::parsing::punct(input, $crate::stringify_punct!($($tt)+))?;
    +                    $crate::__private::parse_punct(input, $crate::stringify_punct!($($tt)+))?;
                     Ok($ident(spans))
                 }
             }
    @@ -432,40 +439,40 @@
     }
     
     // Not public API.
    -#[cfg(not(feature = "parsing"))]
    +#[cfg(not(feature = "parsing"))]
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! impl_parse_for_custom_punctuation {
    +macro_rules! impl_parse_for_custom_punctuation {
         ($ident:ident, $($tt:tt)+) => {};
     }
     
     // Not public API.
    -#[cfg(feature = "printing")]
    +#[cfg(feature = "printing")]
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! impl_to_tokens_for_custom_punctuation {
    +macro_rules! impl_to_tokens_for_custom_punctuation {
         ($ident:ident, $($tt:tt)+) => {
             impl $crate::__private::ToTokens for $ident {
                 fn to_tokens(&self, tokens: &mut $crate::__private::TokenStream2) {
    -                $crate::token::printing::punct($crate::stringify_punct!($($tt)+), &self.spans, tokens)
    +                $crate::__private::print_punct($crate::stringify_punct!($($tt)+), &self.spans, tokens)
                 }
             }
         };
     }
     
     // Not public API.
    -#[cfg(not(feature = "printing"))]
    +#[cfg(not(feature = "printing"))]
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! impl_to_tokens_for_custom_punctuation {
    +macro_rules! impl_to_tokens_for_custom_punctuation {
         ($ident:ident, $($tt:tt)+) => {};
     }
     
     // Not public API.
    -#[cfg(feature = "clone-impls")]
    +#[cfg(feature = "clone-impls")]
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! impl_clone_for_custom_punctuation {
    +macro_rules! impl_clone_for_custom_punctuation {
         ($ident:ident, $($tt:tt)+) => {
             impl $crate::__private::Copy for $ident {}
     
    @@ -479,22 +486,22 @@
     }
     
     // Not public API.
    -#[cfg(not(feature = "clone-impls"))]
    +#[cfg(not(feature = "clone-impls"))]
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! impl_clone_for_custom_punctuation {
    +macro_rules! impl_clone_for_custom_punctuation {
         ($ident:ident, $($tt:tt)+) => {};
     }
     
     // Not public API.
    -#[cfg(feature = "extra-traits")]
    +#[cfg(feature = "extra-traits")]
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! impl_extra_traits_for_custom_punctuation {
    +macro_rules! impl_extra_traits_for_custom_punctuation {
         ($ident:ident, $($tt:tt)+) => {
             impl $crate::__private::Debug for $ident {
    -            fn fmt(&self, f: &mut $crate::__private::Formatter) -> $crate::__private::fmt::Result {
    -                $crate::__private::Formatter::write_str(f, stringify!($ident))
    +            fn fmt(&self, f: &mut $crate::__private::Formatter) -> $crate::__private::FmtResult {
    +                $crate::__private::Formatter::write_str(f, $crate::__private::stringify!($ident))
                 }
             }
     
    @@ -513,17 +520,17 @@
     }
     
     // Not public API.
    -#[cfg(not(feature = "extra-traits"))]
    +#[cfg(not(feature = "extra-traits"))]
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! impl_extra_traits_for_custom_punctuation {
    +macro_rules! impl_extra_traits_for_custom_punctuation {
         ($ident:ident, $($tt:tt)+) => {};
     }
     
     // Not public API.
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! custom_punctuation_repr {
    +macro_rules! custom_punctuation_repr {
         ($($tt:tt)+) => {
             [$crate::__private::Span; 0 $(+ $crate::custom_punctuation_len!(lenient, $tt))+]
         };
    @@ -533,51 +540,52 @@
     #[doc(hidden)]
     #[macro_export]
     #[rustfmt::skip]
    -macro_rules! custom_punctuation_len {
    -    ($mode:ident, +)     => { 1 };
    -    ($mode:ident, +=)    => { 2 };
    +macro_rules! custom_punctuation_len {
         ($mode:ident, &)     => { 1 };
         ($mode:ident, &&)    => { 2 };
         ($mode:ident, &=)    => { 2 };
         ($mode:ident, @)     => { 1 };
    -    ($mode:ident, !)     => { 1 };
         ($mode:ident, ^)     => { 1 };
         ($mode:ident, ^=)    => { 2 };
         ($mode:ident, :)     => { 1 };
    -    ($mode:ident, ::)    => { 2 };
         ($mode:ident, ,)     => { 1 };
    -    ($mode:ident, /)     => { 1 };
    -    ($mode:ident, /=)    => { 2 };
    +    ($mode:ident, $)     => { 1 };
         ($mode:ident, .)     => { 1 };
         ($mode:ident, ..)    => { 2 };
         ($mode:ident, ...)   => { 3 };
         ($mode:ident, ..=)   => { 3 };
         ($mode:ident, =)     => { 1 };
         ($mode:ident, ==)    => { 2 };
    +    ($mode:ident, =>)    => { 2 };
         ($mode:ident, >=)    => { 2 };
         ($mode:ident, >)     => { 1 };
    +    ($mode:ident, <-)    => { 2 };
         ($mode:ident, <=)    => { 2 };
         ($mode:ident, <)     => { 1 };
    -    ($mode:ident, *=)    => { 2 };
    +    ($mode:ident, -)     => { 1 };
    +    ($mode:ident, -=)    => { 2 };
         ($mode:ident, !=)    => { 2 };
    +    ($mode:ident, !)     => { 1 };
         ($mode:ident, |)     => { 1 };
         ($mode:ident, |=)    => { 2 };
         ($mode:ident, ||)    => { 2 };
    +    ($mode:ident, ::)    => { 2 };
    +    ($mode:ident, %)     => { 1 };
    +    ($mode:ident, %=)    => { 2 };
    +    ($mode:ident, +)     => { 1 };
    +    ($mode:ident, +=)    => { 2 };
         ($mode:ident, #)     => { 1 };
         ($mode:ident, ?)     => { 1 };
         ($mode:ident, ->)    => { 2 };
    -    ($mode:ident, <-)    => { 2 };
    -    ($mode:ident, %)     => { 1 };
    -    ($mode:ident, %=)    => { 2 };
    -    ($mode:ident, =>)    => { 2 };
         ($mode:ident, ;)     => { 1 };
         ($mode:ident, <<)    => { 2 };
         ($mode:ident, <<=)   => { 3 };
         ($mode:ident, >>)    => { 2 };
         ($mode:ident, >>=)   => { 3 };
    +    ($mode:ident, /)     => { 1 };
    +    ($mode:ident, /=)    => { 2 };
         ($mode:ident, *)     => { 1 };
    -    ($mode:ident, -)     => { 1 };
    -    ($mode:ident, -=)    => { 2 };
    +    ($mode:ident, *=)    => { 2 };
         ($mode:ident, ~)     => { 1 };
         (lenient, $tt:tt)    => { 0 };
         (strict, $tt:tt)     => {{ $crate::custom_punctuation_unexpected!($tt); 0 }};
    @@ -586,16 +594,16 @@
     // Not public API.
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! custom_punctuation_unexpected {
    +macro_rules! custom_punctuation_unexpected {
         () => {};
     }
     
     // Not public API.
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! stringify_punct {
    +macro_rules! stringify_punct {
         ($($tt:tt)+) => {
    -        concat!($(stringify!($tt)),+)
    +        $crate::__private::concat!($($crate::__private::stringify!($tt)),+)
         };
     }
     
    \ No newline at end of file diff --git a/src/syn/data.rs.html b/src/syn/data.rs.html index 5c0d3c6..330b2a0 100644 --- a/src/syn/data.rs.html +++ b/src/syn/data.rs.html @@ -1,4 +1,5 @@ -data.rs - source
    1
    +data.rs - source

    syn/
    data.rs

    +1
     2
     3
     4
    @@ -421,88 +422,19 @@
     421
     422
     423
    -424
    -425
    -426
    -427
    -428
    -429
    -430
    -431
    -432
    -433
    -434
    -435
    -436
    -437
    -438
    -439
    -440
    -441
    -442
    -443
    -444
    -445
    -446
    -447
    -448
    -449
    -450
    -451
    -452
    -453
    -454
    -455
    -456
    -457
    -458
    -459
    -460
    -461
    -462
    -463
    -464
    -465
    -466
    -467
    -468
    -469
    -470
    -471
    -472
    -473
    -474
    -475
    -476
    -477
    -478
    -479
    -480
    -481
    -482
    -483
    -484
    -485
    -486
    -487
    -488
    -489
    -490
    -491
    -492
    -493
    -
    use super::*;
    -use crate::punctuated::Punctuated;
    +424
    use crate::attr::Attribute;
    +use crate::expr::{Expr, Index, Member};
    +use crate::ident::Ident;
    +use crate::punctuated::{self, Punctuated};
    +use crate::restriction::{FieldMutability, Visibility};
    +use crate::token;
    +use crate::ty::Type;
     
    -ast_struct! {
    +ast_struct! {
         /// An enum variant.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct Variant {
    -        /// Attributes tagged on the variant.
    -        pub attrs: Vec<Attribute>,
    +        pub attrs: Vec<Attribute>,
     
             /// Name of the variant.
             pub ident: Ident,
    @@ -515,18 +447,15 @@
         }
     }
     
    -ast_enum_of_structs! {
    +ast_enum_of_structs! {
         /// Data stored within an enum variant or struct.
         ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    ///
         /// # Syntax tree enum
         ///
         /// This type is a [syntax tree enum].
         ///
    -    /// [syntax tree enum]: Expr#syntax-tree-enums
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    /// [syntax tree enum]: crate::expr::Expr#syntax-tree-enums
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub enum Fields {
             /// Named fields of a struct or struct variant such as `Point { x: f64,
             /// y: f64 }`.
    @@ -540,25 +469,19 @@
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// Named fields of a struct or struct variant such as `Point { x: f64,
         /// y: f64 }`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct FieldsNamed {
             pub brace_token: token::Brace,
             pub named: Punctuated<Field, Token![,]>,
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// Unnamed fields of a tuple struct or tuple variant such as `Some(T)`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct FieldsUnnamed {
             pub paren_token: token::Paren,
             pub unnamed: Punctuated<Field, Token![,]>,
    @@ -568,7 +491,7 @@
     impl Fields {
         /// Get an iterator over the borrowed [`Field`] items in this object. This
         /// iterator can be used to iterate over a named or unnamed struct or
    -    /// variant's fields uniformly.
    +    /// variant's fields uniformly.
         pub fn iter(&self) -> punctuated::Iter<Field> {
             match self {
                 Fields::Unit => crate::punctuated::empty_punctuated_iter(),
    @@ -579,7 +502,7 @@
     
         /// Get an iterator over the mutably borrowed [`Field`] items in this
         /// object. This iterator can be used to iterate over a named or unnamed
    -    /// struct or variant's fields uniformly.
    +    /// struct or variant's fields uniformly.
         pub fn iter_mut(&mut self) -> punctuated::IterMut<Field> {
             match self {
                 Fields::Unit => crate::punctuated::empty_punctuated_iter_mut(),
    @@ -605,6 +528,47 @@
                 Fields::Unnamed(f) => f.unnamed.is_empty(),
             }
         }
    +
    +    return_impl_trait! {
    +        /// Get an iterator over the fields of a struct or variant as [`Member`]s.
    +        /// This iterator can be used to iterate over a named or unnamed struct or
    +        /// variant's fields uniformly.
    +        ///
    +        /// # Example
    +        ///
    +        /// The following is a simplistic [`Clone`] derive for structs. (A more
    +        /// complete implementation would additionally want to infer trait bounds on
    +        /// the generic type parameters.)
    +        ///
    +        /// ```
    +        /// # use quote::quote;
    +        /// #
    +        /// fn derive_clone(input: &syn::ItemStruct) -> proc_macro2::TokenStream {
    +        ///     let ident = &input.ident;
    +        ///     let members = input.fields.members();
    +        ///     let (impl_generics, ty_generics, where_clause) = input.generics.split_for_impl();
    +        ///     quote! {
    +        ///         impl #impl_generics Clone for #ident #ty_generics #where_clause {
    +        ///             fn clone(&self) -> Self {
    +        ///                 Self {
    +        ///                     #(#members: self.#members.clone()),*
    +        ///                 }
    +        ///             }
    +        ///         }
    +        ///     }
    +        /// }
    +        /// ```
    +        ///
    +        /// For structs with named fields, it produces an expression like `Self { a:
    +        /// self.a.clone() }`. For structs with unnamed fields, `Self { 0:
    +        /// self.0.clone() }`. And for unit structs, `Self {}`.
    +        pub fn members(&self) -> impl Iterator<Item = Member> + Clone + '_ [Members] {
    +            Members {
    +                fields: self.iter(),
    +                index: 0,
    +            }
    +        }
    +    }
     }
     
     impl IntoIterator for Fields {
    @@ -620,36 +584,33 @@
         }
     }
     
    -impl<'a> IntoIterator for &'a Fields {
    -    type Item = &'a Field;
    -    type IntoIter = punctuated::Iter<'a, Field>;
    +impl<'a> IntoIterator for &'a Fields {
    +    type Item = &'a Field;
    +    type IntoIter = punctuated::Iter<'a, Field>;
     
         fn into_iter(self) -> Self::IntoIter {
             self.iter()
         }
     }
     
    -impl<'a> IntoIterator for &'a mut Fields {
    -    type Item = &'a mut Field;
    -    type IntoIter = punctuated::IterMut<'a, Field>;
    +impl<'a> IntoIterator for &'a mut Fields {
    +    type Item = &'a mut Field;
    +    type IntoIter = punctuated::IterMut<'a, Field>;
     
         fn into_iter(self) -> Self::IntoIter {
             self.iter_mut()
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A field of a struct or enum variant.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct Field {
    -        /// Attributes tagged on the field.
    -        pub attrs: Vec<Attribute>,
    +        pub attrs: Vec<Attribute>,
     
    -        /// Visibility of the field.
    -        pub vis: Visibility,
    +        pub vis: Visibility,
    +
    +        pub mutability: FieldMutability,
     
             /// Name of the field, if any.
             ///
    @@ -658,85 +619,66 @@
     
             pub colon_token: Option<Token![:]>,
     
    -        /// Type of the field.
    -        pub ty: Type,
    +        pub ty: Type,
         }
     }
     
    -ast_enum_of_structs! {
    -    /// The visibility level of an item: inherited or `pub` or
    -    /// `pub(restricted)`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    ///
    -    /// # Syntax tree enum
    -    ///
    -    /// This type is a [syntax tree enum].
    -    ///
    -    /// [syntax tree enum]: Expr#syntax-tree-enums
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    -    pub enum Visibility {
    -        /// A public visibility level: `pub`.
    -        Public(VisPublic),
    +pub struct Members<'a> {
    +    fields: punctuated::Iter<'a, Field>,
    +    index: u32,
    +}
     
    -        /// A crate-level visibility: `crate`.
    -        Crate(VisCrate),
    +impl<'a> Iterator for Members<'a> {
    +    type Item = Member;
     
    -        /// A visibility level restricted to some path: `pub(self)` or
    -        /// `pub(super)` or `pub(crate)` or `pub(in some::module)`.
    -        Restricted(VisRestricted),
    -
    -        /// An inherited visibility, which usually means private.
    -        Inherited,
    +    fn next(&mut self) -> Option<Self::Item> {
    +        let field = self.fields.next()?;
    +        let member = match &field.ident {
    +            Some(ident) => Member::Named(ident.clone()),
    +            None => {
    +                #[cfg(all(feature = "parsing", feature = "printing"))]
    +                let span = crate::spanned::Spanned::span(&field.ty);
    +                #[cfg(not(all(feature = "parsing", feature = "printing")))]
    +                let span = proc_macro2::Span::call_site();
    +                Member::Unnamed(Index {
    +                    index: self.index,
    +                    span,
    +                })
    +            }
    +        };
    +        self.index += 1;
    +        Some(member)
         }
     }
     
    -ast_struct! {
    -    /// A public visibility level: `pub`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    -    pub struct VisPublic {
    -        pub pub_token: Token![pub],
    +impl<'a> Clone for Members<'a> {
    +    fn clone(&self) -> Self {
    +        Members {
    +            fields: self.fields.clone(),
    +            index: self.index,
    +        }
         }
     }
     
    -ast_struct! {
    -    /// A crate-level visibility: `crate`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    -    pub struct VisCrate {
    -        pub crate_token: Token![crate],
    -    }
    -}
    +#[cfg(feature = "parsing")]
    +pub(crate) mod parsing {
    +    use crate::attr::Attribute;
    +    use crate::data::{Field, Fields, FieldsNamed, FieldsUnnamed, Variant};
    +    use crate::error::Result;
    +    use crate::expr::Expr;
    +    use crate::ext::IdentExt as _;
    +    use crate::ident::Ident;
    +    #[cfg(not(feature = "full"))]
    +    use crate::parse::discouraged::Speculative as _;
    +    use crate::parse::{Parse, ParseStream};
    +    use crate::restriction::{FieldMutability, Visibility};
    +    #[cfg(not(feature = "full"))]
    +    use crate::scan_expr::scan_expr;
    +    use crate::token;
    +    use crate::ty::Type;
    +    use crate::verbatim;
     
    -ast_struct! {
    -    /// A visibility level restricted to some path: `pub(self)` or
    -    /// `pub(super)` or `pub(crate)` or `pub(in some::module)`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    -    pub struct VisRestricted {
    -        pub pub_token: Token![pub],
    -        pub paren_token: token::Paren,
    -        pub in_token: Option<Token![in]>,
    -        pub path: Box<Path>,
    -    }
    -}
    -
    -#[cfg(feature = "parsing")]
    -pub mod parsing {
    -    use super::*;
    -    use crate::ext::IdentExt;
    -    use crate::parse::discouraged::Speculative;
    -    use crate::parse::{Parse, ParseStream, Result};
    -
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for Variant {
             fn parse(input: ParseStream) -> Result<Self> {
                 let attrs = input.call(Attribute::parse_outer)?;
    @@ -751,7 +693,20 @@
                 };
                 let discriminant = if input.peek(Token![=]) {
                     let eq_token: Token![=] = input.parse()?;
    -                let discriminant: Expr = input.parse()?;
    +                #[cfg(feature = "full")]
    +                let discriminant: Expr = input.parse()?;
    +                #[cfg(not(feature = "full"))]
    +                let discriminant = {
    +                    let begin = input.fork();
    +                    let ahead = input.fork();
    +                    let mut discriminant: Result<Expr> = ahead.parse();
    +                    if discriminant.is_ok() {
    +                        input.advance_to(&ahead);
    +                    } else if scan_expr(input).is_ok() {
    +                        discriminant = Ok(Expr::Verbatim(verbatim::between(&begin, input)));
    +                    }
    +                    discriminant?
    +                };
                     Some((eq_token, discriminant))
                 } else {
                     None
    @@ -765,155 +720,89 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for FieldsNamed {
             fn parse(input: ParseStream) -> Result<Self> {
                 let content;
                 Ok(FieldsNamed {
                     brace_token: braced!(content in input),
    -                named: content.parse_terminated(Field::parse_named)?,
    +                named: content.parse_terminated(Field::parse_named, Token![,])?,
                 })
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for FieldsUnnamed {
             fn parse(input: ParseStream) -> Result<Self> {
                 let content;
                 Ok(FieldsUnnamed {
                     paren_token: parenthesized!(content in input),
    -                unnamed: content.parse_terminated(Field::parse_unnamed)?,
    +                unnamed: content.parse_terminated(Field::parse_unnamed, Token![,])?,
                 })
             }
         }
     
         impl Field {
             /// Parses a named (braced struct) field.
    -        #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +        #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
             pub fn parse_named(input: ParseStream) -> Result<Self> {
    +            let attrs = input.call(Attribute::parse_outer)?;
    +            let vis: Visibility = input.parse()?;
    +
    +            let unnamed_field = cfg!(feature = "full") && input.peek(Token![_]);
    +            let ident = if unnamed_field {
    +                input.call(Ident::parse_any)
    +            } else {
    +                input.parse()
    +            }?;
    +
    +            let colon_token: Token![:] = input.parse()?;
    +
    +            let ty: Type = if unnamed_field
    +                && (input.peek(Token![struct])
    +                    || input.peek(Token![union]) && input.peek2(token::Brace))
    +            {
    +                let begin = input.fork();
    +                input.call(Ident::parse_any)?;
    +                input.parse::<FieldsNamed>()?;
    +                Type::Verbatim(verbatim::between(&begin, input))
    +            } else {
    +                input.parse()?
    +            };
    +
                 Ok(Field {
    -                attrs: input.call(Attribute::parse_outer)?,
    -                vis: input.parse()?,
    -                ident: Some(if input.peek(Token![_]) {
    -                    input.call(Ident::parse_any)
    -                } else {
    -                    input.parse()
    -                }?),
    -                colon_token: Some(input.parse()?),
    -                ty: input.parse()?,
    +                attrs,
    +                vis,
    +                mutability: FieldMutability::None,
    +                ident: Some(ident),
    +                colon_token: Some(colon_token),
    +                ty,
                 })
             }
     
             /// Parses an unnamed (tuple struct) field.
    -        #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +        #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
             pub fn parse_unnamed(input: ParseStream) -> Result<Self> {
                 Ok(Field {
                     attrs: input.call(Attribute::parse_outer)?,
                     vis: input.parse()?,
    +                mutability: FieldMutability::None,
                     ident: None,
                     colon_token: None,
                     ty: input.parse()?,
                 })
             }
         }
    -
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    -    impl Parse for Visibility {
    -        fn parse(input: ParseStream) -> Result<Self> {
    -            // Recognize an empty None-delimited group, as produced by a $:vis
    -            // matcher that matched no tokens.
    -            if input.peek(token::Group) {
    -                let ahead = input.fork();
    -                let group = crate::group::parse_group(&ahead)?;
    -                if group.content.is_empty() {
    -                    input.advance_to(&ahead);
    -                    return Ok(Visibility::Inherited);
    -                }
    -            }
    -
    -            if input.peek(Token![pub]) {
    -                Self::parse_pub(input)
    -            } else if input.peek(Token![crate]) {
    -                Self::parse_crate(input)
    -            } else {
    -                Ok(Visibility::Inherited)
    -            }
    -        }
    -    }
    -
    -    impl Visibility {
    -        fn parse_pub(input: ParseStream) -> Result<Self> {
    -            let pub_token = input.parse::<Token![pub]>()?;
    -
    -            if input.peek(token::Paren) {
    -                let ahead = input.fork();
    -
    -                let content;
    -                let paren_token = parenthesized!(content in ahead);
    -                if content.peek(Token![crate])
    -                    || content.peek(Token![self])
    -                    || content.peek(Token![super])
    -                {
    -                    let path = content.call(Ident::parse_any)?;
    -
    -                    // Ensure there are no additional tokens within `content`.
    -                    // Without explicitly checking, we may misinterpret a tuple
    -                    // field as a restricted visibility, causing a parse error.
    -                    // e.g. `pub (crate::A, crate::B)` (Issue #720).
    -                    if content.is_empty() {
    -                        input.advance_to(&ahead);
    -                        return Ok(Visibility::Restricted(VisRestricted {
    -                            pub_token,
    -                            paren_token,
    -                            in_token: None,
    -                            path: Box::new(Path::from(path)),
    -                        }));
    -                    }
    -                } else if content.peek(Token![in]) {
    -                    let in_token: Token![in] = content.parse()?;
    -                    let path = content.call(Path::parse_mod_style)?;
    -
    -                    input.advance_to(&ahead);
    -                    return Ok(Visibility::Restricted(VisRestricted {
    -                        pub_token,
    -                        paren_token,
    -                        in_token: Some(in_token),
    -                        path: Box::new(path),
    -                    }));
    -                }
    -            }
    -
    -            Ok(Visibility::Public(VisPublic { pub_token }))
    -        }
    -
    -        fn parse_crate(input: ParseStream) -> Result<Self> {
    -            if input.peek2(Token![::]) {
    -                Ok(Visibility::Inherited)
    -            } else {
    -                Ok(Visibility::Crate(VisCrate {
    -                    crate_token: input.parse()?,
    -                }))
    -            }
    -        }
    -
    -        #[cfg(feature = "full")]
    -        pub(crate) fn is_some(&self) -> bool {
    -            match self {
    -                Visibility::Inherited => false,
    -                _ => true,
    -            }
    -        }
    -    }
     }
     
    -#[cfg(feature = "printing")]
    +#[cfg(feature = "printing")]
     mod printing {
    -    use super::*;
    +    use crate::data::{Field, FieldsNamed, FieldsUnnamed, Variant};
         use crate::print::TokensOrDefault;
         use proc_macro2::TokenStream;
         use quote::{ToTokens, TokenStreamExt};
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for Variant {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 tokens.append_all(&self.attrs);
    @@ -926,7 +815,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for FieldsNamed {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 self.brace_token.surround(tokens, |tokens| {
    @@ -935,7 +824,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for FieldsUnnamed {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 self.paren_token.surround(tokens, |tokens| {
    @@ -944,7 +833,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for Field {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 tokens.append_all(&self.attrs);
    @@ -956,32 +845,5 @@
                 self.ty.to_tokens(tokens);
             }
         }
    -
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for VisPublic {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            self.pub_token.to_tokens(tokens);
    -        }
    -    }
    -
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for VisCrate {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            self.crate_token.to_tokens(tokens);
    -        }
    -    }
    -
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for VisRestricted {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            self.pub_token.to_tokens(tokens);
    -            self.paren_token.surround(tokens, |tokens| {
    -                // TODO: If we have a path which is not "self" or "super" or
    -                // "crate", automatically add the "in" token.
    -                self.in_token.to_tokens(tokens);
    -                self.path.to_tokens(tokens);
    -            });
    -        }
    -    }
     }
     
    \ No newline at end of file diff --git a/src/syn/derive.rs.html b/src/syn/derive.rs.html index 17d8fbe..2d7fb98 100644 --- a/src/syn/derive.rs.html +++ b/src/syn/derive.rs.html @@ -1,4 +1,5 @@ -derive.rs - source
    1
    +derive.rs - source

    syn/
    derive.rs

    +1
     2
     3
     4
    @@ -256,79 +257,45 @@
     256
     257
     258
    -259
    -260
    -261
    -262
    -263
    -264
    -265
    -266
    -267
    -268
    -269
    -270
    -271
    -272
    -273
    -274
    -
    use super::*;
    +259
    use crate::attr::Attribute;
    +use crate::data::{Fields, FieldsNamed, Variant};
    +use crate::generics::Generics;
    +use crate::ident::Ident;
     use crate::punctuated::Punctuated;
    +use crate::restriction::Visibility;
    +use crate::token;
     
    -ast_struct! {
    +ast_struct! {
         /// Data structure sent to a `proc_macro_derive` macro.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "derive")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
         pub struct DeriveInput {
    -        /// Attributes tagged on the whole struct or enum.
    -        pub attrs: Vec<Attribute>,
    -
    -        /// Visibility of the struct or enum.
    -        pub vis: Visibility,
    -
    -        /// Name of the struct or enum.
    -        pub ident: Ident,
    -
    -        /// Generics required to complete the definition.
    -        pub generics: Generics,
    -
    -        /// Data within the struct or enum.
    -        pub data: Data,
    +        pub attrs: Vec<Attribute>,
    +        pub vis: Visibility,
    +        pub ident: Ident,
    +        pub generics: Generics,
    +        pub data: Data,
         }
     }
     
    -ast_enum_of_structs! {
    +ast_enum! {
         /// The storage of a struct, enum or union data structure.
         ///
    -    /// *This type is available only if Syn is built with the `"derive"` feature.*
    -    ///
         /// # Syntax tree enum
         ///
         /// This type is a [syntax tree enum].
         ///
    -    /// [syntax tree enum]: Expr#syntax-tree-enums
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "derive")))]
    +    /// [syntax tree enum]: crate::expr::Expr#syntax-tree-enums
    +    #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
         pub enum Data {
    -        /// A struct input to a `proc_macro_derive` macro.
    -        Struct(DataStruct),
    -
    -        /// An enum input to a `proc_macro_derive` macro.
    -        Enum(DataEnum),
    -
    -        /// An untagged union input to a `proc_macro_derive` macro.
    -        Union(DataUnion),
    +        Struct(DataStruct),
    +        Enum(DataEnum),
    +        Union(DataUnion),
         }
    -
    -    do_not_generate_to_tokens
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A struct input to a `proc_macro_derive` macro.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "derive")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
         pub struct DataStruct {
             pub struct_token: Token![struct],
             pub fields: Fields,
    @@ -336,12 +303,9 @@
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// An enum input to a `proc_macro_derive` macro.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "derive")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
         pub struct DataEnum {
             pub enum_token: Token![enum],
             pub brace_token: token::Brace,
    @@ -349,24 +313,29 @@
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// An untagged union input to a `proc_macro_derive` macro.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "derive")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
         pub struct DataUnion {
             pub union_token: Token![union],
             pub fields: FieldsNamed,
         }
     }
     
    -#[cfg(feature = "parsing")]
    -pub mod parsing {
    -    use super::*;
    -    use crate::parse::{Parse, ParseStream, Result};
    +#[cfg(feature = "parsing")]
    +pub(crate) mod parsing {
    +    use crate::attr::Attribute;
    +    use crate::data::{Fields, FieldsNamed, Variant};
    +    use crate::derive::{Data, DataEnum, DataStruct, DataUnion, DeriveInput};
    +    use crate::error::Result;
    +    use crate::generics::{Generics, WhereClause};
    +    use crate::ident::Ident;
    +    use crate::parse::{Parse, ParseStream};
    +    use crate::punctuated::Punctuated;
    +    use crate::restriction::Visibility;
    +    use crate::token;
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for DeriveInput {
             fn parse(input: ParseStream) -> Result<Self> {
                 let attrs = input.call(Attribute::parse_outer)?;
    @@ -435,7 +404,7 @@
             }
         }
     
    -    pub fn data_struct(
    +    pub(crate) fn data_struct(
             input: ParseStream,
         ) -> Result<(Option<WhereClause>, Fields, Option<Token![;]>)> {
             let mut lookahead = input.lookahead1();
    @@ -471,7 +440,7 @@
             }
         }
     
    -    pub fn data_enum(
    +    pub(crate) fn data_enum(
             input: ParseStream,
         ) -> Result<(
             Option<WhereClause>,
    @@ -482,27 +451,28 @@
     
             let content;
             let brace = braced!(content in input);
    -        let variants = content.parse_terminated(Variant::parse)?;
    +        let variants = content.parse_terminated(Variant::parse, Token![,])?;
     
             Ok((where_clause, brace, variants))
         }
     
    -    pub fn data_union(input: ParseStream) -> Result<(Option<WhereClause>, FieldsNamed)> {
    +    pub(crate) fn data_union(input: ParseStream) -> Result<(Option<WhereClause>, FieldsNamed)> {
             let where_clause = input.parse()?;
             let fields = input.parse()?;
             Ok((where_clause, fields))
         }
     }
     
    -#[cfg(feature = "printing")]
    +#[cfg(feature = "printing")]
     mod printing {
    -    use super::*;
         use crate::attr::FilterAttrs;
    +    use crate::data::Fields;
    +    use crate::derive::{Data, DeriveInput};
         use crate::print::TokensOrDefault;
         use proc_macro2::TokenStream;
         use quote::ToTokens;
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for DeriveInput {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 for attr in self.attrs.outer() {
    diff --git a/src/syn/discouraged.rs.html b/src/syn/discouraged.rs.html
    index 3993619..fd6436f 100644
    --- a/src/syn/discouraged.rs.html
    +++ b/src/syn/discouraged.rs.html
    @@ -1,4 +1,5 @@
    -discouraged.rs - source
    1
    +discouraged.rs - source

    syn/
    discouraged.rs

    +1
     2
     3
     4
    @@ -192,9 +193,46 @@
     192
     193
     194
    -
    //! Extensions to the parsing API with niche applicability.
    +195
    +196
    +197
    +198
    +199
    +200
    +201
    +202
    +203
    +204
    +205
    +206
    +207
    +208
    +209
    +210
    +211
    +212
    +213
    +214
    +215
    +216
    +217
    +218
    +219
    +220
    +221
    +222
    +223
    +224
    +225
    //! Extensions to the parsing API with niche applicability.
     
    -use super::*;
    +use crate::buffer::Cursor;
    +use crate::error::Result;
    +use crate::parse::{inner_unexpected, ParseBuffer, Unexpected};
    +use proc_macro2::extra::DelimSpan;
    +use proc_macro2::Delimiter;
    +use std::cell::Cell;
    +use std::mem;
    +use std::rc::Rc;
     
     /// Extensions to the `ParseStream` API to support speculative parsing.
     pub trait Speculative {
    @@ -202,15 +240,15 @@
         ///
         /// This is the opposite operation to [`ParseStream::fork`]. You can fork a
         /// parse stream, perform some speculative parsing, then join the original
    -    /// stream to the fork to "commit" the parsing from the fork to the main
    +    /// stream to the fork to "commit" the parsing from the fork to the main
         /// stream.
         ///
         /// If you can avoid doing this, you should, as it limits the ability to
         /// generate useful errors. That said, it is often the only way to parse
         /// syntax of the form `A* B*` for arbitrary syntax `A` and `B`. The problem
    -    /// is that when the fork fails to parse an `A`, it's impossible to tell
    +    /// is that when the fork fails to parse an `A`, it's impossible to tell
         /// whether that was because of a syntax error and the user meant to provide
    -    /// an `A`, or that the `A`s are finished and it's time to start parsing
    +    /// an `A`, or that the `A`s are finished and it's time to start parsing
         /// `B`s. Use with care.
         ///
         /// Also note that if `A` is a subset of `B`, `A* B*` can be parsed by
    @@ -229,8 +267,8 @@
         /// `<` token as the start of generic arguments, and reset to the `<` if
         /// that fails (e.g. the token is acting as a less-than operator).
         ///
    -    /// This is the exact kind of parsing behavior which requires the "fork,
    -    /// try, commit" behavior that [`ParseStream::fork`] discourages. With
    +    /// This is the exact kind of parsing behavior which requires the "fork,
    +    /// try, commit" behavior that [`ParseStream::fork`] discourages. With
         /// `advance_to`, we can avoid having to parse the speculatively parsed
         /// content a second time.
         ///
    @@ -292,18 +330,18 @@
         ///     }
         /// }
         ///
    -    /// # syn::parse_str::<PathSegment>("a<b,c>").unwrap();
    +    /// # syn::parse_str::<PathSegment>("a<b,c>").unwrap();
         /// ```
         ///
         /// # Drawbacks
         ///
         /// The main drawback of this style of speculative parsing is in error
    -    /// presentation. Even if the lookahead is the "correct" parse, the error
    -    /// that is shown is that of the "fallback" parse. To use the same example
    -    /// as the turbofish above, take the following unfinished "turbofish":
    +    /// presentation. Even if the lookahead is the "correct" parse, the error
    +    /// that is shown is that of the "fallback" parse. To use the same example
    +    /// as the turbofish above, take the following unfinished "turbofish":
         ///
         /// ```text
    -    /// let _ = f<&'a fn(), for<'a> serde::>();
    +    /// let _ = f<&'a fn(), for<'a> serde::>();
         /// ```
         ///
         /// If this is parsed as generic arguments, we can provide the error message
    @@ -312,25 +350,25 @@
         /// error: expected identifier
         ///  --> src.rs:L:C
         ///   |
    -    /// L | let _ = f<&'a fn(), for<'a> serde::>();
    +    /// L | let _ = f<&'a fn(), for<'a> serde::>();
         ///   |                                    ^
         /// ```
         ///
         /// but if parsed using the above speculative parsing, it falls back to
         /// assuming that the `<` is a less-than when it fails to parse the generic
    -    /// arguments, and tries to interpret the `&'a` as the start of a labelled
    +    /// arguments, and tries to interpret the `&'a` as the start of a labelled
         /// loop, resulting in the much less helpful error
         ///
         /// ```text
         /// error: expected `:`
         ///  --> src.rs:L:C
         ///   |
    -    /// L | let _ = f<&'a fn(), for<'a> serde::>();
    +    /// L | let _ = f<&'a fn(), for<'a> serde::>();
         ///   |               ^^
         /// ```
         ///
         /// This can be mitigated with various heuristics (two examples: show both
    -    /// forks' parse errors, or show the one that consumed more tokens), but
    +    /// forks' parse errors, or show the one that consumed more tokens), but
         /// when you can control the grammar, sticking to something that can be
         /// parsed LL(3) and without the LL(*) speculative parsing this makes
         /// possible, displaying reasonable errors becomes much more simple.
    @@ -351,10 +389,10 @@
         fn advance_to(&self, fork: &Self);
     }
     
    -impl<'a> Speculative for ParseBuffer<'a> {
    +impl<'a> Speculative for ParseBuffer<'a> {
         fn advance_to(&self, fork: &Self) {
             if !crate::buffer::same_scope(self.cursor(), fork.cursor()) {
    -            panic!("Fork was not derived from the advancing parse stream");
    +            panic!("fork was not derived from the advancing parse stream");
             }
     
             let (self_unexp, self_sp) = inner_unexpected(self);
    @@ -362,16 +400,16 @@
             if !Rc::ptr_eq(&self_unexp, &fork_unexp) {
                 match (fork_sp, self_sp) {
                     // Unexpected set on the fork, but not on `self`, copy it over.
    -                (Some(span), None) => {
    -                    self_unexp.set(Unexpected::Some(span));
    +                (Some((span, delimiter)), None) => {
    +                    self_unexp.set(Unexpected::Some(span, delimiter));
                     }
                     // Unexpected unset. Use chain to propagate errors from fork.
                     (None, None) => {
                         fork_unexp.set(Unexpected::Chain(self_unexp));
     
    -                    // Ensure toplevel 'unexpected' tokens from the fork don't
    +                    // Ensure toplevel 'unexpected' tokens from the fork don't
                         // bubble up the chain by replacing the root `unexpected`
    -                    // pointer, only 'unexpected' tokens from existing group
    +                    // pointer, only 'unexpected' tokens from existing group
                         // parsers should bubble.
                         fork.unexpected
                             .set(Some(Rc::new(Cell::new(Unexpected::None))));
    @@ -383,7 +421,31 @@
     
             // See comment on `cell` in the struct definition.
             self.cell
    -            .set(unsafe { mem::transmute::<Cursor, Cursor<'static>>(fork.cursor()) });
    +            .set(unsafe { mem::transmute::<Cursor, Cursor<'static>>(fork.cursor()) });
    +    }
    +}
    +
    +/// Extensions to the `ParseStream` API to support manipulating invisible
    +/// delimiters the same as if they were visible.
    +pub trait AnyDelimiter {
    +    /// Returns the delimiter, the span of the delimiter token, and the nested
    +    /// contents for further parsing.
    +    fn parse_any_delimiter(&self) -> Result<(Delimiter, DelimSpan, ParseBuffer)>;
    +}
    +
    +impl<'a> AnyDelimiter for ParseBuffer<'a> {
    +    fn parse_any_delimiter(&self) -> Result<(Delimiter, DelimSpan, ParseBuffer)> {
    +        self.step(|cursor| {
    +            if let Some((content, delimiter, span, rest)) = cursor.any_group() {
    +                let scope = span.close();
    +                let nested = crate::parse::advance_step_cursor(cursor, content);
    +                let unexpected = crate::parse::get_unexpected(self);
    +                let content = crate::parse::new_parse_buffer(scope, nested, unexpected);
    +                Ok(((delimiter, span, content), rest))
    +            } else {
    +                Err(cursor.error("expected any delimiter"))
    +            }
    +        })
         }
     }
     
    \ No newline at end of file diff --git a/src/syn/drops.rs.html b/src/syn/drops.rs.html index 29c421f..c68734d 100644 --- a/src/syn/drops.rs.html +++ b/src/syn/drops.rs.html @@ -1,4 +1,5 @@ -drops.rs - source
    1
    +drops.rs - source

    syn/
    drops.rs

    +1
     2
     3
     4
    @@ -55,8 +56,7 @@
     55
     56
     57
    -58
    -
    use std::iter;
    +58
    use std::iter;
     use std::mem::ManuallyDrop;
     use std::ops::{Deref, DerefMut};
     use std::option;
    @@ -90,10 +90,10 @@
     pub(crate) trait TrivialDrop {}
     
     impl<T> TrivialDrop for iter::Empty<T> {}
    -impl<'a, T> TrivialDrop for slice::Iter<'a, T> {}
    -impl<'a, T> TrivialDrop for slice::IterMut<'a, T> {}
    -impl<'a, T> TrivialDrop for option::IntoIter<&'a T> {}
    -impl<'a, T> TrivialDrop for option::IntoIter<&'a mut T> {}
    +impl<T> TrivialDrop for slice::Iter<'_, T> {}
    +impl<T> TrivialDrop for slice::IterMut<'_, T> {}
    +impl<T> TrivialDrop for option::IntoIter<&T> {}
    +impl<T> TrivialDrop for option::IntoIter<&mut T> {}
     
     #[test]
     fn test_needs_drop() {
    diff --git a/src/syn/error.rs.html b/src/syn/error.rs.html
    index 7e710b7..224c88f 100644
    --- a/src/syn/error.rs.html
    +++ b/src/syn/error.rs.html
    @@ -1,4 +1,5 @@
    -error.rs - source
    1
    +error.rs - source

    syn/
    error.rs

    +1
     2
     3
     4
    @@ -426,16 +427,53 @@
     426
     427
     428
    -
    #[cfg(feature = "parsing")]
    +429
    +430
    +431
    +432
    +433
    +434
    +435
    +436
    +437
    +438
    +439
    +440
    +441
    +442
    +443
    +444
    +445
    +446
    +447
    +448
    +449
    +450
    +451
    +452
    +453
    +454
    +455
    +456
    +457
    +458
    +459
    +460
    +461
    +462
    +463
    +464
    +465
    +466
    +467
    #[cfg(feature = "parsing")]
     use crate::buffer::Cursor;
     use crate::thread::ThreadBound;
     use proc_macro2::{
         Delimiter, Group, Ident, LexError, Literal, Punct, Spacing, Span, TokenStream, TokenTree,
     };
    -#[cfg(feature = "printing")]
    +#[cfg(feature = "printing")]
     use quote::ToTokens;
     use std::fmt::{self, Debug, Display};
    -use std::iter::FromIterator;
     use std::slice;
     use std::vec;
     
    @@ -462,18 +500,34 @@
     /// # extern crate proc_macro;
     /// #
     /// use proc_macro::TokenStream;
    -/// use syn::{parse_macro_input, AttributeArgs, ItemFn};
    +/// use syn::parse::{Parse, ParseStream, Result};
    +/// use syn::{parse_macro_input, ItemFn};
     ///
     /// # const IGNORE: &str = stringify! {
     /// #[proc_macro_attribute]
     /// # };
     /// pub fn my_attr(args: TokenStream, input: TokenStream) -> TokenStream {
    -///     let args = parse_macro_input!(args as AttributeArgs);
    +///     let args = parse_macro_input!(args as MyAttrArgs);
     ///     let input = parse_macro_input!(input as ItemFn);
     ///
     ///     /* ... */
     ///     # TokenStream::new()
     /// }
    +///
    +/// struct MyAttrArgs {
    +///     # _k: [(); { stringify! {
    +///     ...
    +///     # }; 0 }]
    +/// }
    +///
    +/// impl Parse for MyAttrArgs {
    +///     fn parse(input: ParseStream) -> Result<Self> {
    +///         # stringify! {
    +///         ...
    +///         # };
    +///         # unimplemented!()
    +///     }
    +/// }
     /// ```
     ///
     /// For errors that arise later than the initial parsing stage, the
    @@ -517,14 +571,21 @@
     struct ErrorMessage {
         // Span is implemented as an index into a thread-local interner to keep the
         // size small. It is not safe to access from a different thread. We want
    -    // errors to be Send and Sync to play nicely with the Failure crate, so pin
    -    // the span we're given to its original thread and assume it is
    -    // Span::call_site if accessed from any other thread.
    -    start_span: ThreadBound<Span>,
    -    end_span: ThreadBound<Span>,
    +    // errors to be Send and Sync to play nicely with ecosystem crates for error
    +    // handling, so pin the span we're given to its original thread and assume
    +    // it is Span::call_site if accessed from any other thread.
    +    span: ThreadBound<SpanRange>,
         message: String,
     }
     
    +// Cannot use std::ops::Range<Span> because that does not implement Copy,
    +// whereas ThreadBound<T> requires a Copy impl as a way to ensure no Drop impls
    +// are involved.
    +struct SpanRange {
    +    start: Span,
    +    end: Span,
    +}
    +
     #[cfg(test)]
     struct _Test
     where
    @@ -546,15 +607,15 @@
         /// use syn::{Error, Ident, LitStr, Result, Token};
         /// use syn::parse::ParseStream;
         ///
    -    /// // Parses input that looks like `name = "string"` where the key must be
    +    /// // Parses input that looks like `name = "string"` where the key must be
         /// // the identifier `name` and the value may be any string literal.
         /// // Returns the string literal.
         /// fn parse_name(input: ParseStream) -> Result<LitStr> {
         ///     let name_token: Ident = input.parse()?;
    -    ///     if name_token != "name" {
    +    ///     if name_token != "name" {
         ///         // Trigger an error not on the current position of the stream,
         ///         // but on the position of the unexpected identifier.
    -    ///         return Err(Error::new(name_token.span(), "expected `name`"));
    +    ///         return Err(Error::new(name_token.span(), "expected `name`"));
         ///     }
         ///     input.parse::<Token![=]>()?;
         ///     let s: LitStr = input.parse()?;
    @@ -567,8 +628,10 @@
             fn new(span: Span, message: String) -> Error {
                 Error {
                     messages: vec![ErrorMessage {
    -                    start_span: ThreadBound::new(span),
    -                    end_span: ThreadBound::new(span),
    +                    span: ThreadBound::new(SpanRange {
    +                        start: span,
    +                        end: span,
    +                    }),
                         message,
                     }],
                 }
    @@ -586,9 +649,10 @@
         /// `Error::new_spanned` may provide a higher-quality error message on
         /// stable Rust.
         ///
    -    /// When in doubt it's recommended to stick to `Error::new` (or
    +    /// When in doubt it's recommended to stick to `Error::new` (or
         /// `ParseStream::error`)!
    -    #[cfg(feature = "printing")]
    +    #[cfg(feature = "printing")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         pub fn new_spanned<T: ToTokens, U: Display>(tokens: T, message: U) -> Self {
             return new_spanned(tokens.into_token_stream(), message.to_string());
     
    @@ -598,8 +662,7 @@
                 let end = iter.last().map_or(start, |t| t.span());
                 Error {
                     messages: vec![ErrorMessage {
    -                    start_span: ThreadBound::new(start),
    -                    end_span: ThreadBound::new(end),
    +                    span: ThreadBound::new(SpanRange { start, end }),
                         message,
                     }],
                 }
    @@ -612,11 +675,7 @@
         /// if called from a different thread than the one on which the `Error` was
         /// originally created.
         pub fn span(&self) -> Span {
    -        let start = match self.messages[0].start_span.get() {
    -            Some(span) => *span,
    -            None => return Span::call_site(),
    -        };
    -        let end = match self.messages[0].end_span.get() {
    +        let SpanRange { start, end } = match self.messages[0].span.get() {
                 Some(span) => *span,
                 None => return Span::call_site(),
             };
    @@ -682,24 +741,43 @@
     
     impl ErrorMessage {
         fn to_compile_error(&self) -> TokenStream {
    -        let start = self
    -            .start_span
    -            .get()
    -            .cloned()
    -            .unwrap_or_else(Span::call_site);
    -        let end = self.end_span.get().cloned().unwrap_or_else(Span::call_site);
    +        let (start, end) = match self.span.get() {
    +            Some(range) => (range.start, range.end),
    +            None => (Span::call_site(), Span::call_site()),
    +        };
     
    -        // compile_error!($message)
    -        TokenStream::from_iter(vec![
    -            TokenTree::Ident(Ident::new("compile_error", start)),
    +        // ::core::compile_error!($message)
    +        TokenStream::from_iter([
                 TokenTree::Punct({
    -                let mut punct = Punct::new('!', Spacing::Alone);
    +                let mut punct = Punct::new(':', Spacing::Joint);
    +                punct.set_span(start);
    +                punct
    +            }),
    +            TokenTree::Punct({
    +                let mut punct = Punct::new(':', Spacing::Alone);
    +                punct.set_span(start);
    +                punct
    +            }),
    +            TokenTree::Ident(Ident::new("core", start)),
    +            TokenTree::Punct({
    +                let mut punct = Punct::new(':', Spacing::Joint);
    +                punct.set_span(start);
    +                punct
    +            }),
    +            TokenTree::Punct({
    +                let mut punct = Punct::new(':', Spacing::Alone);
    +                punct.set_span(start);
    +                punct
    +            }),
    +            TokenTree::Ident(Ident::new("compile_error", start)),
    +            TokenTree::Punct({
    +                let mut punct = Punct::new('!', Spacing::Alone);
                     punct.set_span(start);
                     punct
                 }),
                 TokenTree::Group({
                     let mut group = Group::new(Delimiter::Brace, {
    -                    TokenStream::from_iter(vec![TokenTree::Literal({
    +                    TokenStream::from_iter([TokenTree::Literal({
                             let mut string = Literal::string(&self.message);
                             string.set_span(end);
                             string
    @@ -712,25 +790,24 @@
         }
     }
     
    -#[cfg(feature = "parsing")]
    -pub fn new_at<T: Display>(scope: Span, cursor: Cursor, message: T) -> Error {
    +#[cfg(feature = "parsing")]
    +pub(crate) fn new_at<T: Display>(scope: Span, cursor: Cursor, message: T) -> Error {
         if cursor.eof() {
    -        Error::new(scope, format!("unexpected end of input, {}", message))
    +        Error::new(scope, format!("unexpected end of input, {}", message))
         } else {
             let span = crate::buffer::open_span_of_group(cursor);
             Error::new(span, message)
         }
     }
     
    -#[cfg(all(feature = "parsing", any(feature = "full", feature = "derive")))]
    -pub fn new2<T: Display>(start: Span, end: Span, message: T) -> Error {
    +#[cfg(all(feature = "parsing", any(feature = "full", feature = "derive")))]
    +pub(crate) fn new2<T: Display>(start: Span, end: Span, message: T) -> Error {
         return new2(start, end, message.to_string());
     
         fn new2(start: Span, end: Span, message: String) -> Error {
             Error {
                 messages: vec![ErrorMessage {
    -                start_span: ThreadBound::new(start),
    -                end_span: ThreadBound::new(end),
    +                span: ThreadBound::new(SpanRange { start, end }),
                     message,
                 }],
             }
    @@ -741,12 +818,12 @@
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
             if self.messages.len() == 1 {
                 formatter
    -                .debug_tuple("Error")
    +                .debug_tuple("Error")
                     .field(&self.messages[0])
                     .finish()
             } else {
                 formatter
    -                .debug_tuple("Error")
    +                .debug_tuple("Error")
                     .field(&self.messages)
                     .finish()
             }
    @@ -775,25 +852,26 @@
     
     impl Clone for ErrorMessage {
         fn clone(&self) -> Self {
    -        let start = self
    -            .start_span
    -            .get()
    -            .cloned()
    -            .unwrap_or_else(Span::call_site);
    -        let end = self.end_span.get().cloned().unwrap_or_else(Span::call_site);
             ErrorMessage {
    -            start_span: ThreadBound::new(start),
    -            end_span: ThreadBound::new(end),
    +            span: self.span,
                 message: self.message.clone(),
             }
         }
     }
     
    +impl Clone for SpanRange {
    +    fn clone(&self) -> Self {
    +        *self
    +    }
    +}
    +
    +impl Copy for SpanRange {}
    +
     impl std::error::Error for Error {}
     
     impl From<LexError> for Error {
         fn from(err: LexError) -> Self {
    -        Error::new(err.span(), "lex error")
    +        Error::new(err.span(), err)
         }
     }
     
    @@ -822,9 +900,9 @@
         }
     }
     
    -impl<'a> IntoIterator for &'a Error {
    +impl<'a> IntoIterator for &'a Error {
         type Item = Error;
    -    type IntoIter = Iter<'a>;
    +    type IntoIter = Iter<'a>;
     
         fn into_iter(self) -> Self::IntoIter {
             Iter {
    @@ -833,11 +911,11 @@
         }
     }
     
    -pub struct Iter<'a> {
    -    messages: slice::Iter<'a, ErrorMessage>,
    +pub struct Iter<'a> {
    +    messages: slice::Iter<'a, ErrorMessage>,
     }
     
    -impl<'a> Iterator for Iter<'a> {
    +impl<'a> Iterator for Iter<'a> {
         type Item = Error;
     
         fn next(&mut self) -> Option<Self::Item> {
    diff --git a/src/syn/export.rs.html b/src/syn/export.rs.html
    index abd63a8..3c03ff3 100644
    --- a/src/syn/export.rs.html
    +++ b/src/syn/export.rs.html
    @@ -1,4 +1,5 @@
    -export.rs - source
    1
    +export.rs - source

    syn/
    export.rs

    +1
     2
     3
     4
    @@ -37,43 +38,110 @@
     37
     38
     39
    -
    pub use std::clone::Clone;
    -pub use std::cmp::{Eq, PartialEq};
    -pub use std::default::Default;
    -pub use std::fmt::{self, Debug, Formatter};
    -pub use std::hash::{Hash, Hasher};
    -pub use std::marker::Copy;
    -pub use std::option::Option::{None, Some};
    -pub use std::result::Result::{Err, Ok};
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    #[doc(hidden)]
    +pub use std::clone::Clone;
    +#[doc(hidden)]
    +pub use std::cmp::{Eq, PartialEq};
    +#[doc(hidden)]
    +pub use std::concat;
    +#[doc(hidden)]
    +pub use std::default::Default;
    +#[doc(hidden)]
    +pub use std::fmt::Debug;
    +#[doc(hidden)]
    +pub use std::hash::{Hash, Hasher};
    +#[doc(hidden)]
    +pub use std::marker::Copy;
    +#[doc(hidden)]
    +pub use std::option::Option::{None, Some};
    +#[doc(hidden)]
    +pub use std::result::Result::{Err, Ok};
    +#[doc(hidden)]
    +pub use std::stringify;
     
    -#[cfg(feature = "printing")]
    -pub extern crate quote;
    +#[doc(hidden)]
    +pub type Formatter<'a> = std::fmt::Formatter<'a>;
    +#[doc(hidden)]
    +pub type FmtResult = std::fmt::Result;
     
    -pub use proc_macro2::{Span, TokenStream as TokenStream2};
    +#[doc(hidden)]
    +pub type bool = std::primitive::bool;
    +#[doc(hidden)]
    +pub type str = std::primitive::str;
     
    -#[cfg(feature = "parsing")]
    +#[cfg(feature = "printing")]
    +#[doc(hidden)]
    +pub use quote;
    +
    +#[doc(hidden)]
    +pub type Span = proc_macro2::Span;
    +#[doc(hidden)]
    +pub type TokenStream2 = proc_macro2::TokenStream;
    +
    +#[cfg(feature = "parsing")]
    +#[doc(hidden)]
     pub use crate::group::{parse_braces, parse_brackets, parse_parens};
     
    -pub use crate::span::IntoSpans;
    +#[doc(hidden)]
    +pub use crate::span::IntoSpans;
     
    -#[cfg(all(
    -    not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
    -    feature = "proc-macro"
    -))]
    -pub use proc_macro::TokenStream;
    +#[cfg(all(feature = "parsing", feature = "printing"))]
    +#[doc(hidden)]
    +pub use crate::parse_quote::parse as parse_quote;
     
    -#[cfg(feature = "printing")]
    +#[cfg(feature = "parsing")]
    +#[doc(hidden)]
    +pub use crate::token::parsing::{peek_punct, punct as parse_punct};
    +
    +#[cfg(feature = "printing")]
    +#[doc(hidden)]
    +pub use crate::token::printing::punct as print_punct;
    +
    +#[cfg(feature = "parsing")]
    +#[doc(hidden)]
    +pub use crate::token::private::CustomToken;
    +
    +#[cfg(feature = "proc-macro")]
    +#[doc(hidden)]
    +pub type TokenStream = proc_macro::TokenStream;
    +
    +#[cfg(feature = "printing")]
    +#[doc(hidden)]
     pub use quote::{ToTokens, TokenStreamExt};
     
    -#[allow(non_camel_case_types)]
    -pub type bool = help::Bool;
    -#[allow(non_camel_case_types)]
    -pub type str = help::Str;
    -
    -mod help {
    -    pub type Bool = bool;
    -    pub type Str = str;
    -}
    -
    -pub struct private(pub(crate) ());
    +#[doc(hidden)]
    +pub struct private(pub(crate) ());
     
    \ No newline at end of file diff --git a/src/syn/expr.rs.html b/src/syn/expr.rs.html index ad2efe5..449097f 100644 --- a/src/syn/expr.rs.html +++ b/src/syn/expr.rs.html @@ -1,4 +1,5 @@ -expr.rs - source
    1
    +expr.rs - source

    syn/
    expr.rs

    +1
     2
     3
     4
    @@ -3556,24 +3557,524 @@
     3556
     3557
     3558
    -
    use super::*;
    +3559
    +3560
    +3561
    +3562
    +3563
    +3564
    +3565
    +3566
    +3567
    +3568
    +3569
    +3570
    +3571
    +3572
    +3573
    +3574
    +3575
    +3576
    +3577
    +3578
    +3579
    +3580
    +3581
    +3582
    +3583
    +3584
    +3585
    +3586
    +3587
    +3588
    +3589
    +3590
    +3591
    +3592
    +3593
    +3594
    +3595
    +3596
    +3597
    +3598
    +3599
    +3600
    +3601
    +3602
    +3603
    +3604
    +3605
    +3606
    +3607
    +3608
    +3609
    +3610
    +3611
    +3612
    +3613
    +3614
    +3615
    +3616
    +3617
    +3618
    +3619
    +3620
    +3621
    +3622
    +3623
    +3624
    +3625
    +3626
    +3627
    +3628
    +3629
    +3630
    +3631
    +3632
    +3633
    +3634
    +3635
    +3636
    +3637
    +3638
    +3639
    +3640
    +3641
    +3642
    +3643
    +3644
    +3645
    +3646
    +3647
    +3648
    +3649
    +3650
    +3651
    +3652
    +3653
    +3654
    +3655
    +3656
    +3657
    +3658
    +3659
    +3660
    +3661
    +3662
    +3663
    +3664
    +3665
    +3666
    +3667
    +3668
    +3669
    +3670
    +3671
    +3672
    +3673
    +3674
    +3675
    +3676
    +3677
    +3678
    +3679
    +3680
    +3681
    +3682
    +3683
    +3684
    +3685
    +3686
    +3687
    +3688
    +3689
    +3690
    +3691
    +3692
    +3693
    +3694
    +3695
    +3696
    +3697
    +3698
    +3699
    +3700
    +3701
    +3702
    +3703
    +3704
    +3705
    +3706
    +3707
    +3708
    +3709
    +3710
    +3711
    +3712
    +3713
    +3714
    +3715
    +3716
    +3717
    +3718
    +3719
    +3720
    +3721
    +3722
    +3723
    +3724
    +3725
    +3726
    +3727
    +3728
    +3729
    +3730
    +3731
    +3732
    +3733
    +3734
    +3735
    +3736
    +3737
    +3738
    +3739
    +3740
    +3741
    +3742
    +3743
    +3744
    +3745
    +3746
    +3747
    +3748
    +3749
    +3750
    +3751
    +3752
    +3753
    +3754
    +3755
    +3756
    +3757
    +3758
    +3759
    +3760
    +3761
    +3762
    +3763
    +3764
    +3765
    +3766
    +3767
    +3768
    +3769
    +3770
    +3771
    +3772
    +3773
    +3774
    +3775
    +3776
    +3777
    +3778
    +3779
    +3780
    +3781
    +3782
    +3783
    +3784
    +3785
    +3786
    +3787
    +3788
    +3789
    +3790
    +3791
    +3792
    +3793
    +3794
    +3795
    +3796
    +3797
    +3798
    +3799
    +3800
    +3801
    +3802
    +3803
    +3804
    +3805
    +3806
    +3807
    +3808
    +3809
    +3810
    +3811
    +3812
    +3813
    +3814
    +3815
    +3816
    +3817
    +3818
    +3819
    +3820
    +3821
    +3822
    +3823
    +3824
    +3825
    +3826
    +3827
    +3828
    +3829
    +3830
    +3831
    +3832
    +3833
    +3834
    +3835
    +3836
    +3837
    +3838
    +3839
    +3840
    +3841
    +3842
    +3843
    +3844
    +3845
    +3846
    +3847
    +3848
    +3849
    +3850
    +3851
    +3852
    +3853
    +3854
    +3855
    +3856
    +3857
    +3858
    +3859
    +3860
    +3861
    +3862
    +3863
    +3864
    +3865
    +3866
    +3867
    +3868
    +3869
    +3870
    +3871
    +3872
    +3873
    +3874
    +3875
    +3876
    +3877
    +3878
    +3879
    +3880
    +3881
    +3882
    +3883
    +3884
    +3885
    +3886
    +3887
    +3888
    +3889
    +3890
    +3891
    +3892
    +3893
    +3894
    +3895
    +3896
    +3897
    +3898
    +3899
    +3900
    +3901
    +3902
    +3903
    +3904
    +3905
    +3906
    +3907
    +3908
    +3909
    +3910
    +3911
    +3912
    +3913
    +3914
    +3915
    +3916
    +3917
    +3918
    +3919
    +3920
    +3921
    +3922
    +3923
    +3924
    +3925
    +3926
    +3927
    +3928
    +3929
    +3930
    +3931
    +3932
    +3933
    +3934
    +3935
    +3936
    +3937
    +3938
    +3939
    +3940
    +3941
    +3942
    +3943
    +3944
    +3945
    +3946
    +3947
    +3948
    +3949
    +3950
    +3951
    +3952
    +3953
    +3954
    +3955
    +3956
    +3957
    +3958
    +3959
    +3960
    +3961
    +3962
    +3963
    +3964
    +3965
    +3966
    +3967
    +3968
    +3969
    +3970
    +3971
    +3972
    +3973
    +3974
    +3975
    +3976
    +3977
    +3978
    +3979
    +3980
    +3981
    +3982
    +3983
    +3984
    +3985
    +3986
    +3987
    +3988
    +3989
    +3990
    +3991
    +3992
    +3993
    +3994
    +3995
    +3996
    +3997
    +3998
    +3999
    +4000
    +4001
    +4002
    +4003
    +4004
    +4005
    +4006
    +4007
    +4008
    +4009
    +4010
    +4011
    +4012
    +4013
    +4014
    +4015
    +4016
    +4017
    +4018
    +4019
    +4020
    +4021
    +4022
    +4023
    +4024
    +4025
    +4026
    +4027
    +4028
    +4029
    +4030
    +4031
    +4032
    +4033
    +4034
    +4035
    +4036
    +4037
    +4038
    use crate::attr::Attribute;
    +#[cfg(all(feature = "parsing", feature = "full"))]
    +use crate::error::Result;
    +#[cfg(feature = "parsing")]
    +use crate::ext::IdentExt as _;
    +#[cfg(feature = "full")]
    +use crate::generics::BoundLifetimes;
    +use crate::ident::Ident;
    +#[cfg(any(feature = "parsing", feature = "full"))]
    +use crate::lifetime::Lifetime;
    +use crate::lit::Lit;
    +use crate::mac::Macro;
    +use crate::op::{BinOp, UnOp};
    +#[cfg(feature = "parsing")]
    +use crate::parse::ParseStream;
    +#[cfg(feature = "full")]
    +use crate::pat::Pat;
    +use crate::path::{AngleBracketedGenericArguments, Path, QSelf};
     use crate::punctuated::Punctuated;
    -#[cfg(feature = "full")]
    -use crate::reserved::Reserved;
    +#[cfg(feature = "full")]
    +use crate::stmt::Block;
    +use crate::token;
    +#[cfg(feature = "full")]
    +use crate::ty::ReturnType;
    +use crate::ty::Type;
     use proc_macro2::{Span, TokenStream};
    -#[cfg(feature = "printing")]
    +#[cfg(feature = "printing")]
     use quote::IdentFragment;
    -#[cfg(feature = "printing")]
    +#[cfg(feature = "printing")]
     use std::fmt::{self, Display};
     use std::hash::{Hash, Hasher};
    -#[cfg(feature = "parsing")]
    +#[cfg(all(feature = "parsing", feature = "full"))]
     use std::mem;
     
    -ast_enum_of_structs! {
    +ast_enum_of_structs! {
         /// A Rust expression.
         ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature, but most of the variants are not available unless "full" is enabled.*
    +    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    +    /// feature, but most of the variants are not available unless "full" is enabled.*
         ///
         /// # Syntax tree enums
         ///
    @@ -3644,8 +4145,8 @@
         /// A sign that you may not be choosing the right variable names is if you
         /// see names getting repeated in your code, like accessing
         /// `receiver.receiver` or `pat.pat` or `cond.cond`.
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    -    #[cfg_attr(not(syn_no_non_exhaustive), non_exhaustive)]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[non_exhaustive]
         pub enum Expr {
             /// A slice literal expression: `[a, b, c, d]`.
             Array(ExprArray),
    @@ -3653,24 +4154,18 @@
             /// An assignment expression: `a = compute()`.
             Assign(ExprAssign),
     
    -        /// A compound assignment expression: `counter += 1`.
    -        AssignOp(ExprAssignOp),
    -
             /// An async block: `async { ... }`.
             Async(ExprAsync),
     
             /// An await expression: `fut.await`.
             Await(ExprAwait),
     
    -        /// A binary operation: `a + b`, `a * b`.
    +        /// A binary operation: `a + b`, `a += b`.
             Binary(ExprBinary),
     
             /// A blocked scope: `{ ... }`.
             Block(ExprBlock),
     
    -        /// A box expression: `box f`.
    -        Box(ExprBox),
    -
             /// A `break`, with an optional label to break and an optional
             /// expression.
             Break(ExprBreak),
    @@ -3684,6 +4179,9 @@
             /// A closure expression: `|a, b| a + b`.
             Closure(ExprClosure),
     
    +        /// A const block: `const { ... }`.
    +        Const(ExprConst),
    +
             /// A `continue`, with an optional label.
             Continue(ExprContinue),
     
    @@ -3711,16 +4209,19 @@
             /// A square bracketed indexing expression: `vector[2]`.
             Index(ExprIndex),
     
    +        /// The inferred value of a const generic argument, denoted `_`.
    +        Infer(ExprInfer),
    +
             /// A `let` guard: `let Some(x) = opt`.
             Let(ExprLet),
     
    -        /// A literal in place of an expression: `1`, `"foo"`.
    +        /// A literal in place of an expression: `1`, `"foo"`.
             Lit(ExprLit),
     
             /// Conditionless loop: `loop { ... }`.
             Loop(ExprLoop),
     
    -        /// A macro invocation expression: `format!("{}", q)`.
    +        /// A macro invocation expression: `format!("{}", q)`.
             Macro(ExprMacro),
     
             /// A `match` expression: `match n { Some(n) => {}, None => {} }`.
    @@ -3741,6 +4242,9 @@
             /// A range expression: `1..2`, `1..`, `..2`, `1..=2`, `..=2`.
             Range(ExprRange),
     
    +        /// Address-of operation: `&raw const place` or `&raw mut place`.
    +        RawAddr(ExprRawAddr),
    +
             /// A referencing operation: `&a` or `&mut a`.
             Reference(ExprReference),
     
    @@ -3765,9 +4269,6 @@
             /// A tuple expression: `(a, b, c, d)`.
             Tuple(ExprTuple),
     
    -        /// A type ascription expression: `foo: f64`.
    -        Type(ExprType),
    -
             /// A unary operation: `!x`, `*x`.
             Unary(ExprUnary),
     
    @@ -3783,35 +4284,29 @@
             /// A yield expression: `yield expr`.
             Yield(ExprYield),
     
    -        // Not public API.
    -        //
    -        // For testing exhaustiveness in downstream code, use the following idiom:
    +        // For testing exhaustiveness in downstream code, use the following idiom:
             //
             //     match expr {
    +        //         #![cfg_attr(test, deny(non_exhaustive_omitted_patterns))]
    +        //
             //         Expr::Array(expr) => {...}
             //         Expr::Assign(expr) => {...}
             //         ...
             //         Expr::Yield(expr) => {...}
             //
    -        //         #[cfg_attr(test, deny(non_exhaustive_omitted_patterns))]
             //         _ => { /* some sane fallback */ }
             //     }
             //
    -        // This way we fail your tests but don't break your library when adding
    +        // This way we fail your tests but don't break your library when adding
             // a variant. You will be notified by a test failure when a variant is
             // added, so that you can add code to handle it, but your library will
             // continue to compile and work for downstream users in the interim.
    -        #[cfg(syn_no_non_exhaustive)]
    -        #[doc(hidden)]
    -        __NonExhaustive,
    -    }
    +    }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A slice literal expression: `[a, b, c, d]`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
         pub struct ExprArray #full {
             pub attrs: Vec<Attribute>,
             pub bracket_token: token::Bracket,
    @@ -3819,11 +4314,9 @@
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// An assignment expression: `a = compute()`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
         pub struct ExprAssign #full {
             pub attrs: Vec<Attribute>,
             pub left: Box<Expr>,
    @@ -3832,24 +4325,9 @@
         }
     }
     
    -ast_struct! {
    -    /// A compound assignment expression: `counter += 1`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    -    pub struct ExprAssignOp #full {
    -        pub attrs: Vec<Attribute>,
    -        pub left: Box<Expr>,
    -        pub op: BinOp,
    -        pub right: Box<Expr>,
    -    }
    -}
    -
    -ast_struct! {
    +ast_struct! {
         /// An async block: `async { ... }`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
         pub struct ExprAsync #full {
             pub attrs: Vec<Attribute>,
             pub async_token: Token![async],
    @@ -3858,25 +4336,20 @@
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// An await expression: `fut.await`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
         pub struct ExprAwait #full {
             pub attrs: Vec<Attribute>,
             pub base: Box<Expr>,
             pub dot_token: Token![.],
    -        pub await_token: token::Await,
    +        pub await_token: Token![await],
         }
     }
     
    -ast_struct! {
    -    /// A binary operation: `a + b`, `a * b`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +ast_struct! {
    +    /// A binary operation: `a + b`, `a += b`.
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct ExprBinary {
             pub attrs: Vec<Attribute>,
             pub left: Box<Expr>,
    @@ -3885,11 +4358,9 @@
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A blocked scope: `{ ... }`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
         pub struct ExprBlock #full {
             pub attrs: Vec<Attribute>,
             pub label: Option<Label>,
    @@ -3897,24 +4368,10 @@
         }
     }
     
    -ast_struct! {
    -    /// A box expression: `box f`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    -    pub struct ExprBox #full {
    -        pub attrs: Vec<Attribute>,
    -        pub box_token: Token![box],
    -        pub expr: Box<Expr>,
    -    }
    -}
    -
    -ast_struct! {
    +ast_struct! {
         /// A `break`, with an optional label to break and an optional
         /// expression.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
         pub struct ExprBreak #full {
             pub attrs: Vec<Attribute>,
             pub break_token: Token![break],
    @@ -3923,12 +4380,9 @@
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A function call expression: `invoke(a, b)`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct ExprCall {
             pub attrs: Vec<Attribute>,
             pub func: Box<Expr>,
    @@ -3937,12 +4391,9 @@
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A cast expression: `foo as f64`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct ExprCast {
             pub attrs: Vec<Attribute>,
             pub expr: Box<Expr>,
    @@ -3951,13 +4402,13 @@
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A closure expression: `|a, b| a + b`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
         pub struct ExprClosure #full {
             pub attrs: Vec<Attribute>,
    +        pub lifetimes: Option<BoundLifetimes>,
    +        pub constness: Option<Token![const]>,
             pub movability: Option<Token![static]>,
             pub asyncness: Option<Token![async]>,
             pub capture: Option<Token![move]>,
    @@ -3969,11 +4420,19 @@
         }
     }
     
    -ast_struct! {
    +ast_struct! {
    +    /// A const block: `const { ... }`.
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    pub struct ExprConst #full {
    +        pub attrs: Vec<Attribute>,
    +        pub const_token: Token![const],
    +        pub block: Block,
    +    }
    +}
    +
    +ast_struct! {
         /// A `continue`, with an optional label.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
         pub struct ExprContinue #full {
             pub attrs: Vec<Attribute>,
             pub continue_token: Token![continue],
    @@ -3981,12 +4440,10 @@
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// Access of a named struct field (`obj.k`) or unnamed tuple struct
         /// field (`obj.0`).
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct ExprField {
             pub attrs: Vec<Attribute>,
             pub base: Box<Expr>,
    @@ -3995,47 +4452,41 @@
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A for loop: `for pat in expr { ... }`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
         pub struct ExprForLoop #full {
             pub attrs: Vec<Attribute>,
             pub label: Option<Label>,
             pub for_token: Token![for],
    -        pub pat: Pat,
    +        pub pat: Box<Pat>,
             pub in_token: Token![in],
             pub expr: Box<Expr>,
             pub body: Block,
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// An expression contained within invisible delimiters.
         ///
         /// This variant is important for faithfully representing the precedence
         /// of expressions and is related to `None`-delimited spans in a
         /// `TokenStream`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    -    pub struct ExprGroup #full {
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    pub struct ExprGroup {
             pub attrs: Vec<Attribute>,
             pub group_token: token::Group,
             pub expr: Box<Expr>,
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// An `if` expression with an optional `else` block: `if expr { ... }
         /// else { ... }`.
         ///
         /// The `else` branch expression may only be an `If` or `Block`
         /// expression, not any of the other types of expression.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
         pub struct ExprIf #full {
             pub attrs: Vec<Attribute>,
             pub if_token: Token![if],
    @@ -4045,12 +4496,9 @@
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A square bracketed indexing expression: `vector[2]`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct ExprIndex {
             pub attrs: Vec<Attribute>,
             pub expr: Box<Expr>,
    @@ -4059,37 +4507,39 @@
         }
     }
     
    -ast_struct! {
    +ast_struct! {
    +    /// The inferred value of a const generic argument, denoted `_`.
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    pub struct ExprInfer #full {
    +        pub attrs: Vec<Attribute>,
    +        pub underscore_token: Token![_],
    +    }
    +}
    +
    +ast_struct! {
         /// A `let` guard: `let Some(x) = opt`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
         pub struct ExprLet #full {
             pub attrs: Vec<Attribute>,
             pub let_token: Token![let],
    -        pub pat: Pat,
    +        pub pat: Box<Pat>,
             pub eq_token: Token![=],
             pub expr: Box<Expr>,
         }
     }
     
    -ast_struct! {
    -    /// A literal in place of an expression: `1`, `"foo"`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +ast_struct! {
    +    /// A literal in place of an expression: `1`, `"foo"`.
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct ExprLit {
             pub attrs: Vec<Attribute>,
             pub lit: Lit,
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// Conditionless loop: `loop { ... }`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
         pub struct ExprLoop #full {
             pub attrs: Vec<Attribute>,
             pub label: Option<Label>,
    @@ -4098,22 +4548,18 @@
         }
     }
     
    -ast_struct! {
    -    /// A macro invocation expression: `format!("{}", q)`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    -    pub struct ExprMacro #full {
    +ast_struct! {
    +    /// A macro invocation expression: `format!("{}", q)`.
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    pub struct ExprMacro {
             pub attrs: Vec<Attribute>,
             pub mac: Macro,
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A `match` expression: `match n { Some(n) => {}, None => {} }`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
         pub struct ExprMatch #full {
             pub attrs: Vec<Attribute>,
             pub match_token: Token![match],
    @@ -4123,27 +4569,23 @@
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A method call expression: `x.foo::<T>(a, b)`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    -    pub struct ExprMethodCall #full {
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    pub struct ExprMethodCall {
             pub attrs: Vec<Attribute>,
             pub receiver: Box<Expr>,
             pub dot_token: Token![.],
             pub method: Ident,
    -        pub turbofish: Option<MethodTurbofish>,
    +        pub turbofish: Option<AngleBracketedGenericArguments>,
             pub paren_token: token::Paren,
             pub args: Punctuated<Expr, Token![,]>,
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A parenthesized expression: `(a + b)`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct ExprParen {
             pub attrs: Vec<Attribute>,
             pub paren_token: token::Paren,
    @@ -4151,15 +4593,12 @@
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A path like `std::mem::replace` possibly containing generic
         /// parameters and a qualified self-type.
         ///
         /// A plain identifier like `x` is a path of length 1.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct ExprPath {
             pub attrs: Vec<Attribute>,
             pub qself: Option<QSelf>,
    @@ -4167,38 +4606,43 @@
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A range expression: `1..2`, `1..`, `..2`, `1..=2`, `..=2`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
         pub struct ExprRange #full {
             pub attrs: Vec<Attribute>,
    -        pub from: Option<Box<Expr>>,
    +        pub start: Option<Box<Expr>>,
             pub limits: RangeLimits,
    -        pub to: Option<Box<Expr>>,
    +        pub end: Option<Box<Expr>>,
         }
     }
     
    -ast_struct! {
    +ast_struct! {
    +    /// Address-of operation: `&raw const place` or `&raw mut place`.
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    pub struct ExprRawAddr #full {
    +        pub attrs: Vec<Attribute>,
    +        pub and_token: Token![&],
    +        pub raw: Token![raw],
    +        pub mutability: PointerMutability,
    +        pub expr: Box<Expr>,
    +    }
    +}
    +
    +ast_struct! {
         /// A referencing operation: `&a` or `&mut a`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    -    pub struct ExprReference #full {
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    pub struct ExprReference {
             pub attrs: Vec<Attribute>,
             pub and_token: Token![&],
    -        pub raw: Reserved,
             pub mutability: Option<Token![mut]>,
             pub expr: Box<Expr>,
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// An array literal constructed from one repeated element: `[0u8; N]`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
         pub struct ExprRepeat #full {
             pub attrs: Vec<Attribute>,
             pub bracket_token: token::Bracket,
    @@ -4208,11 +4652,9 @@
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A `return`, with an optional value to be returned.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
         pub struct ExprReturn #full {
             pub attrs: Vec<Attribute>,
             pub return_token: Token![return],
    @@ -4220,16 +4662,15 @@
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A struct literal expression: `Point { x: 1, y: 1 }`.
         ///
         /// The `rest` provides the value of the remaining fields as in `S { a:
         /// 1, b: 1, ..rest }`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    -    pub struct ExprStruct #full {
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    pub struct ExprStruct {
             pub attrs: Vec<Attribute>,
    +        pub qself: Option<QSelf>,
             pub path: Path,
             pub brace_token: token::Brace,
             pub fields: Punctuated<FieldValue, Token![,]>,
    @@ -4238,11 +4679,9 @@
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A try-expression: `expr?`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
         pub struct ExprTry #full {
             pub attrs: Vec<Attribute>,
             pub expr: Box<Expr>,
    @@ -4250,11 +4689,9 @@
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A try block: `try { ... }`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
         pub struct ExprTryBlock #full {
             pub attrs: Vec<Attribute>,
             pub try_token: Token![try],
    @@ -4262,37 +4699,19 @@
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A tuple expression: `(a, b, c, d)`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    -    pub struct ExprTuple #full {
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    pub struct ExprTuple {
             pub attrs: Vec<Attribute>,
             pub paren_token: token::Paren,
             pub elems: Punctuated<Expr, Token![,]>,
         }
     }
     
    -ast_struct! {
    -    /// A type ascription expression: `foo: f64`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    -    pub struct ExprType #full {
    -        pub attrs: Vec<Attribute>,
    -        pub expr: Box<Expr>,
    -        pub colon_token: Token![:],
    -        pub ty: Box<Type>,
    -    }
    -}
    -
    -ast_struct! {
    +ast_struct! {
         /// A unary operation: `!x`, `*x`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct ExprUnary {
             pub attrs: Vec<Attribute>,
             pub op: UnOp,
    @@ -4300,11 +4719,9 @@
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// An unsafe block: `unsafe { ... }`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
         pub struct ExprUnsafe #full {
             pub attrs: Vec<Attribute>,
             pub unsafe_token: Token![unsafe],
    @@ -4312,11 +4729,9 @@
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A while loop: `while expr { ... }`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
         pub struct ExprWhile #full {
             pub attrs: Vec<Attribute>,
             pub label: Option<Label>,
    @@ -4326,11 +4741,9 @@
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A yield expression: `yield expr`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
         pub struct ExprYield #full {
             pub attrs: Vec<Attribute>,
             pub yield_token: Token![yield],
    @@ -4339,8 +4752,26 @@
     }
     
     impl Expr {
    -    #[cfg(all(feature = "parsing", not(syn_no_const_vec_new)))]
    -    const DUMMY: Self = Expr::Path(ExprPath {
    +    /// An unspecified invalid expression.
    +    ///
    +    /// ```
    +    /// use quote::ToTokens;
    +    /// use std::mem;
    +    /// use syn::{parse_quote, Expr};
    +    ///
    +    /// fn unparenthesize(e: &mut Expr) {
    +    ///     while let Expr::Paren(paren) = e {
    +    ///         *e = mem::replace(&mut *paren.expr, Expr::PLACEHOLDER);
    +    ///     }
    +    /// }
    +    ///
    +    /// fn main() {
    +    ///     let mut e: Expr = parse_quote! { ((1 + 1)) };
    +    ///     unparenthesize(&mut e);
    +    ///     assert_eq!("1 + 1", e.to_token_stream().to_string());
    +    /// }
    +    /// ```
    +    pub const PLACEHOLDER: Self = Expr::Path(ExprPath {
             attrs: Vec::new(),
             qself: None,
             path: Path {
    @@ -4349,63 +4780,236 @@
             },
         });
     
    -    #[cfg(all(feature = "parsing", feature = "full"))]
    +    /// An alternative to the primary `Expr::parse` parser (from the [`Parse`]
    +    /// trait) for ambiguous syntactic positions in which a trailing brace
    +    /// should not be taken as part of the expression.
    +    ///
    +    /// [`Parse`]: crate::parse::Parse
    +    ///
    +    /// Rust grammar has an ambiguity where braces sometimes turn a path
    +    /// expression into a struct initialization and sometimes do not. In the
    +    /// following code, the expression `S {}` is one expression. Presumably
    +    /// there is an empty struct `struct S {}` defined somewhere which it is
    +    /// instantiating.
    +    ///
    +    /// ```
    +    /// # struct S;
    +    /// # impl std::ops::Deref for S {
    +    /// #     type Target = bool;
    +    /// #     fn deref(&self) -> &Self::Target {
    +    /// #         &true
    +    /// #     }
    +    /// # }
    +    /// let _ = *S {};
    +    ///
    +    /// // parsed by rustc as: `*(S {})`
    +    /// ```
    +    ///
    +    /// We would want to parse the above using `Expr::parse` after the `=`
    +    /// token.
    +    ///
    +    /// But in the following, `S {}` is *not* a struct init expression.
    +    ///
    +    /// ```
    +    /// # const S: &bool = &true;
    +    /// if *S {} {}
    +    ///
    +    /// // parsed by rustc as:
    +    /// //
    +    /// //    if (*S) {
    +    /// //        /* empty block */
    +    /// //    }
    +    /// //    {
    +    /// //        /* another empty block */
    +    /// //    }
    +    /// ```
    +    ///
    +    /// For that reason we would want to parse if-conditions using
    +    /// `Expr::parse_without_eager_brace` after the `if` token. Same for similar
    +    /// syntactic positions such as the condition expr after a `while` token or
    +    /// the expr at the top of a `match`.
    +    ///
    +    /// The Rust grammar's choices around which way this ambiguity is resolved
    +    /// at various syntactic positions is fairly arbitrary. Really either parse
    +    /// behavior could work in most positions, and language designers just
    +    /// decide each case based on which is more likely to be what the programmer
    +    /// had in mind most of the time.
    +    ///
    +    /// ```
    +    /// # struct S;
    +    /// # fn doc() -> S {
    +    /// if return S {} {}
    +    /// # unreachable!()
    +    /// # }
    +    ///
    +    /// // parsed by rustc as:
    +    /// //
    +    /// //    if (return (S {})) {
    +    /// //    }
    +    /// //
    +    /// // but could equally well have been this other arbitrary choice:
    +    /// //
    +    /// //    if (return S) {
    +    /// //    }
    +    /// //    {}
    +    /// ```
    +    ///
    +    /// Note the grammar ambiguity on trailing braces is distinct from
    +    /// precedence and is not captured by assigning a precedence level to the
    +    /// braced struct init expr in relation to other operators. This can be
    +    /// illustrated by `return 0..S {}` vs `match 0..S {}`. The former parses as
    +    /// `return (0..(S {}))` implying tighter precedence for struct init than
    +    /// `..`, while the latter parses as `match (0..S) {}` implying tighter
    +    /// precedence for `..` than struct init, a contradiction.
    +    #[cfg(all(feature = "full", feature = "parsing"))]
    +    #[cfg_attr(docsrs, doc(cfg(all(feature = "full", feature = "parsing"))))]
    +    pub fn parse_without_eager_brace(input: ParseStream) -> Result<Expr> {
    +        parsing::ambiguous_expr(input, parsing::AllowStruct(false))
    +    }
    +
    +    /// An alternative to the primary `Expr::parse` parser (from the [`Parse`]
    +    /// trait) for syntactic positions in which expression boundaries are placed
    +    /// more eagerly than done by the typical expression grammar. This includes
    +    /// expressions at the head of a statement or in the right-hand side of a
    +    /// `match` arm.
    +    ///
    +    /// [`Parse`]: crate::parse::Parse
    +    ///
    +    /// Compare the following cases:
    +    ///
    +    /// 1.
    +    ///   ```
    +    ///   # let result = ();
    +    ///   # let guard = false;
    +    ///   # let cond = true;
    +    ///   # let f = true;
    +    ///   # let g = f;
    +    ///   #
    +    ///   let _ = match result {
    +    ///       () if guard => if cond { f } else { g }
    +    ///       () => false,
    +    ///   };
    +    ///   ```
    +    ///
    +    /// 2.
    +    ///   ```
    +    ///   # let cond = true;
    +    ///   # let f = ();
    +    ///   # let g = f;
    +    ///   #
    +    ///   let _ = || {
    +    ///       if cond { f } else { g }
    +    ///       ()
    +    ///   };
    +    ///   ```
    +    ///
    +    /// 3.
    +    ///   ```
    +    ///   # let cond = true;
    +    ///   # let f = || ();
    +    ///   # let g = f;
    +    ///   #
    +    ///   let _ = [if cond { f } else { g } ()];
    +    ///   ```
    +    ///
    +    /// The same sequence of tokens `if cond { f } else { g } ()` appears in
    +    /// expression position 3 times. The first two syntactic positions use eager
    +    /// placement of expression boundaries, and parse as `Expr::If`, with the
    +    /// adjacent `()` becoming `Pat::Tuple` or `Expr::Tuple`. In contrast, the
    +    /// third case uses standard expression boundaries and parses as
    +    /// `Expr::Call`.
    +    ///
    +    /// As with [`parse_without_eager_brace`], this ambiguity in the Rust
    +    /// grammar is independent of precedence.
    +    ///
    +    /// [`parse_without_eager_brace`]: Self::parse_without_eager_brace
    +    #[cfg(all(feature = "full", feature = "parsing"))]
    +    #[cfg_attr(docsrs, doc(cfg(all(feature = "full", feature = "parsing"))))]
    +    pub fn parse_with_earlier_boundary_rule(input: ParseStream) -> Result<Expr> {
    +        parsing::parse_with_earlier_boundary_rule(input)
    +    }
    +
    +    /// Returns whether the next token in the parse stream is one that might
    +    /// possibly form the beginning of an expr.
    +    ///
    +    /// This classification is a load-bearing part of the grammar of some Rust
    +    /// expressions, notably `return` and `break`. For example `return < …` will
    +    /// never parse `<` as a binary operator regardless of what comes after,
    +    /// because `<` is a legal starting token for an expression and so it's
    +    /// required to be continued as a return value, such as `return <Struct as
    +    /// Trait>::CONST`. Meanwhile `return > …` treats the `>` as a binary
    +    /// operator because it cannot be a starting token for any Rust expression.
    +    #[cfg(feature = "parsing")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
    +    pub fn peek(input: ParseStream) -> bool {
    +        input.peek(Ident::peek_any) // value name or keyword
    +            || input.peek(token::Paren) // tuple
    +            || input.peek(token::Bracket) // array
    +            || input.peek(token::Brace) // block
    +            || input.peek(Lit) // literal
    +            || input.peek(Token![!]) && !input.peek(Token![!=]) // operator not
    +            || input.peek(Token![-]) && !input.peek(Token![-=]) && !input.peek(Token![->]) // unary minus
    +            || input.peek(Token![*]) && !input.peek(Token![*=]) // dereference
    +            || input.peek(Token![|]) && !input.peek(Token![|=]) // closure
    +            || input.peek(Token![&]) && !input.peek(Token![&=]) // reference
    +            || input.peek(Token![..]) // range
    +            || input.peek(Token![<]) && !input.peek(Token![<=]) && !input.peek(Token![<<=]) // associated path
    +            || input.peek(Token![::]) // absolute path
    +            || input.peek(Lifetime) // labeled loop
    +            || input.peek(Token![#]) // expression attributes
    +    }
    +
    +    #[cfg(all(feature = "parsing", feature = "full"))]
         pub(crate) fn replace_attrs(&mut self, new: Vec<Attribute>) -> Vec<Attribute> {
             match self {
    -            Expr::Box(ExprBox { attrs, .. })
    -            | Expr::Array(ExprArray { attrs, .. })
    -            | Expr::Call(ExprCall { attrs, .. })
    -            | Expr::MethodCall(ExprMethodCall { attrs, .. })
    -            | Expr::Tuple(ExprTuple { attrs, .. })
    -            | Expr::Binary(ExprBinary { attrs, .. })
    -            | Expr::Unary(ExprUnary { attrs, .. })
    -            | Expr::Lit(ExprLit { attrs, .. })
    -            | Expr::Cast(ExprCast { attrs, .. })
    -            | Expr::Type(ExprType { attrs, .. })
    -            | Expr::Let(ExprLet { attrs, .. })
    -            | Expr::If(ExprIf { attrs, .. })
    -            | Expr::While(ExprWhile { attrs, .. })
    -            | Expr::ForLoop(ExprForLoop { attrs, .. })
    -            | Expr::Loop(ExprLoop { attrs, .. })
    -            | Expr::Match(ExprMatch { attrs, .. })
    -            | Expr::Closure(ExprClosure { attrs, .. })
    -            | Expr::Unsafe(ExprUnsafe { attrs, .. })
    -            | Expr::Block(ExprBlock { attrs, .. })
    +            Expr::Array(ExprArray { attrs, .. })
                 | Expr::Assign(ExprAssign { attrs, .. })
    -            | Expr::AssignOp(ExprAssignOp { attrs, .. })
    -            | Expr::Field(ExprField { attrs, .. })
    -            | Expr::Index(ExprIndex { attrs, .. })
    -            | Expr::Range(ExprRange { attrs, .. })
    -            | Expr::Path(ExprPath { attrs, .. })
    -            | Expr::Reference(ExprReference { attrs, .. })
    -            | Expr::Break(ExprBreak { attrs, .. })
    -            | Expr::Continue(ExprContinue { attrs, .. })
    -            | Expr::Return(ExprReturn { attrs, .. })
    -            | Expr::Macro(ExprMacro { attrs, .. })
    -            | Expr::Struct(ExprStruct { attrs, .. })
    -            | Expr::Repeat(ExprRepeat { attrs, .. })
    -            | Expr::Paren(ExprParen { attrs, .. })
    -            | Expr::Group(ExprGroup { attrs, .. })
    -            | Expr::Try(ExprTry { attrs, .. })
                 | Expr::Async(ExprAsync { attrs, .. })
                 | Expr::Await(ExprAwait { attrs, .. })
    +            | Expr::Binary(ExprBinary { attrs, .. })
    +            | Expr::Block(ExprBlock { attrs, .. })
    +            | Expr::Break(ExprBreak { attrs, .. })
    +            | Expr::Call(ExprCall { attrs, .. })
    +            | Expr::Cast(ExprCast { attrs, .. })
    +            | Expr::Closure(ExprClosure { attrs, .. })
    +            | Expr::Const(ExprConst { attrs, .. })
    +            | Expr::Continue(ExprContinue { attrs, .. })
    +            | Expr::Field(ExprField { attrs, .. })
    +            | Expr::ForLoop(ExprForLoop { attrs, .. })
    +            | Expr::Group(ExprGroup { attrs, .. })
    +            | Expr::If(ExprIf { attrs, .. })
    +            | Expr::Index(ExprIndex { attrs, .. })
    +            | Expr::Infer(ExprInfer { attrs, .. })
    +            | Expr::Let(ExprLet { attrs, .. })
    +            | Expr::Lit(ExprLit { attrs, .. })
    +            | Expr::Loop(ExprLoop { attrs, .. })
    +            | Expr::Macro(ExprMacro { attrs, .. })
    +            | Expr::Match(ExprMatch { attrs, .. })
    +            | Expr::MethodCall(ExprMethodCall { attrs, .. })
    +            | Expr::Paren(ExprParen { attrs, .. })
    +            | Expr::Path(ExprPath { attrs, .. })
    +            | Expr::Range(ExprRange { attrs, .. })
    +            | Expr::RawAddr(ExprRawAddr { attrs, .. })
    +            | Expr::Reference(ExprReference { attrs, .. })
    +            | Expr::Repeat(ExprRepeat { attrs, .. })
    +            | Expr::Return(ExprReturn { attrs, .. })
    +            | Expr::Struct(ExprStruct { attrs, .. })
    +            | Expr::Try(ExprTry { attrs, .. })
                 | Expr::TryBlock(ExprTryBlock { attrs, .. })
    +            | Expr::Tuple(ExprTuple { attrs, .. })
    +            | Expr::Unary(ExprUnary { attrs, .. })
    +            | Expr::Unsafe(ExprUnsafe { attrs, .. })
    +            | Expr::While(ExprWhile { attrs, .. })
                 | Expr::Yield(ExprYield { attrs, .. }) => mem::replace(attrs, new),
                 Expr::Verbatim(_) => Vec::new(),
    -
    -            #[cfg(syn_no_non_exhaustive)]
    -            _ => unreachable!(),
             }
         }
     }
     
    -ast_enum! {
    +ast_enum! {
         /// A struct or tuple struct field accessed in a struct literal or field
         /// expression.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub enum Member {
             /// A named field like `self.x`.
             Named(Ident),
    @@ -4453,7 +5057,7 @@
         }
     }
     
    -#[cfg(feature = "printing")]
    +#[cfg(feature = "printing")]
     impl IdentFragment for Member {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
             match self {
    @@ -4470,12 +5074,19 @@
         }
     }
     
    -ast_struct! {
    +#[cfg(any(feature = "parsing", feature = "printing"))]
    +impl Member {
    +    pub(crate) fn is_named(&self) -> bool {
    +        match self {
    +            Member::Named(_) => true,
    +            Member::Unnamed(_) => false,
    +        }
    +    }
    +}
    +
    +ast_struct! {
         /// The index of an unnamed tuple struct field.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct Index {
             pub index: u32,
             pub span: Span,
    @@ -4484,7 +5095,7 @@
     
     impl From<usize> for Index {
         fn from(index: usize) -> Index {
    -        assert!(index < u32::max_value() as usize);
    +        assert!(index < u32::MAX as usize);
             Index {
                 index: index as u32,
                 span: Span::call_site(),
    @@ -4506,7 +5117,7 @@
         }
     }
     
    -#[cfg(feature = "printing")]
    +#[cfg(feature = "printing")]
     impl IdentFragment for Index {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
             Display::fmt(&self.index, formatter)
    @@ -4517,75 +5128,34 @@
         }
     }
     
    -#[cfg(feature = "full")]
    -ast_struct! {
    -    /// The `::<>` explicit type parameters passed to a method call:
    -    /// `parse::<u64>()`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    -    pub struct MethodTurbofish {
    -        pub colon2_token: Token![::],
    -        pub lt_token: Token![<],
    -        pub args: Punctuated<GenericMethodArgument, Token![,]>,
    -        pub gt_token: Token![>],
    -    }
    -}
    -
    -#[cfg(feature = "full")]
    -ast_enum! {
    -    /// An individual generic argument to a method, like `T`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    -    pub enum GenericMethodArgument {
    -        /// A type argument.
    -        Type(Type),
    -        /// A const expression. Must be inside of a block.
    -        ///
    -        /// NOTE: Identity expressions are represented as Type arguments, as
    -        /// they are indistinguishable syntactically.
    -        Const(Expr),
    -    }
    -}
    -
    -#[cfg(feature = "full")]
    -ast_struct! {
    +ast_struct! {
         /// A field-value pair in a struct literal.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct FieldValue {
    -        /// Attributes tagged on the field.
    -        pub attrs: Vec<Attribute>,
    -
    -        /// Name or index of the field.
    -        pub member: Member,
    +        pub attrs: Vec<Attribute>,
    +        pub member: Member,
     
             /// The colon in `Struct { x: x }`. If written in shorthand like
             /// `Struct { x }`, there is no colon.
             pub colon_token: Option<Token![:]>,
     
    -        /// Value of the field.
    -        pub expr: Expr,
    +        pub expr: Expr,
         }
     }
     
    -#[cfg(feature = "full")]
    -ast_struct! {
    +#[cfg(feature = "full")]
    +ast_struct! {
         /// A lifetime labeling a `for`, `while`, or `loop`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
         pub struct Label {
             pub name: Lifetime,
             pub colon_token: Token![:],
         }
     }
     
    -#[cfg(feature = "full")]
    -ast_struct! {
    -    /// One arm of a `match` expression: `0...10 => { return true; }`.
    +#[cfg(feature = "full")]
    +ast_struct! {
    +    /// One arm of a `match` expression: `0..=10 => { return true; }`.
         ///
         /// As in:
         ///
    @@ -4593,7 +5163,7 @@
         /// # fn f() -> bool {
         /// #     let n = 0;
         /// match n {
    -    ///     0...10 => {
    +    ///     0..=10 => {
         ///         return true;
         ///     }
         ///     // ...
    @@ -4602,9 +5172,7 @@
         /// #   false
         /// # }
         /// ```
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
         pub struct Arm {
             pub attrs: Vec<Attribute>,
             pub pat: Pat,
    @@ -4615,12 +5183,10 @@
         }
     }
     
    -#[cfg(feature = "full")]
    -ast_enum! {
    +#[cfg(feature = "full")]
    +ast_enum! {
         /// Limit types of a range, inclusive or exclusive.
    -    ///
    -    /// *This type is available only if Syn is built with the `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "full")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
         pub enum RangeLimits {
             /// Inclusive at the beginning, exclusive at the end.
             HalfOpen(Token![..]),
    @@ -4629,217 +5195,156 @@
         }
     }
     
    -#[cfg(any(feature = "parsing", feature = "printing"))]
    -#[cfg(feature = "full")]
    -pub(crate) fn requires_terminator(expr: &Expr) -> bool {
    -    // see https://github.com/rust-lang/rust/blob/2679c38fc/src/librustc_ast/util/classify.rs#L7-L25
    -    match *expr {
    -        Expr::Unsafe(..)
    -        | Expr::Block(..)
    -        | Expr::If(..)
    -        | Expr::Match(..)
    -        | Expr::While(..)
    -        | Expr::Loop(..)
    -        | Expr::ForLoop(..)
    -        | Expr::Async(..)
    -        | Expr::TryBlock(..) => false,
    -        _ => true,
    +#[cfg(feature = "full")]
    +ast_enum! {
    +    /// Mutability of a raw pointer (`*const T`, `*mut T`), in which non-mutable
    +    /// isn't the implicit default.
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    pub enum PointerMutability {
    +        Const(Token![const]),
    +        Mut(Token![mut]),
         }
     }
     
    -#[cfg(feature = "parsing")]
    +#[cfg(feature = "parsing")]
     pub(crate) mod parsing {
    -    use super::*;
    -    #[cfg(feature = "full")]
    +    #[cfg(feature = "full")]
    +    use crate::attr;
    +    use crate::attr::Attribute;
    +    #[cfg(feature = "full")]
    +    use crate::classify;
    +    use crate::error::{Error, Result};
    +    #[cfg(feature = "full")]
    +    use crate::expr::{
    +        Arm, ExprArray, ExprAssign, ExprAsync, ExprAwait, ExprBlock, ExprBreak, ExprClosure,
    +        ExprConst, ExprContinue, ExprForLoop, ExprIf, ExprInfer, ExprLet, ExprLoop, ExprMatch,
    +        ExprRange, ExprRawAddr, ExprRepeat, ExprReturn, ExprTry, ExprTryBlock, ExprUnsafe,
    +        ExprWhile, ExprYield, Label, PointerMutability, RangeLimits,
    +    };
    +    use crate::expr::{
    +        Expr, ExprBinary, ExprCall, ExprCast, ExprField, ExprGroup, ExprIndex, ExprLit, ExprMacro,
    +        ExprMethodCall, ExprParen, ExprPath, ExprReference, ExprStruct, ExprTuple, ExprUnary,
    +        FieldValue, Index, Member,
    +    };
    +    #[cfg(feature = "full")]
    +    use crate::generics::BoundLifetimes;
    +    use crate::ident::Ident;
    +    #[cfg(feature = "full")]
    +    use crate::lifetime::Lifetime;
    +    use crate::lit::{Lit, LitFloat, LitInt};
    +    use crate::mac::{self, Macro};
    +    use crate::op::BinOp;
    +    use crate::parse::discouraged::Speculative as _;
    +    #[cfg(feature = "full")]
         use crate::parse::ParseBuffer;
    -    use crate::parse::{Parse, ParseStream, Result};
    -    use crate::path;
    -    #[cfg(feature = "full")]
    -    use proc_macro2::TokenTree;
    -    use std::cmp::Ordering;
    +    use crate::parse::{Parse, ParseStream};
    +    #[cfg(feature = "full")]
    +    use crate::pat::{Pat, PatType};
    +    use crate::path::{self, AngleBracketedGenericArguments, Path, QSelf};
    +    use crate::precedence::Precedence;
    +    use crate::punctuated::Punctuated;
    +    #[cfg(feature = "full")]
    +    use crate::stmt::Block;
    +    use crate::token;
    +    use crate::ty;
    +    #[cfg(feature = "full")]
    +    use crate::ty::{ReturnType, Type};
    +    use crate::verbatim;
    +    #[cfg(feature = "full")]
    +    use proc_macro2::TokenStream;
    +    use std::mem;
     
    -    crate::custom_keyword!(raw);
    -
    -    // When we're parsing expressions which occur before blocks, like in an if
    -    // statement's condition, we cannot parse a struct literal.
    +    // When we're parsing expressions which occur before blocks, like in an if
    +    // statement's condition, we cannot parse a struct literal.
         //
         // Struct literals are ambiguous in certain positions
         // https://github.com/rust-lang/rfcs/pull/92
    -    pub struct AllowStruct(bool);
    +    #[cfg(feature = "full")]
    +    pub(super) struct AllowStruct(pub bool);
     
    -    enum Precedence {
    -        Any,
    -        Assign,
    -        Range,
    -        Or,
    -        And,
    -        Compare,
    -        BitOr,
    -        BitXor,
    -        BitAnd,
    -        Shift,
    -        Arithmetic,
    -        Term,
    -        Cast,
    -    }
    -
    -    impl Precedence {
    -        fn of(op: &BinOp) -> Self {
    -            match *op {
    -                BinOp::Add(_) | BinOp::Sub(_) => Precedence::Arithmetic,
    -                BinOp::Mul(_) | BinOp::Div(_) | BinOp::Rem(_) => Precedence::Term,
    -                BinOp::And(_) => Precedence::And,
    -                BinOp::Or(_) => Precedence::Or,
    -                BinOp::BitXor(_) => Precedence::BitXor,
    -                BinOp::BitAnd(_) => Precedence::BitAnd,
    -                BinOp::BitOr(_) => Precedence::BitOr,
    -                BinOp::Shl(_) | BinOp::Shr(_) => Precedence::Shift,
    -                BinOp::Eq(_)
    -                | BinOp::Lt(_)
    -                | BinOp::Le(_)
    -                | BinOp::Ne(_)
    -                | BinOp::Ge(_)
    -                | BinOp::Gt(_) => Precedence::Compare,
    -                BinOp::AddEq(_)
    -                | BinOp::SubEq(_)
    -                | BinOp::MulEq(_)
    -                | BinOp::DivEq(_)
    -                | BinOp::RemEq(_)
    -                | BinOp::BitXorEq(_)
    -                | BinOp::BitAndEq(_)
    -                | BinOp::BitOrEq(_)
    -                | BinOp::ShlEq(_)
    -                | BinOp::ShrEq(_) => Precedence::Assign,
    -            }
    -        }
    -    }
    -
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for Expr {
             fn parse(input: ParseStream) -> Result<Self> {
    -            ambiguous_expr(input, AllowStruct(true))
    +            ambiguous_expr(
    +                input,
    +                #[cfg(feature = "full")]
    +                AllowStruct(true),
    +            )
             }
         }
     
    -    impl Expr {
    -        /// An alternative to the primary `Expr::parse` parser (from the
    -        /// [`Parse`] trait) for ambiguous syntactic positions in which a
    -        /// trailing brace should not be taken as part of the expression.
    -        ///
    -        /// Rust grammar has an ambiguity where braces sometimes turn a path
    -        /// expression into a struct initialization and sometimes do not. In the
    -        /// following code, the expression `S {}` is one expression. Presumably
    -        /// there is an empty struct `struct S {}` defined somewhere which it is
    -        /// instantiating.
    -        ///
    -        /// ```
    -        /// # struct S;
    -        /// # impl std::ops::Deref for S {
    -        /// #     type Target = bool;
    -        /// #     fn deref(&self) -> &Self::Target {
    -        /// #         &true
    -        /// #     }
    -        /// # }
    -        /// let _ = *S {};
    -        ///
    -        /// // parsed by rustc as: `*(S {})`
    -        /// ```
    -        ///
    -        /// We would want to parse the above using `Expr::parse` after the `=`
    -        /// token.
    -        ///
    -        /// But in the following, `S {}` is *not* a struct init expression.
    -        ///
    -        /// ```
    -        /// # const S: &bool = &true;
    -        /// if *S {} {}
    -        ///
    -        /// // parsed by rustc as:
    -        /// //
    -        /// //    if (*S) {
    -        /// //        /* empty block */
    -        /// //    }
    -        /// //    {
    -        /// //        /* another empty block */
    -        /// //    }
    -        /// ```
    -        ///
    -        /// For that reason we would want to parse if-conditions using
    -        /// `Expr::parse_without_eager_brace` after the `if` token. Same for
    -        /// similar syntactic positions such as the condition expr after a
    -        /// `while` token or the expr at the top of a `match`.
    -        ///
    -        /// The Rust grammar's choices around which way this ambiguity is
    -        /// resolved at various syntactic positions is fairly arbitrary. Really
    -        /// either parse behavior could work in most positions, and language
    -        /// designers just decide each case based on which is more likely to be
    -        /// what the programmer had in mind most of the time.
    -        ///
    -        /// ```
    -        /// # struct S;
    -        /// # fn doc() -> S {
    -        /// if return S {} {}
    -        /// # unreachable!()
    -        /// # }
    -        ///
    -        /// // parsed by rustc as:
    -        /// //
    -        /// //    if (return (S {})) {
    -        /// //    }
    -        /// //
    -        /// // but could equally well have been this other arbitrary choice:
    -        /// //
    -        /// //    if (return S) {
    -        /// //    }
    -        /// //    {}
    -        /// ```
    -        ///
    -        /// Note the grammar ambiguity on trailing braces is distinct from
    -        /// precedence and is not captured by assigning a precedence level to
    -        /// the braced struct init expr in relation to other operators. This can
    -        /// be illustrated by `return 0..S {}` vs `match 0..S {}`. The former
    -        /// parses as `return (0..(S {}))` implying tighter precedence for
    -        /// struct init than `..`, while the latter parses as `match (0..S) {}`
    -        /// implying tighter precedence for `..` than struct init, a
    -        /// contradiction.
    -        #[cfg(feature = "full")]
    -        #[cfg_attr(doc_cfg, doc(cfg(all(feature = "full", feature = "parsing"))))]
    -        pub fn parse_without_eager_brace(input: ParseStream) -> Result<Expr> {
    -            ambiguous_expr(input, AllowStruct(false))
    +    #[cfg(feature = "full")]
    +    pub(super) fn parse_with_earlier_boundary_rule(input: ParseStream) -> Result<Expr> {
    +        let mut attrs = input.call(expr_attrs)?;
    +        let mut expr = if input.peek(token::Group) {
    +            let allow_struct = AllowStruct(true);
    +            let atom = expr_group(input, allow_struct)?;
    +            if continue_parsing_early(&atom) {
    +                trailer_helper(input, atom)?
    +            } else {
    +                atom
    +            }
    +        } else if input.peek(Token![if]) {
    +            Expr::If(input.parse()?)
    +        } else if input.peek(Token![while]) {
    +            Expr::While(input.parse()?)
    +        } else if input.peek(Token![for])
    +            && !(input.peek2(Token![<]) && (input.peek3(Lifetime) || input.peek3(Token![>])))
    +        {
    +            Expr::ForLoop(input.parse()?)
    +        } else if input.peek(Token![loop]) {
    +            Expr::Loop(input.parse()?)
    +        } else if input.peek(Token![match]) {
    +            Expr::Match(input.parse()?)
    +        } else if input.peek(Token![try]) && input.peek2(token::Brace) {
    +            Expr::TryBlock(input.parse()?)
    +        } else if input.peek(Token![unsafe]) {
    +            Expr::Unsafe(input.parse()?)
    +        } else if input.peek(Token![const]) && input.peek2(token::Brace) {
    +            Expr::Const(input.parse()?)
    +        } else if input.peek(token::Brace) {
    +            Expr::Block(input.parse()?)
    +        } else if input.peek(Lifetime) {
    +            atom_labeled(input)?
    +        } else {
    +            let allow_struct = AllowStruct(true);
    +            unary_expr(input, allow_struct)?
    +        };
    +
    +        if continue_parsing_early(&expr) {
    +            attrs.extend(expr.replace_attrs(Vec::new()));
    +            expr.replace_attrs(attrs);
    +
    +            let allow_struct = AllowStruct(true);
    +            return parse_expr(input, expr, allow_struct, Precedence::MIN);
             }
    +
    +        if input.peek(Token![.]) && !input.peek(Token![..]) || input.peek(Token![?]) {
    +            expr = trailer_helper(input, expr)?;
    +
    +            attrs.extend(expr.replace_attrs(Vec::new()));
    +            expr.replace_attrs(attrs);
    +
    +            let allow_struct = AllowStruct(true);
    +            return parse_expr(input, expr, allow_struct, Precedence::MIN);
    +        }
    +
    +        attrs.extend(expr.replace_attrs(Vec::new()));
    +        expr.replace_attrs(attrs);
    +        Ok(expr)
         }
     
    -    impl Copy for AllowStruct {}
    +    #[cfg(feature = "full")]
    +    impl Copy for AllowStruct {}
     
    -    impl Clone for AllowStruct {
    +    #[cfg(feature = "full")]
    +    impl Clone for AllowStruct {
             fn clone(&self) -> Self {
                 *self
             }
         }
     
    -    impl Copy for Precedence {}
    -
    -    impl Clone for Precedence {
    -        fn clone(&self) -> Self {
    -            *self
    -        }
    -    }
    -
    -    impl PartialEq for Precedence {
    -        fn eq(&self, other: &Self) -> bool {
    -            *self as u8 == *other as u8
    -        }
    -    }
    -
    -    impl PartialOrd for Precedence {
    -        fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
    -            let this = *self as u8;
    -            let other = *other as u8;
    -            Some(this.cmp(&other))
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    +    #[cfg(feature = "full")]
         fn parse_expr(
             input: ParseStream,
             mut lhs: Expr,
    @@ -4847,147 +5352,49 @@
             base: Precedence,
         ) -> Result<Expr> {
             loop {
    -            if input
    -                .fork()
    -                .parse::<BinOp>()
    -                .ok()
    -                .map_or(false, |op| Precedence::of(&op) >= base)
    -            {
    -                let op: BinOp = input.parse()?;
    -                let precedence = Precedence::of(&op);
    -                let mut rhs = unary_expr(input, allow_struct)?;
    -                loop {
    -                    let next = peek_precedence(input);
    -                    if next > precedence || next == precedence && precedence == Precedence::Assign {
    -                        rhs = parse_expr(input, rhs, allow_struct, next)?;
    -                    } else {
    -                        break;
    -                    }
    +            let ahead = input.fork();
    +            if let Expr::Range(ExprRange { end: Some(_), .. }) = lhs {
    +                // A range with an upper bound cannot be the left-hand side of
    +                // another binary operator.
    +                break;
    +            } else if let Ok(op) = ahead.parse::<BinOp>() {
    +                let precedence = Precedence::of_binop(&op);
    +                if precedence < base {
    +                    break;
                     }
    -                lhs = if precedence == Precedence::Assign {
    -                    Expr::AssignOp(ExprAssignOp {
    -                        attrs: Vec::new(),
    -                        left: Box::new(lhs),
    -                        op,
    -                        right: Box::new(rhs),
    -                    })
    -                } else {
    -                    Expr::Binary(ExprBinary {
    -                        attrs: Vec::new(),
    -                        left: Box::new(lhs),
    -                        op,
    -                        right: Box::new(rhs),
    -                    })
    -                };
    -            } else if Precedence::Assign >= base
    -                && input.peek(Token![=])
    -                && !input.peek(Token![==])
    -                && !input.peek(Token![=>])
    -            {
    -                let eq_token: Token![=] = input.parse()?;
    -                let mut rhs = unary_expr(input, allow_struct)?;
    -                loop {
    -                    let next = peek_precedence(input);
    -                    if next >= Precedence::Assign {
    -                        rhs = parse_expr(input, rhs, allow_struct, next)?;
    -                    } else {
    -                        break;
    -                    }
    -                }
    -                lhs = Expr::Assign(ExprAssign {
    -                    attrs: Vec::new(),
    -                    left: Box::new(lhs),
    -                    eq_token,
    -                    right: Box::new(rhs),
    -                });
    -            } else if Precedence::Range >= base && input.peek(Token![..]) {
    -                let limits: RangeLimits = input.parse()?;
    -                let rhs = if input.is_empty()
    -                    || input.peek(Token![,])
    -                    || input.peek(Token![;])
    -                    || input.peek(Token![.]) && !input.peek(Token![..])
    -                    || !allow_struct.0 && input.peek(token::Brace)
    -                {
    -                    None
    -                } else {
    -                    let mut rhs = unary_expr(input, allow_struct)?;
    -                    loop {
    -                        let next = peek_precedence(input);
    -                        if next > Precedence::Range {
    -                            rhs = parse_expr(input, rhs, allow_struct, next)?;
    -                        } else {
    -                            break;
    +                if precedence == Precedence::Compare {
    +                    if let Expr::Binary(lhs) = &lhs {
    +                        if Precedence::of_binop(&lhs.op) == Precedence::Compare {
    +                            return Err(input.error("comparison operators cannot be chained"));
                             }
                         }
    -                    Some(rhs)
    -                };
    -                lhs = Expr::Range(ExprRange {
    -                    attrs: Vec::new(),
    -                    from: Some(Box::new(lhs)),
    -                    limits,
    -                    to: rhs.map(Box::new),
    -                });
    -            } else if Precedence::Cast >= base && input.peek(Token![as]) {
    -                let as_token: Token![as] = input.parse()?;
    -                let allow_plus = false;
    -                let allow_group_generic = false;
    -                let ty = ty::parsing::ambig_ty(input, allow_plus, allow_group_generic)?;
    -                check_cast(input)?;
    -                lhs = Expr::Cast(ExprCast {
    -                    attrs: Vec::new(),
    -                    expr: Box::new(lhs),
    -                    as_token,
    -                    ty: Box::new(ty),
    -                });
    -            } else if Precedence::Cast >= base && input.peek(Token![:]) && !input.peek(Token![::]) {
    -                let colon_token: Token![:] = input.parse()?;
    -                let allow_plus = false;
    -                let allow_group_generic = false;
    -                let ty = ty::parsing::ambig_ty(input, allow_plus, allow_group_generic)?;
    -                check_cast(input)?;
    -                lhs = Expr::Type(ExprType {
    -                    attrs: Vec::new(),
    -                    expr: Box::new(lhs),
    -                    colon_token,
    -                    ty: Box::new(ty),
    -                });
    -            } else {
    -                break;
    -            }
    -        }
    -        Ok(lhs)
    -    }
    -
    -    #[cfg(not(feature = "full"))]
    -    fn parse_expr(
    -        input: ParseStream,
    -        mut lhs: Expr,
    -        allow_struct: AllowStruct,
    -        base: Precedence,
    -    ) -> Result<Expr> {
    -        loop {
    -            if input
    -                .fork()
    -                .parse::<BinOp>()
    -                .ok()
    -                .map_or(false, |op| Precedence::of(&op) >= base)
    -            {
    -                let op: BinOp = input.parse()?;
    -                let precedence = Precedence::of(&op);
    -                let mut rhs = unary_expr(input, allow_struct)?;
    -                loop {
    -                    let next = peek_precedence(input);
    -                    if next > precedence || next == precedence && precedence == Precedence::Assign {
    -                        rhs = parse_expr(input, rhs, allow_struct, next)?;
    -                    } else {
    -                        break;
    -                    }
                     }
    +                input.advance_to(&ahead);
    +                let right = parse_binop_rhs(input, allow_struct, precedence)?;
                     lhs = Expr::Binary(ExprBinary {
                         attrs: Vec::new(),
                         left: Box::new(lhs),
                         op,
    -                    right: Box::new(rhs),
    +                    right,
    +                });
    +            } else if Precedence::Assign >= base && input.peek(Token![=]) && !input.peek(Token![=>])
    +            {
    +                let eq_token: Token![=] = input.parse()?;
    +                let right = parse_binop_rhs(input, allow_struct, Precedence::Assign)?;
    +                lhs = Expr::Assign(ExprAssign {
    +                    attrs: Vec::new(),
    +                    left: Box::new(lhs),
    +                    eq_token,
    +                    right,
    +                });
    +            } else if Precedence::Range >= base && input.peek(Token![..]) {
    +                let limits: RangeLimits = input.parse()?;
    +                let end = parse_range_end(input, &limits, allow_struct)?;
    +                lhs = Expr::Range(ExprRange {
    +                    attrs: Vec::new(),
    +                    start: Some(Box::new(lhs)),
    +                    limits,
    +                    end,
                     });
                 } else if Precedence::Cast >= base && input.peek(Token![as]) {
                     let as_token: Token![as] = input.parse()?;
    @@ -5008,48 +5415,122 @@
             Ok(lhs)
         }
     
    +    #[cfg(not(feature = "full"))]
    +    fn parse_expr(input: ParseStream, mut lhs: Expr, base: Precedence) -> Result<Expr> {
    +        loop {
    +            let ahead = input.fork();
    +            if let Ok(op) = ahead.parse::<BinOp>() {
    +                let precedence = Precedence::of_binop(&op);
    +                if precedence < base {
    +                    break;
    +                }
    +                if precedence == Precedence::Compare {
    +                    if let Expr::Binary(lhs) = &lhs {
    +                        if Precedence::of_binop(&lhs.op) == Precedence::Compare {
    +                            return Err(input.error("comparison operators cannot be chained"));
    +                        }
    +                    }
    +                }
    +                input.advance_to(&ahead);
    +                let right = parse_binop_rhs(input, precedence)?;
    +                lhs = Expr::Binary(ExprBinary {
    +                    attrs: Vec::new(),
    +                    left: Box::new(lhs),
    +                    op,
    +                    right,
    +                });
    +            } else if Precedence::Cast >= base && input.peek(Token![as]) {
    +                let as_token: Token![as] = input.parse()?;
    +                let allow_plus = false;
    +                let allow_group_generic = false;
    +                let ty = ty::parsing::ambig_ty(input, allow_plus, allow_group_generic)?;
    +                check_cast(input)?;
    +                lhs = Expr::Cast(ExprCast {
    +                    attrs: Vec::new(),
    +                    expr: Box::new(lhs),
    +                    as_token,
    +                    ty: Box::new(ty),
    +                });
    +            } else {
    +                break;
    +            }
    +        }
    +        Ok(lhs)
    +    }
    +
    +    fn parse_binop_rhs(
    +        input: ParseStream,
    +        #[cfg(feature = "full")] allow_struct: AllowStruct,
    +        precedence: Precedence,
    +    ) -> Result<Box<Expr>> {
    +        let mut rhs = unary_expr(
    +            input,
    +            #[cfg(feature = "full")]
    +            allow_struct,
    +        )?;
    +        loop {
    +            let next = peek_precedence(input);
    +            if next > precedence || next == precedence && precedence == Precedence::Assign {
    +                let cursor = input.cursor();
    +                rhs = parse_expr(
    +                    input,
    +                    rhs,
    +                    #[cfg(feature = "full")]
    +                    allow_struct,
    +                    next,
    +                )?;
    +                if cursor == input.cursor() {
    +                    // Bespoke grammar restrictions separate from precedence can
    +                    // cause parsing to not advance, such as `..a` being
    +                    // disallowed in the left-hand side of binary operators,
    +                    // even ones that have lower precedence than `..`.
    +                    break;
    +                }
    +            } else {
    +                break;
    +            }
    +        }
    +        Ok(Box::new(rhs))
    +    }
    +
         fn peek_precedence(input: ParseStream) -> Precedence {
             if let Ok(op) = input.fork().parse() {
    -            Precedence::of(&op)
    +            Precedence::of_binop(&op)
             } else if input.peek(Token![=]) && !input.peek(Token![=>]) {
                 Precedence::Assign
             } else if input.peek(Token![..]) {
                 Precedence::Range
    -        } else if input.peek(Token![as])
    -            || cfg!(feature = "full") && input.peek(Token![:]) && !input.peek(Token![::])
    -        {
    +        } else if input.peek(Token![as]) {
                 Precedence::Cast
             } else {
    -            Precedence::Any
    +            Precedence::MIN
             }
         }
     
         // Parse an arbitrary expression.
    -    fn ambiguous_expr(input: ParseStream, allow_struct: AllowStruct) -> Result<Expr> {
    -        let lhs = unary_expr(input, allow_struct)?;
    -        parse_expr(input, lhs, allow_struct, Precedence::Any)
    +    pub(super) fn ambiguous_expr(
    +        input: ParseStream,
    +        #[cfg(feature = "full")] allow_struct: AllowStruct,
    +    ) -> Result<Expr> {
    +        let lhs = unary_expr(
    +            input,
    +            #[cfg(feature = "full")]
    +            allow_struct,
    +        )?;
    +        parse_expr(
    +            input,
    +            lhs,
    +            #[cfg(feature = "full")]
    +            allow_struct,
    +            Precedence::MIN,
    +        )
         }
     
    -    #[cfg(feature = "full")]
    +    #[cfg(feature = "full")]
         fn expr_attrs(input: ParseStream) -> Result<Vec<Attribute>> {
             let mut attrs = Vec::new();
    -        loop {
    -            if input.peek(token::Group) {
    -                let ahead = input.fork();
    -                let group = crate::group::parse_group(&ahead)?;
    -                if !group.content.peek(Token![#]) || group.content.peek2(Token![!]) {
    -                    break;
    -                }
    -                let attr = group.content.call(attr::parsing::single_parse_outer)?;
    -                if !group.content.is_empty() {
    -                    break;
    -                }
    -                attrs.push(attr);
    -            } else if input.peek(Token![#]) {
    -                attrs.push(input.call(attr::parsing::single_parse_outer)?);
    -            } else {
    -                break;
    -            }
    +        while !input.peek(token::Group) && input.peek(Token![#]) {
    +            attrs.push(input.call(attr::parsing::single_parse_outer)?);
             }
             Ok(attrs)
         }
    @@ -5058,36 +5539,49 @@
         // & <trailer>
         // &mut <trailer>
         // box <trailer>
    -    #[cfg(feature = "full")]
    +    #[cfg(feature = "full")]
         fn unary_expr(input: ParseStream, allow_struct: AllowStruct) -> Result<Expr> {
             let begin = input.fork();
             let attrs = input.call(expr_attrs)?;
    +        if input.peek(token::Group) {
    +            return trailer_expr(begin, attrs, input, allow_struct);
    +        }
    +
             if input.peek(Token![&]) {
                 let and_token: Token![&] = input.parse()?;
    -            let raw: Option<raw> =
    -                if input.peek(raw) && (input.peek2(Token![mut]) || input.peek2(Token![const])) {
    -                    Some(input.parse()?)
    -                } else {
    -                    None
    -                };
    +            let raw: Option<Token![raw]> = if input.peek(Token![raw])
    +                && (input.peek2(Token![mut]) || input.peek2(Token![const]))
    +            {
    +                Some(input.parse()?)
    +            } else {
    +                None
    +            };
                 let mutability: Option<Token![mut]> = input.parse()?;
    -            if raw.is_some() && mutability.is_none() {
    -                input.parse::<Token![const]>()?;
    -            }
    +            let const_token: Option<Token![const]> = if raw.is_some() && mutability.is_none() {
    +                Some(input.parse()?)
    +            } else {
    +                None
    +            };
                 let expr = Box::new(unary_expr(input, allow_struct)?);
    -            if raw.is_some() {
    -                Ok(Expr::Verbatim(verbatim::between(begin, input)))
    +            if let Some(raw) = raw {
    +                Ok(Expr::RawAddr(ExprRawAddr {
    +                    attrs,
    +                    and_token,
    +                    raw,
    +                    mutability: match mutability {
    +                        Some(mut_token) => PointerMutability::Mut(mut_token),
    +                        None => PointerMutability::Const(const_token.unwrap()),
    +                    },
    +                    expr,
    +                }))
                 } else {
                     Ok(Expr::Reference(ExprReference {
                         attrs,
                         and_token,
    -                    raw: Reserved::default(),
                         mutability,
                         expr,
                     }))
                 }
    -        } else if input.peek(Token![box]) {
    -            expr_box(input, attrs, allow_struct).map(Expr::Box)
             } else if input.peek(Token![*]) || input.peek(Token![!]) || input.peek(Token![-]) {
                 expr_unary(input, attrs, allow_struct).map(Expr::Unary)
             } else {
    @@ -5095,16 +5589,23 @@
             }
         }
     
    -    #[cfg(not(feature = "full"))]
    -    fn unary_expr(input: ParseStream, allow_struct: AllowStruct) -> Result<Expr> {
    -        if input.peek(Token![*]) || input.peek(Token![!]) || input.peek(Token![-]) {
    +    #[cfg(not(feature = "full"))]
    +    fn unary_expr(input: ParseStream) -> Result<Expr> {
    +        if input.peek(Token![&]) {
    +            Ok(Expr::Reference(ExprReference {
    +                attrs: Vec::new(),
    +                and_token: input.parse()?,
    +                mutability: input.parse()?,
    +                expr: Box::new(unary_expr(input)?),
    +            }))
    +        } else if input.peek(Token![*]) || input.peek(Token![!]) || input.peek(Token![-]) {
                 Ok(Expr::Unary(ExprUnary {
                     attrs: Vec::new(),
                     op: input.parse()?,
    -                expr: Box::new(unary_expr(input, allow_struct)?),
    +                expr: Box::new(unary_expr(input)?),
                 }))
             } else {
    -            trailer_expr(input, allow_struct)
    +            trailer_expr(input)
             }
         }
     
    @@ -5114,7 +5615,7 @@
         // <atom> . <lit> ...
         // <atom> [ <expr> ] ...
         // <atom> ? ...
    -    #[cfg(feature = "full")]
    +    #[cfg(feature = "full")]
         fn trailer_expr(
             begin: ParseBuffer,
             mut attrs: Vec<Attribute>,
    @@ -5125,7 +5626,7 @@
             let mut e = trailer_helper(input, atom)?;
     
             if let Expr::Verbatim(tokens) = &mut e {
    -            *tokens = verbatim::between(begin, input);
    +            *tokens = verbatim::between(&begin, input);
             } else {
                 let inner_attrs = e.replace_attrs(Vec::new());
                 attrs.extend(inner_attrs);
    @@ -5135,7 +5636,7 @@
             Ok(e)
         }
     
    -    #[cfg(feature = "full")]
    +    #[cfg(feature = "full")]
         fn trailer_helper(input: ParseStream, mut e: Expr) -> Result<Expr> {
             loop {
                 if input.peek(token::Paren) {
    @@ -5144,7 +5645,7 @@
                         attrs: Vec::new(),
                         func: Box::new(e),
                         paren_token: parenthesized!(content in input),
    -                    args: content.parse_terminated(Expr::parse)?,
    +                    args: content.parse_terminated(Expr::parse, Token![,])?,
                     });
                 } else if input.peek(Token![.])
                     && !input.peek(Token![..])
    @@ -5155,7 +5656,14 @@
                 {
                     let mut dot_token: Token![.] = input.parse()?;
     
    -                let await_token: Option<token::Await> = input.parse()?;
    +                let float_token: Option<LitFloat> = input.parse()?;
    +                if let Some(float_token) = float_token {
    +                    if multi_index(&mut e, &mut dot_token, float_token)? {
    +                        continue;
    +                    }
    +                }
    +
    +                let await_token: Option<Token![await]> = input.parse()?;
                     if let Some(await_token) = await_token {
                         e = Expr::Await(ExprAwait {
                             attrs: Vec::new(),
    @@ -5166,16 +5674,9 @@
                         continue;
                     }
     
    -                let float_token: Option<LitFloat> = input.parse()?;
    -                if let Some(float_token) = float_token {
    -                    if multi_index(&mut e, &mut dot_token, float_token)? {
    -                        continue;
    -                    }
    -                }
    -
                     let member: Member = input.parse()?;
                     let turbofish = if member.is_named() && input.peek(Token![::]) {
    -                    Some(input.parse::<MethodTurbofish>()?)
    +                    Some(AngleBracketedGenericArguments::parse_turbofish(input)?)
                     } else {
                         None
                     };
    @@ -5190,7 +5691,7 @@
                                 method,
                                 turbofish,
                                 paren_token: parenthesized!(content in input),
    -                            args: content.parse_terminated(Expr::parse)?,
    +                            args: content.parse_terminated(Expr::parse, Token![,])?,
                             });
                             continue;
                         }
    @@ -5223,9 +5724,9 @@
             Ok(e)
         }
     
    -    #[cfg(not(feature = "full"))]
    -    fn trailer_expr(input: ParseStream, allow_struct: AllowStruct) -> Result<Expr> {
    -        let mut e = atom_expr(input, allow_struct)?;
    +    #[cfg(not(feature = "full"))]
    +    fn trailer_expr(input: ParseStream) -> Result<Expr> {
    +        let mut e = atom_expr(input)?;
     
             loop {
                 if input.peek(token::Paren) {
    @@ -5234,22 +5735,52 @@
                         attrs: Vec::new(),
                         func: Box::new(e),
                         paren_token: parenthesized!(content in input),
    -                    args: content.parse_terminated(Expr::parse)?,
    +                    args: content.parse_terminated(Expr::parse, Token![,])?,
                     });
    -            } else if input.peek(Token![.]) && !input.peek(Token![..]) && !input.peek2(token::Await)
    +            } else if input.peek(Token![.])
    +                && !input.peek(Token![..])
    +                && !input.peek2(Token![await])
                 {
                     let mut dot_token: Token![.] = input.parse()?;
    +
                     let float_token: Option<LitFloat> = input.parse()?;
                     if let Some(float_token) = float_token {
                         if multi_index(&mut e, &mut dot_token, float_token)? {
                             continue;
                         }
                     }
    +
    +                let member: Member = input.parse()?;
    +                let turbofish = if member.is_named() && input.peek(Token![::]) {
    +                    let colon2_token: Token![::] = input.parse()?;
    +                    let turbofish =
    +                        AngleBracketedGenericArguments::do_parse(Some(colon2_token), input)?;
    +                    Some(turbofish)
    +                } else {
    +                    None
    +                };
    +
    +                if turbofish.is_some() || input.peek(token::Paren) {
    +                    if let Member::Named(method) = member {
    +                        let content;
    +                        e = Expr::MethodCall(ExprMethodCall {
    +                            attrs: Vec::new(),
    +                            receiver: Box::new(e),
    +                            dot_token,
    +                            method,
    +                            turbofish,
    +                            paren_token: parenthesized!(content in input),
    +                            args: content.parse_terminated(Expr::parse, Token![,])?,
    +                        });
    +                        continue;
    +                    }
    +                }
    +
                     e = Expr::Field(ExprField {
                         attrs: Vec::new(),
                         base: Box::new(e),
                         dot_token,
    -                    member: input.parse()?,
    +                    member,
                     });
                 } else if input.peek(token::Bracket) {
                     let content;
    @@ -5267,16 +5798,12 @@
             Ok(e)
         }
     
    -    // Parse all atomic expressions which don't have to worry about precedence
    +    // Parse all atomic expressions which don't have to worry about precedence
         // interactions, as they are fully contained.
    -    #[cfg(feature = "full")]
    +    #[cfg(feature = "full")]
         fn atom_expr(input: ParseStream, allow_struct: AllowStruct) -> Result<Expr> {
    -        if input.peek(token::Group)
    -            && !input.peek2(Token![::])
    -            && !input.peek2(Token![!])
    -            && !input.peek2(token::Brace)
    -        {
    -            input.call(expr_group).map(Expr::Group)
    +        if input.peek(token::Group) {
    +            expr_group(input, allow_struct)
             } else if input.peek(Lit) {
                 input.parse().map(Expr::Lit)
             } else if input.peek(Token![async])
    @@ -5286,20 +5813,18 @@
             } else if input.peek(Token![try]) && input.peek2(token::Brace) {
                 input.parse().map(Expr::TryBlock)
             } else if input.peek(Token![|])
    -            || input.peek(Token![async]) && (input.peek2(Token![|]) || input.peek2(Token![move]))
    -            || input.peek(Token![static])
                 || input.peek(Token![move])
    +            || input.peek(Token![for])
    +                && input.peek2(Token![<])
    +                && (input.peek3(Lifetime) || input.peek3(Token![>]))
    +            || input.peek(Token![const]) && !input.peek2(token::Brace)
    +            || input.peek(Token![static])
    +            || input.peek(Token![async]) && (input.peek2(Token![|]) || input.peek2(Token![move]))
             {
                 expr_closure(input, allow_struct).map(Expr::Closure)
    -        } else if input.peek(Token![for])
    -            && input.peek2(Token![<])
    -            && (input.peek3(Lifetime) || input.peek3(Token![>]))
    +        } else if token::parsing::peek_keyword(input.cursor(), "builtin") && input.peek2(Token![#])
             {
    -            let begin = input.fork();
    -            input.parse::<BoundLifetimes>()?;
    -            expr_closure(input, allow_struct)?;
    -            let verbatim = verbatim::between(begin, input);
    -            Ok(Expr::Verbatim(verbatim))
    +            expr_builtin(input)
             } else if input.peek(Ident)
                 || input.peek(Token![::])
                 || input.peek(Token![<])
    @@ -5307,6 +5832,7 @@
                 || input.peek(Token![Self])
                 || input.peek(Token![super])
                 || input.peek(Token![crate])
    +            || input.peek(Token![try]) && (input.peek2(Token![!]) || input.peek2(Token![::]))
             {
                 path_or_macro_or_struct(input, allow_struct)
             } else if input.peek(token::Paren) {
    @@ -5316,11 +5842,13 @@
             } else if input.peek(Token![continue]) {
                 input.parse().map(Expr::Continue)
             } else if input.peek(Token![return]) {
    -            expr_ret(input, allow_struct).map(Expr::Return)
    +            input.parse().map(Expr::Return)
    +        } else if input.peek(Token![become]) {
    +            expr_become(input)
             } else if input.peek(token::Bracket) {
                 array_or_repeat(input)
             } else if input.peek(Token![let]) {
    -            input.parse().map(Expr::Let)
    +            expr_let(input, allow_struct).map(Expr::Let)
             } else if input.peek(Token![if]) {
                 input.parse().map(Expr::If)
             } else if input.peek(Token![while]) {
    @@ -5336,47 +5864,52 @@
             } else if input.peek(Token![unsafe]) {
                 input.parse().map(Expr::Unsafe)
             } else if input.peek(Token![const]) {
    -            input.call(expr_const).map(Expr::Verbatim)
    +            input.parse().map(Expr::Const)
             } else if input.peek(token::Brace) {
                 input.parse().map(Expr::Block)
             } else if input.peek(Token![..]) {
                 expr_range(input, allow_struct).map(Expr::Range)
             } else if input.peek(Token![_]) {
    -            Ok(Expr::Verbatim(TokenStream::from(
    -                input.parse::<TokenTree>()?,
    -            )))
    +            input.parse().map(Expr::Infer)
             } else if input.peek(Lifetime) {
    -            let the_label: Label = input.parse()?;
    -            let mut expr = if input.peek(Token![while]) {
    -                Expr::While(input.parse()?)
    -            } else if input.peek(Token![for]) {
    -                Expr::ForLoop(input.parse()?)
    -            } else if input.peek(Token![loop]) {
    -                Expr::Loop(input.parse()?)
    -            } else if input.peek(token::Brace) {
    -                Expr::Block(input.parse()?)
    -            } else {
    -                return Err(input.error("expected loop or block expression"));
    -            };
    -            match &mut expr {
    -                Expr::While(ExprWhile { label, .. })
    -                | Expr::ForLoop(ExprForLoop { label, .. })
    -                | Expr::Loop(ExprLoop { label, .. })
    -                | Expr::Block(ExprBlock { label, .. }) => *label = Some(the_label),
    -                _ => unreachable!(),
    -            }
    -            Ok(expr)
    +            atom_labeled(input)
             } else {
    -            Err(input.error("expected expression"))
    +            Err(input.error("expected an expression"))
             }
         }
     
    -    #[cfg(not(feature = "full"))]
    -    fn atom_expr(input: ParseStream, _allow_struct: AllowStruct) -> Result<Expr> {
    -        if input.peek(Lit) {
    +    #[cfg(feature = "full")]
    +    fn atom_labeled(input: ParseStream) -> Result<Expr> {
    +        let the_label: Label = input.parse()?;
    +        let mut expr = if input.peek(Token![while]) {
    +            Expr::While(input.parse()?)
    +        } else if input.peek(Token![for]) {
    +            Expr::ForLoop(input.parse()?)
    +        } else if input.peek(Token![loop]) {
    +            Expr::Loop(input.parse()?)
    +        } else if input.peek(token::Brace) {
    +            Expr::Block(input.parse()?)
    +        } else {
    +            return Err(input.error("expected loop or block expression"));
    +        };
    +        match &mut expr {
    +            Expr::While(ExprWhile { label, .. })
    +            | Expr::ForLoop(ExprForLoop { label, .. })
    +            | Expr::Loop(ExprLoop { label, .. })
    +            | Expr::Block(ExprBlock { label, .. }) => *label = Some(the_label),
    +            _ => unreachable!(),
    +        }
    +        Ok(expr)
    +    }
    +
    +    #[cfg(not(feature = "full"))]
    +    fn atom_expr(input: ParseStream) -> Result<Expr> {
    +        if input.peek(token::Group) {
    +            expr_group(input)
    +        } else if input.peek(Lit) {
                 input.parse().map(Expr::Lit)
             } else if input.peek(token::Paren) {
    -            input.call(expr_paren).map(Expr::Paren)
    +            paren_or_tuple(input)
             } else if input.peek(Ident)
                 || input.peek(Token![::])
                 || input.peek(Token![<])
    @@ -5385,57 +5918,92 @@
                 || input.peek(Token![super])
                 || input.peek(Token![crate])
             {
    -            input.parse().map(Expr::Path)
    +            path_or_macro_or_struct(input)
    +        } else if input.is_empty() {
    +            Err(input.error("expected an expression"))
             } else {
    -            Err(input.error("unsupported expression; enable syn's features=[\"full\"]"))
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    fn path_or_macro_or_struct(input: ParseStream, allow_struct: AllowStruct) -> Result<Expr> {
    -        let begin = input.fork();
    -        let expr: ExprPath = input.parse()?;
    -
    -        if expr.qself.is_none() && input.peek(Token![!]) && !input.peek(Token![!=]) {
    -            let mut contains_arguments = false;
    -            for segment in &expr.path.segments {
    -                match segment.arguments {
    -                    PathArguments::None => {}
    -                    PathArguments::AngleBracketed(_) | PathArguments::Parenthesized(_) => {
    -                        contains_arguments = true;
    -                    }
    +            if input.peek(token::Brace) {
    +                let scan = input.fork();
    +                let content;
    +                braced!(content in scan);
    +                if content.parse::<Expr>().is_ok() && content.is_empty() {
    +                    let expr_block = verbatim::between(input, &scan);
    +                    input.advance_to(&scan);
    +                    return Ok(Expr::Verbatim(expr_block));
                     }
                 }
    -
    -            if !contains_arguments {
    -                let bang_token: Token![!] = input.parse()?;
    -                let (delimiter, tokens) = mac::parse_delimiter(input)?;
    -                return Ok(Expr::Macro(ExprMacro {
    -                    attrs: Vec::new(),
    -                    mac: Macro {
    -                        path: expr.path,
    -                        bang_token,
    -                        delimiter,
    -                        tokens,
    -                    },
    -                }));
    -            }
    -        }
    -
    -        if allow_struct.0 && input.peek(token::Brace) {
    -            let expr_struct = expr_struct_helper(input, expr.path)?;
    -            if expr.qself.is_some() {
    -                Ok(Expr::Verbatim(verbatim::between(begin, input)))
    -            } else {
    -                Ok(Expr::Struct(expr_struct))
    -            }
    -        } else {
    -            Ok(Expr::Path(expr))
    +            Err(input.error("unsupported expression; enable syn's features=[\"full\"]"))
             }
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "full")]
    +    fn expr_builtin(input: ParseStream) -> Result<Expr> {
    +        let begin = input.fork();
    +
    +        token::parsing::keyword(input, "builtin")?;
    +        input.parse::<Token![#]>()?;
    +        input.parse::<Ident>()?;
    +
    +        let args;
    +        parenthesized!(args in input);
    +        args.parse::<TokenStream>()?;
    +
    +        Ok(Expr::Verbatim(verbatim::between(&begin, input)))
    +    }
    +
    +    fn path_or_macro_or_struct(
    +        input: ParseStream,
    +        #[cfg(feature = "full")] allow_struct: AllowStruct,
    +    ) -> Result<Expr> {
    +        let expr_style = true;
    +        let (qself, path) = path::parsing::qpath(input, expr_style)?;
    +        rest_of_path_or_macro_or_struct(
    +            qself,
    +            path,
    +            input,
    +            #[cfg(feature = "full")]
    +            allow_struct,
    +        )
    +    }
    +
    +    fn rest_of_path_or_macro_or_struct(
    +        qself: Option<QSelf>,
    +        path: Path,
    +        input: ParseStream,
    +        #[cfg(feature = "full")] allow_struct: AllowStruct,
    +    ) -> Result<Expr> {
    +        if qself.is_none()
    +            && input.peek(Token![!])
    +            && !input.peek(Token![!=])
    +            && path.is_mod_style()
    +        {
    +            let bang_token: Token![!] = input.parse()?;
    +            let (delimiter, tokens) = mac::parse_delimiter(input)?;
    +            return Ok(Expr::Macro(ExprMacro {
    +                attrs: Vec::new(),
    +                mac: Macro {
    +                    path,
    +                    bang_token,
    +                    delimiter,
    +                    tokens,
    +                },
    +            }));
    +        }
    +
    +        #[cfg(not(feature = "full"))]
    +        let allow_struct = (true,);
    +        if allow_struct.0 && input.peek(token::Brace) {
    +            return expr_struct_helper(input, qself, path).map(Expr::Struct);
    +        }
    +
    +        Ok(Expr::Path(ExprPath {
    +            attrs: Vec::new(),
    +            qself,
    +            path,
    +        }))
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for ExprMacro {
             fn parse(input: ParseStream) -> Result<Self> {
                 Ok(ExprMacro {
    @@ -5445,8 +6013,7 @@
             }
         }
     
    -    #[cfg(feature = "full")]
    -    fn paren_or_tuple(input: ParseStream) -> Result<Expr> {
    +    fn paren_or_tuple(input: ParseStream) -> Result<Expr> {
             let content;
             let paren_token = parenthesized!(content in input);
             if content.is_empty() {
    @@ -5484,7 +6051,7 @@
             }))
         }
     
    -    #[cfg(feature = "full")]
    +    #[cfg(feature = "full")]
         fn array_or_repeat(input: ParseStream) -> Result<Expr> {
             let content;
             let bracket_token = bracketed!(content in input);
    @@ -5525,12 +6092,12 @@
                     len: Box::new(len),
                 }))
             } else {
    -            Err(content.error("expected `,` or `;`"))
    +            Err(content.error("expected `,` or `;`"))
             }
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for ExprArray {
             fn parse(input: ParseStream) -> Result<Self> {
                 let content;
    @@ -5555,8 +6122,8 @@
             }
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for ExprRepeat {
             fn parse(input: ParseStream) -> Result<Self> {
                 let content;
    @@ -5570,55 +6137,26 @@
             }
         }
     
    -    #[cfg(feature = "full")]
    -    pub(crate) fn expr_early(input: ParseStream) -> Result<Expr> {
    -        let mut attrs = input.call(expr_attrs)?;
    -        let mut expr = if input.peek(Token![if]) {
    -            Expr::If(input.parse()?)
    -        } else if input.peek(Token![while]) {
    -            Expr::While(input.parse()?)
    -        } else if input.peek(Token![for])
    -            && !(input.peek2(Token![<]) && (input.peek3(Lifetime) || input.peek3(Token![>])))
    -        {
    -            Expr::ForLoop(input.parse()?)
    -        } else if input.peek(Token![loop]) {
    -            Expr::Loop(input.parse()?)
    -        } else if input.peek(Token![match]) {
    -            Expr::Match(input.parse()?)
    -        } else if input.peek(Token![try]) && input.peek2(token::Brace) {
    -            Expr::TryBlock(input.parse()?)
    -        } else if input.peek(Token![unsafe]) {
    -            Expr::Unsafe(input.parse()?)
    -        } else if input.peek(Token![const]) {
    -            Expr::Verbatim(input.call(expr_const)?)
    -        } else if input.peek(token::Brace) {
    -            Expr::Block(input.parse()?)
    -        } else {
    -            let allow_struct = AllowStruct(true);
    -            let mut expr = unary_expr(input, allow_struct)?;
    -
    -            attrs.extend(expr.replace_attrs(Vec::new()));
    -            expr.replace_attrs(attrs);
    -
    -            return parse_expr(input, expr, allow_struct, Precedence::Any);
    -        };
    -
    -        if input.peek(Token![.]) && !input.peek(Token![..]) || input.peek(Token![?]) {
    -            expr = trailer_helper(input, expr)?;
    -
    -            attrs.extend(expr.replace_attrs(Vec::new()));
    -            expr.replace_attrs(attrs);
    -
    -            let allow_struct = AllowStruct(true);
    -            return parse_expr(input, expr, allow_struct, Precedence::Any);
    +    #[cfg(feature = "full")]
    +    fn continue_parsing_early(mut expr: &Expr) -> bool {
    +        while let Expr::Group(group) = expr {
    +            expr = &group.expr;
    +        }
    +        match expr {
    +            Expr::If(_)
    +            | Expr::While(_)
    +            | Expr::ForLoop(_)
    +            | Expr::Loop(_)
    +            | Expr::Match(_)
    +            | Expr::TryBlock(_)
    +            | Expr::Unsafe(_)
    +            | Expr::Const(_)
    +            | Expr::Block(_) => false,
    +            _ => true,
             }
    -
    -        attrs.extend(expr.replace_attrs(Vec::new()));
    -        expr.replace_attrs(attrs);
    -        Ok(expr)
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for ExprLit {
             fn parse(input: ParseStream) -> Result<Self> {
                 Ok(ExprLit {
    @@ -5628,147 +6166,151 @@
             }
         }
     
    -    #[cfg(feature = "full")]
    -    fn expr_group(input: ParseStream) -> Result<ExprGroup> {
    +    fn expr_group(
    +        input: ParseStream,
    +        #[cfg(feature = "full")] allow_struct: AllowStruct,
    +    ) -> Result<Expr> {
             let group = crate::group::parse_group(input)?;
    -        Ok(ExprGroup {
    +        let mut inner: Expr = group.content.parse()?;
    +
    +        match inner {
    +            Expr::Path(mut expr) if expr.attrs.is_empty() => {
    +                let grouped_len = expr.path.segments.len();
    +                Path::parse_rest(input, &mut expr.path, true)?;
    +                match rest_of_path_or_macro_or_struct(
    +                    expr.qself,
    +                    expr.path,
    +                    input,
    +                    #[cfg(feature = "full")]
    +                    allow_struct,
    +                )? {
    +                    Expr::Path(expr) if expr.path.segments.len() == grouped_len => {
    +                        inner = Expr::Path(expr);
    +                    }
    +                    extended => return Ok(extended),
    +                }
    +            }
    +            _ => {}
    +        }
    +
    +        Ok(Expr::Group(ExprGroup {
                 attrs: Vec::new(),
                 group_token: group.token,
    -            expr: group.content.parse()?,
    -        })
    +            expr: Box::new(inner),
    +        }))
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for ExprParen {
             fn parse(input: ParseStream) -> Result<Self> {
    -            expr_paren(input)
    +            let content;
    +            Ok(ExprParen {
    +                attrs: Vec::new(),
    +                paren_token: parenthesized!(content in input),
    +                expr: content.parse()?,
    +            })
             }
         }
     
    -    fn expr_paren(input: ParseStream) -> Result<ExprParen> {
    -        let content;
    -        Ok(ExprParen {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
    +    impl Parse for ExprLet {
    +        fn parse(input: ParseStream) -> Result<Self> {
    +            let allow_struct = AllowStruct(true);
    +            expr_let(input, allow_struct)
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    fn expr_let(input: ParseStream, allow_struct: AllowStruct) -> Result<ExprLet> {
    +        Ok(ExprLet {
                 attrs: Vec::new(),
    -            paren_token: parenthesized!(content in input),
    -            expr: content.parse()?,
    +            let_token: input.parse()?,
    +            pat: Box::new(Pat::parse_multi_with_leading_vert(input)?),
    +            eq_token: input.parse()?,
    +            expr: Box::new({
    +                let lhs = unary_expr(input, allow_struct)?;
    +                parse_expr(input, lhs, allow_struct, Precedence::Compare)?
    +            }),
             })
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    -    impl Parse for GenericMethodArgument {
    -        fn parse(input: ParseStream) -> Result<Self> {
    -            if input.peek(Lit) {
    -                let lit = input.parse()?;
    -                return Ok(GenericMethodArgument::Const(Expr::Lit(lit)));
    -            }
    -
    -            if input.peek(token::Brace) {
    -                let block: ExprBlock = input.parse()?;
    -                return Ok(GenericMethodArgument::Const(Expr::Block(block)));
    -            }
    -
    -            input.parse().map(GenericMethodArgument::Type)
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    -    impl Parse for MethodTurbofish {
    -        fn parse(input: ParseStream) -> Result<Self> {
    -            Ok(MethodTurbofish {
    -                colon2_token: input.parse()?,
    -                lt_token: input.parse()?,
    -                args: {
    -                    let mut args = Punctuated::new();
    -                    loop {
    -                        if input.peek(Token![>]) {
    -                            break;
    -                        }
    -                        let value: GenericMethodArgument = input.parse()?;
    -                        args.push_value(value);
    -                        if input.peek(Token![>]) {
    -                            break;
    -                        }
    -                        let punct = input.parse()?;
    -                        args.push_punct(punct);
    -                    }
    -                    args
    -                },
    -                gt_token: input.parse()?,
    -            })
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    -    impl Parse for ExprLet {
    -        fn parse(input: ParseStream) -> Result<Self> {
    -            Ok(ExprLet {
    -                attrs: Vec::new(),
    -                let_token: input.parse()?,
    -                pat: pat::parsing::multi_pat_with_leading_vert(input)?,
    -                eq_token: input.parse()?,
    -                expr: Box::new({
    -                    let allow_struct = AllowStruct(false);
    -                    let lhs = unary_expr(input, allow_struct)?;
    -                    parse_expr(input, lhs, allow_struct, Precedence::Compare)?
    -                }),
    -            })
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for ExprIf {
             fn parse(input: ParseStream) -> Result<Self> {
                 let attrs = input.call(Attribute::parse_outer)?;
    -            Ok(ExprIf {
    -                attrs,
    -                if_token: input.parse()?,
    -                cond: Box::new(input.call(Expr::parse_without_eager_brace)?),
    -                then_branch: input.parse()?,
    -                else_branch: {
    -                    if input.peek(Token![else]) {
    -                        Some(input.call(else_block)?)
    -                    } else {
    -                        None
    -                    }
    -                },
    +
    +            let mut clauses = Vec::new();
    +            let mut expr;
    +            loop {
    +                let if_token: Token![if] = input.parse()?;
    +                let cond = input.call(Expr::parse_without_eager_brace)?;
    +                let then_branch: Block = input.parse()?;
    +
    +                expr = ExprIf {
    +                    attrs: Vec::new(),
    +                    if_token,
    +                    cond: Box::new(cond),
    +                    then_branch,
    +                    else_branch: None,
    +                };
    +
    +                if !input.peek(Token![else]) {
    +                    break;
    +                }
    +
    +                let else_token: Token![else] = input.parse()?;
    +                let lookahead = input.lookahead1();
    +                if lookahead.peek(Token![if]) {
    +                    expr.else_branch = Some((else_token, Box::new(Expr::PLACEHOLDER)));
    +                    clauses.push(expr);
    +                    continue;
    +                } else if lookahead.peek(token::Brace) {
    +                    expr.else_branch = Some((
    +                        else_token,
    +                        Box::new(Expr::Block(ExprBlock {
    +                            attrs: Vec::new(),
    +                            label: None,
    +                            block: input.parse()?,
    +                        })),
    +                    ));
    +                    break;
    +                } else {
    +                    return Err(lookahead.error());
    +                }
    +            }
    +
    +            while let Some(mut prev) = clauses.pop() {
    +                *prev.else_branch.as_mut().unwrap().1 = Expr::If(expr);
    +                expr = prev;
    +            }
    +            expr.attrs = attrs;
    +            Ok(expr)
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
    +    impl Parse for ExprInfer {
    +        fn parse(input: ParseStream) -> Result<Self> {
    +            Ok(ExprInfer {
    +                attrs: input.call(Attribute::parse_outer)?,
    +                underscore_token: input.parse()?,
                 })
             }
         }
     
    -    #[cfg(feature = "full")]
    -    fn else_block(input: ParseStream) -> Result<(Token![else], Box<Expr>)> {
    -        let else_token: Token![else] = input.parse()?;
    -
    -        let lookahead = input.lookahead1();
    -        let else_branch = if input.peek(Token![if]) {
    -            input.parse().map(Expr::If)?
    -        } else if input.peek(token::Brace) {
    -            Expr::Block(ExprBlock {
    -                attrs: Vec::new(),
    -                label: None,
    -                block: input.parse()?,
    -            })
    -        } else {
    -            return Err(lookahead.error());
    -        };
    -
    -        Ok((else_token, Box::new(else_branch)))
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for ExprForLoop {
             fn parse(input: ParseStream) -> Result<Self> {
                 let mut attrs = input.call(Attribute::parse_outer)?;
                 let label: Option<Label> = input.parse()?;
                 let for_token: Token![for] = input.parse()?;
     
    -            let pat = pat::parsing::multi_pat_with_leading_vert(input)?;
    +            let pat = Pat::parse_multi_with_leading_vert(input)?;
     
                 let in_token: Token![in] = input.parse()?;
                 let expr: Expr = input.call(Expr::parse_without_eager_brace)?;
    @@ -5782,7 +6324,7 @@
                     attrs,
                     label,
                     for_token,
    -                pat,
    +                pat: Box::new(pat),
                     in_token,
                     expr: Box::new(expr),
                     body: Block { brace_token, stmts },
    @@ -5790,8 +6332,8 @@
             }
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for ExprLoop {
             fn parse(input: ParseStream) -> Result<Self> {
                 let mut attrs = input.call(Attribute::parse_outer)?;
    @@ -5812,8 +6354,8 @@
             }
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for ExprMatch {
             fn parse(input: ParseStream) -> Result<Self> {
                 let mut attrs = input.call(Attribute::parse_outer)?;
    @@ -5839,15 +6381,15 @@
             }
         }
     
    -    macro_rules! impl_by_parsing_expr {
    +    macro_rules! impl_by_parsing_expr {
             (
                 $(
                     $expr_type:ty, $variant:ident, $msg:expr,
                 )*
             ) => {
                 $(
    -                #[cfg(all(feature = "full", feature = "printing"))]
    -                #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +                #[cfg(all(feature = "full", feature = "printing"))]
    +                #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
                     impl Parse for $expr_type {
                         fn parse(input: ParseStream) -> Result<Self> {
                             let mut expr: Expr = input.parse()?;
    @@ -5864,47 +6406,22 @@
             };
         }
     
    -    impl_by_parsing_expr! {
    -        ExprAssign, Assign, "expected assignment expression",
    -        ExprAssignOp, AssignOp, "expected compound assignment expression",
    -        ExprAwait, Await, "expected await expression",
    -        ExprBinary, Binary, "expected binary operation",
    -        ExprCall, Call, "expected function call expression",
    -        ExprCast, Cast, "expected cast expression",
    -        ExprField, Field, "expected struct field access",
    -        ExprIndex, Index, "expected indexing expression",
    -        ExprMethodCall, MethodCall, "expected method call expression",
    -        ExprRange, Range, "expected range expression",
    -        ExprTry, Try, "expected try expression",
    -        ExprTuple, Tuple, "expected tuple expression",
    -        ExprType, Type, "expected type ascription expression",
    +    impl_by_parsing_expr! {
    +        ExprAssign, Assign, "expected assignment expression",
    +        ExprAwait, Await, "expected await expression",
    +        ExprBinary, Binary, "expected binary operation",
    +        ExprCall, Call, "expected function call expression",
    +        ExprCast, Cast, "expected cast expression",
    +        ExprField, Field, "expected struct field access",
    +        ExprIndex, Index, "expected indexing expression",
    +        ExprMethodCall, MethodCall, "expected method call expression",
    +        ExprRange, Range, "expected range expression",
    +        ExprTry, Try, "expected try expression",
    +        ExprTuple, Tuple, "expected tuple expression",
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    -    impl Parse for ExprBox {
    -        fn parse(input: ParseStream) -> Result<Self> {
    -            let attrs = Vec::new();
    -            let allow_struct = AllowStruct(true);
    -            expr_box(input, attrs, allow_struct)
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    fn expr_box(
    -        input: ParseStream,
    -        attrs: Vec<Attribute>,
    -        allow_struct: AllowStruct,
    -    ) -> Result<ExprBox> {
    -        Ok(ExprBox {
    -            attrs,
    -            box_token: input.parse()?,
    -            expr: Box::new(unary_expr(input, allow_struct)?),
    -        })
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for ExprUnary {
             fn parse(input: ParseStream) -> Result<Self> {
                 let attrs = Vec::new();
    @@ -5913,7 +6430,7 @@
             }
         }
     
    -    #[cfg(feature = "full")]
    +    #[cfg(feature = "full")]
         fn expr_unary(
             input: ParseStream,
             attrs: Vec<Attribute>,
    @@ -5926,8 +6443,8 @@
             })
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for ExprClosure {
             fn parse(input: ParseStream) -> Result<Self> {
                 let allow_struct = AllowStruct(true);
    @@ -5935,23 +6452,37 @@
             }
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    -    impl Parse for ExprReference {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
    +    impl Parse for ExprRawAddr {
             fn parse(input: ParseStream) -> Result<Self> {
                 let allow_struct = AllowStruct(true);
    -            Ok(ExprReference {
    +            Ok(ExprRawAddr {
                     attrs: Vec::new(),
                     and_token: input.parse()?,
    -                raw: Reserved::default(),
    +                raw: input.parse()?,
                     mutability: input.parse()?,
                     expr: Box::new(unary_expr(input, allow_struct)?),
                 })
             }
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
    +    impl Parse for ExprReference {
    +        fn parse(input: ParseStream) -> Result<Self> {
    +            let allow_struct = AllowStruct(true);
    +            Ok(ExprReference {
    +                attrs: Vec::new(),
    +                and_token: input.parse()?,
    +                mutability: input.parse()?,
    +                expr: Box::new(unary_expr(input, allow_struct)?),
    +            })
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for ExprBreak {
             fn parse(input: ParseStream) -> Result<Self> {
                 let allow_struct = AllowStruct(true);
    @@ -5959,17 +6490,34 @@
             }
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for ExprReturn {
             fn parse(input: ParseStream) -> Result<Self> {
    -            let allow_struct = AllowStruct(true);
    -            expr_ret(input, allow_struct)
    +            Ok(ExprReturn {
    +                attrs: Vec::new(),
    +                return_token: input.parse()?,
    +                expr: {
    +                    if Expr::peek(input) {
    +                        Some(input.parse()?)
    +                    } else {
    +                        None
    +                    }
    +                },
    +            })
             }
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "full")]
    +    fn expr_become(input: ParseStream) -> Result<Expr> {
    +        let begin = input.fork();
    +        input.parse::<Token![become]>()?;
    +        input.parse::<Expr>()?;
    +        Ok(Expr::Verbatim(verbatim::between(&begin, input)))
    +    }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for ExprTryBlock {
             fn parse(input: ParseStream) -> Result<Self> {
                 Ok(ExprTryBlock {
    @@ -5980,15 +6528,15 @@
             }
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for ExprYield {
             fn parse(input: ParseStream) -> Result<Self> {
                 Ok(ExprYield {
                     attrs: Vec::new(),
                     yield_token: input.parse()?,
                     expr: {
    -                    if !input.is_empty() && !input.peek(Token![,]) && !input.peek(Token![;]) {
    +                    if Expr::peek(input) {
                             Some(input.parse()?)
                         } else {
                             None
    @@ -5998,8 +6546,10 @@
             }
         }
     
    -    #[cfg(feature = "full")]
    +    #[cfg(feature = "full")]
         fn expr_closure(input: ParseStream, allow_struct: AllowStruct) -> Result<ExprClosure> {
    +        let lifetimes: Option<BoundLifetimes> = input.parse()?;
    +        let constness: Option<Token![const]> = input.parse()?;
             let movability: Option<Token![static]> = input.parse()?;
             let asyncness: Option<Token![async]> = input.parse()?;
             let capture: Option<Token![move]> = input.parse()?;
    @@ -6039,6 +6589,8 @@
     
             Ok(ExprClosure {
                 attrs: Vec::new(),
    +            lifetimes,
    +            constness,
                 movability,
                 asyncness,
                 capture,
    @@ -6050,8 +6602,8 @@
             })
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for ExprAsync {
             fn parse(input: ParseStream) -> Result<Self> {
                 Ok(ExprAsync {
    @@ -6063,10 +6615,10 @@
             }
         }
     
    -    #[cfg(feature = "full")]
    +    #[cfg(feature = "full")]
         fn closure_arg(input: ParseStream) -> Result<Pat> {
             let attrs = input.call(Attribute::parse_outer)?;
    -        let mut pat: Pat = input.parse()?;
    +        let mut pat = Pat::parse_single(input)?;
     
             if input.peek(Token![:]) {
                 Ok(Pat::Type(PatType {
    @@ -6077,11 +6629,12 @@
                 }))
             } else {
                 match &mut pat {
    -                Pat::Box(pat) => pat.attrs = attrs,
    +                Pat::Const(pat) => pat.attrs = attrs,
                     Pat::Ident(pat) => pat.attrs = attrs,
                     Pat::Lit(pat) => pat.attrs = attrs,
                     Pat::Macro(pat) => pat.attrs = attrs,
                     Pat::Or(pat) => pat.attrs = attrs,
    +                Pat::Paren(pat) => pat.attrs = attrs,
                     Pat::Path(pat) => pat.attrs = attrs,
                     Pat::Range(pat) => pat.attrs = attrs,
                     Pat::Reference(pat) => pat.attrs = attrs,
    @@ -6093,16 +6646,13 @@
                     Pat::Type(_) => unreachable!(),
                     Pat::Verbatim(_) => {}
                     Pat::Wild(pat) => pat.attrs = attrs,
    -
    -                #[cfg(syn_no_non_exhaustive)]
    -                _ => unreachable!(),
                 }
                 Ok(pat)
             }
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for ExprWhile {
             fn parse(input: ParseStream) -> Result<Self> {
                 let mut attrs = input.call(Attribute::parse_outer)?;
    @@ -6125,8 +6675,27 @@
             }
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
    +    impl Parse for ExprConst {
    +        fn parse(input: ParseStream) -> Result<Self> {
    +            let const_token: Token![const] = input.parse()?;
    +
    +            let content;
    +            let brace_token = braced!(content in input);
    +            let inner_attrs = content.call(Attribute::parse_inner)?;
    +            let stmts = content.call(Block::parse_within)?;
    +
    +            Ok(ExprConst {
    +                attrs: inner_attrs,
    +                const_token,
    +                block: Block { brace_token, stmts },
    +            })
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for Label {
             fn parse(input: ParseStream) -> Result<Self> {
                 Ok(Label {
    @@ -6136,8 +6705,8 @@
             }
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for Option<Label> {
             fn parse(input: ParseStream) -> Result<Self> {
                 if input.peek(Lifetime) {
    @@ -6148,8 +6717,8 @@
             }
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for ExprContinue {
             fn parse(input: ParseStream) -> Result<Self> {
                 Ok(ExprContinue {
    @@ -6160,50 +6729,41 @@
             }
         }
     
    -    #[cfg(feature = "full")]
    +    #[cfg(feature = "full")]
         fn expr_break(input: ParseStream, allow_struct: AllowStruct) -> Result<ExprBreak> {
    +        let break_token: Token![break] = input.parse()?;
    +
    +        let ahead = input.fork();
    +        let label: Option<Lifetime> = ahead.parse()?;
    +        if label.is_some() && ahead.peek(Token![:]) {
    +            // Not allowed: `break 'label: loop {...}`
    +            // Parentheses are required. `break ('label: loop {...})`
    +            let _: Expr = input.parse()?;
    +            let start_span = label.unwrap().apostrophe;
    +            let end_span = input.cursor().prev_span();
    +            return Err(crate::error::new2(
    +                start_span,
    +                end_span,
    +                "parentheses required",
    +            ));
    +        }
    +
    +        input.advance_to(&ahead);
    +        let expr = if Expr::peek(input) && (allow_struct.0 || !input.peek(token::Brace)) {
    +            Some(input.parse()?)
    +        } else {
    +            None
    +        };
    +
             Ok(ExprBreak {
                 attrs: Vec::new(),
    -            break_token: input.parse()?,
    -            label: input.parse()?,
    -            expr: {
    -                if input.is_empty()
    -                    || input.peek(Token![,])
    -                    || input.peek(Token![;])
    -                    || !allow_struct.0 && input.peek(token::Brace)
    -                {
    -                    None
    -                } else {
    -                    let expr = ambiguous_expr(input, allow_struct)?;
    -                    Some(Box::new(expr))
    -                }
    -            },
    +            break_token,
    +            label,
    +            expr,
             })
         }
     
    -    #[cfg(feature = "full")]
    -    fn expr_ret(input: ParseStream, allow_struct: AllowStruct) -> Result<ExprReturn> {
    -        Ok(ExprReturn {
    -            attrs: Vec::new(),
    -            return_token: input.parse()?,
    -            expr: {
    -                if input.is_empty() || input.peek(Token![,]) || input.peek(Token![;]) {
    -                    None
    -                } else {
    -                    // NOTE: return is greedy and eats blocks after it even when in a
    -                    // position where structs are not allowed, such as in if statement
    -                    // conditions. For example:
    -                    //
    -                    // if return { println!("A") } {} // Prints "A"
    -                    let expr = ambiguous_expr(input, allow_struct)?;
    -                    Some(Box::new(expr))
    -                }
    -            },
    -        })
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for FieldValue {
             fn parse(input: ParseStream) -> Result<Self> {
                 let attrs = input.call(Attribute::parse_outer)?;
    @@ -6232,17 +6792,20 @@
             }
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for ExprStruct {
             fn parse(input: ParseStream) -> Result<Self> {
    -            let path: Path = input.parse()?;
    -            expr_struct_helper(input, path)
    +            let expr_style = true;
    +            let (qself, path) = path::parsing::qpath(input, expr_style)?;
    +            expr_struct_helper(input, qself, path)
             }
         }
     
    -    #[cfg(feature = "full")]
    -    fn expr_struct_helper(input: ParseStream, path: Path) -> Result<ExprStruct> {
    +    fn expr_struct_helper(
    +        input: ParseStream,
    +        qself: Option<QSelf>,
    +        path: Path,
    +    ) -> Result<ExprStruct> {
             let content;
             let brace_token = braced!(content in input);
     
    @@ -6251,8 +6814,9 @@
                 if content.peek(Token![..]) {
                     return Ok(ExprStruct {
                         attrs: Vec::new(),
    -                    brace_token,
    +                    qself,
                         path,
    +                    brace_token,
                         fields,
                         dot2_token: Some(content.parse()?),
                         rest: if content.is_empty() {
    @@ -6273,16 +6837,17 @@
     
             Ok(ExprStruct {
                 attrs: Vec::new(),
    -            brace_token,
    +            qself,
                 path,
    +            brace_token,
                 fields,
                 dot2_token: None,
                 rest: None,
             })
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for ExprUnsafe {
             fn parse(input: ParseStream) -> Result<Self> {
                 let unsafe_token: Token![unsafe] = input.parse()?;
    @@ -6300,21 +6865,8 @@
             }
         }
     
    -    #[cfg(feature = "full")]
    -    pub(crate) fn expr_const(input: ParseStream) -> Result<TokenStream> {
    -        let begin = input.fork();
    -        input.parse::<Token![const]>()?;
    -
    -        let content;
    -        braced!(content in input);
    -        content.call(Attribute::parse_inner)?;
    -        content.call(Block::parse_within)?;
    -
    -        Ok(verbatim::between(begin, input))
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for ExprBlock {
             fn parse(input: ParseStream) -> Result<Self> {
                 let mut attrs = input.call(Attribute::parse_outer)?;
    @@ -6333,39 +6885,49 @@
             }
         }
     
    -    #[cfg(feature = "full")]
    +    #[cfg(feature = "full")]
         fn expr_range(input: ParseStream, allow_struct: AllowStruct) -> Result<ExprRange> {
    +        let limits: RangeLimits = input.parse()?;
    +        let end = parse_range_end(input, &limits, allow_struct)?;
             Ok(ExprRange {
                 attrs: Vec::new(),
    -            from: None,
    -            limits: input.parse()?,
    -            to: {
    -                if input.is_empty()
    -                    || input.peek(Token![,])
    -                    || input.peek(Token![;])
    -                    || input.peek(Token![.]) && !input.peek(Token![..])
    -                    || !allow_struct.0 && input.peek(token::Brace)
    -                {
    -                    None
    -                } else {
    -                    let to = ambiguous_expr(input, allow_struct)?;
    -                    Some(Box::new(to))
    -                }
    -            },
    +            start: None,
    +            limits,
    +            end,
             })
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "full")]
    +    fn parse_range_end(
    +        input: ParseStream,
    +        limits: &RangeLimits,
    +        allow_struct: AllowStruct,
    +    ) -> Result<Option<Box<Expr>>> {
    +        if matches!(limits, RangeLimits::HalfOpen(_))
    +            && (input.is_empty()
    +                || input.peek(Token![,])
    +                || input.peek(Token![;])
    +                || input.peek(Token![.]) && !input.peek(Token![..])
    +                || !allow_struct.0 && input.peek(token::Brace))
    +        {
    +            Ok(None)
    +        } else {
    +            let end = parse_binop_rhs(input, allow_struct, Precedence::Range)?;
    +            Ok(Some(end))
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for RangeLimits {
             fn parse(input: ParseStream) -> Result<Self> {
                 let lookahead = input.lookahead1();
    -            if lookahead.peek(Token![..=]) {
    +            let dot_dot = lookahead.peek(Token![..]);
    +            let dot_dot_eq = dot_dot && lookahead.peek(Token![..=]);
    +            let dot_dot_dot = dot_dot && input.peek(Token![...]);
    +            if dot_dot_eq {
                     input.parse().map(RangeLimits::Closed)
    -            } else if lookahead.peek(Token![...]) {
    -                let dot3: Token![...] = input.parse()?;
    -                Ok(RangeLimits::Closed(Token![..=](dot3.spans)))
    -            } else if lookahead.peek(Token![..]) {
    +            } else if dot_dot && !dot_dot_dot {
                     input.parse().map(RangeLimits::HalfOpen)
                 } else {
                     Err(lookahead.error())
    @@ -6373,21 +6935,42 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "full")]
    +    impl RangeLimits {
    +        pub(crate) fn parse_obsolete(input: ParseStream) -> Result<Self> {
    +            let lookahead = input.lookahead1();
    +            let dot_dot = lookahead.peek(Token![..]);
    +            let dot_dot_eq = dot_dot && lookahead.peek(Token![..=]);
    +            let dot_dot_dot = dot_dot && input.peek(Token![...]);
    +            if dot_dot_eq {
    +                input.parse().map(RangeLimits::Closed)
    +            } else if dot_dot_dot {
    +                let dot3: Token![...] = input.parse()?;
    +                Ok(RangeLimits::Closed(Token![..=](dot3.spans)))
    +            } else if dot_dot {
    +                input.parse().map(RangeLimits::HalfOpen)
    +            } else {
    +                Err(lookahead.error())
    +            }
    +        }
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for ExprPath {
             fn parse(input: ParseStream) -> Result<Self> {
    -            #[cfg(not(feature = "full"))]
    +            #[cfg(not(feature = "full"))]
                 let attrs = Vec::new();
    -            #[cfg(feature = "full")]
    +            #[cfg(feature = "full")]
                 let attrs = input.call(Attribute::parse_outer)?;
     
    -            let (qself, path) = path::parsing::qpath(input, true)?;
    +            let expr_style = true;
    +            let (qself, path) = path::parsing::qpath(input, expr_style)?;
     
                 Ok(ExprPath { attrs, qself, path })
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for Member {
             fn parse(input: ParseStream) -> Result<Self> {
                 if input.peek(Ident) {
    @@ -6395,19 +6978,19 @@
                 } else if input.peek(LitInt) {
                     input.parse().map(Member::Unnamed)
                 } else {
    -                Err(input.error("expected identifier or integer"))
    +                Err(input.error("expected identifier or integer"))
                 }
             }
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for Arm {
             fn parse(input: ParseStream) -> Result<Arm> {
                 let requires_comma;
                 Ok(Arm {
                     attrs: input.call(Attribute::parse_outer)?,
    -                pat: pat::parsing::multi_pat_with_leading_vert(input)?,
    +                pat: Pat::parse_multi_with_leading_vert(input)?,
                     guard: {
                         if input.peek(Token![if]) {
                             let if_token: Token![if] = input.parse()?;
    @@ -6419,8 +7002,8 @@
                     },
                     fat_arrow_token: input.parse()?,
                     body: {
    -                    let body = input.call(expr_early)?;
    -                    requires_comma = requires_terminator(&body);
    +                    let body = Expr::parse_with_earlier_boundary_rule(input)?;
    +                    requires_comma = classify::requires_comma_to_be_match_arm(&body);
                         Box::new(body)
                     },
                     comma: {
    @@ -6434,7 +7017,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for Index {
             fn parse(input: ParseStream) -> Result<Self> {
                 let lit: LitInt = input.parse()?;
    @@ -6447,113 +7030,257 @@
                         span: lit.span(),
                     })
                 } else {
    -                Err(Error::new(lit.span(), "expected unsuffixed integer"))
    +                Err(Error::new(lit.span(), "expected unsuffixed integer"))
                 }
             }
         }
     
         fn multi_index(e: &mut Expr, dot_token: &mut Token![.], float: LitFloat) -> Result<bool> {
    -        let mut float_repr = float.to_string();
    -        let trailing_dot = float_repr.ends_with('.');
    +        let float_token = float.token();
    +        let float_span = float_token.span();
    +        let mut float_repr = float_token.to_string();
    +        let trailing_dot = float_repr.ends_with('.');
             if trailing_dot {
                 float_repr.truncate(float_repr.len() - 1);
             }
    -        for part in float_repr.split('.') {
    -            let index = crate::parse_str(part).map_err(|err| Error::new(float.span(), err))?;
    -            #[cfg(not(syn_no_const_vec_new))]
    -            let base = mem::replace(e, Expr::DUMMY);
    -            #[cfg(syn_no_const_vec_new)]
    -            let base = mem::replace(e, Expr::Verbatim(TokenStream::new()));
    +
    +        let mut offset = 0;
    +        for part in float_repr.split('.') {
    +            let mut index: Index =
    +                crate::parse_str(part).map_err(|err| Error::new(float_span, err))?;
    +            let part_end = offset + part.len();
    +            index.span = float_token.subspan(offset..part_end).unwrap_or(float_span);
    +
    +            let base = mem::replace(e, Expr::PLACEHOLDER);
                 *e = Expr::Field(ExprField {
                     attrs: Vec::new(),
                     base: Box::new(base),
                     dot_token: Token![.](dot_token.span),
                     member: Member::Unnamed(index),
                 });
    -            *dot_token = Token![.](float.span());
    +
    +            let dot_span = float_token
    +                .subspan(part_end..part_end + 1)
    +                .unwrap_or(float_span);
    +            *dot_token = Token![.](dot_span);
    +            offset = part_end + 1;
             }
    +
             Ok(!trailing_dot)
         }
     
    -    #[cfg(feature = "full")]
    -    impl Member {
    -        fn is_named(&self) -> bool {
    -            match *self {
    -                Member::Named(_) => true,
    -                Member::Unnamed(_) => false,
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
    +    impl Parse for PointerMutability {
    +        fn parse(input: ParseStream) -> Result<Self> {
    +            let lookahead = input.lookahead1();
    +            if lookahead.peek(Token![const]) {
    +                Ok(PointerMutability::Const(input.parse()?))
    +            } else if lookahead.peek(Token![mut]) {
    +                Ok(PointerMutability::Mut(input.parse()?))
    +            } else {
    +                Err(lookahead.error())
                 }
             }
         }
     
         fn check_cast(input: ParseStream) -> Result<()> {
             let kind = if input.peek(Token![.]) && !input.peek(Token![..]) {
    -            if input.peek2(token::Await) {
    -                "`.await`"
    +            if input.peek2(Token![await]) {
    +                "`.await`"
                 } else if input.peek2(Ident) && (input.peek3(token::Paren) || input.peek3(Token![::])) {
    -                "a method call"
    +                "a method call"
                 } else {
    -                "a field access"
    +                "a field access"
                 }
             } else if input.peek(Token![?]) {
    -            "`?`"
    +            "`?`"
             } else if input.peek(token::Bracket) {
    -            "indexing"
    +            "indexing"
             } else if input.peek(token::Paren) {
    -            "a function call"
    +            "a function call"
             } else {
                 return Ok(());
             };
    -        let msg = format!("casts cannot be followed by {}", kind);
    +        let msg = format!("casts cannot be followed by {}", kind);
             Err(input.error(msg))
         }
     }
     
    -#[cfg(feature = "printing")]
    +#[cfg(feature = "printing")]
     pub(crate) mod printing {
    -    use super::*;
    -    #[cfg(feature = "full")]
    +    use crate::attr::Attribute;
    +    #[cfg(feature = "full")]
         use crate::attr::FilterAttrs;
    -    use proc_macro2::{Literal, TokenStream};
    +    #[cfg(feature = "full")]
    +    use crate::classify;
    +    #[cfg(feature = "full")]
    +    use crate::expr::{
    +        Arm, ExprArray, ExprAssign, ExprAsync, ExprAwait, ExprBlock, ExprBreak, ExprClosure,
    +        ExprConst, ExprContinue, ExprForLoop, ExprIf, ExprInfer, ExprLet, ExprLoop, ExprMatch,
    +        ExprRange, ExprRawAddr, ExprRepeat, ExprReturn, ExprTry, ExprTryBlock, ExprUnsafe,
    +        ExprWhile, ExprYield, Label, PointerMutability, RangeLimits,
    +    };
    +    use crate::expr::{
    +        Expr, ExprBinary, ExprCall, ExprCast, ExprField, ExprGroup, ExprIndex, ExprLit, ExprMacro,
    +        ExprMethodCall, ExprParen, ExprPath, ExprReference, ExprStruct, ExprTuple, ExprUnary,
    +        FieldValue, Index, Member,
    +    };
    +    use crate::fixup::FixupContext;
    +    use crate::op::BinOp;
    +    use crate::path;
    +    use crate::path::printing::PathStyle;
    +    use crate::precedence::Precedence;
    +    use crate::token;
    +    #[cfg(feature = "full")]
    +    use crate::ty::ReturnType;
    +    use proc_macro2::{Literal, Span, TokenStream};
         use quote::{ToTokens, TokenStreamExt};
     
    -    // If the given expression is a bare `ExprStruct`, wraps it in parenthesis
    -    // before appending it to `TokenStream`.
    -    #[cfg(feature = "full")]
    -    fn wrap_bare_struct(tokens: &mut TokenStream, e: &Expr) {
    -        if let Expr::Struct(_) = *e {
    -            token::Paren::default().surround(tokens, |tokens| {
    -                e.to_tokens(tokens);
    -            });
    -        } else {
    -            e.to_tokens(tokens);
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    +    #[cfg(feature = "full")]
         pub(crate) fn outer_attrs_to_tokens(attrs: &[Attribute], tokens: &mut TokenStream) {
             tokens.append_all(attrs.outer());
         }
     
    -    #[cfg(feature = "full")]
    +    #[cfg(feature = "full")]
         fn inner_attrs_to_tokens(attrs: &[Attribute], tokens: &mut TokenStream) {
             tokens.append_all(attrs.inner());
         }
     
    -    #[cfg(not(feature = "full"))]
    +    #[cfg(not(feature = "full"))]
         pub(crate) fn outer_attrs_to_tokens(_attrs: &[Attribute], _tokens: &mut TokenStream) {}
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprBox {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.box_token.to_tokens(tokens);
    -            self.expr.to_tokens(tokens);
    +    #[cfg(feature = "full")]
    +    fn print_condition(expr: &Expr, tokens: &mut TokenStream) {
    +        print_subexpression(
    +            expr,
    +            classify::confusable_with_adjacent_block(expr),
    +            tokens,
    +            FixupContext::new_condition(),
    +        );
    +    }
    +
    +    fn print_subexpression(
    +        expr: &Expr,
    +        needs_group: bool,
    +        tokens: &mut TokenStream,
    +        mut fixup: FixupContext,
    +    ) {
    +        if needs_group {
    +            // If we are surrounding the whole cond in parentheses, such as:
    +            //
    +            //     if (return Struct {}) {}
    +            //
    +            // then there is no need for parenthesizing the individual struct
    +            // expressions within. On the other hand if the whole cond is not
    +            // parenthesized, then print_expr must parenthesize exterior struct
    +            // literals.
    +            //
    +            //     if x == (Struct {}) {}
    +            //
    +            fixup = FixupContext::NONE;
    +        }
    +
    +        let do_print_expr = |tokens: &mut TokenStream| print_expr(expr, tokens, fixup);
    +
    +        if needs_group {
    +            token::Paren::default().surround(tokens, do_print_expr);
    +        } else {
    +            do_print_expr(tokens);
             }
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    pub(crate) fn print_expr(expr: &Expr, tokens: &mut TokenStream, mut fixup: FixupContext) {
    +        #[cfg(feature = "full")]
    +        let needs_group = fixup.would_cause_statement_boundary(expr);
    +        #[cfg(not(feature = "full"))]
    +        let needs_group = false;
    +
    +        if needs_group {
    +            fixup = FixupContext::NONE;
    +        }
    +
    +        let do_print_expr = |tokens: &mut TokenStream| match expr {
    +            #[cfg(feature = "full")]
    +            Expr::Array(e) => e.to_tokens(tokens),
    +            #[cfg(feature = "full")]
    +            Expr::Assign(e) => print_expr_assign(e, tokens, fixup),
    +            #[cfg(feature = "full")]
    +            Expr::Async(e) => e.to_tokens(tokens),
    +            #[cfg(feature = "full")]
    +            Expr::Await(e) => print_expr_await(e, tokens, fixup),
    +            Expr::Binary(e) => print_expr_binary(e, tokens, fixup),
    +            #[cfg(feature = "full")]
    +            Expr::Block(e) => e.to_tokens(tokens),
    +            #[cfg(feature = "full")]
    +            Expr::Break(e) => print_expr_break(e, tokens, fixup),
    +            Expr::Call(e) => print_expr_call(e, tokens, fixup),
    +            Expr::Cast(e) => print_expr_cast(e, tokens, fixup),
    +            #[cfg(feature = "full")]
    +            Expr::Closure(e) => e.to_tokens(tokens),
    +            #[cfg(feature = "full")]
    +            Expr::Const(e) => e.to_tokens(tokens),
    +            #[cfg(feature = "full")]
    +            Expr::Continue(e) => e.to_tokens(tokens),
    +            Expr::Field(e) => print_expr_field(e, tokens, fixup),
    +            #[cfg(feature = "full")]
    +            Expr::ForLoop(e) => e.to_tokens(tokens),
    +            Expr::Group(e) => e.to_tokens(tokens),
    +            #[cfg(feature = "full")]
    +            Expr::If(e) => e.to_tokens(tokens),
    +            #[cfg(feature = "full")]
    +            Expr::Index(e) => print_expr_index(e, tokens, fixup),
    +            #[cfg(feature = "full")]
    +            Expr::Infer(e) => e.to_tokens(tokens),
    +            #[cfg(feature = "full")]
    +            Expr::Let(e) => print_expr_let(e, tokens, fixup),
    +            Expr::Lit(e) => e.to_tokens(tokens),
    +            #[cfg(feature = "full")]
    +            Expr::Loop(e) => e.to_tokens(tokens),
    +            Expr::Macro(e) => e.to_tokens(tokens),
    +            #[cfg(feature = "full")]
    +            Expr::Match(e) => e.to_tokens(tokens),
    +            Expr::MethodCall(e) => print_expr_method_call(e, tokens, fixup),
    +            Expr::Paren(e) => e.to_tokens(tokens),
    +            Expr::Path(e) => e.to_tokens(tokens),
    +            #[cfg(feature = "full")]
    +            Expr::Range(e) => print_expr_range(e, tokens, fixup),
    +            #[cfg(feature = "full")]
    +            Expr::RawAddr(e) => print_expr_raw_addr(e, tokens, fixup),
    +            Expr::Reference(e) => print_expr_reference(e, tokens, fixup),
    +            #[cfg(feature = "full")]
    +            Expr::Repeat(e) => e.to_tokens(tokens),
    +            #[cfg(feature = "full")]
    +            Expr::Return(e) => print_expr_return(e, tokens, fixup),
    +            Expr::Struct(e) => e.to_tokens(tokens),
    +            #[cfg(feature = "full")]
    +            Expr::Try(e) => print_expr_try(e, tokens, fixup),
    +            #[cfg(feature = "full")]
    +            Expr::TryBlock(e) => e.to_tokens(tokens),
    +            #[cfg(feature = "full")]
    +            Expr::Tuple(e) => e.to_tokens(tokens),
    +            Expr::Unary(e) => print_expr_unary(e, tokens, fixup),
    +            #[cfg(feature = "full")]
    +            Expr::Unsafe(e) => e.to_tokens(tokens),
    +            Expr::Verbatim(e) => e.to_tokens(tokens),
    +            #[cfg(feature = "full")]
    +            Expr::While(e) => e.to_tokens(tokens),
    +            #[cfg(feature = "full")]
    +            Expr::Yield(e) => print_expr_yield(e, tokens, fixup),
    +
    +            #[cfg(not(feature = "full"))]
    +            _ => unreachable!(),
    +        };
    +
    +        if needs_group {
    +            token::Paren::default().surround(tokens, do_print_expr);
    +        } else {
    +            do_print_expr(tokens);
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for ExprArray {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 outer_attrs_to_tokens(&self.attrs, tokens);
    @@ -6563,56 +7290,635 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprAssign {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            print_expr_assign(self, tokens, FixupContext::NONE);
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    fn print_expr_assign(e: &ExprAssign, tokens: &mut TokenStream, fixup: FixupContext) {
    +        outer_attrs_to_tokens(&e.attrs, tokens);
    +        print_subexpression(
    +            &e.left,
    +            Precedence::of(&e.left) <= Precedence::Range,
    +            tokens,
    +            fixup.leftmost_subexpression(),
    +        );
    +        e.eq_token.to_tokens(tokens);
    +        print_subexpression(
    +            &e.right,
    +            fixup.trailing_precedence(&e.right) < Precedence::Assign,
    +            tokens,
    +            fixup.subsequent_subexpression(),
    +        );
    +    }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprAsync {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            outer_attrs_to_tokens(&self.attrs, tokens);
    +            self.async_token.to_tokens(tokens);
    +            self.capture.to_tokens(tokens);
    +            self.block.to_tokens(tokens);
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprAwait {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            print_expr_await(self, tokens, FixupContext::NONE);
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    fn print_expr_await(e: &ExprAwait, tokens: &mut TokenStream, fixup: FixupContext) {
    +        outer_attrs_to_tokens(&e.attrs, tokens);
    +        print_subexpression(
    +            &e.base,
    +            Precedence::of(&e.base) < Precedence::Unambiguous,
    +            tokens,
    +            fixup.leftmost_subexpression_with_dot(),
    +        );
    +        e.dot_token.to_tokens(tokens);
    +        e.await_token.to_tokens(tokens);
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprBinary {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            print_expr_binary(self, tokens, FixupContext::NONE);
    +        }
    +    }
    +
    +    fn print_expr_binary(e: &ExprBinary, tokens: &mut TokenStream, fixup: FixupContext) {
    +        outer_attrs_to_tokens(&e.attrs, tokens);
    +
    +        let left_fixup = fixup.leftmost_subexpression_with_begin_operator(
    +            #[cfg(feature = "full")]
    +            match &e.op {
    +                BinOp::Sub(_)
    +                | BinOp::Mul(_)
    +                | BinOp::And(_)
    +                | BinOp::Or(_)
    +                | BinOp::BitAnd(_)
    +                | BinOp::BitOr(_)
    +                | BinOp::Shl(_)
    +                | BinOp::Lt(_) => true,
    +                _ => false,
    +            },
    +            match &e.op {
    +                BinOp::Shl(_) | BinOp::Lt(_) => true,
    +                _ => false,
    +            },
    +        );
    +
    +        let binop_prec = Precedence::of_binop(&e.op);
    +        let left_prec = left_fixup.leading_precedence(&e.left);
    +        let right_prec = fixup.trailing_precedence(&e.right);
    +        let (left_needs_group, right_needs_group) = match binop_prec {
    +            Precedence::Assign => (left_prec <= Precedence::Range, right_prec < binop_prec),
    +            Precedence::Compare => (left_prec <= binop_prec, right_prec <= binop_prec),
    +            _ => (left_prec < binop_prec, right_prec <= binop_prec),
    +        };
    +
    +        print_subexpression(&e.left, left_needs_group, tokens, left_fixup);
    +        e.op.to_tokens(tokens);
    +        print_subexpression(
    +            &e.right,
    +            right_needs_group,
    +            tokens,
    +            fixup.subsequent_subexpression(),
    +        );
    +    }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprBlock {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            outer_attrs_to_tokens(&self.attrs, tokens);
    +            self.label.to_tokens(tokens);
    +            self.block.brace_token.surround(tokens, |tokens| {
    +                inner_attrs_to_tokens(&self.attrs, tokens);
    +                tokens.append_all(&self.block.stmts);
    +            });
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprBreak {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            print_expr_break(self, tokens, FixupContext::NONE);
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    fn print_expr_break(e: &ExprBreak, tokens: &mut TokenStream, fixup: FixupContext) {
    +        outer_attrs_to_tokens(&e.attrs, tokens);
    +        e.break_token.to_tokens(tokens);
    +        e.label.to_tokens(tokens);
    +        if let Some(value) = &e.expr {
    +            print_subexpression(
    +                value,
    +                // Parenthesize `break 'inner: loop { break 'inner 1 } + 1`
    +                //                     ^---------------------------------^
    +                e.label.is_none() && classify::expr_leading_label(value),
    +                tokens,
    +                fixup.subsequent_subexpression(),
    +            );
    +        }
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for ExprCall {
             fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.func.to_tokens(tokens);
    -            self.paren_token.surround(tokens, |tokens| {
    -                self.args.to_tokens(tokens);
    -            });
    +            print_expr_call(self, tokens, FixupContext::NONE);
             }
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprMethodCall {
    +    fn print_expr_call(e: &ExprCall, tokens: &mut TokenStream, fixup: FixupContext) {
    +        outer_attrs_to_tokens(&e.attrs, tokens);
    +
    +        let func_fixup = fixup.leftmost_subexpression_with_begin_operator(
    +            #[cfg(feature = "full")]
    +            true,
    +            false,
    +        );
    +        let needs_group = if let Expr::Field(func) = &*e.func {
    +            func.member.is_named()
    +        } else {
    +            func_fixup.leading_precedence(&e.func) < Precedence::Unambiguous
    +        };
    +        print_subexpression(&e.func, needs_group, tokens, func_fixup);
    +
    +        e.paren_token.surround(tokens, |tokens| {
    +            e.args.to_tokens(tokens);
    +        });
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprCast {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            print_expr_cast(self, tokens, FixupContext::NONE);
    +        }
    +    }
    +
    +    fn print_expr_cast(e: &ExprCast, tokens: &mut TokenStream, fixup: FixupContext) {
    +        outer_attrs_to_tokens(&e.attrs, tokens);
    +        print_subexpression(
    +            &e.expr,
    +            Precedence::of(&e.expr) < Precedence::Cast,
    +            tokens,
    +            fixup.leftmost_subexpression(),
    +        );
    +        e.as_token.to_tokens(tokens);
    +        e.ty.to_tokens(tokens);
    +    }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprClosure {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.receiver.to_tokens(tokens);
    -            self.dot_token.to_tokens(tokens);
    -            self.method.to_tokens(tokens);
    -            self.turbofish.to_tokens(tokens);
    -            self.paren_token.surround(tokens, |tokens| {
    -                self.args.to_tokens(tokens);
    -            });
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for MethodTurbofish {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            self.colon2_token.to_tokens(tokens);
    -            self.lt_token.to_tokens(tokens);
    -            self.args.to_tokens(tokens);
    -            self.gt_token.to_tokens(tokens);
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for GenericMethodArgument {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            match self {
    -                GenericMethodArgument::Type(t) => t.to_tokens(tokens),
    -                GenericMethodArgument::Const(c) => c.to_tokens(tokens),
    +            self.lifetimes.to_tokens(tokens);
    +            self.constness.to_tokens(tokens);
    +            self.movability.to_tokens(tokens);
    +            self.asyncness.to_tokens(tokens);
    +            self.capture.to_tokens(tokens);
    +            self.or1_token.to_tokens(tokens);
    +            self.inputs.to_tokens(tokens);
    +            self.or2_token.to_tokens(tokens);
    +            self.output.to_tokens(tokens);
    +            if matches!(self.output, ReturnType::Default) || matches!(*self.body, Expr::Block(_)) {
    +                self.body.to_tokens(tokens);
    +            } else {
    +                token::Brace::default().surround(tokens, |tokens| {
    +                    print_expr(&self.body, tokens, FixupContext::new_stmt());
    +                });
                 }
             }
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprConst {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            outer_attrs_to_tokens(&self.attrs, tokens);
    +            self.const_token.to_tokens(tokens);
    +            self.block.brace_token.surround(tokens, |tokens| {
    +                inner_attrs_to_tokens(&self.attrs, tokens);
    +                tokens.append_all(&self.block.stmts);
    +            });
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprContinue {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            outer_attrs_to_tokens(&self.attrs, tokens);
    +            self.continue_token.to_tokens(tokens);
    +            self.label.to_tokens(tokens);
    +        }
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprField {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            print_expr_field(self, tokens, FixupContext::NONE);
    +        }
    +    }
    +
    +    fn print_expr_field(e: &ExprField, tokens: &mut TokenStream, fixup: FixupContext) {
    +        outer_attrs_to_tokens(&e.attrs, tokens);
    +        print_subexpression(
    +            &e.base,
    +            Precedence::of(&e.base) < Precedence::Unambiguous,
    +            tokens,
    +            fixup.leftmost_subexpression_with_dot(),
    +        );
    +        e.dot_token.to_tokens(tokens);
    +        e.member.to_tokens(tokens);
    +    }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprForLoop {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            outer_attrs_to_tokens(&self.attrs, tokens);
    +            self.label.to_tokens(tokens);
    +            self.for_token.to_tokens(tokens);
    +            self.pat.to_tokens(tokens);
    +            self.in_token.to_tokens(tokens);
    +            print_condition(&self.expr, tokens);
    +            self.body.brace_token.surround(tokens, |tokens| {
    +                inner_attrs_to_tokens(&self.attrs, tokens);
    +                tokens.append_all(&self.body.stmts);
    +            });
    +        }
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprGroup {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            outer_attrs_to_tokens(&self.attrs, tokens);
    +            self.group_token.surround(tokens, |tokens| {
    +                self.expr.to_tokens(tokens);
    +            });
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprIf {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            outer_attrs_to_tokens(&self.attrs, tokens);
    +
    +            let mut expr = self;
    +            loop {
    +                expr.if_token.to_tokens(tokens);
    +                print_condition(&expr.cond, tokens);
    +                expr.then_branch.to_tokens(tokens);
    +
    +                let (else_token, else_) = match &expr.else_branch {
    +                    Some(else_branch) => else_branch,
    +                    None => break,
    +                };
    +
    +                else_token.to_tokens(tokens);
    +                match &**else_ {
    +                    Expr::If(next) => {
    +                        expr = next;
    +                    }
    +                    Expr::Block(last) => {
    +                        last.to_tokens(tokens);
    +                        break;
    +                    }
    +                    // If this is not one of the valid expressions to exist in
    +                    // an else clause, wrap it in a block.
    +                    other => {
    +                        token::Brace::default().surround(tokens, |tokens| {
    +                            print_expr(other, tokens, FixupContext::new_stmt());
    +                        });
    +                        break;
    +                    }
    +                }
    +            }
    +        }
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprIndex {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            print_expr_index(self, tokens, FixupContext::NONE);
    +        }
    +    }
    +
    +    fn print_expr_index(e: &ExprIndex, tokens: &mut TokenStream, fixup: FixupContext) {
    +        outer_attrs_to_tokens(&e.attrs, tokens);
    +        let obj_fixup = fixup.leftmost_subexpression_with_begin_operator(
    +            #[cfg(feature = "full")]
    +            true,
    +            false,
    +        );
    +        print_subexpression(
    +            &e.expr,
    +            obj_fixup.leading_precedence(&e.expr) < Precedence::Unambiguous,
    +            tokens,
    +            obj_fixup,
    +        );
    +        e.bracket_token.surround(tokens, |tokens| {
    +            e.index.to_tokens(tokens);
    +        });
    +    }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprInfer {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            outer_attrs_to_tokens(&self.attrs, tokens);
    +            self.underscore_token.to_tokens(tokens);
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprLet {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            print_expr_let(self, tokens, FixupContext::NONE);
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    fn print_expr_let(e: &ExprLet, tokens: &mut TokenStream, fixup: FixupContext) {
    +        outer_attrs_to_tokens(&e.attrs, tokens);
    +        e.let_token.to_tokens(tokens);
    +        e.pat.to_tokens(tokens);
    +        e.eq_token.to_tokens(tokens);
    +        print_subexpression(
    +            &e.expr,
    +            fixup.needs_group_as_let_scrutinee(&e.expr),
    +            tokens,
    +            FixupContext::NONE,
    +        );
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprLit {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            outer_attrs_to_tokens(&self.attrs, tokens);
    +            self.lit.to_tokens(tokens);
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprLoop {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            outer_attrs_to_tokens(&self.attrs, tokens);
    +            self.label.to_tokens(tokens);
    +            self.loop_token.to_tokens(tokens);
    +            self.body.brace_token.surround(tokens, |tokens| {
    +                inner_attrs_to_tokens(&self.attrs, tokens);
    +                tokens.append_all(&self.body.stmts);
    +            });
    +        }
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprMacro {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            outer_attrs_to_tokens(&self.attrs, tokens);
    +            self.mac.to_tokens(tokens);
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprMatch {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            outer_attrs_to_tokens(&self.attrs, tokens);
    +            self.match_token.to_tokens(tokens);
    +            print_condition(&self.expr, tokens);
    +            self.brace_token.surround(tokens, |tokens| {
    +                inner_attrs_to_tokens(&self.attrs, tokens);
    +                for (i, arm) in self.arms.iter().enumerate() {
    +                    arm.to_tokens(tokens);
    +                    // Ensure that we have a comma after a non-block arm, except
    +                    // for the last one.
    +                    let is_last = i == self.arms.len() - 1;
    +                    if !is_last
    +                        && classify::requires_comma_to_be_match_arm(&arm.body)
    +                        && arm.comma.is_none()
    +                    {
    +                        <Token![,]>::default().to_tokens(tokens);
    +                    }
    +                }
    +            });
    +        }
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprMethodCall {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            print_expr_method_call(self, tokens, FixupContext::NONE);
    +        }
    +    }
    +
    +    fn print_expr_method_call(e: &ExprMethodCall, tokens: &mut TokenStream, fixup: FixupContext) {
    +        outer_attrs_to_tokens(&e.attrs, tokens);
    +        print_subexpression(
    +            &e.receiver,
    +            Precedence::of(&e.receiver) < Precedence::Unambiguous,
    +            tokens,
    +            fixup.leftmost_subexpression_with_dot(),
    +        );
    +        e.dot_token.to_tokens(tokens);
    +        e.method.to_tokens(tokens);
    +        if let Some(turbofish) = &e.turbofish {
    +            path::printing::print_angle_bracketed_generic_arguments(
    +                tokens,
    +                turbofish,
    +                PathStyle::Expr,
    +            );
    +        }
    +        e.paren_token.surround(tokens, |tokens| {
    +            e.args.to_tokens(tokens);
    +        });
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprParen {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            outer_attrs_to_tokens(&self.attrs, tokens);
    +            self.paren_token.surround(tokens, |tokens| {
    +                self.expr.to_tokens(tokens);
    +            });
    +        }
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprPath {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            outer_attrs_to_tokens(&self.attrs, tokens);
    +            path::printing::print_qpath(tokens, &self.qself, &self.path, PathStyle::Expr);
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprRange {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            print_expr_range(self, tokens, FixupContext::NONE);
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    fn print_expr_range(e: &ExprRange, tokens: &mut TokenStream, fixup: FixupContext) {
    +        outer_attrs_to_tokens(&e.attrs, tokens);
    +        if let Some(start) = &e.start {
    +            print_subexpression(
    +                start,
    +                Precedence::of(start) <= Precedence::Range,
    +                tokens,
    +                fixup.leftmost_subexpression(),
    +            );
    +        }
    +        e.limits.to_tokens(tokens);
    +        if let Some(end) = &e.end {
    +            print_subexpression(
    +                end,
    +                fixup.trailing_precedence(end) <= Precedence::Range,
    +                tokens,
    +                fixup.subsequent_subexpression(),
    +            );
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprRawAddr {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            print_expr_raw_addr(self, tokens, FixupContext::NONE);
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    fn print_expr_raw_addr(e: &ExprRawAddr, tokens: &mut TokenStream, fixup: FixupContext) {
    +        outer_attrs_to_tokens(&e.attrs, tokens);
    +        e.and_token.to_tokens(tokens);
    +        e.raw.to_tokens(tokens);
    +        e.mutability.to_tokens(tokens);
    +        print_subexpression(
    +            &e.expr,
    +            fixup.trailing_precedence(&e.expr) < Precedence::Prefix,
    +            tokens,
    +            fixup.subsequent_subexpression(),
    +        );
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprReference {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            print_expr_reference(self, tokens, FixupContext::NONE);
    +        }
    +    }
    +
    +    fn print_expr_reference(e: &ExprReference, tokens: &mut TokenStream, fixup: FixupContext) {
    +        outer_attrs_to_tokens(&e.attrs, tokens);
    +        e.and_token.to_tokens(tokens);
    +        e.mutability.to_tokens(tokens);
    +        print_subexpression(
    +            &e.expr,
    +            fixup.trailing_precedence(&e.expr) < Precedence::Prefix,
    +            tokens,
    +            fixup.subsequent_subexpression(),
    +        );
    +    }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprRepeat {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            outer_attrs_to_tokens(&self.attrs, tokens);
    +            self.bracket_token.surround(tokens, |tokens| {
    +                self.expr.to_tokens(tokens);
    +                self.semi_token.to_tokens(tokens);
    +                self.len.to_tokens(tokens);
    +            });
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprReturn {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            print_expr_return(self, tokens, FixupContext::NONE);
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    fn print_expr_return(e: &ExprReturn, tokens: &mut TokenStream, fixup: FixupContext) {
    +        outer_attrs_to_tokens(&e.attrs, tokens);
    +        e.return_token.to_tokens(tokens);
    +        if let Some(expr) = &e.expr {
    +            print_expr(expr, tokens, fixup.subsequent_subexpression());
    +        }
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprStruct {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            outer_attrs_to_tokens(&self.attrs, tokens);
    +            path::printing::print_qpath(tokens, &self.qself, &self.path, PathStyle::Expr);
    +            self.brace_token.surround(tokens, |tokens| {
    +                self.fields.to_tokens(tokens);
    +                if let Some(dot2_token) = &self.dot2_token {
    +                    dot2_token.to_tokens(tokens);
    +                } else if self.rest.is_some() {
    +                    Token![..](Span::call_site()).to_tokens(tokens);
    +                }
    +                self.rest.to_tokens(tokens);
    +            });
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprTry {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            print_expr_try(self, tokens, FixupContext::NONE);
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    fn print_expr_try(e: &ExprTry, tokens: &mut TokenStream, fixup: FixupContext) {
    +        outer_attrs_to_tokens(&e.attrs, tokens);
    +        print_subexpression(
    +            &e.expr,
    +            Precedence::of(&e.expr) < Precedence::Unambiguous,
    +            tokens,
    +            fixup.leftmost_subexpression_with_dot(),
    +        );
    +        e.question_token.to_tokens(tokens);
    +    }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprTryBlock {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            outer_attrs_to_tokens(&self.attrs, tokens);
    +            self.try_token.to_tokens(tokens);
    +            self.block.to_tokens(tokens);
    +        }
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for ExprTuple {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 outer_attrs_to_tokens(&self.attrs, tokens);
    @@ -6627,226 +7933,26 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprBinary {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.left.to_tokens(tokens);
    -            self.op.to_tokens(tokens);
    -            self.right.to_tokens(tokens);
    -        }
    -    }
    -
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for ExprUnary {
             fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.op.to_tokens(tokens);
    -            self.expr.to_tokens(tokens);
    +            print_expr_unary(self, tokens, FixupContext::NONE);
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprLit {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.lit.to_tokens(tokens);
    -        }
    +    fn print_expr_unary(e: &ExprUnary, tokens: &mut TokenStream, fixup: FixupContext) {
    +        outer_attrs_to_tokens(&e.attrs, tokens);
    +        e.op.to_tokens(tokens);
    +        print_subexpression(
    +            &e.expr,
    +            fixup.trailing_precedence(&e.expr) < Precedence::Prefix,
    +            tokens,
    +            fixup.subsequent_subexpression(),
    +        );
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprCast {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.expr.to_tokens(tokens);
    -            self.as_token.to_tokens(tokens);
    -            self.ty.to_tokens(tokens);
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprType {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.expr.to_tokens(tokens);
    -            self.colon_token.to_tokens(tokens);
    -            self.ty.to_tokens(tokens);
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    fn maybe_wrap_else(tokens: &mut TokenStream, else_: &Option<(Token![else], Box<Expr>)>) {
    -        if let Some((else_token, else_)) = else_ {
    -            else_token.to_tokens(tokens);
    -
    -            // If we are not one of the valid expressions to exist in an else
    -            // clause, wrap ourselves in a block.
    -            match **else_ {
    -                Expr::If(_) | Expr::Block(_) => {
    -                    else_.to_tokens(tokens);
    -                }
    -                _ => {
    -                    token::Brace::default().surround(tokens, |tokens| {
    -                        else_.to_tokens(tokens);
    -                    });
    -                }
    -            }
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprLet {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.let_token.to_tokens(tokens);
    -            self.pat.to_tokens(tokens);
    -            self.eq_token.to_tokens(tokens);
    -            wrap_bare_struct(tokens, &self.expr);
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprIf {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.if_token.to_tokens(tokens);
    -            wrap_bare_struct(tokens, &self.cond);
    -            self.then_branch.to_tokens(tokens);
    -            maybe_wrap_else(tokens, &self.else_branch);
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprWhile {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.label.to_tokens(tokens);
    -            self.while_token.to_tokens(tokens);
    -            wrap_bare_struct(tokens, &self.cond);
    -            self.body.brace_token.surround(tokens, |tokens| {
    -                inner_attrs_to_tokens(&self.attrs, tokens);
    -                tokens.append_all(&self.body.stmts);
    -            });
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprForLoop {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.label.to_tokens(tokens);
    -            self.for_token.to_tokens(tokens);
    -            self.pat.to_tokens(tokens);
    -            self.in_token.to_tokens(tokens);
    -            wrap_bare_struct(tokens, &self.expr);
    -            self.body.brace_token.surround(tokens, |tokens| {
    -                inner_attrs_to_tokens(&self.attrs, tokens);
    -                tokens.append_all(&self.body.stmts);
    -            });
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprLoop {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.label.to_tokens(tokens);
    -            self.loop_token.to_tokens(tokens);
    -            self.body.brace_token.surround(tokens, |tokens| {
    -                inner_attrs_to_tokens(&self.attrs, tokens);
    -                tokens.append_all(&self.body.stmts);
    -            });
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprMatch {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.match_token.to_tokens(tokens);
    -            wrap_bare_struct(tokens, &self.expr);
    -            self.brace_token.surround(tokens, |tokens| {
    -                inner_attrs_to_tokens(&self.attrs, tokens);
    -                for (i, arm) in self.arms.iter().enumerate() {
    -                    arm.to_tokens(tokens);
    -                    // Ensure that we have a comma after a non-block arm, except
    -                    // for the last one.
    -                    let is_last = i == self.arms.len() - 1;
    -                    if !is_last && requires_terminator(&arm.body) && arm.comma.is_none() {
    -                        <Token![,]>::default().to_tokens(tokens);
    -                    }
    -                }
    -            });
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprAsync {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.async_token.to_tokens(tokens);
    -            self.capture.to_tokens(tokens);
    -            self.block.to_tokens(tokens);
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprAwait {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.base.to_tokens(tokens);
    -            self.dot_token.to_tokens(tokens);
    -            self.await_token.to_tokens(tokens);
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprTryBlock {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.try_token.to_tokens(tokens);
    -            self.block.to_tokens(tokens);
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprYield {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.yield_token.to_tokens(tokens);
    -            self.expr.to_tokens(tokens);
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprClosure {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.movability.to_tokens(tokens);
    -            self.asyncness.to_tokens(tokens);
    -            self.capture.to_tokens(tokens);
    -            self.or1_token.to_tokens(tokens);
    -            self.inputs.to_tokens(tokens);
    -            self.or2_token.to_tokens(tokens);
    -            self.output.to_tokens(tokens);
    -            self.body.to_tokens(tokens);
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for ExprUnsafe {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 outer_attrs_to_tokens(&self.attrs, tokens);
    @@ -6858,235 +7964,55 @@
             }
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprBlock {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprWhile {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 outer_attrs_to_tokens(&self.attrs, tokens);
                 self.label.to_tokens(tokens);
    -            self.block.brace_token.surround(tokens, |tokens| {
    +            self.while_token.to_tokens(tokens);
    +            print_condition(&self.cond, tokens);
    +            self.body.brace_token.surround(tokens, |tokens| {
                     inner_attrs_to_tokens(&self.attrs, tokens);
    -                tokens.append_all(&self.block.stmts);
    +                tokens.append_all(&self.body.stmts);
                 });
             }
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprAssign {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for ExprYield {
             fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.left.to_tokens(tokens);
    -            self.eq_token.to_tokens(tokens);
    -            self.right.to_tokens(tokens);
    +            print_expr_yield(self, tokens, FixupContext::NONE);
             }
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprAssignOp {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.left.to_tokens(tokens);
    -            self.op.to_tokens(tokens);
    -            self.right.to_tokens(tokens);
    +    #[cfg(feature = "full")]
    +    fn print_expr_yield(e: &ExprYield, tokens: &mut TokenStream, fixup: FixupContext) {
    +        outer_attrs_to_tokens(&e.attrs, tokens);
    +        e.yield_token.to_tokens(tokens);
    +        if let Some(expr) = &e.expr {
    +            print_expr(expr, tokens, fixup.subsequent_subexpression());
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprField {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for Arm {
             fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.base.to_tokens(tokens);
    -            self.dot_token.to_tokens(tokens);
    -            self.member.to_tokens(tokens);
    -        }
    -    }
    -
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for Member {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            match self {
    -                Member::Named(ident) => ident.to_tokens(tokens),
    -                Member::Unnamed(index) => index.to_tokens(tokens),
    +            tokens.append_all(&self.attrs);
    +            self.pat.to_tokens(tokens);
    +            if let Some((if_token, guard)) = &self.guard {
    +                if_token.to_tokens(tokens);
    +                guard.to_tokens(tokens);
                 }
    +            self.fat_arrow_token.to_tokens(tokens);
    +            print_expr(&self.body, tokens, FixupContext::new_match_arm());
    +            self.comma.to_tokens(tokens);
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for Index {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            let mut lit = Literal::i64_unsuffixed(i64::from(self.index));
    -            lit.set_span(self.span);
    -            tokens.append(lit);
    -        }
    -    }
    -
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprIndex {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.expr.to_tokens(tokens);
    -            self.bracket_token.surround(tokens, |tokens| {
    -                self.index.to_tokens(tokens);
    -            });
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for RangeLimits {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            match self {
    -                RangeLimits::HalfOpen(t) => t.to_tokens(tokens),
    -                RangeLimits::Closed(t) => t.to_tokens(tokens),
    -            }
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprRange {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.from.to_tokens(tokens);
    -            self.limits.to_tokens(tokens);
    -            self.to.to_tokens(tokens);
    -        }
    -    }
    -
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprPath {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            path::printing::print_path(tokens, &self.qself, &self.path);
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprReference {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.and_token.to_tokens(tokens);
    -            self.mutability.to_tokens(tokens);
    -            self.expr.to_tokens(tokens);
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprBreak {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.break_token.to_tokens(tokens);
    -            self.label.to_tokens(tokens);
    -            self.expr.to_tokens(tokens);
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprContinue {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.continue_token.to_tokens(tokens);
    -            self.label.to_tokens(tokens);
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprReturn {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.return_token.to_tokens(tokens);
    -            self.expr.to_tokens(tokens);
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprMacro {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.mac.to_tokens(tokens);
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprStruct {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.path.to_tokens(tokens);
    -            self.brace_token.surround(tokens, |tokens| {
    -                self.fields.to_tokens(tokens);
    -                if let Some(dot2_token) = &self.dot2_token {
    -                    dot2_token.to_tokens(tokens);
    -                } else if self.rest.is_some() {
    -                    Token![..](Span::call_site()).to_tokens(tokens);
    -                }
    -                self.rest.to_tokens(tokens);
    -            });
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprRepeat {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.bracket_token.surround(tokens, |tokens| {
    -                self.expr.to_tokens(tokens);
    -                self.semi_token.to_tokens(tokens);
    -                self.len.to_tokens(tokens);
    -            });
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprGroup {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.group_token.surround(tokens, |tokens| {
    -                self.expr.to_tokens(tokens);
    -            });
    -        }
    -    }
    -
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprParen {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.paren_token.surround(tokens, |tokens| {
    -                self.expr.to_tokens(tokens);
    -            });
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for ExprTry {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            outer_attrs_to_tokens(&self.attrs, tokens);
    -            self.expr.to_tokens(tokens);
    -            self.question_token.to_tokens(tokens);
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for Label {
    -        fn to_tokens(&self, tokens: &mut TokenStream) {
    -            self.name.to_tokens(tokens);
    -            self.colon_token.to_tokens(tokens);
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for FieldValue {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 outer_attrs_to_tokens(&self.attrs, tokens);
    @@ -7098,19 +8024,53 @@
             }
         }
     
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for Arm {
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for Index {
             fn to_tokens(&self, tokens: &mut TokenStream) {
    -            tokens.append_all(&self.attrs);
    -            self.pat.to_tokens(tokens);
    -            if let Some((if_token, guard)) = &self.guard {
    -                if_token.to_tokens(tokens);
    -                guard.to_tokens(tokens);
    +            let mut lit = Literal::i64_unsuffixed(i64::from(self.index));
    +            lit.set_span(self.span);
    +            tokens.append(lit);
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for Label {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            self.name.to_tokens(tokens);
    +            self.colon_token.to_tokens(tokens);
    +        }
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for Member {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            match self {
    +                Member::Named(ident) => ident.to_tokens(tokens),
    +                Member::Unnamed(index) => index.to_tokens(tokens),
    +            }
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for RangeLimits {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            match self {
    +                RangeLimits::HalfOpen(t) => t.to_tokens(tokens),
    +                RangeLimits::Closed(t) => t.to_tokens(tokens),
    +            }
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for PointerMutability {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            match self {
    +                PointerMutability::Const(const_token) => const_token.to_tokens(tokens),
    +                PointerMutability::Mut(mut_token) => mut_token.to_tokens(tokens),
                 }
    -            self.fat_arrow_token.to_tokens(tokens);
    -            self.body.to_tokens(tokens);
    -            self.comma.to_tokens(tokens);
             }
         }
     }
    diff --git a/src/syn/ext.rs.html b/src/syn/ext.rs.html
    index e0b62b7..939fc84 100644
    --- a/src/syn/ext.rs.html
    +++ b/src/syn/ext.rs.html
    @@ -1,4 +1,5 @@
    -ext.rs - source
    1
    +ext.rs - source

    syn/
    ext.rs

    +1
     2
     3
     4
    @@ -133,17 +134,12 @@
     133
     134
     135
    -136
    -137
    -138
    -139
    -
    //! Extension traits to provide parsing methods on foreign types.
    -//!
    -//! *This module is available only if Syn is built with the `"parsing"` feature.*
    +136
    //! Extension traits to provide parsing methods on foreign types.
     
     use crate::buffer::Cursor;
    +use crate::error::Result;
    +use crate::parse::ParseStream;
     use crate::parse::Peek;
    -use crate::parse::{ParseStream, Result};
     use crate::sealed::lookahead;
     use crate::token::CustomToken;
     use proc_macro2::Ident;
    @@ -152,8 +148,6 @@
     ///
     /// This trait is sealed and cannot be implemented for types outside of Syn. It
     /// is implemented only for `proc_macro2::Ident`.
    -///
    -/// *This trait is available only if Syn is built with the `"parsing"` feature.*
     pub trait IdentExt: Sized + private::Sealed {
         /// Parses any identifier including keywords.
         ///
    @@ -208,7 +202,7 @@
         /// that involves raw identifiers to refer to ordinary variables in the
         /// other language with a name that happens to be a Rust keyword.
         ///
    -    /// The function below appends an identifier from the caller's input onto a
    +    /// The function below appends an identifier from the caller's input onto a
         /// fixed prefix. Without using `unraw()`, this would tend to produce
         /// invalid identifiers like `__pyo3_get_r#move`.
         ///
    @@ -218,7 +212,7 @@
         /// use syn::ext::IdentExt;
         ///
         /// fn ident_for_getter(variable: &Ident) -> Ident {
    -    ///     let getter = format!("__pyo3_get_{}", variable.unraw());
    +    ///     let getter = format!("__pyo3_get_{}", variable.unraw());
         ///     Ident::new(&getter, Span::call_site())
         /// }
         /// ```
    @@ -229,14 +223,14 @@
         fn parse_any(input: ParseStream) -> Result<Self> {
             input.step(|cursor| match cursor.ident() {
                 Some((ident, rest)) => Ok((ident, rest)),
    -            None => Err(cursor.error("expected ident")),
    +            None => Err(cursor.error("expected ident")),
             })
         }
     
         fn unraw(&self) -> Ident {
             let string = self.to_string();
    -        if string.starts_with("r#") {
    -            Ident::new(&string[2..], self.span())
    +        if let Some(string) = string.strip_prefix("r#") {
    +            Ident::new(string, self.span())
             } else {
                 self.clone()
             }
    @@ -252,8 +246,8 @@
             cursor.ident().is_some()
         }
     
    -    fn display() -> &'static str {
    -        "identifier"
    +    fn display() -> &'static str {
    +        "identifier"
         }
     }
     
    diff --git a/src/syn/fixup.rs.html b/src/syn/fixup.rs.html
    new file mode 100644
    index 0000000..7ef31e4
    --- /dev/null
    +++ b/src/syn/fixup.rs.html
    @@ -0,0 +1,695 @@
    +fixup.rs - source

    syn/
    fixup.rs

    +1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    +81
    +82
    +83
    +84
    +85
    +86
    +87
    +88
    +89
    +90
    +91
    +92
    +93
    +94
    +95
    +96
    +97
    +98
    +99
    +100
    +101
    +102
    +103
    +104
    +105
    +106
    +107
    +108
    +109
    +110
    +111
    +112
    +113
    +114
    +115
    +116
    +117
    +118
    +119
    +120
    +121
    +122
    +123
    +124
    +125
    +126
    +127
    +128
    +129
    +130
    +131
    +132
    +133
    +134
    +135
    +136
    +137
    +138
    +139
    +140
    +141
    +142
    +143
    +144
    +145
    +146
    +147
    +148
    +149
    +150
    +151
    +152
    +153
    +154
    +155
    +156
    +157
    +158
    +159
    +160
    +161
    +162
    +163
    +164
    +165
    +166
    +167
    +168
    +169
    +170
    +171
    +172
    +173
    +174
    +175
    +176
    +177
    +178
    +179
    +180
    +181
    +182
    +183
    +184
    +185
    +186
    +187
    +188
    +189
    +190
    +191
    +192
    +193
    +194
    +195
    +196
    +197
    +198
    +199
    +200
    +201
    +202
    +203
    +204
    +205
    +206
    +207
    +208
    +209
    +210
    +211
    +212
    +213
    +214
    +215
    +216
    +217
    +218
    +219
    +220
    +221
    +222
    +223
    +224
    +225
    +226
    +227
    +228
    +229
    +230
    +231
    +232
    +233
    +234
    +235
    +236
    +237
    +238
    +239
    +240
    +241
    +242
    +243
    +244
    +245
    +246
    +247
    +248
    +249
    +250
    +251
    +252
    +253
    +254
    +255
    +256
    +257
    +258
    +259
    +260
    +261
    +262
    +263
    +264
    +265
    +266
    +267
    +268
    +269
    +270
    +271
    +272
    +273
    +274
    +275
    +276
    +277
    +278
    +279
    +280
    +281
    +282
    +283
    +284
    +285
    +286
    +287
    +288
    +289
    +290
    +291
    +292
    +293
    +294
    +295
    +296
    +297
    +298
    +299
    +300
    +301
    +302
    +303
    +304
    +305
    +306
    +307
    +308
    +309
    +310
    +311
    +312
    +313
    +314
    +315
    +316
    +317
    +318
    +319
    +320
    +321
    +322
    +323
    +324
    +325
    +326
    +327
    +328
    +329
    +330
    +331
    +332
    +333
    +334
    +335
    +336
    +337
    +338
    +339
    +340
    +341
    +342
    +343
    +344
    +345
    +346
    +347
    use crate::classify;
    +use crate::expr::Expr;
    +use crate::precedence::Precedence;
    +
    +pub(crate) struct FixupContext {
    +    // Print expression such that it can be parsed back as a statement
    +    // consisting of the original expression.
    +    //
    +    // The effect of this is for binary operators in statement position to set
    +    // `leftmost_subexpression_in_stmt` when printing their left-hand operand.
    +    //
    +    //     (match x {}) - 1;  // match needs parens when LHS of binary operator
    +    //
    +    //     match x {};  // not when its own statement
    +    //
    +    #[cfg(feature = "full")]
    +    stmt: bool,
    +
    +    // This is the difference between:
    +    //
    +    //     (match x {}) - 1;  // subexpression needs parens
    +    //
    +    //     let _ = match x {} - 1;  // no parens
    +    //
    +    // There are 3 distinguishable contexts in which `print_expr` might be
    +    // called with the expression `$match` as its argument, where `$match`
    +    // represents an expression of kind `ExprKind::Match`:
    +    //
    +    //   - stmt=false leftmost_subexpression_in_stmt=false
    +    //
    +    //     Example: `let _ = $match - 1;`
    +    //
    +    //     No parentheses required.
    +    //
    +    //   - stmt=false leftmost_subexpression_in_stmt=true
    +    //
    +    //     Example: `$match - 1;`
    +    //
    +    //     Must parenthesize `($match)`, otherwise parsing back the output as a
    +    //     statement would terminate the statement after the closing brace of
    +    //     the match, parsing `-1;` as a separate statement.
    +    //
    +    //   - stmt=true leftmost_subexpression_in_stmt=false
    +    //
    +    //     Example: `$match;`
    +    //
    +    //     No parentheses required.
    +    #[cfg(feature = "full")]
    +    leftmost_subexpression_in_stmt: bool,
    +
    +    // Print expression such that it can be parsed as a match arm.
    +    //
    +    // This is almost equivalent to `stmt`, but the grammar diverges a tiny bit
    +    // between statements and match arms when it comes to braced macro calls.
    +    // Macro calls with brace delimiter terminate a statement without a
    +    // semicolon, but do not terminate a match-arm without comma.
    +    //
    +    //     m! {} - 1;  // two statements: a macro call followed by -1 literal
    +    //
    +    //     match () {
    +    //         _ => m! {} - 1,  // binary subtraction operator
    +    //     }
    +    //
    +    #[cfg(feature = "full")]
    +    match_arm: bool,
    +
    +    // This is almost equivalent to `leftmost_subexpression_in_stmt`, other than
    +    // for braced macro calls.
    +    //
    +    // If we have `m! {} - 1` as an expression, the leftmost subexpression
    +    // `m! {}` will need to be parenthesized in the statement case but not the
    +    // match-arm case.
    +    //
    +    //     (m! {}) - 1;  // subexpression needs parens
    +    //
    +    //     match () {
    +    //         _ => m! {} - 1,  // no parens
    +    //     }
    +    //
    +    #[cfg(feature = "full")]
    +    leftmost_subexpression_in_match_arm: bool,
    +
    +    // This is the difference between:
    +    //
    +    //     if let _ = (Struct {}) {}  // needs parens
    +    //
    +    //     match () {
    +    //         () if let _ = Struct {} => {}  // no parens
    +    //     }
    +    //
    +    #[cfg(feature = "full")]
    +    parenthesize_exterior_struct_lit: bool,
    +
    +    // This is the difference between:
    +    //
    +    //     let _ = 1 + return 1;  // no parens if rightmost subexpression
    +    //
    +    //     let _ = 1 + (return 1) + 1;  // needs parens
    +    //
    +    #[cfg(feature = "full")]
    +    parenthesize_exterior_jump: bool,
    +
    +    // This is the difference between:
    +    //
    +    //     let _ = (return) - 1;  // without paren, this would return -1
    +    //
    +    //     let _ = return + 1;  // no paren because '+' cannot begin expr
    +    //
    +    #[cfg(feature = "full")]
    +    next_operator_can_begin_expr: bool,
    +
    +    // This is the difference between:
    +    //
    +    //     let _ = x as u8 + T;
    +    //
    +    //     let _ = (x as u8) < T;
    +    //
    +    // Without parens, the latter would want to parse `u8<T...` as a type.
    +    next_operator_can_begin_generics: bool,
    +}
    +
    +impl FixupContext {
    +    /// The default amount of fixing is minimal fixing. Fixups should be turned
    +    /// on in a targeted fashion where needed.
    +    pub const NONE: Self = FixupContext {
    +        #[cfg(feature = "full")]
    +        stmt: false,
    +        #[cfg(feature = "full")]
    +        leftmost_subexpression_in_stmt: false,
    +        #[cfg(feature = "full")]
    +        match_arm: false,
    +        #[cfg(feature = "full")]
    +        leftmost_subexpression_in_match_arm: false,
    +        #[cfg(feature = "full")]
    +        parenthesize_exterior_struct_lit: false,
    +        #[cfg(feature = "full")]
    +        parenthesize_exterior_jump: false,
    +        #[cfg(feature = "full")]
    +        next_operator_can_begin_expr: false,
    +        next_operator_can_begin_generics: false,
    +    };
    +
    +    /// Create the initial fixup for printing an expression in statement
    +    /// position.
    +    #[cfg(feature = "full")]
    +    pub fn new_stmt() -> Self {
    +        FixupContext {
    +            stmt: true,
    +            ..FixupContext::NONE
    +        }
    +    }
    +
    +    /// Create the initial fixup for printing an expression as the right-hand
    +    /// side of a match arm.
    +    #[cfg(feature = "full")]
    +    pub fn new_match_arm() -> Self {
    +        FixupContext {
    +            match_arm: true,
    +            ..FixupContext::NONE
    +        }
    +    }
    +
    +    /// Create the initial fixup for printing an expression as the "condition"
    +    /// of an `if` or `while`. There are a few other positions which are
    +    /// grammatically equivalent and also use this, such as the iterator
    +    /// expression in `for` and the scrutinee in `match`.
    +    #[cfg(feature = "full")]
    +    pub fn new_condition() -> Self {
    +        FixupContext {
    +            parenthesize_exterior_struct_lit: true,
    +            ..FixupContext::NONE
    +        }
    +    }
    +
    +    /// Transform this fixup into the one that should apply when printing the
    +    /// leftmost subexpression of the current expression.
    +    ///
    +    /// The leftmost subexpression is any subexpression that has the same first
    +    /// token as the current expression, but has a different last token.
    +    ///
    +    /// For example in `$a + $b` and `$a.method()`, the subexpression `$a` is a
    +    /// leftmost subexpression.
    +    ///
    +    /// Not every expression has a leftmost subexpression. For example neither
    +    /// `-$a` nor `[$a]` have one.
    +    pub fn leftmost_subexpression(self) -> Self {
    +        FixupContext {
    +            #[cfg(feature = "full")]
    +            stmt: false,
    +            #[cfg(feature = "full")]
    +            leftmost_subexpression_in_stmt: self.stmt || self.leftmost_subexpression_in_stmt,
    +            #[cfg(feature = "full")]
    +            match_arm: false,
    +            #[cfg(feature = "full")]
    +            leftmost_subexpression_in_match_arm: self.match_arm
    +                || self.leftmost_subexpression_in_match_arm,
    +            #[cfg(feature = "full")]
    +            parenthesize_exterior_jump: true,
    +            ..self
    +        }
    +    }
    +
    +    /// Transform this fixup into the one that should apply when printing a
    +    /// leftmost subexpression followed by a `.` or `?` token, which confer
    +    /// different statement boundary rules compared to other leftmost
    +    /// subexpressions.
    +    pub fn leftmost_subexpression_with_dot(self) -> Self {
    +        FixupContext {
    +            #[cfg(feature = "full")]
    +            stmt: self.stmt || self.leftmost_subexpression_in_stmt,
    +            #[cfg(feature = "full")]
    +            leftmost_subexpression_in_stmt: false,
    +            #[cfg(feature = "full")]
    +            match_arm: self.match_arm || self.leftmost_subexpression_in_match_arm,
    +            #[cfg(feature = "full")]
    +            leftmost_subexpression_in_match_arm: false,
    +            #[cfg(feature = "full")]
    +            parenthesize_exterior_jump: true,
    +            ..self
    +        }
    +    }
    +
    +    /// Transform this fixup into the one that should apply when printing a
    +    /// leftmost subexpression followed by punctuation that is legal as the
    +    /// first token of an expression.
    +    pub fn leftmost_subexpression_with_begin_operator(
    +        self,
    +        #[cfg(feature = "full")] next_operator_can_begin_expr: bool,
    +        next_operator_can_begin_generics: bool,
    +    ) -> Self {
    +        FixupContext {
    +            #[cfg(feature = "full")]
    +            next_operator_can_begin_expr,
    +            next_operator_can_begin_generics,
    +            ..self.leftmost_subexpression()
    +        }
    +    }
    +
    +    /// Transform this fixup into the one that should apply when printing any
    +    /// subexpression that is neither a leftmost subexpression nor surrounded in
    +    /// delimiters.
    +    ///
    +    /// This is for any subexpression that has a different first token than the
    +    /// current expression, and is not surrounded by a paren/bracket/brace. For
    +    /// example the `$b` in `$a + $b` and `-$b`, but not the one in `[$b]` or
    +    /// `$a.f($b)`.
    +    pub fn subsequent_subexpression(self) -> Self {
    +        FixupContext {
    +            #[cfg(feature = "full")]
    +            stmt: false,
    +            #[cfg(feature = "full")]
    +            leftmost_subexpression_in_stmt: false,
    +            #[cfg(feature = "full")]
    +            match_arm: false,
    +            #[cfg(feature = "full")]
    +            leftmost_subexpression_in_match_arm: false,
    +            ..self
    +        }
    +    }
    +
    +    /// Determine whether parentheses are needed around the given expression to
    +    /// head off an unintended statement boundary.
    +    ///
    +    /// The documentation on `FixupContext::leftmost_subexpression_in_stmt` has
    +    /// examples.
    +    #[cfg(feature = "full")]
    +    pub fn would_cause_statement_boundary(self, expr: &Expr) -> bool {
    +        (self.leftmost_subexpression_in_stmt && !classify::requires_semi_to_be_stmt(expr))
    +            || ((self.stmt || self.leftmost_subexpression_in_stmt) && matches!(expr, Expr::Let(_)))
    +            || (self.leftmost_subexpression_in_match_arm
    +                && !classify::requires_comma_to_be_match_arm(expr))
    +    }
    +
    +    /// Determine whether parentheses are needed around the given `let`
    +    /// scrutinee.
    +    ///
    +    /// In `if let _ = $e {}`, some examples of `$e` that would need parentheses
    +    /// are:
    +    ///
    +    ///   - `Struct {}.f()`, because otherwise the `{` would be misinterpreted
    +    ///     as the opening of the if's then-block.
    +    ///
    +    ///   - `true && false`, because otherwise this would be misinterpreted as a
    +    ///     "let chain".
    +    #[cfg(feature = "full")]
    +    pub fn needs_group_as_let_scrutinee(self, expr: &Expr) -> bool {
    +        self.parenthesize_exterior_struct_lit && classify::confusable_with_adjacent_block(expr)
    +            || self.trailing_precedence(expr) < Precedence::Let
    +    }
    +
    +    /// Determines the effective precedence of a left subexpression. Some
    +    /// expressions have lower precedence when adjacent to particular operators.
    +    pub fn leading_precedence(self, expr: &Expr) -> Precedence {
    +        #[cfg(feature = "full")]
    +        if self.next_operator_can_begin_expr {
    +            // Decrease precedence of value-less jumps when followed by an
    +            // operator that would otherwise get interpreted as beginning a
    +            // value for the jump.
    +            if let Expr::Break(_) | Expr::Return(_) | Expr::Yield(_) = expr {
    +                return Precedence::Jump;
    +            }
    +        }
    +        self.precedence(expr)
    +    }
    +
    +    /// Determines the effective precedence of a right subexpression. Some
    +    /// expressions have higher precedence on the right side of a binary
    +    /// operator than on the left.
    +    pub fn trailing_precedence(self, expr: &Expr) -> Precedence {
    +        #[cfg(feature = "full")]
    +        if !self.parenthesize_exterior_jump {
    +            match expr {
    +                // Increase precedence of expressions that extend to the end of
    +                // current statement or group.
    +                Expr::Break(_)
    +                | Expr::Closure(_)
    +                | Expr::Let(_)
    +                | Expr::Return(_)
    +                | Expr::Yield(_) => {
    +                    return Precedence::Prefix;
    +                }
    +                Expr::Range(e) if e.start.is_none() => return Precedence::Prefix,
    +                _ => {}
    +            }
    +        }
    +        self.precedence(expr)
    +    }
    +
    +    fn precedence(self, expr: &Expr) -> Precedence {
    +        if self.next_operator_can_begin_generics {
    +            if let Expr::Cast(cast) = expr {
    +                if classify::trailing_unparameterized_path(&cast.ty) {
    +                    return Precedence::MIN;
    +                }
    +            }
    +        }
    +        Precedence::of(expr)
    +    }
    +}
    +
    +impl Copy for FixupContext {}
    +
    +impl Clone for FixupContext {
    +    fn clone(&self) -> Self {
    +        *self
    +    }
    +}
    +
    \ No newline at end of file diff --git a/src/syn/gen/clone.rs.html b/src/syn/gen/clone.rs.html index f9efb76..396d1ab 100644 --- a/src/syn/gen/clone.rs.html +++ b/src/syn/gen/clone.rs.html @@ -1,4 +1,5 @@ -clone.rs - source
    1
    +clone.rs - source

    syn/gen/
    clone.rs

    +1
     2
     3
     4
    @@ -2239,26 +2240,50 @@
     2239
     2240
     2241
    -
    // This file is @generated by syn-internal-codegen.
    +2242
    +2243
    +2244
    +2245
    +2246
    +2247
    +2248
    +2249
    +2250
    +2251
    +2252
    +2253
    +2254
    +2255
    +2256
    +2257
    +2258
    +2259
    +2260
    +2261
    +2262
    +2263
    +2264
    +2265
    +2266
    +2267
    // This file is @generated by syn-internal-codegen.
     // It is not intended for manual editing.
     
     #![allow(clippy::clone_on_copy, clippy::expl_impl_clone_on_copy)]
    -use crate::*;
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for Abi {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::Abi {
         fn clone(&self) -> Self {
    -        Abi {
    +        crate::Abi {
                 extern_token: self.extern_token.clone(),
                 name: self.name.clone(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for AngleBracketedGenericArguments {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::AngleBracketedGenericArguments {
         fn clone(&self) -> Self {
    -        AngleBracketedGenericArguments {
    +        crate::AngleBracketedGenericArguments {
                 colon2_token: self.colon2_token.clone(),
                 lt_token: self.lt_token.clone(),
                 args: self.args.clone(),
    @@ -2266,11 +2291,11 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for Arm {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::Arm {
         fn clone(&self) -> Self {
    -        Arm {
    +        crate::Arm {
                 attrs: self.attrs.clone(),
                 pat: self.pat.clone(),
                 guard: self.guard.clone(),
    @@ -2280,76 +2305,100 @@
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Copy for AttrStyle {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for AttrStyle {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::AssocConst {
    +    fn clone(&self) -> Self {
    +        crate::AssocConst {
    +            ident: self.ident.clone(),
    +            generics: self.generics.clone(),
    +            eq_token: self.eq_token.clone(),
    +            value: self.value.clone(),
    +        }
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::AssocType {
    +    fn clone(&self) -> Self {
    +        crate::AssocType {
    +            ident: self.ident.clone(),
    +            generics: self.generics.clone(),
    +            eq_token: self.eq_token.clone(),
    +            ty: self.ty.clone(),
    +        }
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Copy for crate::AttrStyle {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::AttrStyle {
         fn clone(&self) -> Self {
             *self
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for Attribute {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::Attribute {
         fn clone(&self) -> Self {
    -        Attribute {
    +        crate::Attribute {
                 pound_token: self.pound_token.clone(),
                 style: self.style.clone(),
                 bracket_token: self.bracket_token.clone(),
    -            path: self.path.clone(),
    -            tokens: self.tokens.clone(),
    +            meta: self.meta.clone(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for BareFnArg {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::BareFnArg {
         fn clone(&self) -> Self {
    -        BareFnArg {
    +        crate::BareFnArg {
                 attrs: self.attrs.clone(),
                 name: self.name.clone(),
                 ty: self.ty.clone(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Copy for BinOp {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for BinOp {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::BareVariadic {
    +    fn clone(&self) -> Self {
    +        crate::BareVariadic {
    +            attrs: self.attrs.clone(),
    +            name: self.name.clone(),
    +            dots: self.dots.clone(),
    +            comma: self.comma.clone(),
    +        }
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Copy for crate::BinOp {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::BinOp {
         fn clone(&self) -> Self {
             *self
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for Binding {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::Block {
         fn clone(&self) -> Self {
    -        Binding {
    -            ident: self.ident.clone(),
    -            eq_token: self.eq_token.clone(),
    -            ty: self.ty.clone(),
    -        }
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for Block {
    -    fn clone(&self) -> Self {
    -        Block {
    +        crate::Block {
                 brace_token: self.brace_token.clone(),
                 stmts: self.stmts.clone(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for BoundLifetimes {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::BoundLifetimes {
         fn clone(&self) -> Self {
    -        BoundLifetimes {
    +        crate::BoundLifetimes {
                 for_token: self.for_token.clone(),
                 lt_token: self.lt_token.clone(),
                 lifetimes: self.lifetimes.clone(),
    @@ -2357,11 +2406,23 @@
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ConstParam {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::CapturedParam {
         fn clone(&self) -> Self {
    -        ConstParam {
    +        match self {
    +            crate::CapturedParam::Lifetime(v0) => {
    +                crate::CapturedParam::Lifetime(v0.clone())
    +            }
    +            crate::CapturedParam::Ident(v0) => crate::CapturedParam::Ident(v0.clone()),
    +        }
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ConstParam {
    +    fn clone(&self) -> Self {
    +        crate::ConstParam {
                 attrs: self.attrs.clone(),
                 const_token: self.const_token.clone(),
                 ident: self.ident.clone(),
    @@ -2372,65 +2433,66 @@
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for Constraint {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::Constraint {
         fn clone(&self) -> Self {
    -        Constraint {
    +        crate::Constraint {
                 ident: self.ident.clone(),
    +            generics: self.generics.clone(),
                 colon_token: self.colon_token.clone(),
                 bounds: self.bounds.clone(),
             }
         }
     }
    -#[cfg(feature = "derive")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for Data {
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::Data {
         fn clone(&self) -> Self {
             match self {
    -            Data::Struct(v0) => Data::Struct(v0.clone()),
    -            Data::Enum(v0) => Data::Enum(v0.clone()),
    -            Data::Union(v0) => Data::Union(v0.clone()),
    +            crate::Data::Struct(v0) => crate::Data::Struct(v0.clone()),
    +            crate::Data::Enum(v0) => crate::Data::Enum(v0.clone()),
    +            crate::Data::Union(v0) => crate::Data::Union(v0.clone()),
             }
         }
     }
    -#[cfg(feature = "derive")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for DataEnum {
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::DataEnum {
         fn clone(&self) -> Self {
    -        DataEnum {
    +        crate::DataEnum {
                 enum_token: self.enum_token.clone(),
                 brace_token: self.brace_token.clone(),
                 variants: self.variants.clone(),
             }
         }
     }
    -#[cfg(feature = "derive")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for DataStruct {
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::DataStruct {
         fn clone(&self) -> Self {
    -        DataStruct {
    +        crate::DataStruct {
                 struct_token: self.struct_token.clone(),
                 fields: self.fields.clone(),
                 semi_token: self.semi_token.clone(),
             }
         }
     }
    -#[cfg(feature = "derive")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for DataUnion {
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::DataUnion {
         fn clone(&self) -> Self {
    -        DataUnion {
    +        crate::DataUnion {
                 union_token: self.union_token.clone(),
                 fields: self.fields.clone(),
             }
         }
     }
    -#[cfg(feature = "derive")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for DeriveInput {
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::DeriveInput {
         fn clone(&self) -> Self {
    -        DeriveInput {
    +        crate::DeriveInput {
                 attrs: self.attrs.clone(),
                 vis: self.vis.clone(),
                 ident: self.ident.clone(),
    @@ -2439,102 +2501,96 @@
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for Expr {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::Expr {
         fn clone(&self) -> Self {
             match self {
    -            #[cfg(feature = "full")]
    -            Expr::Array(v0) => Expr::Array(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::Assign(v0) => Expr::Assign(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::AssignOp(v0) => Expr::AssignOp(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::Async(v0) => Expr::Async(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::Await(v0) => Expr::Await(v0.clone()),
    -            Expr::Binary(v0) => Expr::Binary(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::Block(v0) => Expr::Block(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::Box(v0) => Expr::Box(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::Break(v0) => Expr::Break(v0.clone()),
    -            Expr::Call(v0) => Expr::Call(v0.clone()),
    -            Expr::Cast(v0) => Expr::Cast(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::Closure(v0) => Expr::Closure(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::Continue(v0) => Expr::Continue(v0.clone()),
    -            Expr::Field(v0) => Expr::Field(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::ForLoop(v0) => Expr::ForLoop(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::Group(v0) => Expr::Group(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::If(v0) => Expr::If(v0.clone()),
    -            Expr::Index(v0) => Expr::Index(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::Let(v0) => Expr::Let(v0.clone()),
    -            Expr::Lit(v0) => Expr::Lit(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::Loop(v0) => Expr::Loop(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::Macro(v0) => Expr::Macro(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::Match(v0) => Expr::Match(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::MethodCall(v0) => Expr::MethodCall(v0.clone()),
    -            Expr::Paren(v0) => Expr::Paren(v0.clone()),
    -            Expr::Path(v0) => Expr::Path(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::Range(v0) => Expr::Range(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::Reference(v0) => Expr::Reference(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::Repeat(v0) => Expr::Repeat(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::Return(v0) => Expr::Return(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::Struct(v0) => Expr::Struct(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::Try(v0) => Expr::Try(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::TryBlock(v0) => Expr::TryBlock(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::Tuple(v0) => Expr::Tuple(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::Type(v0) => Expr::Type(v0.clone()),
    -            Expr::Unary(v0) => Expr::Unary(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::Unsafe(v0) => Expr::Unsafe(v0.clone()),
    -            Expr::Verbatim(v0) => Expr::Verbatim(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::While(v0) => Expr::While(v0.clone()),
    -            #[cfg(feature = "full")]
    -            Expr::Yield(v0) => Expr::Yield(v0.clone()),
    -            #[cfg(any(syn_no_non_exhaustive, not(feature = "full")))]
    +            #[cfg(feature = "full")]
    +            crate::Expr::Array(v0) => crate::Expr::Array(v0.clone()),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Assign(v0) => crate::Expr::Assign(v0.clone()),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Async(v0) => crate::Expr::Async(v0.clone()),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Await(v0) => crate::Expr::Await(v0.clone()),
    +            crate::Expr::Binary(v0) => crate::Expr::Binary(v0.clone()),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Block(v0) => crate::Expr::Block(v0.clone()),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Break(v0) => crate::Expr::Break(v0.clone()),
    +            crate::Expr::Call(v0) => crate::Expr::Call(v0.clone()),
    +            crate::Expr::Cast(v0) => crate::Expr::Cast(v0.clone()),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Closure(v0) => crate::Expr::Closure(v0.clone()),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Const(v0) => crate::Expr::Const(v0.clone()),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Continue(v0) => crate::Expr::Continue(v0.clone()),
    +            crate::Expr::Field(v0) => crate::Expr::Field(v0.clone()),
    +            #[cfg(feature = "full")]
    +            crate::Expr::ForLoop(v0) => crate::Expr::ForLoop(v0.clone()),
    +            crate::Expr::Group(v0) => crate::Expr::Group(v0.clone()),
    +            #[cfg(feature = "full")]
    +            crate::Expr::If(v0) => crate::Expr::If(v0.clone()),
    +            crate::Expr::Index(v0) => crate::Expr::Index(v0.clone()),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Infer(v0) => crate::Expr::Infer(v0.clone()),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Let(v0) => crate::Expr::Let(v0.clone()),
    +            crate::Expr::Lit(v0) => crate::Expr::Lit(v0.clone()),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Loop(v0) => crate::Expr::Loop(v0.clone()),
    +            crate::Expr::Macro(v0) => crate::Expr::Macro(v0.clone()),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Match(v0) => crate::Expr::Match(v0.clone()),
    +            crate::Expr::MethodCall(v0) => crate::Expr::MethodCall(v0.clone()),
    +            crate::Expr::Paren(v0) => crate::Expr::Paren(v0.clone()),
    +            crate::Expr::Path(v0) => crate::Expr::Path(v0.clone()),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Range(v0) => crate::Expr::Range(v0.clone()),
    +            #[cfg(feature = "full")]
    +            crate::Expr::RawAddr(v0) => crate::Expr::RawAddr(v0.clone()),
    +            crate::Expr::Reference(v0) => crate::Expr::Reference(v0.clone()),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Repeat(v0) => crate::Expr::Repeat(v0.clone()),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Return(v0) => crate::Expr::Return(v0.clone()),
    +            crate::Expr::Struct(v0) => crate::Expr::Struct(v0.clone()),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Try(v0) => crate::Expr::Try(v0.clone()),
    +            #[cfg(feature = "full")]
    +            crate::Expr::TryBlock(v0) => crate::Expr::TryBlock(v0.clone()),
    +            crate::Expr::Tuple(v0) => crate::Expr::Tuple(v0.clone()),
    +            crate::Expr::Unary(v0) => crate::Expr::Unary(v0.clone()),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Unsafe(v0) => crate::Expr::Unsafe(v0.clone()),
    +            crate::Expr::Verbatim(v0) => crate::Expr::Verbatim(v0.clone()),
    +            #[cfg(feature = "full")]
    +            crate::Expr::While(v0) => crate::Expr::While(v0.clone()),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Yield(v0) => crate::Expr::Yield(v0.clone()),
    +            #[cfg(not(feature = "full"))]
                 _ => unreachable!(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprArray {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprArray {
         fn clone(&self) -> Self {
    -        ExprArray {
    +        crate::ExprArray {
                 attrs: self.attrs.clone(),
                 bracket_token: self.bracket_token.clone(),
                 elems: self.elems.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprAssign {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprAssign {
         fn clone(&self) -> Self {
    -        ExprAssign {
    +        crate::ExprAssign {
                 attrs: self.attrs.clone(),
                 left: self.left.clone(),
                 eq_token: self.eq_token.clone(),
    @@ -2542,23 +2598,11 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprAssignOp {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprAsync {
         fn clone(&self) -> Self {
    -        ExprAssignOp {
    -            attrs: self.attrs.clone(),
    -            left: self.left.clone(),
    -            op: self.op.clone(),
    -            right: self.right.clone(),
    -        }
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprAsync {
    -    fn clone(&self) -> Self {
    -        ExprAsync {
    +        crate::ExprAsync {
                 attrs: self.attrs.clone(),
                 async_token: self.async_token.clone(),
                 capture: self.capture.clone(),
    @@ -2566,11 +2610,11 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprAwait {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprAwait {
         fn clone(&self) -> Self {
    -        ExprAwait {
    +        crate::ExprAwait {
                 attrs: self.attrs.clone(),
                 base: self.base.clone(),
                 dot_token: self.dot_token.clone(),
    @@ -2578,11 +2622,11 @@
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprBinary {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprBinary {
         fn clone(&self) -> Self {
    -        ExprBinary {
    +        crate::ExprBinary {
                 attrs: self.attrs.clone(),
                 left: self.left.clone(),
                 op: self.op.clone(),
    @@ -2590,33 +2634,22 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprBlock {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprBlock {
         fn clone(&self) -> Self {
    -        ExprBlock {
    +        crate::ExprBlock {
                 attrs: self.attrs.clone(),
                 label: self.label.clone(),
                 block: self.block.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprBox {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprBreak {
         fn clone(&self) -> Self {
    -        ExprBox {
    -            attrs: self.attrs.clone(),
    -            box_token: self.box_token.clone(),
    -            expr: self.expr.clone(),
    -        }
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprBreak {
    -    fn clone(&self) -> Self {
    -        ExprBreak {
    +        crate::ExprBreak {
                 attrs: self.attrs.clone(),
                 break_token: self.break_token.clone(),
                 label: self.label.clone(),
    @@ -2624,11 +2657,11 @@
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprCall {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprCall {
         fn clone(&self) -> Self {
    -        ExprCall {
    +        crate::ExprCall {
                 attrs: self.attrs.clone(),
                 func: self.func.clone(),
                 paren_token: self.paren_token.clone(),
    @@ -2636,11 +2669,11 @@
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprCast {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprCast {
         fn clone(&self) -> Self {
    -        ExprCast {
    +        crate::ExprCast {
                 attrs: self.attrs.clone(),
                 expr: self.expr.clone(),
                 as_token: self.as_token.clone(),
    @@ -2648,12 +2681,14 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprClosure {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprClosure {
         fn clone(&self) -> Self {
    -        ExprClosure {
    +        crate::ExprClosure {
                 attrs: self.attrs.clone(),
    +            lifetimes: self.lifetimes.clone(),
    +            constness: self.constness.clone(),
                 movability: self.movability.clone(),
                 asyncness: self.asyncness.clone(),
                 capture: self.capture.clone(),
    @@ -2665,22 +2700,33 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprContinue {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprConst {
         fn clone(&self) -> Self {
    -        ExprContinue {
    +        crate::ExprConst {
    +            attrs: self.attrs.clone(),
    +            const_token: self.const_token.clone(),
    +            block: self.block.clone(),
    +        }
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprContinue {
    +    fn clone(&self) -> Self {
    +        crate::ExprContinue {
                 attrs: self.attrs.clone(),
                 continue_token: self.continue_token.clone(),
                 label: self.label.clone(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprField {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprField {
         fn clone(&self) -> Self {
    -        ExprField {
    +        crate::ExprField {
                 attrs: self.attrs.clone(),
                 base: self.base.clone(),
                 dot_token: self.dot_token.clone(),
    @@ -2688,11 +2734,11 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprForLoop {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprForLoop {
         fn clone(&self) -> Self {
    -        ExprForLoop {
    +        crate::ExprForLoop {
                 attrs: self.attrs.clone(),
                 label: self.label.clone(),
                 for_token: self.for_token.clone(),
    @@ -2703,22 +2749,22 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprGroup {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprGroup {
         fn clone(&self) -> Self {
    -        ExprGroup {
    +        crate::ExprGroup {
                 attrs: self.attrs.clone(),
                 group_token: self.group_token.clone(),
                 expr: self.expr.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprIf {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprIf {
         fn clone(&self) -> Self {
    -        ExprIf {
    +        crate::ExprIf {
                 attrs: self.attrs.clone(),
                 if_token: self.if_token.clone(),
                 cond: self.cond.clone(),
    @@ -2727,11 +2773,11 @@
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprIndex {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprIndex {
         fn clone(&self) -> Self {
    -        ExprIndex {
    +        crate::ExprIndex {
                 attrs: self.attrs.clone(),
                 expr: self.expr.clone(),
                 bracket_token: self.bracket_token.clone(),
    @@ -2739,11 +2785,21 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprLet {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprInfer {
         fn clone(&self) -> Self {
    -        ExprLet {
    +        crate::ExprInfer {
    +            attrs: self.attrs.clone(),
    +            underscore_token: self.underscore_token.clone(),
    +        }
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprLet {
    +    fn clone(&self) -> Self {
    +        crate::ExprLet {
                 attrs: self.attrs.clone(),
                 let_token: self.let_token.clone(),
                 pat: self.pat.clone(),
    @@ -2752,21 +2808,21 @@
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprLit {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprLit {
         fn clone(&self) -> Self {
    -        ExprLit {
    +        crate::ExprLit {
                 attrs: self.attrs.clone(),
                 lit: self.lit.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprLoop {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprLoop {
         fn clone(&self) -> Self {
    -        ExprLoop {
    +        crate::ExprLoop {
                 attrs: self.attrs.clone(),
                 label: self.label.clone(),
                 loop_token: self.loop_token.clone(),
    @@ -2774,21 +2830,21 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprMacro {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprMacro {
         fn clone(&self) -> Self {
    -        ExprMacro {
    +        crate::ExprMacro {
                 attrs: self.attrs.clone(),
                 mac: self.mac.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprMatch {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprMatch {
         fn clone(&self) -> Self {
    -        ExprMatch {
    +        crate::ExprMatch {
                 attrs: self.attrs.clone(),
                 match_token: self.match_token.clone(),
                 expr: self.expr.clone(),
    @@ -2797,11 +2853,11 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprMethodCall {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprMethodCall {
         fn clone(&self) -> Self {
    -        ExprMethodCall {
    +        crate::ExprMethodCall {
                 attrs: self.attrs.clone(),
                 receiver: self.receiver.clone(),
                 dot_token: self.dot_token.clone(),
    @@ -2812,45 +2868,45 @@
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprParen {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprParen {
         fn clone(&self) -> Self {
    -        ExprParen {
    +        crate::ExprParen {
                 attrs: self.attrs.clone(),
                 paren_token: self.paren_token.clone(),
                 expr: self.expr.clone(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprPath {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprPath {
         fn clone(&self) -> Self {
    -        ExprPath {
    +        crate::ExprPath {
                 attrs: self.attrs.clone(),
                 qself: self.qself.clone(),
                 path: self.path.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprRange {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprRange {
         fn clone(&self) -> Self {
    -        ExprRange {
    +        crate::ExprRange {
                 attrs: self.attrs.clone(),
    -            from: self.from.clone(),
    +            start: self.start.clone(),
                 limits: self.limits.clone(),
    -            to: self.to.clone(),
    +            end: self.end.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprReference {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprRawAddr {
         fn clone(&self) -> Self {
    -        ExprReference {
    +        crate::ExprRawAddr {
                 attrs: self.attrs.clone(),
                 and_token: self.and_token.clone(),
                 raw: self.raw.clone(),
    @@ -2859,11 +2915,23 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprRepeat {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprReference {
         fn clone(&self) -> Self {
    -        ExprRepeat {
    +        crate::ExprReference {
    +            attrs: self.attrs.clone(),
    +            and_token: self.and_token.clone(),
    +            mutability: self.mutability.clone(),
    +            expr: self.expr.clone(),
    +        }
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprRepeat {
    +    fn clone(&self) -> Self {
    +        crate::ExprRepeat {
                 attrs: self.attrs.clone(),
                 bracket_token: self.bracket_token.clone(),
                 expr: self.expr.clone(),
    @@ -2872,23 +2940,24 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprReturn {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprReturn {
         fn clone(&self) -> Self {
    -        ExprReturn {
    +        crate::ExprReturn {
                 attrs: self.attrs.clone(),
                 return_token: self.return_token.clone(),
                 expr: self.expr.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprStruct {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprStruct {
         fn clone(&self) -> Self {
    -        ExprStruct {
    +        crate::ExprStruct {
                 attrs: self.attrs.clone(),
    +            qself: self.qself.clone(),
                 path: self.path.clone(),
                 brace_token: self.brace_token.clone(),
                 fields: self.fields.clone(),
    @@ -2897,78 +2966,66 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprTry {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprTry {
         fn clone(&self) -> Self {
    -        ExprTry {
    +        crate::ExprTry {
                 attrs: self.attrs.clone(),
                 expr: self.expr.clone(),
                 question_token: self.question_token.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprTryBlock {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprTryBlock {
         fn clone(&self) -> Self {
    -        ExprTryBlock {
    +        crate::ExprTryBlock {
                 attrs: self.attrs.clone(),
                 try_token: self.try_token.clone(),
                 block: self.block.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprTuple {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprTuple {
         fn clone(&self) -> Self {
    -        ExprTuple {
    +        crate::ExprTuple {
                 attrs: self.attrs.clone(),
                 paren_token: self.paren_token.clone(),
                 elems: self.elems.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprType {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprUnary {
         fn clone(&self) -> Self {
    -        ExprType {
    -            attrs: self.attrs.clone(),
    -            expr: self.expr.clone(),
    -            colon_token: self.colon_token.clone(),
    -            ty: self.ty.clone(),
    -        }
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprUnary {
    -    fn clone(&self) -> Self {
    -        ExprUnary {
    +        crate::ExprUnary {
                 attrs: self.attrs.clone(),
                 op: self.op.clone(),
                 expr: self.expr.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprUnsafe {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprUnsafe {
         fn clone(&self) -> Self {
    -        ExprUnsafe {
    +        crate::ExprUnsafe {
                 attrs: self.attrs.clone(),
                 unsafe_token: self.unsafe_token.clone(),
                 block: self.block.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprWhile {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprWhile {
         fn clone(&self) -> Self {
    -        ExprWhile {
    +        crate::ExprWhile {
                 attrs: self.attrs.clone(),
                 label: self.label.clone(),
                 while_token: self.while_token.clone(),
    @@ -2977,35 +3034,45 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ExprYield {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ExprYield {
         fn clone(&self) -> Self {
    -        ExprYield {
    +        crate::ExprYield {
                 attrs: self.attrs.clone(),
                 yield_token: self.yield_token.clone(),
                 expr: self.expr.clone(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for Field {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::Field {
         fn clone(&self) -> Self {
    -        Field {
    +        crate::Field {
                 attrs: self.attrs.clone(),
                 vis: self.vis.clone(),
    +            mutability: self.mutability.clone(),
                 ident: self.ident.clone(),
                 colon_token: self.colon_token.clone(),
                 ty: self.ty.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for FieldPat {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::FieldMutability {
         fn clone(&self) -> Self {
    -        FieldPat {
    +        match self {
    +            crate::FieldMutability::None => crate::FieldMutability::None,
    +        }
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::FieldPat {
    +    fn clone(&self) -> Self {
    +        crate::FieldPat {
                 attrs: self.attrs.clone(),
                 member: self.member.clone(),
                 colon_token: self.colon_token.clone(),
    @@ -3013,11 +3080,11 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for FieldValue {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::FieldValue {
         fn clone(&self) -> Self {
    -        FieldValue {
    +        crate::FieldValue {
                 attrs: self.attrs.clone(),
                 member: self.member.clone(),
                 colon_token: self.colon_token.clone(),
    @@ -3025,78 +3092,76 @@
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for Fields {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::Fields {
         fn clone(&self) -> Self {
             match self {
    -            Fields::Named(v0) => Fields::Named(v0.clone()),
    -            Fields::Unnamed(v0) => Fields::Unnamed(v0.clone()),
    -            Fields::Unit => Fields::Unit,
    +            crate::Fields::Named(v0) => crate::Fields::Named(v0.clone()),
    +            crate::Fields::Unnamed(v0) => crate::Fields::Unnamed(v0.clone()),
    +            crate::Fields::Unit => crate::Fields::Unit,
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for FieldsNamed {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::FieldsNamed {
         fn clone(&self) -> Self {
    -        FieldsNamed {
    +        crate::FieldsNamed {
                 brace_token: self.brace_token.clone(),
                 named: self.named.clone(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for FieldsUnnamed {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::FieldsUnnamed {
         fn clone(&self) -> Self {
    -        FieldsUnnamed {
    +        crate::FieldsUnnamed {
                 paren_token: self.paren_token.clone(),
                 unnamed: self.unnamed.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for File {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::File {
         fn clone(&self) -> Self {
    -        File {
    +        crate::File {
                 shebang: self.shebang.clone(),
                 attrs: self.attrs.clone(),
                 items: self.items.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for FnArg {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::FnArg {
         fn clone(&self) -> Self {
             match self {
    -            FnArg::Receiver(v0) => FnArg::Receiver(v0.clone()),
    -            FnArg::Typed(v0) => FnArg::Typed(v0.clone()),
    +            crate::FnArg::Receiver(v0) => crate::FnArg::Receiver(v0.clone()),
    +            crate::FnArg::Typed(v0) => crate::FnArg::Typed(v0.clone()),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ForeignItem {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ForeignItem {
         fn clone(&self) -> Self {
             match self {
    -            ForeignItem::Fn(v0) => ForeignItem::Fn(v0.clone()),
    -            ForeignItem::Static(v0) => ForeignItem::Static(v0.clone()),
    -            ForeignItem::Type(v0) => ForeignItem::Type(v0.clone()),
    -            ForeignItem::Macro(v0) => ForeignItem::Macro(v0.clone()),
    -            ForeignItem::Verbatim(v0) => ForeignItem::Verbatim(v0.clone()),
    -            #[cfg(syn_no_non_exhaustive)]
    -            _ => unreachable!(),
    +            crate::ForeignItem::Fn(v0) => crate::ForeignItem::Fn(v0.clone()),
    +            crate::ForeignItem::Static(v0) => crate::ForeignItem::Static(v0.clone()),
    +            crate::ForeignItem::Type(v0) => crate::ForeignItem::Type(v0.clone()),
    +            crate::ForeignItem::Macro(v0) => crate::ForeignItem::Macro(v0.clone()),
    +            crate::ForeignItem::Verbatim(v0) => crate::ForeignItem::Verbatim(v0.clone()),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ForeignItemFn {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ForeignItemFn {
         fn clone(&self) -> Self {
    -        ForeignItemFn {
    +        crate::ForeignItemFn {
                 attrs: self.attrs.clone(),
                 vis: self.vis.clone(),
                 sig: self.sig.clone(),
    @@ -3104,22 +3169,22 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ForeignItemMacro {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ForeignItemMacro {
         fn clone(&self) -> Self {
    -        ForeignItemMacro {
    +        crate::ForeignItemMacro {
                 attrs: self.attrs.clone(),
                 mac: self.mac.clone(),
                 semi_token: self.semi_token.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ForeignItemStatic {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ForeignItemStatic {
         fn clone(&self) -> Self {
    -        ForeignItemStatic {
    +        crate::ForeignItemStatic {
                 attrs: self.attrs.clone(),
                 vis: self.vis.clone(),
                 static_token: self.static_token.clone(),
    @@ -3131,58 +3196,62 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ForeignItemType {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ForeignItemType {
         fn clone(&self) -> Self {
    -        ForeignItemType {
    +        crate::ForeignItemType {
                 attrs: self.attrs.clone(),
                 vis: self.vis.clone(),
                 type_token: self.type_token.clone(),
                 ident: self.ident.clone(),
    +            generics: self.generics.clone(),
                 semi_token: self.semi_token.clone(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for GenericArgument {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::GenericArgument {
         fn clone(&self) -> Self {
             match self {
    -            GenericArgument::Lifetime(v0) => GenericArgument::Lifetime(v0.clone()),
    -            GenericArgument::Type(v0) => GenericArgument::Type(v0.clone()),
    -            GenericArgument::Const(v0) => GenericArgument::Const(v0.clone()),
    -            GenericArgument::Binding(v0) => GenericArgument::Binding(v0.clone()),
    -            GenericArgument::Constraint(v0) => GenericArgument::Constraint(v0.clone()),
    +            crate::GenericArgument::Lifetime(v0) => {
    +                crate::GenericArgument::Lifetime(v0.clone())
    +            }
    +            crate::GenericArgument::Type(v0) => crate::GenericArgument::Type(v0.clone()),
    +            crate::GenericArgument::Const(v0) => {
    +                crate::GenericArgument::Const(v0.clone())
    +            }
    +            crate::GenericArgument::AssocType(v0) => {
    +                crate::GenericArgument::AssocType(v0.clone())
    +            }
    +            crate::GenericArgument::AssocConst(v0) => {
    +                crate::GenericArgument::AssocConst(v0.clone())
    +            }
    +            crate::GenericArgument::Constraint(v0) => {
    +                crate::GenericArgument::Constraint(v0.clone())
    +            }
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for GenericMethodArgument {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::GenericParam {
         fn clone(&self) -> Self {
             match self {
    -            GenericMethodArgument::Type(v0) => GenericMethodArgument::Type(v0.clone()),
    -            GenericMethodArgument::Const(v0) => GenericMethodArgument::Const(v0.clone()),
    +            crate::GenericParam::Lifetime(v0) => {
    +                crate::GenericParam::Lifetime(v0.clone())
    +            }
    +            crate::GenericParam::Type(v0) => crate::GenericParam::Type(v0.clone()),
    +            crate::GenericParam::Const(v0) => crate::GenericParam::Const(v0.clone()),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for GenericParam {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::Generics {
         fn clone(&self) -> Self {
    -        match self {
    -            GenericParam::Type(v0) => GenericParam::Type(v0.clone()),
    -            GenericParam::Lifetime(v0) => GenericParam::Lifetime(v0.clone()),
    -            GenericParam::Const(v0) => GenericParam::Const(v0.clone()),
    -        }
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for Generics {
    -    fn clone(&self) -> Self {
    -        Generics {
    +        crate::Generics {
                 lt_token: self.lt_token.clone(),
                 params: self.params.clone(),
                 gt_token: self.gt_token.clone(),
    @@ -3190,31 +3259,30 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ImplItem {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ImplItem {
         fn clone(&self) -> Self {
             match self {
    -            ImplItem::Const(v0) => ImplItem::Const(v0.clone()),
    -            ImplItem::Method(v0) => ImplItem::Method(v0.clone()),
    -            ImplItem::Type(v0) => ImplItem::Type(v0.clone()),
    -            ImplItem::Macro(v0) => ImplItem::Macro(v0.clone()),
    -            ImplItem::Verbatim(v0) => ImplItem::Verbatim(v0.clone()),
    -            #[cfg(syn_no_non_exhaustive)]
    -            _ => unreachable!(),
    +            crate::ImplItem::Const(v0) => crate::ImplItem::Const(v0.clone()),
    +            crate::ImplItem::Fn(v0) => crate::ImplItem::Fn(v0.clone()),
    +            crate::ImplItem::Type(v0) => crate::ImplItem::Type(v0.clone()),
    +            crate::ImplItem::Macro(v0) => crate::ImplItem::Macro(v0.clone()),
    +            crate::ImplItem::Verbatim(v0) => crate::ImplItem::Verbatim(v0.clone()),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ImplItemConst {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ImplItemConst {
         fn clone(&self) -> Self {
    -        ImplItemConst {
    +        crate::ImplItemConst {
                 attrs: self.attrs.clone(),
                 vis: self.vis.clone(),
                 defaultness: self.defaultness.clone(),
                 const_token: self.const_token.clone(),
                 ident: self.ident.clone(),
    +            generics: self.generics.clone(),
                 colon_token: self.colon_token.clone(),
                 ty: self.ty.clone(),
                 eq_token: self.eq_token.clone(),
    @@ -3223,22 +3291,11 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ImplItemMacro {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ImplItemFn {
         fn clone(&self) -> Self {
    -        ImplItemMacro {
    -            attrs: self.attrs.clone(),
    -            mac: self.mac.clone(),
    -            semi_token: self.semi_token.clone(),
    -        }
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ImplItemMethod {
    -    fn clone(&self) -> Self {
    -        ImplItemMethod {
    +        crate::ImplItemFn {
                 attrs: self.attrs.clone(),
                 vis: self.vis.clone(),
                 defaultness: self.defaultness.clone(),
    @@ -3247,11 +3304,22 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ImplItemType {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ImplItemMacro {
         fn clone(&self) -> Self {
    -        ImplItemType {
    +        crate::ImplItemMacro {
    +            attrs: self.attrs.clone(),
    +            mac: self.mac.clone(),
    +            semi_token: self.semi_token.clone(),
    +        }
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ImplItemType {
    +    fn clone(&self) -> Self {
    +        crate::ImplItemType {
                 attrs: self.attrs.clone(),
                 vis: self.vis.clone(),
                 defaultness: self.defaultness.clone(),
    @@ -3264,52 +3332,57 @@
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for Index {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ImplRestriction {
         fn clone(&self) -> Self {
    -        Index {
    +        match *self {}
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::Index {
    +    fn clone(&self) -> Self {
    +        crate::Index {
                 index: self.index.clone(),
                 span: self.span.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for Item {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::Item {
         fn clone(&self) -> Self {
             match self {
    -            Item::Const(v0) => Item::Const(v0.clone()),
    -            Item::Enum(v0) => Item::Enum(v0.clone()),
    -            Item::ExternCrate(v0) => Item::ExternCrate(v0.clone()),
    -            Item::Fn(v0) => Item::Fn(v0.clone()),
    -            Item::ForeignMod(v0) => Item::ForeignMod(v0.clone()),
    -            Item::Impl(v0) => Item::Impl(v0.clone()),
    -            Item::Macro(v0) => Item::Macro(v0.clone()),
    -            Item::Macro2(v0) => Item::Macro2(v0.clone()),
    -            Item::Mod(v0) => Item::Mod(v0.clone()),
    -            Item::Static(v0) => Item::Static(v0.clone()),
    -            Item::Struct(v0) => Item::Struct(v0.clone()),
    -            Item::Trait(v0) => Item::Trait(v0.clone()),
    -            Item::TraitAlias(v0) => Item::TraitAlias(v0.clone()),
    -            Item::Type(v0) => Item::Type(v0.clone()),
    -            Item::Union(v0) => Item::Union(v0.clone()),
    -            Item::Use(v0) => Item::Use(v0.clone()),
    -            Item::Verbatim(v0) => Item::Verbatim(v0.clone()),
    -            #[cfg(syn_no_non_exhaustive)]
    -            _ => unreachable!(),
    +            crate::Item::Const(v0) => crate::Item::Const(v0.clone()),
    +            crate::Item::Enum(v0) => crate::Item::Enum(v0.clone()),
    +            crate::Item::ExternCrate(v0) => crate::Item::ExternCrate(v0.clone()),
    +            crate::Item::Fn(v0) => crate::Item::Fn(v0.clone()),
    +            crate::Item::ForeignMod(v0) => crate::Item::ForeignMod(v0.clone()),
    +            crate::Item::Impl(v0) => crate::Item::Impl(v0.clone()),
    +            crate::Item::Macro(v0) => crate::Item::Macro(v0.clone()),
    +            crate::Item::Mod(v0) => crate::Item::Mod(v0.clone()),
    +            crate::Item::Static(v0) => crate::Item::Static(v0.clone()),
    +            crate::Item::Struct(v0) => crate::Item::Struct(v0.clone()),
    +            crate::Item::Trait(v0) => crate::Item::Trait(v0.clone()),
    +            crate::Item::TraitAlias(v0) => crate::Item::TraitAlias(v0.clone()),
    +            crate::Item::Type(v0) => crate::Item::Type(v0.clone()),
    +            crate::Item::Union(v0) => crate::Item::Union(v0.clone()),
    +            crate::Item::Use(v0) => crate::Item::Use(v0.clone()),
    +            crate::Item::Verbatim(v0) => crate::Item::Verbatim(v0.clone()),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ItemConst {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ItemConst {
         fn clone(&self) -> Self {
    -        ItemConst {
    +        crate::ItemConst {
                 attrs: self.attrs.clone(),
                 vis: self.vis.clone(),
                 const_token: self.const_token.clone(),
                 ident: self.ident.clone(),
    +            generics: self.generics.clone(),
                 colon_token: self.colon_token.clone(),
                 ty: self.ty.clone(),
                 eq_token: self.eq_token.clone(),
    @@ -3318,11 +3391,11 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ItemEnum {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ItemEnum {
         fn clone(&self) -> Self {
    -        ItemEnum {
    +        crate::ItemEnum {
                 attrs: self.attrs.clone(),
                 vis: self.vis.clone(),
                 enum_token: self.enum_token.clone(),
    @@ -3333,11 +3406,11 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ItemExternCrate {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ItemExternCrate {
         fn clone(&self) -> Self {
    -        ItemExternCrate {
    +        crate::ItemExternCrate {
                 attrs: self.attrs.clone(),
                 vis: self.vis.clone(),
                 extern_token: self.extern_token.clone(),
    @@ -3348,11 +3421,11 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ItemFn {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ItemFn {
         fn clone(&self) -> Self {
    -        ItemFn {
    +        crate::ItemFn {
                 attrs: self.attrs.clone(),
                 vis: self.vis.clone(),
                 sig: self.sig.clone(),
    @@ -3360,23 +3433,24 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ItemForeignMod {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ItemForeignMod {
         fn clone(&self) -> Self {
    -        ItemForeignMod {
    +        crate::ItemForeignMod {
                 attrs: self.attrs.clone(),
    +            unsafety: self.unsafety.clone(),
                 abi: self.abi.clone(),
                 brace_token: self.brace_token.clone(),
                 items: self.items.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ItemImpl {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ItemImpl {
         fn clone(&self) -> Self {
    -        ItemImpl {
    +        crate::ItemImpl {
                 attrs: self.attrs.clone(),
                 defaultness: self.defaultness.clone(),
                 unsafety: self.unsafety.clone(),
    @@ -3389,11 +3463,11 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ItemMacro {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ItemMacro {
         fn clone(&self) -> Self {
    -        ItemMacro {
    +        crate::ItemMacro {
                 attrs: self.attrs.clone(),
                 ident: self.ident.clone(),
                 mac: self.mac.clone(),
    @@ -3401,26 +3475,14 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ItemMacro2 {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ItemMod {
         fn clone(&self) -> Self {
    -        ItemMacro2 {
    -            attrs: self.attrs.clone(),
    -            vis: self.vis.clone(),
    -            macro_token: self.macro_token.clone(),
    -            ident: self.ident.clone(),
    -            rules: self.rules.clone(),
    -        }
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ItemMod {
    -    fn clone(&self) -> Self {
    -        ItemMod {
    +        crate::ItemMod {
                 attrs: self.attrs.clone(),
                 vis: self.vis.clone(),
    +            unsafety: self.unsafety.clone(),
                 mod_token: self.mod_token.clone(),
                 ident: self.ident.clone(),
                 content: self.content.clone(),
    @@ -3428,11 +3490,11 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ItemStatic {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ItemStatic {
         fn clone(&self) -> Self {
    -        ItemStatic {
    +        crate::ItemStatic {
                 attrs: self.attrs.clone(),
                 vis: self.vis.clone(),
                 static_token: self.static_token.clone(),
    @@ -3446,11 +3508,11 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ItemStruct {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ItemStruct {
         fn clone(&self) -> Self {
    -        ItemStruct {
    +        crate::ItemStruct {
                 attrs: self.attrs.clone(),
                 vis: self.vis.clone(),
                 struct_token: self.struct_token.clone(),
    @@ -3461,15 +3523,16 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ItemTrait {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ItemTrait {
         fn clone(&self) -> Self {
    -        ItemTrait {
    +        crate::ItemTrait {
                 attrs: self.attrs.clone(),
                 vis: self.vis.clone(),
                 unsafety: self.unsafety.clone(),
                 auto_token: self.auto_token.clone(),
    +            restriction: self.restriction.clone(),
                 trait_token: self.trait_token.clone(),
                 ident: self.ident.clone(),
                 generics: self.generics.clone(),
    @@ -3480,11 +3543,11 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ItemTraitAlias {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ItemTraitAlias {
         fn clone(&self) -> Self {
    -        ItemTraitAlias {
    +        crate::ItemTraitAlias {
                 attrs: self.attrs.clone(),
                 vis: self.vis.clone(),
                 trait_token: self.trait_token.clone(),
    @@ -3496,11 +3559,11 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ItemType {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ItemType {
         fn clone(&self) -> Self {
    -        ItemType {
    +        crate::ItemType {
                 attrs: self.attrs.clone(),
                 vis: self.vis.clone(),
                 type_token: self.type_token.clone(),
    @@ -3512,11 +3575,11 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ItemUnion {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ItemUnion {
         fn clone(&self) -> Self {
    -        ItemUnion {
    +        crate::ItemUnion {
                 attrs: self.attrs.clone(),
                 vis: self.vis.clone(),
                 union_token: self.union_token.clone(),
    @@ -3526,11 +3589,11 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ItemUse {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ItemUse {
         fn clone(&self) -> Self {
    -        ItemUse {
    +        crate::ItemUse {
                 attrs: self.attrs.clone(),
                 vis: self.vis.clone(),
                 use_token: self.use_token.clone(),
    @@ -3540,21 +3603,21 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for Label {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::Label {
         fn clone(&self) -> Self {
    -        Label {
    +        crate::Label {
                 name: self.name.clone(),
                 colon_token: self.colon_token.clone(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for LifetimeDef {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::LifetimeParam {
         fn clone(&self) -> Self {
    -        LifetimeDef {
    +        crate::LifetimeParam {
                 attrs: self.attrs.clone(),
                 lifetime: self.lifetime.clone(),
                 colon_token: self.colon_token.clone(),
    @@ -3562,35 +3625,36 @@
             }
         }
     }
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for Lit {
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::Lit {
         fn clone(&self) -> Self {
             match self {
    -            Lit::Str(v0) => Lit::Str(v0.clone()),
    -            Lit::ByteStr(v0) => Lit::ByteStr(v0.clone()),
    -            Lit::Byte(v0) => Lit::Byte(v0.clone()),
    -            Lit::Char(v0) => Lit::Char(v0.clone()),
    -            Lit::Int(v0) => Lit::Int(v0.clone()),
    -            Lit::Float(v0) => Lit::Float(v0.clone()),
    -            Lit::Bool(v0) => Lit::Bool(v0.clone()),
    -            Lit::Verbatim(v0) => Lit::Verbatim(v0.clone()),
    +            crate::Lit::Str(v0) => crate::Lit::Str(v0.clone()),
    +            crate::Lit::ByteStr(v0) => crate::Lit::ByteStr(v0.clone()),
    +            crate::Lit::CStr(v0) => crate::Lit::CStr(v0.clone()),
    +            crate::Lit::Byte(v0) => crate::Lit::Byte(v0.clone()),
    +            crate::Lit::Char(v0) => crate::Lit::Char(v0.clone()),
    +            crate::Lit::Int(v0) => crate::Lit::Int(v0.clone()),
    +            crate::Lit::Float(v0) => crate::Lit::Float(v0.clone()),
    +            crate::Lit::Bool(v0) => crate::Lit::Bool(v0.clone()),
    +            crate::Lit::Verbatim(v0) => crate::Lit::Verbatim(v0.clone()),
             }
         }
     }
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for LitBool {
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::LitBool {
         fn clone(&self) -> Self {
    -        LitBool {
    +        crate::LitBool {
                 value: self.value.clone(),
                 span: self.span.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for Local {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::Local {
         fn clone(&self) -> Self {
    -        Local {
    +        crate::Local {
                 attrs: self.attrs.clone(),
                 let_token: self.let_token.clone(),
                 pat: self.pat.clone(),
    @@ -3599,11 +3663,22 @@
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for Macro {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::LocalInit {
         fn clone(&self) -> Self {
    -        Macro {
    +        crate::LocalInit {
    +            eq_token: self.eq_token.clone(),
    +            expr: self.expr.clone(),
    +            diverge: self.diverge.clone(),
    +        }
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::Macro {
    +    fn clone(&self) -> Self {
    +        crate::Macro {
                 path: self.path.clone(),
                 bang_token: self.bang_token.clone(),
                 delimiter: self.delimiter.clone(),
    @@ -3611,135 +3686,103 @@
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for MacroDelimiter {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::MacroDelimiter {
         fn clone(&self) -> Self {
             match self {
    -            MacroDelimiter::Paren(v0) => MacroDelimiter::Paren(v0.clone()),
    -            MacroDelimiter::Brace(v0) => MacroDelimiter::Brace(v0.clone()),
    -            MacroDelimiter::Bracket(v0) => MacroDelimiter::Bracket(v0.clone()),
    +            crate::MacroDelimiter::Paren(v0) => crate::MacroDelimiter::Paren(v0.clone()),
    +            crate::MacroDelimiter::Brace(v0) => crate::MacroDelimiter::Brace(v0.clone()),
    +            crate::MacroDelimiter::Bracket(v0) => {
    +                crate::MacroDelimiter::Bracket(v0.clone())
    +            }
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for Member {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::Member {
         fn clone(&self) -> Self {
             match self {
    -            Member::Named(v0) => Member::Named(v0.clone()),
    -            Member::Unnamed(v0) => Member::Unnamed(v0.clone()),
    +            crate::Member::Named(v0) => crate::Member::Named(v0.clone()),
    +            crate::Member::Unnamed(v0) => crate::Member::Unnamed(v0.clone()),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for Meta {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::Meta {
         fn clone(&self) -> Self {
             match self {
    -            Meta::Path(v0) => Meta::Path(v0.clone()),
    -            Meta::List(v0) => Meta::List(v0.clone()),
    -            Meta::NameValue(v0) => Meta::NameValue(v0.clone()),
    +            crate::Meta::Path(v0) => crate::Meta::Path(v0.clone()),
    +            crate::Meta::List(v0) => crate::Meta::List(v0.clone()),
    +            crate::Meta::NameValue(v0) => crate::Meta::NameValue(v0.clone()),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for MetaList {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::MetaList {
         fn clone(&self) -> Self {
    -        MetaList {
    +        crate::MetaList {
                 path: self.path.clone(),
    -            paren_token: self.paren_token.clone(),
    -            nested: self.nested.clone(),
    +            delimiter: self.delimiter.clone(),
    +            tokens: self.tokens.clone(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for MetaNameValue {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::MetaNameValue {
         fn clone(&self) -> Self {
    -        MetaNameValue {
    +        crate::MetaNameValue {
                 path: self.path.clone(),
                 eq_token: self.eq_token.clone(),
    -            lit: self.lit.clone(),
    +            value: self.value.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for MethodTurbofish {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ParenthesizedGenericArguments {
         fn clone(&self) -> Self {
    -        MethodTurbofish {
    -            colon2_token: self.colon2_token.clone(),
    -            lt_token: self.lt_token.clone(),
    -            args: self.args.clone(),
    -            gt_token: self.gt_token.clone(),
    -        }
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for NestedMeta {
    -    fn clone(&self) -> Self {
    -        match self {
    -            NestedMeta::Meta(v0) => NestedMeta::Meta(v0.clone()),
    -            NestedMeta::Lit(v0) => NestedMeta::Lit(v0.clone()),
    -        }
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ParenthesizedGenericArguments {
    -    fn clone(&self) -> Self {
    -        ParenthesizedGenericArguments {
    +        crate::ParenthesizedGenericArguments {
                 paren_token: self.paren_token.clone(),
                 inputs: self.inputs.clone(),
                 output: self.output.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for Pat {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::Pat {
         fn clone(&self) -> Self {
             match self {
    -            Pat::Box(v0) => Pat::Box(v0.clone()),
    -            Pat::Ident(v0) => Pat::Ident(v0.clone()),
    -            Pat::Lit(v0) => Pat::Lit(v0.clone()),
    -            Pat::Macro(v0) => Pat::Macro(v0.clone()),
    -            Pat::Or(v0) => Pat::Or(v0.clone()),
    -            Pat::Path(v0) => Pat::Path(v0.clone()),
    -            Pat::Range(v0) => Pat::Range(v0.clone()),
    -            Pat::Reference(v0) => Pat::Reference(v0.clone()),
    -            Pat::Rest(v0) => Pat::Rest(v0.clone()),
    -            Pat::Slice(v0) => Pat::Slice(v0.clone()),
    -            Pat::Struct(v0) => Pat::Struct(v0.clone()),
    -            Pat::Tuple(v0) => Pat::Tuple(v0.clone()),
    -            Pat::TupleStruct(v0) => Pat::TupleStruct(v0.clone()),
    -            Pat::Type(v0) => Pat::Type(v0.clone()),
    -            Pat::Verbatim(v0) => Pat::Verbatim(v0.clone()),
    -            Pat::Wild(v0) => Pat::Wild(v0.clone()),
    -            #[cfg(syn_no_non_exhaustive)]
    -            _ => unreachable!(),
    +            crate::Pat::Const(v0) => crate::Pat::Const(v0.clone()),
    +            crate::Pat::Ident(v0) => crate::Pat::Ident(v0.clone()),
    +            crate::Pat::Lit(v0) => crate::Pat::Lit(v0.clone()),
    +            crate::Pat::Macro(v0) => crate::Pat::Macro(v0.clone()),
    +            crate::Pat::Or(v0) => crate::Pat::Or(v0.clone()),
    +            crate::Pat::Paren(v0) => crate::Pat::Paren(v0.clone()),
    +            crate::Pat::Path(v0) => crate::Pat::Path(v0.clone()),
    +            crate::Pat::Range(v0) => crate::Pat::Range(v0.clone()),
    +            crate::Pat::Reference(v0) => crate::Pat::Reference(v0.clone()),
    +            crate::Pat::Rest(v0) => crate::Pat::Rest(v0.clone()),
    +            crate::Pat::Slice(v0) => crate::Pat::Slice(v0.clone()),
    +            crate::Pat::Struct(v0) => crate::Pat::Struct(v0.clone()),
    +            crate::Pat::Tuple(v0) => crate::Pat::Tuple(v0.clone()),
    +            crate::Pat::TupleStruct(v0) => crate::Pat::TupleStruct(v0.clone()),
    +            crate::Pat::Type(v0) => crate::Pat::Type(v0.clone()),
    +            crate::Pat::Verbatim(v0) => crate::Pat::Verbatim(v0.clone()),
    +            crate::Pat::Wild(v0) => crate::Pat::Wild(v0.clone()),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for PatBox {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::PatIdent {
         fn clone(&self) -> Self {
    -        PatBox {
    -            attrs: self.attrs.clone(),
    -            box_token: self.box_token.clone(),
    -            pat: self.pat.clone(),
    -        }
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for PatIdent {
    -    fn clone(&self) -> Self {
    -        PatIdent {
    +        crate::PatIdent {
                 attrs: self.attrs.clone(),
                 by_ref: self.by_ref.clone(),
                 mutability: self.mutability.clone(),
    @@ -3748,65 +3791,33 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for PatLit {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::PatOr {
         fn clone(&self) -> Self {
    -        PatLit {
    -            attrs: self.attrs.clone(),
    -            expr: self.expr.clone(),
    -        }
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for PatMacro {
    -    fn clone(&self) -> Self {
    -        PatMacro {
    -            attrs: self.attrs.clone(),
    -            mac: self.mac.clone(),
    -        }
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for PatOr {
    -    fn clone(&self) -> Self {
    -        PatOr {
    +        crate::PatOr {
                 attrs: self.attrs.clone(),
                 leading_vert: self.leading_vert.clone(),
                 cases: self.cases.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for PatPath {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::PatParen {
         fn clone(&self) -> Self {
    -        PatPath {
    +        crate::PatParen {
                 attrs: self.attrs.clone(),
    -            qself: self.qself.clone(),
    -            path: self.path.clone(),
    +            paren_token: self.paren_token.clone(),
    +            pat: self.pat.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for PatRange {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::PatReference {
         fn clone(&self) -> Self {
    -        PatRange {
    -            attrs: self.attrs.clone(),
    -            lo: self.lo.clone(),
    -            limits: self.limits.clone(),
    -            hi: self.hi.clone(),
    -        }
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for PatReference {
    -    fn clone(&self) -> Self {
    -        PatReference {
    +        crate::PatReference {
                 attrs: self.attrs.clone(),
                 and_token: self.and_token.clone(),
                 mutability: self.mutability.clone(),
    @@ -3814,67 +3825,70 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for PatRest {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::PatRest {
         fn clone(&self) -> Self {
    -        PatRest {
    +        crate::PatRest {
                 attrs: self.attrs.clone(),
                 dot2_token: self.dot2_token.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for PatSlice {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::PatSlice {
         fn clone(&self) -> Self {
    -        PatSlice {
    +        crate::PatSlice {
                 attrs: self.attrs.clone(),
                 bracket_token: self.bracket_token.clone(),
                 elems: self.elems.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for PatStruct {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::PatStruct {
         fn clone(&self) -> Self {
    -        PatStruct {
    +        crate::PatStruct {
                 attrs: self.attrs.clone(),
    +            qself: self.qself.clone(),
                 path: self.path.clone(),
                 brace_token: self.brace_token.clone(),
                 fields: self.fields.clone(),
    -            dot2_token: self.dot2_token.clone(),
    +            rest: self.rest.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for PatTuple {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::PatTuple {
         fn clone(&self) -> Self {
    -        PatTuple {
    +        crate::PatTuple {
                 attrs: self.attrs.clone(),
                 paren_token: self.paren_token.clone(),
                 elems: self.elems.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for PatTupleStruct {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::PatTupleStruct {
         fn clone(&self) -> Self {
    -        PatTupleStruct {
    +        crate::PatTupleStruct {
                 attrs: self.attrs.clone(),
    +            qself: self.qself.clone(),
                 path: self.path.clone(),
    -            pat: self.pat.clone(),
    +            paren_token: self.paren_token.clone(),
    +            elems: self.elems.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for PatType {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::PatType {
         fn clone(&self) -> Self {
    -        PatType {
    +        crate::PatType {
                 attrs: self.attrs.clone(),
                 pat: self.pat.clone(),
                 colon_token: self.colon_token.clone(),
    @@ -3882,76 +3896,93 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for PatWild {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::PatWild {
         fn clone(&self) -> Self {
    -        PatWild {
    +        crate::PatWild {
                 attrs: self.attrs.clone(),
                 underscore_token: self.underscore_token.clone(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for Path {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::Path {
         fn clone(&self) -> Self {
    -        Path {
    +        crate::Path {
                 leading_colon: self.leading_colon.clone(),
                 segments: self.segments.clone(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for PathArguments {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::PathArguments {
         fn clone(&self) -> Self {
             match self {
    -            PathArguments::None => PathArguments::None,
    -            PathArguments::AngleBracketed(v0) => {
    -                PathArguments::AngleBracketed(v0.clone())
    +            crate::PathArguments::None => crate::PathArguments::None,
    +            crate::PathArguments::AngleBracketed(v0) => {
    +                crate::PathArguments::AngleBracketed(v0.clone())
    +            }
    +            crate::PathArguments::Parenthesized(v0) => {
    +                crate::PathArguments::Parenthesized(v0.clone())
                 }
    -            PathArguments::Parenthesized(v0) => PathArguments::Parenthesized(v0.clone()),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for PathSegment {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::PathSegment {
         fn clone(&self) -> Self {
    -        PathSegment {
    +        crate::PathSegment {
                 ident: self.ident.clone(),
                 arguments: self.arguments.clone(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for PredicateEq {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::PointerMutability {
         fn clone(&self) -> Self {
    -        PredicateEq {
    -            lhs_ty: self.lhs_ty.clone(),
    -            eq_token: self.eq_token.clone(),
    -            rhs_ty: self.rhs_ty.clone(),
    +        match self {
    +            crate::PointerMutability::Const(v0) => {
    +                crate::PointerMutability::Const(v0.clone())
    +            }
    +            crate::PointerMutability::Mut(v0) => {
    +                crate::PointerMutability::Mut(v0.clone())
    +            }
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for PredicateLifetime {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::PreciseCapture {
         fn clone(&self) -> Self {
    -        PredicateLifetime {
    +        crate::PreciseCapture {
    +            use_token: self.use_token.clone(),
    +            lt_token: self.lt_token.clone(),
    +            params: self.params.clone(),
    +            gt_token: self.gt_token.clone(),
    +        }
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::PredicateLifetime {
    +    fn clone(&self) -> Self {
    +        crate::PredicateLifetime {
                 lifetime: self.lifetime.clone(),
                 colon_token: self.colon_token.clone(),
                 bounds: self.bounds.clone(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for PredicateType {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::PredicateType {
         fn clone(&self) -> Self {
    -        PredicateType {
    +        crate::PredicateType {
                 lifetimes: self.lifetimes.clone(),
                 bounded_ty: self.bounded_ty.clone(),
                 colon_token: self.colon_token.clone(),
    @@ -3959,11 +3990,11 @@
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for QSelf {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::QSelf {
         fn clone(&self) -> Self {
    -        QSelf {
    +        crate::QSelf {
                 lt_token: self.lt_token.clone(),
                 ty: self.ty.clone(),
                 position: self.position.clone(),
    @@ -3972,43 +4003,47 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Copy for RangeLimits {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for RangeLimits {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Copy for crate::RangeLimits {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::RangeLimits {
         fn clone(&self) -> Self {
             *self
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for Receiver {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::Receiver {
         fn clone(&self) -> Self {
    -        Receiver {
    +        crate::Receiver {
                 attrs: self.attrs.clone(),
                 reference: self.reference.clone(),
                 mutability: self.mutability.clone(),
                 self_token: self.self_token.clone(),
    +            colon_token: self.colon_token.clone(),
    +            ty: self.ty.clone(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for ReturnType {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::ReturnType {
         fn clone(&self) -> Self {
             match self {
    -            ReturnType::Default => ReturnType::Default,
    -            ReturnType::Type(v0, v1) => ReturnType::Type(v0.clone(), v1.clone()),
    +            crate::ReturnType::Default => crate::ReturnType::Default,
    +            crate::ReturnType::Type(v0, v1) => {
    +                crate::ReturnType::Type(v0.clone(), v1.clone())
    +            }
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for Signature {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::Signature {
         fn clone(&self) -> Self {
    -        Signature {
    +        crate::Signature {
                 constness: self.constness.clone(),
                 asyncness: self.asyncness.clone(),
                 unsafety: self.unsafety.clone(),
    @@ -4023,23 +4058,44 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for Stmt {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::StaticMutability {
         fn clone(&self) -> Self {
             match self {
    -            Stmt::Local(v0) => Stmt::Local(v0.clone()),
    -            Stmt::Item(v0) => Stmt::Item(v0.clone()),
    -            Stmt::Expr(v0) => Stmt::Expr(v0.clone()),
    -            Stmt::Semi(v0, v1) => Stmt::Semi(v0.clone(), v1.clone()),
    +            crate::StaticMutability::Mut(v0) => crate::StaticMutability::Mut(v0.clone()),
    +            crate::StaticMutability::None => crate::StaticMutability::None,
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for TraitBound {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::Stmt {
         fn clone(&self) -> Self {
    -        TraitBound {
    +        match self {
    +            crate::Stmt::Local(v0) => crate::Stmt::Local(v0.clone()),
    +            crate::Stmt::Item(v0) => crate::Stmt::Item(v0.clone()),
    +            crate::Stmt::Expr(v0, v1) => crate::Stmt::Expr(v0.clone(), v1.clone()),
    +            crate::Stmt::Macro(v0) => crate::Stmt::Macro(v0.clone()),
    +        }
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::StmtMacro {
    +    fn clone(&self) -> Self {
    +        crate::StmtMacro {
    +            attrs: self.attrs.clone(),
    +            mac: self.mac.clone(),
    +            semi_token: self.semi_token.clone(),
    +        }
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::TraitBound {
    +    fn clone(&self) -> Self {
    +        crate::TraitBound {
                 paren_token: self.paren_token.clone(),
                 modifier: self.modifier.clone(),
                 lifetimes: self.lifetimes.clone(),
    @@ -4047,39 +4103,38 @@
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Copy for TraitBoundModifier {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for TraitBoundModifier {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Copy for crate::TraitBoundModifier {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::TraitBoundModifier {
         fn clone(&self) -> Self {
             *self
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for TraitItem {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::TraitItem {
         fn clone(&self) -> Self {
             match self {
    -            TraitItem::Const(v0) => TraitItem::Const(v0.clone()),
    -            TraitItem::Method(v0) => TraitItem::Method(v0.clone()),
    -            TraitItem::Type(v0) => TraitItem::Type(v0.clone()),
    -            TraitItem::Macro(v0) => TraitItem::Macro(v0.clone()),
    -            TraitItem::Verbatim(v0) => TraitItem::Verbatim(v0.clone()),
    -            #[cfg(syn_no_non_exhaustive)]
    -            _ => unreachable!(),
    +            crate::TraitItem::Const(v0) => crate::TraitItem::Const(v0.clone()),
    +            crate::TraitItem::Fn(v0) => crate::TraitItem::Fn(v0.clone()),
    +            crate::TraitItem::Type(v0) => crate::TraitItem::Type(v0.clone()),
    +            crate::TraitItem::Macro(v0) => crate::TraitItem::Macro(v0.clone()),
    +            crate::TraitItem::Verbatim(v0) => crate::TraitItem::Verbatim(v0.clone()),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for TraitItemConst {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::TraitItemConst {
         fn clone(&self) -> Self {
    -        TraitItemConst {
    +        crate::TraitItemConst {
                 attrs: self.attrs.clone(),
                 const_token: self.const_token.clone(),
                 ident: self.ident.clone(),
    +            generics: self.generics.clone(),
                 colon_token: self.colon_token.clone(),
                 ty: self.ty.clone(),
                 default: self.default.clone(),
    @@ -4087,22 +4142,11 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for TraitItemMacro {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::TraitItemFn {
         fn clone(&self) -> Self {
    -        TraitItemMacro {
    -            attrs: self.attrs.clone(),
    -            mac: self.mac.clone(),
    -            semi_token: self.semi_token.clone(),
    -        }
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for TraitItemMethod {
    -    fn clone(&self) -> Self {
    -        TraitItemMethod {
    +        crate::TraitItemFn {
                 attrs: self.attrs.clone(),
                 sig: self.sig.clone(),
                 default: self.default.clone(),
    @@ -4110,11 +4154,22 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for TraitItemType {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::TraitItemMacro {
         fn clone(&self) -> Self {
    -        TraitItemType {
    +        crate::TraitItemMacro {
    +            attrs: self.attrs.clone(),
    +            mac: self.mac.clone(),
    +            semi_token: self.semi_token.clone(),
    +        }
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::TraitItemType {
    +    fn clone(&self) -> Self {
    +        crate::TraitItemType {
                 attrs: self.attrs.clone(),
                 type_token: self.type_token.clone(),
                 ident: self.ident.clone(),
    @@ -4126,36 +4181,34 @@
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for Type {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::Type {
         fn clone(&self) -> Self {
             match self {
    -            Type::Array(v0) => Type::Array(v0.clone()),
    -            Type::BareFn(v0) => Type::BareFn(v0.clone()),
    -            Type::Group(v0) => Type::Group(v0.clone()),
    -            Type::ImplTrait(v0) => Type::ImplTrait(v0.clone()),
    -            Type::Infer(v0) => Type::Infer(v0.clone()),
    -            Type::Macro(v0) => Type::Macro(v0.clone()),
    -            Type::Never(v0) => Type::Never(v0.clone()),
    -            Type::Paren(v0) => Type::Paren(v0.clone()),
    -            Type::Path(v0) => Type::Path(v0.clone()),
    -            Type::Ptr(v0) => Type::Ptr(v0.clone()),
    -            Type::Reference(v0) => Type::Reference(v0.clone()),
    -            Type::Slice(v0) => Type::Slice(v0.clone()),
    -            Type::TraitObject(v0) => Type::TraitObject(v0.clone()),
    -            Type::Tuple(v0) => Type::Tuple(v0.clone()),
    -            Type::Verbatim(v0) => Type::Verbatim(v0.clone()),
    -            #[cfg(syn_no_non_exhaustive)]
    -            _ => unreachable!(),
    +            crate::Type::Array(v0) => crate::Type::Array(v0.clone()),
    +            crate::Type::BareFn(v0) => crate::Type::BareFn(v0.clone()),
    +            crate::Type::Group(v0) => crate::Type::Group(v0.clone()),
    +            crate::Type::ImplTrait(v0) => crate::Type::ImplTrait(v0.clone()),
    +            crate::Type::Infer(v0) => crate::Type::Infer(v0.clone()),
    +            crate::Type::Macro(v0) => crate::Type::Macro(v0.clone()),
    +            crate::Type::Never(v0) => crate::Type::Never(v0.clone()),
    +            crate::Type::Paren(v0) => crate::Type::Paren(v0.clone()),
    +            crate::Type::Path(v0) => crate::Type::Path(v0.clone()),
    +            crate::Type::Ptr(v0) => crate::Type::Ptr(v0.clone()),
    +            crate::Type::Reference(v0) => crate::Type::Reference(v0.clone()),
    +            crate::Type::Slice(v0) => crate::Type::Slice(v0.clone()),
    +            crate::Type::TraitObject(v0) => crate::Type::TraitObject(v0.clone()),
    +            crate::Type::Tuple(v0) => crate::Type::Tuple(v0.clone()),
    +            crate::Type::Verbatim(v0) => crate::Type::Verbatim(v0.clone()),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for TypeArray {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::TypeArray {
         fn clone(&self) -> Self {
    -        TypeArray {
    +        crate::TypeArray {
                 bracket_token: self.bracket_token.clone(),
                 elem: self.elem.clone(),
                 semi_token: self.semi_token.clone(),
    @@ -4163,11 +4216,11 @@
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for TypeBareFn {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::TypeBareFn {
         fn clone(&self) -> Self {
    -        TypeBareFn {
    +        crate::TypeBareFn {
                 lifetimes: self.lifetimes.clone(),
                 unsafety: self.unsafety.clone(),
                 abi: self.abi.clone(),
    @@ -4179,56 +4232,58 @@
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for TypeGroup {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::TypeGroup {
         fn clone(&self) -> Self {
    -        TypeGroup {
    +        crate::TypeGroup {
                 group_token: self.group_token.clone(),
                 elem: self.elem.clone(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for TypeImplTrait {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::TypeImplTrait {
         fn clone(&self) -> Self {
    -        TypeImplTrait {
    +        crate::TypeImplTrait {
                 impl_token: self.impl_token.clone(),
                 bounds: self.bounds.clone(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for TypeInfer {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::TypeInfer {
         fn clone(&self) -> Self {
    -        TypeInfer {
    +        crate::TypeInfer {
                 underscore_token: self.underscore_token.clone(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for TypeMacro {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::TypeMacro {
         fn clone(&self) -> Self {
    -        TypeMacro { mac: self.mac.clone() }
    +        crate::TypeMacro {
    +            mac: self.mac.clone(),
    +        }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for TypeNever {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::TypeNever {
         fn clone(&self) -> Self {
    -        TypeNever {
    +        crate::TypeNever {
                 bang_token: self.bang_token.clone(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for TypeParam {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::TypeParam {
         fn clone(&self) -> Self {
    -        TypeParam {
    +        crate::TypeParam {
                 attrs: self.attrs.clone(),
                 ident: self.ident.clone(),
                 colon_token: self.colon_token.clone(),
    @@ -4238,41 +4293,52 @@
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for TypeParamBound {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::TypeParamBound {
         fn clone(&self) -> Self {
             match self {
    -            TypeParamBound::Trait(v0) => TypeParamBound::Trait(v0.clone()),
    -            TypeParamBound::Lifetime(v0) => TypeParamBound::Lifetime(v0.clone()),
    +            crate::TypeParamBound::Trait(v0) => crate::TypeParamBound::Trait(v0.clone()),
    +            crate::TypeParamBound::Lifetime(v0) => {
    +                crate::TypeParamBound::Lifetime(v0.clone())
    +            }
    +            #[cfg(feature = "full")]
    +            crate::TypeParamBound::PreciseCapture(v0) => {
    +                crate::TypeParamBound::PreciseCapture(v0.clone())
    +            }
    +            crate::TypeParamBound::Verbatim(v0) => {
    +                crate::TypeParamBound::Verbatim(v0.clone())
    +            }
    +            #[cfg(not(feature = "full"))]
    +            _ => unreachable!(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for TypeParen {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::TypeParen {
         fn clone(&self) -> Self {
    -        TypeParen {
    +        crate::TypeParen {
                 paren_token: self.paren_token.clone(),
                 elem: self.elem.clone(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for TypePath {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::TypePath {
         fn clone(&self) -> Self {
    -        TypePath {
    +        crate::TypePath {
                 qself: self.qself.clone(),
                 path: self.path.clone(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for TypePtr {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::TypePtr {
         fn clone(&self) -> Self {
    -        TypePtr {
    +        crate::TypePtr {
                 star_token: self.star_token.clone(),
                 const_token: self.const_token.clone(),
                 mutability: self.mutability.clone(),
    @@ -4280,11 +4346,11 @@
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for TypeReference {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::TypeReference {
         fn clone(&self) -> Self {
    -        TypeReference {
    +        crate::TypeReference {
                 and_token: self.and_token.clone(),
                 lifetime: self.lifetime.clone(),
                 mutability: self.mutability.clone(),
    @@ -4292,124 +4358,126 @@
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for TypeSlice {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::TypeSlice {
         fn clone(&self) -> Self {
    -        TypeSlice {
    +        crate::TypeSlice {
                 bracket_token: self.bracket_token.clone(),
                 elem: self.elem.clone(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for TypeTraitObject {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::TypeTraitObject {
         fn clone(&self) -> Self {
    -        TypeTraitObject {
    +        crate::TypeTraitObject {
                 dyn_token: self.dyn_token.clone(),
                 bounds: self.bounds.clone(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for TypeTuple {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::TypeTuple {
         fn clone(&self) -> Self {
    -        TypeTuple {
    +        crate::TypeTuple {
                 paren_token: self.paren_token.clone(),
                 elems: self.elems.clone(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Copy for UnOp {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for UnOp {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Copy for crate::UnOp {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::UnOp {
         fn clone(&self) -> Self {
             *self
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for UseGlob {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::UseGlob {
         fn clone(&self) -> Self {
    -        UseGlob {
    +        crate::UseGlob {
                 star_token: self.star_token.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for UseGroup {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::UseGroup {
         fn clone(&self) -> Self {
    -        UseGroup {
    +        crate::UseGroup {
                 brace_token: self.brace_token.clone(),
                 items: self.items.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for UseName {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::UseName {
         fn clone(&self) -> Self {
    -        UseName {
    +        crate::UseName {
                 ident: self.ident.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for UsePath {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::UsePath {
         fn clone(&self) -> Self {
    -        UsePath {
    +        crate::UsePath {
                 ident: self.ident.clone(),
                 colon2_token: self.colon2_token.clone(),
                 tree: self.tree.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for UseRename {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::UseRename {
         fn clone(&self) -> Self {
    -        UseRename {
    +        crate::UseRename {
                 ident: self.ident.clone(),
                 as_token: self.as_token.clone(),
                 rename: self.rename.clone(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for UseTree {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::UseTree {
         fn clone(&self) -> Self {
             match self {
    -            UseTree::Path(v0) => UseTree::Path(v0.clone()),
    -            UseTree::Name(v0) => UseTree::Name(v0.clone()),
    -            UseTree::Rename(v0) => UseTree::Rename(v0.clone()),
    -            UseTree::Glob(v0) => UseTree::Glob(v0.clone()),
    -            UseTree::Group(v0) => UseTree::Group(v0.clone()),
    +            crate::UseTree::Path(v0) => crate::UseTree::Path(v0.clone()),
    +            crate::UseTree::Name(v0) => crate::UseTree::Name(v0.clone()),
    +            crate::UseTree::Rename(v0) => crate::UseTree::Rename(v0.clone()),
    +            crate::UseTree::Glob(v0) => crate::UseTree::Glob(v0.clone()),
    +            crate::UseTree::Group(v0) => crate::UseTree::Group(v0.clone()),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for Variadic {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::Variadic {
         fn clone(&self) -> Self {
    -        Variadic {
    +        crate::Variadic {
                 attrs: self.attrs.clone(),
    +            pat: self.pat.clone(),
                 dots: self.dots.clone(),
    +            comma: self.comma.clone(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for Variant {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::Variant {
         fn clone(&self) -> Self {
    -        Variant {
    +        crate::Variant {
                 attrs: self.attrs.clone(),
                 ident: self.ident.clone(),
                 fields: self.fields.clone(),
    @@ -4417,29 +4485,11 @@
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for VisCrate {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::VisRestricted {
         fn clone(&self) -> Self {
    -        VisCrate {
    -            crate_token: self.crate_token.clone(),
    -        }
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for VisPublic {
    -    fn clone(&self) -> Self {
    -        VisPublic {
    -            pub_token: self.pub_token.clone(),
    -        }
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for VisRestricted {
    -    fn clone(&self) -> Self {
    -        VisRestricted {
    +        crate::VisRestricted {
                 pub_token: self.pub_token.clone(),
                 paren_token: self.paren_token.clone(),
                 in_token: self.in_token.clone(),
    @@ -4447,36 +4497,38 @@
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for Visibility {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::Visibility {
         fn clone(&self) -> Self {
             match self {
    -            Visibility::Public(v0) => Visibility::Public(v0.clone()),
    -            Visibility::Crate(v0) => Visibility::Crate(v0.clone()),
    -            Visibility::Restricted(v0) => Visibility::Restricted(v0.clone()),
    -            Visibility::Inherited => Visibility::Inherited,
    +            crate::Visibility::Public(v0) => crate::Visibility::Public(v0.clone()),
    +            crate::Visibility::Restricted(v0) => {
    +                crate::Visibility::Restricted(v0.clone())
    +            }
    +            crate::Visibility::Inherited => crate::Visibility::Inherited,
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for WhereClause {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::WhereClause {
         fn clone(&self) -> Self {
    -        WhereClause {
    +        crate::WhereClause {
                 where_token: self.where_token.clone(),
                 predicates: self.predicates.clone(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -impl Clone for WherePredicate {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for crate::WherePredicate {
         fn clone(&self) -> Self {
             match self {
    -            WherePredicate::Type(v0) => WherePredicate::Type(v0.clone()),
    -            WherePredicate::Lifetime(v0) => WherePredicate::Lifetime(v0.clone()),
    -            WherePredicate::Eq(v0) => WherePredicate::Eq(v0.clone()),
    +            crate::WherePredicate::Lifetime(v0) => {
    +                crate::WherePredicate::Lifetime(v0.clone())
    +            }
    +            crate::WherePredicate::Type(v0) => crate::WherePredicate::Type(v0.clone()),
             }
         }
     }
    diff --git a/src/syn/gen/debug.rs.html b/src/syn/gen/debug.rs.html
    index e461a12..5b7e590 100644
    --- a/src/syn/gen/debug.rs.html
    +++ b/src/syn/gen/debug.rs.html
    @@ -1,4 +1,5 @@
    -debug.rs - source
    1
    +debug.rs - source

    syn/gen/
    debug.rs

    // This file is @generated by syn-internal-codegen.
     // It is not intended for manual editing.
     
    -use crate::*;
    -use std::fmt::{self, Debug};
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Abi {
    +#![allow(unknown_lints, non_local_definitions)]
    +use std::fmt::{self, Debug};
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::Abi {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("Abi");
    -        formatter.field("extern_token", &self.extern_token);
    -        formatter.field("name", &self.name);
    +        let mut formatter = formatter.debug_struct("Abi");
    +        formatter.field("extern_token", &self.extern_token);
    +        formatter.field("name", &self.name);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for AngleBracketedGenericArguments {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::AngleBracketedGenericArguments {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("AngleBracketedGenericArguments");
    -        formatter.field("colon2_token", &self.colon2_token);
    -        formatter.field("lt_token", &self.lt_token);
    -        formatter.field("args", &self.args);
    -        formatter.field("gt_token", &self.gt_token);
    +        self.debug(formatter, "AngleBracketedGenericArguments")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::AngleBracketedGenericArguments {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("colon2_token", &self.colon2_token);
    +        formatter.field("lt_token", &self.lt_token);
    +        formatter.field("args", &self.args);
    +        formatter.field("gt_token", &self.gt_token);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Arm {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::Arm {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("Arm");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("pat", &self.pat);
    -        formatter.field("guard", &self.guard);
    -        formatter.field("fat_arrow_token", &self.fat_arrow_token);
    -        formatter.field("body", &self.body);
    -        formatter.field("comma", &self.comma);
    +        let mut formatter = formatter.debug_struct("Arm");
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("pat", &self.pat);
    +        formatter.field("guard", &self.guard);
    +        formatter.field("fat_arrow_token", &self.fat_arrow_token);
    +        formatter.field("body", &self.body);
    +        formatter.field("comma", &self.comma);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for AttrStyle {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::AssocConst {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct("AssocConst");
    +        formatter.field("ident", &self.ident);
    +        formatter.field("generics", &self.generics);
    +        formatter.field("eq_token", &self.eq_token);
    +        formatter.field("value", &self.value);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::AssocType {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct("AssocType");
    +        formatter.field("ident", &self.ident);
    +        formatter.field("generics", &self.generics);
    +        formatter.field("eq_token", &self.eq_token);
    +        formatter.field("ty", &self.ty);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::AttrStyle {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("AttrStyle::")?;
             match self {
    -            AttrStyle::Outer => formatter.write_str("Outer"),
    -            AttrStyle::Inner(v0) => {
    -                let mut formatter = formatter.debug_tuple("Inner");
    +            crate::AttrStyle::Outer => formatter.write_str("Outer"),
    +            crate::AttrStyle::Inner(v0) => {
    +                let mut formatter = formatter.debug_tuple("Inner");
                     formatter.field(v0);
                     formatter.finish()
                 }
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Attribute {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::Attribute {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("Attribute");
    -        formatter.field("pound_token", &self.pound_token);
    -        formatter.field("style", &self.style);
    -        formatter.field("bracket_token", &self.bracket_token);
    -        formatter.field("path", &self.path);
    -        formatter.field("tokens", &self.tokens);
    +        let mut formatter = formatter.debug_struct("Attribute");
    +        formatter.field("pound_token", &self.pound_token);
    +        formatter.field("style", &self.style);
    +        formatter.field("bracket_token", &self.bracket_token);
    +        formatter.field("meta", &self.meta);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for BareFnArg {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::BareFnArg {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("BareFnArg");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("name", &self.name);
    -        formatter.field("ty", &self.ty);
    +        let mut formatter = formatter.debug_struct("BareFnArg");
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("name", &self.name);
    +        formatter.field("ty", &self.ty);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for BinOp {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::BareVariadic {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct("BareVariadic");
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("name", &self.name);
    +        formatter.field("dots", &self.dots);
    +        formatter.field("comma", &self.comma);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::BinOp {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("BinOp::")?;
             match self {
    -            BinOp::Add(v0) => {
    -                let mut formatter = formatter.debug_tuple("Add");
    +            crate::BinOp::Add(v0) => {
    +                let mut formatter = formatter.debug_tuple("Add");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            BinOp::Sub(v0) => {
    -                let mut formatter = formatter.debug_tuple("Sub");
    +            crate::BinOp::Sub(v0) => {
    +                let mut formatter = formatter.debug_tuple("Sub");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            BinOp::Mul(v0) => {
    -                let mut formatter = formatter.debug_tuple("Mul");
    +            crate::BinOp::Mul(v0) => {
    +                let mut formatter = formatter.debug_tuple("Mul");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            BinOp::Div(v0) => {
    -                let mut formatter = formatter.debug_tuple("Div");
    +            crate::BinOp::Div(v0) => {
    +                let mut formatter = formatter.debug_tuple("Div");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            BinOp::Rem(v0) => {
    -                let mut formatter = formatter.debug_tuple("Rem");
    +            crate::BinOp::Rem(v0) => {
    +                let mut formatter = formatter.debug_tuple("Rem");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            BinOp::And(v0) => {
    -                let mut formatter = formatter.debug_tuple("And");
    +            crate::BinOp::And(v0) => {
    +                let mut formatter = formatter.debug_tuple("And");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            BinOp::Or(v0) => {
    -                let mut formatter = formatter.debug_tuple("Or");
    +            crate::BinOp::Or(v0) => {
    +                let mut formatter = formatter.debug_tuple("Or");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            BinOp::BitXor(v0) => {
    -                let mut formatter = formatter.debug_tuple("BitXor");
    +            crate::BinOp::BitXor(v0) => {
    +                let mut formatter = formatter.debug_tuple("BitXor");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            BinOp::BitAnd(v0) => {
    -                let mut formatter = formatter.debug_tuple("BitAnd");
    +            crate::BinOp::BitAnd(v0) => {
    +                let mut formatter = formatter.debug_tuple("BitAnd");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            BinOp::BitOr(v0) => {
    -                let mut formatter = formatter.debug_tuple("BitOr");
    +            crate::BinOp::BitOr(v0) => {
    +                let mut formatter = formatter.debug_tuple("BitOr");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            BinOp::Shl(v0) => {
    -                let mut formatter = formatter.debug_tuple("Shl");
    +            crate::BinOp::Shl(v0) => {
    +                let mut formatter = formatter.debug_tuple("Shl");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            BinOp::Shr(v0) => {
    -                let mut formatter = formatter.debug_tuple("Shr");
    +            crate::BinOp::Shr(v0) => {
    +                let mut formatter = formatter.debug_tuple("Shr");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            BinOp::Eq(v0) => {
    -                let mut formatter = formatter.debug_tuple("Eq");
    +            crate::BinOp::Eq(v0) => {
    +                let mut formatter = formatter.debug_tuple("Eq");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            BinOp::Lt(v0) => {
    -                let mut formatter = formatter.debug_tuple("Lt");
    +            crate::BinOp::Lt(v0) => {
    +                let mut formatter = formatter.debug_tuple("Lt");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            BinOp::Le(v0) => {
    -                let mut formatter = formatter.debug_tuple("Le");
    +            crate::BinOp::Le(v0) => {
    +                let mut formatter = formatter.debug_tuple("Le");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            BinOp::Ne(v0) => {
    -                let mut formatter = formatter.debug_tuple("Ne");
    +            crate::BinOp::Ne(v0) => {
    +                let mut formatter = formatter.debug_tuple("Ne");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            BinOp::Ge(v0) => {
    -                let mut formatter = formatter.debug_tuple("Ge");
    +            crate::BinOp::Ge(v0) => {
    +                let mut formatter = formatter.debug_tuple("Ge");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            BinOp::Gt(v0) => {
    -                let mut formatter = formatter.debug_tuple("Gt");
    +            crate::BinOp::Gt(v0) => {
    +                let mut formatter = formatter.debug_tuple("Gt");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            BinOp::AddEq(v0) => {
    -                let mut formatter = formatter.debug_tuple("AddEq");
    +            crate::BinOp::AddAssign(v0) => {
    +                let mut formatter = formatter.debug_tuple("AddAssign");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            BinOp::SubEq(v0) => {
    -                let mut formatter = formatter.debug_tuple("SubEq");
    +            crate::BinOp::SubAssign(v0) => {
    +                let mut formatter = formatter.debug_tuple("SubAssign");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            BinOp::MulEq(v0) => {
    -                let mut formatter = formatter.debug_tuple("MulEq");
    +            crate::BinOp::MulAssign(v0) => {
    +                let mut formatter = formatter.debug_tuple("MulAssign");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            BinOp::DivEq(v0) => {
    -                let mut formatter = formatter.debug_tuple("DivEq");
    +            crate::BinOp::DivAssign(v0) => {
    +                let mut formatter = formatter.debug_tuple("DivAssign");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            BinOp::RemEq(v0) => {
    -                let mut formatter = formatter.debug_tuple("RemEq");
    +            crate::BinOp::RemAssign(v0) => {
    +                let mut formatter = formatter.debug_tuple("RemAssign");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            BinOp::BitXorEq(v0) => {
    -                let mut formatter = formatter.debug_tuple("BitXorEq");
    +            crate::BinOp::BitXorAssign(v0) => {
    +                let mut formatter = formatter.debug_tuple("BitXorAssign");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            BinOp::BitAndEq(v0) => {
    -                let mut formatter = formatter.debug_tuple("BitAndEq");
    +            crate::BinOp::BitAndAssign(v0) => {
    +                let mut formatter = formatter.debug_tuple("BitAndAssign");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            BinOp::BitOrEq(v0) => {
    -                let mut formatter = formatter.debug_tuple("BitOrEq");
    +            crate::BinOp::BitOrAssign(v0) => {
    +                let mut formatter = formatter.debug_tuple("BitOrAssign");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            BinOp::ShlEq(v0) => {
    -                let mut formatter = formatter.debug_tuple("ShlEq");
    +            crate::BinOp::ShlAssign(v0) => {
    +                let mut formatter = formatter.debug_tuple("ShlAssign");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            BinOp::ShrEq(v0) => {
    -                let mut formatter = formatter.debug_tuple("ShrEq");
    +            crate::BinOp::ShrAssign(v0) => {
    +                let mut formatter = formatter.debug_tuple("ShrAssign");
                     formatter.field(v0);
                     formatter.finish()
                 }
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Binding {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::Block {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("Binding");
    -        formatter.field("ident", &self.ident);
    -        formatter.field("eq_token", &self.eq_token);
    -        formatter.field("ty", &self.ty);
    +        let mut formatter = formatter.debug_struct("Block");
    +        formatter.field("brace_token", &self.brace_token);
    +        formatter.field("stmts", &self.stmts);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Block {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::BoundLifetimes {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("Block");
    -        formatter.field("brace_token", &self.brace_token);
    -        formatter.field("stmts", &self.stmts);
    +        let mut formatter = formatter.debug_struct("BoundLifetimes");
    +        formatter.field("for_token", &self.for_token);
    +        formatter.field("lt_token", &self.lt_token);
    +        formatter.field("lifetimes", &self.lifetimes);
    +        formatter.field("gt_token", &self.gt_token);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for BoundLifetimes {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("BoundLifetimes");
    -        formatter.field("for_token", &self.for_token);
    -        formatter.field("lt_token", &self.lt_token);
    -        formatter.field("lifetimes", &self.lifetimes);
    -        formatter.field("gt_token", &self.gt_token);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ConstParam {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ConstParam");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("const_token", &self.const_token);
    -        formatter.field("ident", &self.ident);
    -        formatter.field("colon_token", &self.colon_token);
    -        formatter.field("ty", &self.ty);
    -        formatter.field("eq_token", &self.eq_token);
    -        formatter.field("default", &self.default);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Constraint {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("Constraint");
    -        formatter.field("ident", &self.ident);
    -        formatter.field("colon_token", &self.colon_token);
    -        formatter.field("bounds", &self.bounds);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "derive")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Data {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::CapturedParam {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("CapturedParam::")?;
             match self {
    -            Data::Struct(v0) => {
    -                let mut formatter = formatter.debug_tuple("Struct");
    +            crate::CapturedParam::Lifetime(v0) => {
    +                let mut formatter = formatter.debug_tuple("Lifetime");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            Data::Enum(v0) => {
    -                let mut formatter = formatter.debug_tuple("Enum");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Data::Union(v0) => {
    -                let mut formatter = formatter.debug_tuple("Union");
    +            crate::CapturedParam::Ident(v0) => {
    +                let mut formatter = formatter.debug_tuple("Ident");
                     formatter.field(v0);
                     formatter.finish()
                 }
             }
         }
     }
    -#[cfg(feature = "derive")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for DataEnum {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ConstParam {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("DataEnum");
    -        formatter.field("enum_token", &self.enum_token);
    -        formatter.field("brace_token", &self.brace_token);
    -        formatter.field("variants", &self.variants);
    +        let mut formatter = formatter.debug_struct("ConstParam");
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("const_token", &self.const_token);
    +        formatter.field("ident", &self.ident);
    +        formatter.field("colon_token", &self.colon_token);
    +        formatter.field("ty", &self.ty);
    +        formatter.field("eq_token", &self.eq_token);
    +        formatter.field("default", &self.default);
             formatter.finish()
         }
     }
    -#[cfg(feature = "derive")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for DataStruct {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::Constraint {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("DataStruct");
    -        formatter.field("struct_token", &self.struct_token);
    -        formatter.field("fields", &self.fields);
    -        formatter.field("semi_token", &self.semi_token);
    +        let mut formatter = formatter.debug_struct("Constraint");
    +        formatter.field("ident", &self.ident);
    +        formatter.field("generics", &self.generics);
    +        formatter.field("colon_token", &self.colon_token);
    +        formatter.field("bounds", &self.bounds);
             formatter.finish()
         }
     }
    -#[cfg(feature = "derive")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for DataUnion {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("DataUnion");
    -        formatter.field("union_token", &self.union_token);
    -        formatter.field("fields", &self.fields);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "derive")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for DeriveInput {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("DeriveInput");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("vis", &self.vis);
    -        formatter.field("ident", &self.ident);
    -        formatter.field("generics", &self.generics);
    -        formatter.field("data", &self.data);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Expr {
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::Data {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("Data::")?;
             match self {
    -            #[cfg(feature = "full")]
    -            Expr::Array(v0) => {
    -                let mut formatter = formatter.debug_tuple("Array");
    +            crate::Data::Struct(v0) => v0.debug(formatter, "Struct"),
    +            crate::Data::Enum(v0) => v0.debug(formatter, "Enum"),
    +            crate::Data::Union(v0) => v0.debug(formatter, "Union"),
    +        }
    +    }
    +}
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::DataEnum {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "DataEnum")
    +    }
    +}
    +#[cfg(feature = "derive")]
    +impl crate::DataEnum {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("enum_token", &self.enum_token);
    +        formatter.field("brace_token", &self.brace_token);
    +        formatter.field("variants", &self.variants);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::DataStruct {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "DataStruct")
    +    }
    +}
    +#[cfg(feature = "derive")]
    +impl crate::DataStruct {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("struct_token", &self.struct_token);
    +        formatter.field("fields", &self.fields);
    +        formatter.field("semi_token", &self.semi_token);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::DataUnion {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "DataUnion")
    +    }
    +}
    +#[cfg(feature = "derive")]
    +impl crate::DataUnion {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("union_token", &self.union_token);
    +        formatter.field("fields", &self.fields);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::DeriveInput {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct("DeriveInput");
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("vis", &self.vis);
    +        formatter.field("ident", &self.ident);
    +        formatter.field("generics", &self.generics);
    +        formatter.field("data", &self.data);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::Expr {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("Expr::")?;
    +        match self {
    +            #[cfg(feature = "full")]
    +            crate::Expr::Array(v0) => v0.debug(formatter, "Array"),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Assign(v0) => v0.debug(formatter, "Assign"),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Async(v0) => v0.debug(formatter, "Async"),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Await(v0) => v0.debug(formatter, "Await"),
    +            crate::Expr::Binary(v0) => v0.debug(formatter, "Binary"),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Block(v0) => v0.debug(formatter, "Block"),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Break(v0) => v0.debug(formatter, "Break"),
    +            crate::Expr::Call(v0) => v0.debug(formatter, "Call"),
    +            crate::Expr::Cast(v0) => v0.debug(formatter, "Cast"),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Closure(v0) => v0.debug(formatter, "Closure"),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Const(v0) => v0.debug(formatter, "Const"),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Continue(v0) => v0.debug(formatter, "Continue"),
    +            crate::Expr::Field(v0) => v0.debug(formatter, "Field"),
    +            #[cfg(feature = "full")]
    +            crate::Expr::ForLoop(v0) => v0.debug(formatter, "ForLoop"),
    +            crate::Expr::Group(v0) => v0.debug(formatter, "Group"),
    +            #[cfg(feature = "full")]
    +            crate::Expr::If(v0) => v0.debug(formatter, "If"),
    +            crate::Expr::Index(v0) => v0.debug(formatter, "Index"),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Infer(v0) => v0.debug(formatter, "Infer"),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Let(v0) => v0.debug(formatter, "Let"),
    +            crate::Expr::Lit(v0) => v0.debug(formatter, "Lit"),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Loop(v0) => v0.debug(formatter, "Loop"),
    +            crate::Expr::Macro(v0) => v0.debug(formatter, "Macro"),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Match(v0) => v0.debug(formatter, "Match"),
    +            crate::Expr::MethodCall(v0) => v0.debug(formatter, "MethodCall"),
    +            crate::Expr::Paren(v0) => v0.debug(formatter, "Paren"),
    +            crate::Expr::Path(v0) => v0.debug(formatter, "Path"),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Range(v0) => v0.debug(formatter, "Range"),
    +            #[cfg(feature = "full")]
    +            crate::Expr::RawAddr(v0) => v0.debug(formatter, "RawAddr"),
    +            crate::Expr::Reference(v0) => v0.debug(formatter, "Reference"),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Repeat(v0) => v0.debug(formatter, "Repeat"),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Return(v0) => v0.debug(formatter, "Return"),
    +            crate::Expr::Struct(v0) => v0.debug(formatter, "Struct"),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Try(v0) => v0.debug(formatter, "Try"),
    +            #[cfg(feature = "full")]
    +            crate::Expr::TryBlock(v0) => v0.debug(formatter, "TryBlock"),
    +            crate::Expr::Tuple(v0) => v0.debug(formatter, "Tuple"),
    +            crate::Expr::Unary(v0) => v0.debug(formatter, "Unary"),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Unsafe(v0) => v0.debug(formatter, "Unsafe"),
    +            crate::Expr::Verbatim(v0) => {
    +                let mut formatter = formatter.debug_tuple("Verbatim");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            #[cfg(feature = "full")]
    -            Expr::Assign(v0) => {
    -                let mut formatter = formatter.debug_tuple("Assign");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(feature = "full")]
    -            Expr::AssignOp(v0) => {
    -                let mut formatter = formatter.debug_tuple("AssignOp");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(feature = "full")]
    -            Expr::Async(v0) => {
    -                let mut formatter = formatter.debug_tuple("Async");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(feature = "full")]
    -            Expr::Await(v0) => {
    -                let mut formatter = formatter.debug_tuple("Await");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Expr::Binary(v0) => {
    -                let mut formatter = formatter.debug_tuple("Binary");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(feature = "full")]
    -            Expr::Block(v0) => {
    -                let mut formatter = formatter.debug_tuple("Block");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(feature = "full")]
    -            Expr::Box(v0) => {
    -                let mut formatter = formatter.debug_tuple("Box");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(feature = "full")]
    -            Expr::Break(v0) => {
    -                let mut formatter = formatter.debug_tuple("Break");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Expr::Call(v0) => {
    -                let mut formatter = formatter.debug_tuple("Call");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Expr::Cast(v0) => {
    -                let mut formatter = formatter.debug_tuple("Cast");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(feature = "full")]
    -            Expr::Closure(v0) => {
    -                let mut formatter = formatter.debug_tuple("Closure");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(feature = "full")]
    -            Expr::Continue(v0) => {
    -                let mut formatter = formatter.debug_tuple("Continue");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Expr::Field(v0) => {
    -                let mut formatter = formatter.debug_tuple("Field");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(feature = "full")]
    -            Expr::ForLoop(v0) => {
    -                let mut formatter = formatter.debug_tuple("ForLoop");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(feature = "full")]
    -            Expr::Group(v0) => {
    -                let mut formatter = formatter.debug_tuple("Group");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(feature = "full")]
    -            Expr::If(v0) => {
    -                let mut formatter = formatter.debug_tuple("If");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Expr::Index(v0) => {
    -                let mut formatter = formatter.debug_tuple("Index");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(feature = "full")]
    -            Expr::Let(v0) => {
    -                let mut formatter = formatter.debug_tuple("Let");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Expr::Lit(v0) => {
    -                let mut formatter = formatter.debug_tuple("Lit");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(feature = "full")]
    -            Expr::Loop(v0) => {
    -                let mut formatter = formatter.debug_tuple("Loop");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(feature = "full")]
    -            Expr::Macro(v0) => {
    -                let mut formatter = formatter.debug_tuple("Macro");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(feature = "full")]
    -            Expr::Match(v0) => {
    -                let mut formatter = formatter.debug_tuple("Match");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(feature = "full")]
    -            Expr::MethodCall(v0) => {
    -                let mut formatter = formatter.debug_tuple("MethodCall");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Expr::Paren(v0) => {
    -                let mut formatter = formatter.debug_tuple("Paren");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Expr::Path(v0) => {
    -                let mut formatter = formatter.debug_tuple("Path");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(feature = "full")]
    -            Expr::Range(v0) => {
    -                let mut formatter = formatter.debug_tuple("Range");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(feature = "full")]
    -            Expr::Reference(v0) => {
    -                let mut formatter = formatter.debug_tuple("Reference");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(feature = "full")]
    -            Expr::Repeat(v0) => {
    -                let mut formatter = formatter.debug_tuple("Repeat");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(feature = "full")]
    -            Expr::Return(v0) => {
    -                let mut formatter = formatter.debug_tuple("Return");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(feature = "full")]
    -            Expr::Struct(v0) => {
    -                let mut formatter = formatter.debug_tuple("Struct");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(feature = "full")]
    -            Expr::Try(v0) => {
    -                let mut formatter = formatter.debug_tuple("Try");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(feature = "full")]
    -            Expr::TryBlock(v0) => {
    -                let mut formatter = formatter.debug_tuple("TryBlock");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(feature = "full")]
    -            Expr::Tuple(v0) => {
    -                let mut formatter = formatter.debug_tuple("Tuple");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(feature = "full")]
    -            Expr::Type(v0) => {
    -                let mut formatter = formatter.debug_tuple("Type");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Expr::Unary(v0) => {
    -                let mut formatter = formatter.debug_tuple("Unary");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(feature = "full")]
    -            Expr::Unsafe(v0) => {
    -                let mut formatter = formatter.debug_tuple("Unsafe");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Expr::Verbatim(v0) => {
    -                let mut formatter = formatter.debug_tuple("Verbatim");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(feature = "full")]
    -            Expr::While(v0) => {
    -                let mut formatter = formatter.debug_tuple("While");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(feature = "full")]
    -            Expr::Yield(v0) => {
    -                let mut formatter = formatter.debug_tuple("Yield");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(any(syn_no_non_exhaustive, not(feature = "full")))]
    +            #[cfg(feature = "full")]
    +            crate::Expr::While(v0) => v0.debug(formatter, "While"),
    +            #[cfg(feature = "full")]
    +            crate::Expr::Yield(v0) => v0.debug(formatter, "Yield"),
    +            #[cfg(not(feature = "full"))]
                 _ => unreachable!(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprArray {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprArray {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprArray");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("bracket_token", &self.bracket_token);
    -        formatter.field("elems", &self.elems);
    +        self.debug(formatter, "ExprArray")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ExprArray {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("bracket_token", &self.bracket_token);
    +        formatter.field("elems", &self.elems);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprAssign {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprAssign {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprAssign");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("left", &self.left);
    -        formatter.field("eq_token", &self.eq_token);
    -        formatter.field("right", &self.right);
    +        self.debug(formatter, "ExprAssign")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ExprAssign {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("left", &self.left);
    +        formatter.field("eq_token", &self.eq_token);
    +        formatter.field("right", &self.right);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprAssignOp {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprAsync {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprAssignOp");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("left", &self.left);
    -        formatter.field("op", &self.op);
    -        formatter.field("right", &self.right);
    +        self.debug(formatter, "ExprAsync")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ExprAsync {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("async_token", &self.async_token);
    +        formatter.field("capture", &self.capture);
    +        formatter.field("block", &self.block);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprAsync {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprAwait {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprAsync");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("async_token", &self.async_token);
    -        formatter.field("capture", &self.capture);
    -        formatter.field("block", &self.block);
    +        self.debug(formatter, "ExprAwait")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ExprAwait {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("base", &self.base);
    +        formatter.field("dot_token", &self.dot_token);
    +        formatter.field("await_token", &self.await_token);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprAwait {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprBinary {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprAwait");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("base", &self.base);
    -        formatter.field("dot_token", &self.dot_token);
    -        formatter.field("await_token", &self.await_token);
    +        self.debug(formatter, "ExprBinary")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::ExprBinary {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("left", &self.left);
    +        formatter.field("op", &self.op);
    +        formatter.field("right", &self.right);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprBinary {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprBlock {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprBinary");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("left", &self.left);
    -        formatter.field("op", &self.op);
    -        formatter.field("right", &self.right);
    +        self.debug(formatter, "ExprBlock")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ExprBlock {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("label", &self.label);
    +        formatter.field("block", &self.block);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprBlock {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprBreak {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprBlock");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("label", &self.label);
    -        formatter.field("block", &self.block);
    +        self.debug(formatter, "ExprBreak")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ExprBreak {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("break_token", &self.break_token);
    +        formatter.field("label", &self.label);
    +        formatter.field("expr", &self.expr);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprBox {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprCall {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprBox");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("box_token", &self.box_token);
    -        formatter.field("expr", &self.expr);
    +        self.debug(formatter, "ExprCall")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::ExprCall {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("func", &self.func);
    +        formatter.field("paren_token", &self.paren_token);
    +        formatter.field("args", &self.args);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprBreak {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprCast {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprBreak");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("break_token", &self.break_token);
    -        formatter.field("label", &self.label);
    -        formatter.field("expr", &self.expr);
    +        self.debug(formatter, "ExprCast")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::ExprCast {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("expr", &self.expr);
    +        formatter.field("as_token", &self.as_token);
    +        formatter.field("ty", &self.ty);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprCall {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprClosure {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprCall");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("func", &self.func);
    -        formatter.field("paren_token", &self.paren_token);
    -        formatter.field("args", &self.args);
    +        self.debug(formatter, "ExprClosure")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ExprClosure {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("lifetimes", &self.lifetimes);
    +        formatter.field("constness", &self.constness);
    +        formatter.field("movability", &self.movability);
    +        formatter.field("asyncness", &self.asyncness);
    +        formatter.field("capture", &self.capture);
    +        formatter.field("or1_token", &self.or1_token);
    +        formatter.field("inputs", &self.inputs);
    +        formatter.field("or2_token", &self.or2_token);
    +        formatter.field("output", &self.output);
    +        formatter.field("body", &self.body);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprCast {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprConst {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprCast");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("expr", &self.expr);
    -        formatter.field("as_token", &self.as_token);
    -        formatter.field("ty", &self.ty);
    +        self.debug(formatter, "ExprConst")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ExprConst {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("const_token", &self.const_token);
    +        formatter.field("block", &self.block);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprClosure {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprContinue {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprClosure");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("movability", &self.movability);
    -        formatter.field("asyncness", &self.asyncness);
    -        formatter.field("capture", &self.capture);
    -        formatter.field("or1_token", &self.or1_token);
    -        formatter.field("inputs", &self.inputs);
    -        formatter.field("or2_token", &self.or2_token);
    -        formatter.field("output", &self.output);
    -        formatter.field("body", &self.body);
    +        self.debug(formatter, "ExprContinue")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ExprContinue {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("continue_token", &self.continue_token);
    +        formatter.field("label", &self.label);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprContinue {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprField {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprContinue");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("continue_token", &self.continue_token);
    -        formatter.field("label", &self.label);
    +        self.debug(formatter, "ExprField")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::ExprField {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("base", &self.base);
    +        formatter.field("dot_token", &self.dot_token);
    +        formatter.field("member", &self.member);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprField {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprForLoop {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprField");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("base", &self.base);
    -        formatter.field("dot_token", &self.dot_token);
    -        formatter.field("member", &self.member);
    +        self.debug(formatter, "ExprForLoop")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ExprForLoop {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("label", &self.label);
    +        formatter.field("for_token", &self.for_token);
    +        formatter.field("pat", &self.pat);
    +        formatter.field("in_token", &self.in_token);
    +        formatter.field("expr", &self.expr);
    +        formatter.field("body", &self.body);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprForLoop {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprGroup {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprForLoop");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("label", &self.label);
    -        formatter.field("for_token", &self.for_token);
    -        formatter.field("pat", &self.pat);
    -        formatter.field("in_token", &self.in_token);
    -        formatter.field("expr", &self.expr);
    -        formatter.field("body", &self.body);
    +        self.debug(formatter, "ExprGroup")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::ExprGroup {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("group_token", &self.group_token);
    +        formatter.field("expr", &self.expr);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprGroup {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprIf {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprGroup");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("group_token", &self.group_token);
    -        formatter.field("expr", &self.expr);
    +        self.debug(formatter, "ExprIf")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ExprIf {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("if_token", &self.if_token);
    +        formatter.field("cond", &self.cond);
    +        formatter.field("then_branch", &self.then_branch);
    +        formatter.field("else_branch", &self.else_branch);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprIf {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprIndex {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprIf");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("if_token", &self.if_token);
    -        formatter.field("cond", &self.cond);
    -        formatter.field("then_branch", &self.then_branch);
    -        formatter.field("else_branch", &self.else_branch);
    +        self.debug(formatter, "ExprIndex")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::ExprIndex {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("expr", &self.expr);
    +        formatter.field("bracket_token", &self.bracket_token);
    +        formatter.field("index", &self.index);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprIndex {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprInfer {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprIndex");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("expr", &self.expr);
    -        formatter.field("bracket_token", &self.bracket_token);
    -        formatter.field("index", &self.index);
    +        self.debug(formatter, "ExprInfer")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ExprInfer {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("underscore_token", &self.underscore_token);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprLet {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprLet {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprLet");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("let_token", &self.let_token);
    -        formatter.field("pat", &self.pat);
    -        formatter.field("eq_token", &self.eq_token);
    -        formatter.field("expr", &self.expr);
    +        self.debug(formatter, "ExprLet")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ExprLet {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("let_token", &self.let_token);
    +        formatter.field("pat", &self.pat);
    +        formatter.field("eq_token", &self.eq_token);
    +        formatter.field("expr", &self.expr);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprLit {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprLit {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprLit");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("lit", &self.lit);
    +        self.debug(formatter, "ExprLit")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::ExprLit {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("lit", &self.lit);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprLoop {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprLoop {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprLoop");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("label", &self.label);
    -        formatter.field("loop_token", &self.loop_token);
    -        formatter.field("body", &self.body);
    +        self.debug(formatter, "ExprLoop")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ExprLoop {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("label", &self.label);
    +        formatter.field("loop_token", &self.loop_token);
    +        formatter.field("body", &self.body);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprMacro {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprMacro {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprMacro");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("mac", &self.mac);
    +        self.debug(formatter, "ExprMacro")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::ExprMacro {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("mac", &self.mac);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprMatch {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprMatch {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprMatch");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("match_token", &self.match_token);
    -        formatter.field("expr", &self.expr);
    -        formatter.field("brace_token", &self.brace_token);
    -        formatter.field("arms", &self.arms);
    +        self.debug(formatter, "ExprMatch")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ExprMatch {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("match_token", &self.match_token);
    +        formatter.field("expr", &self.expr);
    +        formatter.field("brace_token", &self.brace_token);
    +        formatter.field("arms", &self.arms);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprMethodCall {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprMethodCall {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprMethodCall");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("receiver", &self.receiver);
    -        formatter.field("dot_token", &self.dot_token);
    -        formatter.field("method", &self.method);
    -        formatter.field("turbofish", &self.turbofish);
    -        formatter.field("paren_token", &self.paren_token);
    -        formatter.field("args", &self.args);
    +        self.debug(formatter, "ExprMethodCall")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::ExprMethodCall {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("receiver", &self.receiver);
    +        formatter.field("dot_token", &self.dot_token);
    +        formatter.field("method", &self.method);
    +        formatter.field("turbofish", &self.turbofish);
    +        formatter.field("paren_token", &self.paren_token);
    +        formatter.field("args", &self.args);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprParen {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprParen {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprParen");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("paren_token", &self.paren_token);
    -        formatter.field("expr", &self.expr);
    +        self.debug(formatter, "ExprParen")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::ExprParen {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("paren_token", &self.paren_token);
    +        formatter.field("expr", &self.expr);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprPath {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprPath {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprPath");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("qself", &self.qself);
    -        formatter.field("path", &self.path);
    +        self.debug(formatter, "ExprPath")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::ExprPath {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("qself", &self.qself);
    +        formatter.field("path", &self.path);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprRange {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprRange {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprRange");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("from", &self.from);
    -        formatter.field("limits", &self.limits);
    -        formatter.field("to", &self.to);
    +        self.debug(formatter, "ExprRange")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ExprRange {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("start", &self.start);
    +        formatter.field("limits", &self.limits);
    +        formatter.field("end", &self.end);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprReference {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprRawAddr {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprReference");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("and_token", &self.and_token);
    -        formatter.field("raw", &self.raw);
    -        formatter.field("mutability", &self.mutability);
    -        formatter.field("expr", &self.expr);
    +        self.debug(formatter, "ExprRawAddr")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ExprRawAddr {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("and_token", &self.and_token);
    +        formatter.field("raw", &self.raw);
    +        formatter.field("mutability", &self.mutability);
    +        formatter.field("expr", &self.expr);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprRepeat {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprReference {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprRepeat");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("bracket_token", &self.bracket_token);
    -        formatter.field("expr", &self.expr);
    -        formatter.field("semi_token", &self.semi_token);
    -        formatter.field("len", &self.len);
    +        self.debug(formatter, "ExprReference")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::ExprReference {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("and_token", &self.and_token);
    +        formatter.field("mutability", &self.mutability);
    +        formatter.field("expr", &self.expr);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprReturn {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprRepeat {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprReturn");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("return_token", &self.return_token);
    -        formatter.field("expr", &self.expr);
    +        self.debug(formatter, "ExprRepeat")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ExprRepeat {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("bracket_token", &self.bracket_token);
    +        formatter.field("expr", &self.expr);
    +        formatter.field("semi_token", &self.semi_token);
    +        formatter.field("len", &self.len);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprStruct {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprReturn {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprStruct");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("path", &self.path);
    -        formatter.field("brace_token", &self.brace_token);
    -        formatter.field("fields", &self.fields);
    -        formatter.field("dot2_token", &self.dot2_token);
    -        formatter.field("rest", &self.rest);
    +        self.debug(formatter, "ExprReturn")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ExprReturn {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("return_token", &self.return_token);
    +        formatter.field("expr", &self.expr);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprTry {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprStruct {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprTry");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("expr", &self.expr);
    -        formatter.field("question_token", &self.question_token);
    +        self.debug(formatter, "ExprStruct")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::ExprStruct {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("qself", &self.qself);
    +        formatter.field("path", &self.path);
    +        formatter.field("brace_token", &self.brace_token);
    +        formatter.field("fields", &self.fields);
    +        formatter.field("dot2_token", &self.dot2_token);
    +        formatter.field("rest", &self.rest);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprTryBlock {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprTry {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprTryBlock");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("try_token", &self.try_token);
    -        formatter.field("block", &self.block);
    +        self.debug(formatter, "ExprTry")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ExprTry {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("expr", &self.expr);
    +        formatter.field("question_token", &self.question_token);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprTuple {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprTryBlock {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprTuple");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("paren_token", &self.paren_token);
    -        formatter.field("elems", &self.elems);
    +        self.debug(formatter, "ExprTryBlock")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ExprTryBlock {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("try_token", &self.try_token);
    +        formatter.field("block", &self.block);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprType {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprTuple {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprType");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("expr", &self.expr);
    -        formatter.field("colon_token", &self.colon_token);
    -        formatter.field("ty", &self.ty);
    +        self.debug(formatter, "ExprTuple")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::ExprTuple {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("paren_token", &self.paren_token);
    +        formatter.field("elems", &self.elems);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprUnary {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprUnary {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprUnary");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("op", &self.op);
    -        formatter.field("expr", &self.expr);
    +        self.debug(formatter, "ExprUnary")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::ExprUnary {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("op", &self.op);
    +        formatter.field("expr", &self.expr);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprUnsafe {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprUnsafe {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprUnsafe");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("unsafe_token", &self.unsafe_token);
    -        formatter.field("block", &self.block);
    +        self.debug(formatter, "ExprUnsafe")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ExprUnsafe {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("unsafe_token", &self.unsafe_token);
    +        formatter.field("block", &self.block);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprWhile {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprWhile {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprWhile");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("label", &self.label);
    -        formatter.field("while_token", &self.while_token);
    -        formatter.field("cond", &self.cond);
    -        formatter.field("body", &self.body);
    +        self.debug(formatter, "ExprWhile")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ExprWhile {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("label", &self.label);
    +        formatter.field("while_token", &self.while_token);
    +        formatter.field("cond", &self.cond);
    +        formatter.field("body", &self.body);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ExprYield {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ExprYield {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ExprYield");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("yield_token", &self.yield_token);
    -        formatter.field("expr", &self.expr);
    +        self.debug(formatter, "ExprYield")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ExprYield {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("yield_token", &self.yield_token);
    +        formatter.field("expr", &self.expr);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Field {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::Field {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("Field");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("vis", &self.vis);
    -        formatter.field("ident", &self.ident);
    -        formatter.field("colon_token", &self.colon_token);
    -        formatter.field("ty", &self.ty);
    +        let mut formatter = formatter.debug_struct("Field");
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("vis", &self.vis);
    +        formatter.field("mutability", &self.mutability);
    +        formatter.field("ident", &self.ident);
    +        formatter.field("colon_token", &self.colon_token);
    +        formatter.field("ty", &self.ty);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for FieldPat {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("FieldPat");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("member", &self.member);
    -        formatter.field("colon_token", &self.colon_token);
    -        formatter.field("pat", &self.pat);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for FieldValue {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("FieldValue");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("member", &self.member);
    -        formatter.field("colon_token", &self.colon_token);
    -        formatter.field("expr", &self.expr);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Fields {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::FieldMutability {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("FieldMutability::")?;
             match self {
    -            Fields::Named(v0) => {
    -                let mut formatter = formatter.debug_tuple("Named");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Fields::Unnamed(v0) => {
    -                let mut formatter = formatter.debug_tuple("Unnamed");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Fields::Unit => formatter.write_str("Unit"),
    +            crate::FieldMutability::None => formatter.write_str("None"),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for FieldsNamed {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::FieldPat {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("FieldsNamed");
    -        formatter.field("brace_token", &self.brace_token);
    -        formatter.field("named", &self.named);
    +        let mut formatter = formatter.debug_struct("FieldPat");
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("member", &self.member);
    +        formatter.field("colon_token", &self.colon_token);
    +        formatter.field("pat", &self.pat);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for FieldsUnnamed {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::FieldValue {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("FieldsUnnamed");
    -        formatter.field("paren_token", &self.paren_token);
    -        formatter.field("unnamed", &self.unnamed);
    +        let mut formatter = formatter.debug_struct("FieldValue");
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("member", &self.member);
    +        formatter.field("colon_token", &self.colon_token);
    +        formatter.field("expr", &self.expr);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for File {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("File");
    -        formatter.field("shebang", &self.shebang);
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("items", &self.items);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for FnArg {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::Fields {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("Fields::")?;
             match self {
    -            FnArg::Receiver(v0) => {
    -                let mut formatter = formatter.debug_tuple("Receiver");
    +            crate::Fields::Named(v0) => v0.debug(formatter, "Named"),
    +            crate::Fields::Unnamed(v0) => v0.debug(formatter, "Unnamed"),
    +            crate::Fields::Unit => formatter.write_str("Unit"),
    +        }
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::FieldsNamed {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "FieldsNamed")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::FieldsNamed {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("brace_token", &self.brace_token);
    +        formatter.field("named", &self.named);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::FieldsUnnamed {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "FieldsUnnamed")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::FieldsUnnamed {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("paren_token", &self.paren_token);
    +        formatter.field("unnamed", &self.unnamed);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::File {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct("File");
    +        formatter.field("shebang", &self.shebang);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("items", &self.items);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::FnArg {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("FnArg::")?;
    +        match self {
    +            crate::FnArg::Receiver(v0) => {
    +                let mut formatter = formatter.debug_tuple("Receiver");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            FnArg::Typed(v0) => {
    -                let mut formatter = formatter.debug_tuple("Typed");
    +            crate::FnArg::Typed(v0) => {
    +                let mut formatter = formatter.debug_tuple("Typed");
                     formatter.field(v0);
                     formatter.finish()
                 }
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ForeignItem {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ForeignItem {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("ForeignItem::")?;
             match self {
    -            ForeignItem::Fn(v0) => {
    -                let mut formatter = formatter.debug_tuple("Fn");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            ForeignItem::Static(v0) => {
    -                let mut formatter = formatter.debug_tuple("Static");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            ForeignItem::Type(v0) => {
    -                let mut formatter = formatter.debug_tuple("Type");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            ForeignItem::Macro(v0) => {
    -                let mut formatter = formatter.debug_tuple("Macro");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            ForeignItem::Verbatim(v0) => {
    -                let mut formatter = formatter.debug_tuple("Verbatim");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(syn_no_non_exhaustive)]
    -            _ => unreachable!(),
    -        }
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ForeignItemFn {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ForeignItemFn");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("vis", &self.vis);
    -        formatter.field("sig", &self.sig);
    -        formatter.field("semi_token", &self.semi_token);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ForeignItemMacro {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ForeignItemMacro");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("mac", &self.mac);
    -        formatter.field("semi_token", &self.semi_token);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ForeignItemStatic {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ForeignItemStatic");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("vis", &self.vis);
    -        formatter.field("static_token", &self.static_token);
    -        formatter.field("mutability", &self.mutability);
    -        formatter.field("ident", &self.ident);
    -        formatter.field("colon_token", &self.colon_token);
    -        formatter.field("ty", &self.ty);
    -        formatter.field("semi_token", &self.semi_token);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ForeignItemType {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ForeignItemType");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("vis", &self.vis);
    -        formatter.field("type_token", &self.type_token);
    -        formatter.field("ident", &self.ident);
    -        formatter.field("semi_token", &self.semi_token);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for GenericArgument {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        match self {
    -            GenericArgument::Lifetime(v0) => {
    -                let mut formatter = formatter.debug_tuple("Lifetime");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            GenericArgument::Type(v0) => {
    -                let mut formatter = formatter.debug_tuple("Type");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            GenericArgument::Const(v0) => {
    -                let mut formatter = formatter.debug_tuple("Const");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            GenericArgument::Binding(v0) => {
    -                let mut formatter = formatter.debug_tuple("Binding");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            GenericArgument::Constraint(v0) => {
    -                let mut formatter = formatter.debug_tuple("Constraint");
    +            crate::ForeignItem::Fn(v0) => v0.debug(formatter, "Fn"),
    +            crate::ForeignItem::Static(v0) => v0.debug(formatter, "Static"),
    +            crate::ForeignItem::Type(v0) => v0.debug(formatter, "Type"),
    +            crate::ForeignItem::Macro(v0) => v0.debug(formatter, "Macro"),
    +            crate::ForeignItem::Verbatim(v0) => {
    +                let mut formatter = formatter.debug_tuple("Verbatim");
                     formatter.field(v0);
                     formatter.finish()
                 }
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for GenericMethodArgument {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ForeignItemFn {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "ForeignItemFn")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ForeignItemFn {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("vis", &self.vis);
    +        formatter.field("sig", &self.sig);
    +        formatter.field("semi_token", &self.semi_token);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ForeignItemMacro {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "ForeignItemMacro")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ForeignItemMacro {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("mac", &self.mac);
    +        formatter.field("semi_token", &self.semi_token);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ForeignItemStatic {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "ForeignItemStatic")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ForeignItemStatic {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("vis", &self.vis);
    +        formatter.field("static_token", &self.static_token);
    +        formatter.field("mutability", &self.mutability);
    +        formatter.field("ident", &self.ident);
    +        formatter.field("colon_token", &self.colon_token);
    +        formatter.field("ty", &self.ty);
    +        formatter.field("semi_token", &self.semi_token);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ForeignItemType {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "ForeignItemType")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ForeignItemType {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("vis", &self.vis);
    +        formatter.field("type_token", &self.type_token);
    +        formatter.field("ident", &self.ident);
    +        formatter.field("generics", &self.generics);
    +        formatter.field("semi_token", &self.semi_token);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::GenericArgument {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("GenericArgument::")?;
             match self {
    -            GenericMethodArgument::Type(v0) => {
    -                let mut formatter = formatter.debug_tuple("Type");
    +            crate::GenericArgument::Lifetime(v0) => {
    +                let mut formatter = formatter.debug_tuple("Lifetime");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            GenericMethodArgument::Const(v0) => {
    -                let mut formatter = formatter.debug_tuple("Const");
    +            crate::GenericArgument::Type(v0) => {
    +                let mut formatter = formatter.debug_tuple("Type");
    +                formatter.field(v0);
    +                formatter.finish()
    +            }
    +            crate::GenericArgument::Const(v0) => {
    +                let mut formatter = formatter.debug_tuple("Const");
    +                formatter.field(v0);
    +                formatter.finish()
    +            }
    +            crate::GenericArgument::AssocType(v0) => {
    +                let mut formatter = formatter.debug_tuple("AssocType");
    +                formatter.field(v0);
    +                formatter.finish()
    +            }
    +            crate::GenericArgument::AssocConst(v0) => {
    +                let mut formatter = formatter.debug_tuple("AssocConst");
    +                formatter.field(v0);
    +                formatter.finish()
    +            }
    +            crate::GenericArgument::Constraint(v0) => {
    +                let mut formatter = formatter.debug_tuple("Constraint");
                     formatter.field(v0);
                     formatter.finish()
                 }
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for GenericParam {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::GenericParam {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("GenericParam::")?;
             match self {
    -            GenericParam::Type(v0) => {
    -                let mut formatter = formatter.debug_tuple("Type");
    +            crate::GenericParam::Lifetime(v0) => {
    +                let mut formatter = formatter.debug_tuple("Lifetime");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            GenericParam::Lifetime(v0) => {
    -                let mut formatter = formatter.debug_tuple("Lifetime");
    +            crate::GenericParam::Type(v0) => {
    +                let mut formatter = formatter.debug_tuple("Type");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            GenericParam::Const(v0) => {
    -                let mut formatter = formatter.debug_tuple("Const");
    +            crate::GenericParam::Const(v0) => {
    +                let mut formatter = formatter.debug_tuple("Const");
                     formatter.field(v0);
                     formatter.finish()
                 }
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Generics {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::Generics {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("Generics");
    -        formatter.field("lt_token", &self.lt_token);
    -        formatter.field("params", &self.params);
    -        formatter.field("gt_token", &self.gt_token);
    -        formatter.field("where_clause", &self.where_clause);
    +        let mut formatter = formatter.debug_struct("Generics");
    +        formatter.field("lt_token", &self.lt_token);
    +        formatter.field("params", &self.params);
    +        formatter.field("gt_token", &self.gt_token);
    +        formatter.field("where_clause", &self.where_clause);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ImplItem {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ImplItem {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("ImplItem::")?;
             match self {
    -            ImplItem::Const(v0) => {
    -                let mut formatter = formatter.debug_tuple("Const");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            ImplItem::Method(v0) => {
    -                let mut formatter = formatter.debug_tuple("Method");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            ImplItem::Type(v0) => {
    -                let mut formatter = formatter.debug_tuple("Type");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            ImplItem::Macro(v0) => {
    -                let mut formatter = formatter.debug_tuple("Macro");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            ImplItem::Verbatim(v0) => {
    -                let mut formatter = formatter.debug_tuple("Verbatim");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(syn_no_non_exhaustive)]
    -            _ => unreachable!(),
    -        }
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ImplItemConst {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ImplItemConst");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("vis", &self.vis);
    -        formatter.field("defaultness", &self.defaultness);
    -        formatter.field("const_token", &self.const_token);
    -        formatter.field("ident", &self.ident);
    -        formatter.field("colon_token", &self.colon_token);
    -        formatter.field("ty", &self.ty);
    -        formatter.field("eq_token", &self.eq_token);
    -        formatter.field("expr", &self.expr);
    -        formatter.field("semi_token", &self.semi_token);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ImplItemMacro {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ImplItemMacro");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("mac", &self.mac);
    -        formatter.field("semi_token", &self.semi_token);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ImplItemMethod {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ImplItemMethod");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("vis", &self.vis);
    -        formatter.field("defaultness", &self.defaultness);
    -        formatter.field("sig", &self.sig);
    -        formatter.field("block", &self.block);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ImplItemType {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ImplItemType");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("vis", &self.vis);
    -        formatter.field("defaultness", &self.defaultness);
    -        formatter.field("type_token", &self.type_token);
    -        formatter.field("ident", &self.ident);
    -        formatter.field("generics", &self.generics);
    -        formatter.field("eq_token", &self.eq_token);
    -        formatter.field("ty", &self.ty);
    -        formatter.field("semi_token", &self.semi_token);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Index {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("Index");
    -        formatter.field("index", &self.index);
    -        formatter.field("span", &self.span);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Item {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        match self {
    -            Item::Const(v0) => {
    -                let mut formatter = formatter.debug_tuple("Const");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Item::Enum(v0) => {
    -                let mut formatter = formatter.debug_tuple("Enum");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Item::ExternCrate(v0) => {
    -                let mut formatter = formatter.debug_tuple("ExternCrate");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Item::Fn(v0) => {
    -                let mut formatter = formatter.debug_tuple("Fn");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Item::ForeignMod(v0) => {
    -                let mut formatter = formatter.debug_tuple("ForeignMod");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Item::Impl(v0) => {
    -                let mut formatter = formatter.debug_tuple("Impl");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Item::Macro(v0) => {
    -                let mut formatter = formatter.debug_tuple("Macro");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Item::Macro2(v0) => {
    -                let mut formatter = formatter.debug_tuple("Macro2");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Item::Mod(v0) => {
    -                let mut formatter = formatter.debug_tuple("Mod");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Item::Static(v0) => {
    -                let mut formatter = formatter.debug_tuple("Static");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Item::Struct(v0) => {
    -                let mut formatter = formatter.debug_tuple("Struct");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Item::Trait(v0) => {
    -                let mut formatter = formatter.debug_tuple("Trait");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Item::TraitAlias(v0) => {
    -                let mut formatter = formatter.debug_tuple("TraitAlias");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Item::Type(v0) => {
    -                let mut formatter = formatter.debug_tuple("Type");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Item::Union(v0) => {
    -                let mut formatter = formatter.debug_tuple("Union");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Item::Use(v0) => {
    -                let mut formatter = formatter.debug_tuple("Use");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Item::Verbatim(v0) => {
    -                let mut formatter = formatter.debug_tuple("Verbatim");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(syn_no_non_exhaustive)]
    -            _ => unreachable!(),
    -        }
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ItemConst {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ItemConst");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("vis", &self.vis);
    -        formatter.field("const_token", &self.const_token);
    -        formatter.field("ident", &self.ident);
    -        formatter.field("colon_token", &self.colon_token);
    -        formatter.field("ty", &self.ty);
    -        formatter.field("eq_token", &self.eq_token);
    -        formatter.field("expr", &self.expr);
    -        formatter.field("semi_token", &self.semi_token);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ItemEnum {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ItemEnum");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("vis", &self.vis);
    -        formatter.field("enum_token", &self.enum_token);
    -        formatter.field("ident", &self.ident);
    -        formatter.field("generics", &self.generics);
    -        formatter.field("brace_token", &self.brace_token);
    -        formatter.field("variants", &self.variants);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ItemExternCrate {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ItemExternCrate");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("vis", &self.vis);
    -        formatter.field("extern_token", &self.extern_token);
    -        formatter.field("crate_token", &self.crate_token);
    -        formatter.field("ident", &self.ident);
    -        formatter.field("rename", &self.rename);
    -        formatter.field("semi_token", &self.semi_token);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ItemFn {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ItemFn");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("vis", &self.vis);
    -        formatter.field("sig", &self.sig);
    -        formatter.field("block", &self.block);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ItemForeignMod {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ItemForeignMod");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("abi", &self.abi);
    -        formatter.field("brace_token", &self.brace_token);
    -        formatter.field("items", &self.items);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ItemImpl {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ItemImpl");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("defaultness", &self.defaultness);
    -        formatter.field("unsafety", &self.unsafety);
    -        formatter.field("impl_token", &self.impl_token);
    -        formatter.field("generics", &self.generics);
    -        formatter.field("trait_", &self.trait_);
    -        formatter.field("self_ty", &self.self_ty);
    -        formatter.field("brace_token", &self.brace_token);
    -        formatter.field("items", &self.items);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ItemMacro {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ItemMacro");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("ident", &self.ident);
    -        formatter.field("mac", &self.mac);
    -        formatter.field("semi_token", &self.semi_token);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ItemMacro2 {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ItemMacro2");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("vis", &self.vis);
    -        formatter.field("macro_token", &self.macro_token);
    -        formatter.field("ident", &self.ident);
    -        formatter.field("rules", &self.rules);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ItemMod {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ItemMod");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("vis", &self.vis);
    -        formatter.field("mod_token", &self.mod_token);
    -        formatter.field("ident", &self.ident);
    -        formatter.field("content", &self.content);
    -        formatter.field("semi", &self.semi);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ItemStatic {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ItemStatic");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("vis", &self.vis);
    -        formatter.field("static_token", &self.static_token);
    -        formatter.field("mutability", &self.mutability);
    -        formatter.field("ident", &self.ident);
    -        formatter.field("colon_token", &self.colon_token);
    -        formatter.field("ty", &self.ty);
    -        formatter.field("eq_token", &self.eq_token);
    -        formatter.field("expr", &self.expr);
    -        formatter.field("semi_token", &self.semi_token);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ItemStruct {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ItemStruct");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("vis", &self.vis);
    -        formatter.field("struct_token", &self.struct_token);
    -        formatter.field("ident", &self.ident);
    -        formatter.field("generics", &self.generics);
    -        formatter.field("fields", &self.fields);
    -        formatter.field("semi_token", &self.semi_token);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ItemTrait {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ItemTrait");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("vis", &self.vis);
    -        formatter.field("unsafety", &self.unsafety);
    -        formatter.field("auto_token", &self.auto_token);
    -        formatter.field("trait_token", &self.trait_token);
    -        formatter.field("ident", &self.ident);
    -        formatter.field("generics", &self.generics);
    -        formatter.field("colon_token", &self.colon_token);
    -        formatter.field("supertraits", &self.supertraits);
    -        formatter.field("brace_token", &self.brace_token);
    -        formatter.field("items", &self.items);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ItemTraitAlias {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ItemTraitAlias");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("vis", &self.vis);
    -        formatter.field("trait_token", &self.trait_token);
    -        formatter.field("ident", &self.ident);
    -        formatter.field("generics", &self.generics);
    -        formatter.field("eq_token", &self.eq_token);
    -        formatter.field("bounds", &self.bounds);
    -        formatter.field("semi_token", &self.semi_token);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ItemType {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ItemType");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("vis", &self.vis);
    -        formatter.field("type_token", &self.type_token);
    -        formatter.field("ident", &self.ident);
    -        formatter.field("generics", &self.generics);
    -        formatter.field("eq_token", &self.eq_token);
    -        formatter.field("ty", &self.ty);
    -        formatter.field("semi_token", &self.semi_token);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ItemUnion {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ItemUnion");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("vis", &self.vis);
    -        formatter.field("union_token", &self.union_token);
    -        formatter.field("ident", &self.ident);
    -        formatter.field("generics", &self.generics);
    -        formatter.field("fields", &self.fields);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ItemUse {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ItemUse");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("vis", &self.vis);
    -        formatter.field("use_token", &self.use_token);
    -        formatter.field("leading_colon", &self.leading_colon);
    -        formatter.field("tree", &self.tree);
    -        formatter.field("semi_token", &self.semi_token);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Label {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("Label");
    -        formatter.field("name", &self.name);
    -        formatter.field("colon_token", &self.colon_token);
    -        formatter.finish()
    -    }
    -}
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Lifetime {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("Lifetime");
    -        formatter.field("apostrophe", &self.apostrophe);
    -        formatter.field("ident", &self.ident);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for LifetimeDef {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("LifetimeDef");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("lifetime", &self.lifetime);
    -        formatter.field("colon_token", &self.colon_token);
    -        formatter.field("bounds", &self.bounds);
    -        formatter.finish()
    -    }
    -}
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Lit {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        match self {
    -            Lit::Str(v0) => {
    -                let mut formatter = formatter.debug_tuple("Str");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Lit::ByteStr(v0) => {
    -                let mut formatter = formatter.debug_tuple("ByteStr");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Lit::Byte(v0) => {
    -                let mut formatter = formatter.debug_tuple("Byte");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Lit::Char(v0) => {
    -                let mut formatter = formatter.debug_tuple("Char");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Lit::Int(v0) => {
    -                let mut formatter = formatter.debug_tuple("Int");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Lit::Float(v0) => {
    -                let mut formatter = formatter.debug_tuple("Float");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Lit::Bool(v0) => {
    -                let mut formatter = formatter.debug_tuple("Bool");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Lit::Verbatim(v0) => {
    -                let mut formatter = formatter.debug_tuple("Verbatim");
    +            crate::ImplItem::Const(v0) => v0.debug(formatter, "Const"),
    +            crate::ImplItem::Fn(v0) => v0.debug(formatter, "Fn"),
    +            crate::ImplItem::Type(v0) => v0.debug(formatter, "Type"),
    +            crate::ImplItem::Macro(v0) => v0.debug(formatter, "Macro"),
    +            crate::ImplItem::Verbatim(v0) => {
    +                let mut formatter = formatter.debug_tuple("Verbatim");
                     formatter.field(v0);
                     formatter.finish()
                 }
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Local {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ImplItemConst {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("Local");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("let_token", &self.let_token);
    -        formatter.field("pat", &self.pat);
    -        formatter.field("init", &self.init);
    -        formatter.field("semi_token", &self.semi_token);
    +        self.debug(formatter, "ImplItemConst")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ImplItemConst {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("vis", &self.vis);
    +        formatter.field("defaultness", &self.defaultness);
    +        formatter.field("const_token", &self.const_token);
    +        formatter.field("ident", &self.ident);
    +        formatter.field("generics", &self.generics);
    +        formatter.field("colon_token", &self.colon_token);
    +        formatter.field("ty", &self.ty);
    +        formatter.field("eq_token", &self.eq_token);
    +        formatter.field("expr", &self.expr);
    +        formatter.field("semi_token", &self.semi_token);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Macro {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ImplItemFn {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("Macro");
    -        formatter.field("path", &self.path);
    -        formatter.field("bang_token", &self.bang_token);
    -        formatter.field("delimiter", &self.delimiter);
    -        formatter.field("tokens", &self.tokens);
    +        self.debug(formatter, "ImplItemFn")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ImplItemFn {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("vis", &self.vis);
    +        formatter.field("defaultness", &self.defaultness);
    +        formatter.field("sig", &self.sig);
    +        formatter.field("block", &self.block);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for MacroDelimiter {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ImplItemMacro {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "ImplItemMacro")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ImplItemMacro {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("mac", &self.mac);
    +        formatter.field("semi_token", &self.semi_token);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ImplItemType {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "ImplItemType")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ImplItemType {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("vis", &self.vis);
    +        formatter.field("defaultness", &self.defaultness);
    +        formatter.field("type_token", &self.type_token);
    +        formatter.field("ident", &self.ident);
    +        formatter.field("generics", &self.generics);
    +        formatter.field("eq_token", &self.eq_token);
    +        formatter.field("ty", &self.ty);
    +        formatter.field("semi_token", &self.semi_token);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ImplRestriction {
    +    fn fmt(&self, _formatter: &mut fmt::Formatter) -> fmt::Result {
    +        match *self {}
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::Index {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct("Index");
    +        formatter.field("index", &self.index);
    +        formatter.field("span", &self.span);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::Item {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("Item::")?;
             match self {
    -            MacroDelimiter::Paren(v0) => {
    -                let mut formatter = formatter.debug_tuple("Paren");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            MacroDelimiter::Brace(v0) => {
    -                let mut formatter = formatter.debug_tuple("Brace");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            MacroDelimiter::Bracket(v0) => {
    -                let mut formatter = formatter.debug_tuple("Bracket");
    +            crate::Item::Const(v0) => v0.debug(formatter, "Const"),
    +            crate::Item::Enum(v0) => v0.debug(formatter, "Enum"),
    +            crate::Item::ExternCrate(v0) => v0.debug(formatter, "ExternCrate"),
    +            crate::Item::Fn(v0) => v0.debug(formatter, "Fn"),
    +            crate::Item::ForeignMod(v0) => v0.debug(formatter, "ForeignMod"),
    +            crate::Item::Impl(v0) => v0.debug(formatter, "Impl"),
    +            crate::Item::Macro(v0) => v0.debug(formatter, "Macro"),
    +            crate::Item::Mod(v0) => v0.debug(formatter, "Mod"),
    +            crate::Item::Static(v0) => v0.debug(formatter, "Static"),
    +            crate::Item::Struct(v0) => v0.debug(formatter, "Struct"),
    +            crate::Item::Trait(v0) => v0.debug(formatter, "Trait"),
    +            crate::Item::TraitAlias(v0) => v0.debug(formatter, "TraitAlias"),
    +            crate::Item::Type(v0) => v0.debug(formatter, "Type"),
    +            crate::Item::Union(v0) => v0.debug(formatter, "Union"),
    +            crate::Item::Use(v0) => v0.debug(formatter, "Use"),
    +            crate::Item::Verbatim(v0) => {
    +                let mut formatter = formatter.debug_tuple("Verbatim");
                     formatter.field(v0);
                     formatter.finish()
                 }
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Member {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ItemConst {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "ItemConst")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ItemConst {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("vis", &self.vis);
    +        formatter.field("const_token", &self.const_token);
    +        formatter.field("ident", &self.ident);
    +        formatter.field("generics", &self.generics);
    +        formatter.field("colon_token", &self.colon_token);
    +        formatter.field("ty", &self.ty);
    +        formatter.field("eq_token", &self.eq_token);
    +        formatter.field("expr", &self.expr);
    +        formatter.field("semi_token", &self.semi_token);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ItemEnum {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "ItemEnum")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ItemEnum {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("vis", &self.vis);
    +        formatter.field("enum_token", &self.enum_token);
    +        formatter.field("ident", &self.ident);
    +        formatter.field("generics", &self.generics);
    +        formatter.field("brace_token", &self.brace_token);
    +        formatter.field("variants", &self.variants);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ItemExternCrate {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "ItemExternCrate")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ItemExternCrate {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("vis", &self.vis);
    +        formatter.field("extern_token", &self.extern_token);
    +        formatter.field("crate_token", &self.crate_token);
    +        formatter.field("ident", &self.ident);
    +        formatter.field("rename", &self.rename);
    +        formatter.field("semi_token", &self.semi_token);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ItemFn {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "ItemFn")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ItemFn {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("vis", &self.vis);
    +        formatter.field("sig", &self.sig);
    +        formatter.field("block", &self.block);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ItemForeignMod {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "ItemForeignMod")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ItemForeignMod {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("unsafety", &self.unsafety);
    +        formatter.field("abi", &self.abi);
    +        formatter.field("brace_token", &self.brace_token);
    +        formatter.field("items", &self.items);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ItemImpl {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "ItemImpl")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ItemImpl {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("defaultness", &self.defaultness);
    +        formatter.field("unsafety", &self.unsafety);
    +        formatter.field("impl_token", &self.impl_token);
    +        formatter.field("generics", &self.generics);
    +        formatter.field("trait_", &self.trait_);
    +        formatter.field("self_ty", &self.self_ty);
    +        formatter.field("brace_token", &self.brace_token);
    +        formatter.field("items", &self.items);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ItemMacro {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "ItemMacro")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ItemMacro {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("ident", &self.ident);
    +        formatter.field("mac", &self.mac);
    +        formatter.field("semi_token", &self.semi_token);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ItemMod {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "ItemMod")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ItemMod {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("vis", &self.vis);
    +        formatter.field("unsafety", &self.unsafety);
    +        formatter.field("mod_token", &self.mod_token);
    +        formatter.field("ident", &self.ident);
    +        formatter.field("content", &self.content);
    +        formatter.field("semi", &self.semi);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ItemStatic {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "ItemStatic")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ItemStatic {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("vis", &self.vis);
    +        formatter.field("static_token", &self.static_token);
    +        formatter.field("mutability", &self.mutability);
    +        formatter.field("ident", &self.ident);
    +        formatter.field("colon_token", &self.colon_token);
    +        formatter.field("ty", &self.ty);
    +        formatter.field("eq_token", &self.eq_token);
    +        formatter.field("expr", &self.expr);
    +        formatter.field("semi_token", &self.semi_token);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ItemStruct {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "ItemStruct")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ItemStruct {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("vis", &self.vis);
    +        formatter.field("struct_token", &self.struct_token);
    +        formatter.field("ident", &self.ident);
    +        formatter.field("generics", &self.generics);
    +        formatter.field("fields", &self.fields);
    +        formatter.field("semi_token", &self.semi_token);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ItemTrait {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "ItemTrait")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ItemTrait {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("vis", &self.vis);
    +        formatter.field("unsafety", &self.unsafety);
    +        formatter.field("auto_token", &self.auto_token);
    +        formatter.field("restriction", &self.restriction);
    +        formatter.field("trait_token", &self.trait_token);
    +        formatter.field("ident", &self.ident);
    +        formatter.field("generics", &self.generics);
    +        formatter.field("colon_token", &self.colon_token);
    +        formatter.field("supertraits", &self.supertraits);
    +        formatter.field("brace_token", &self.brace_token);
    +        formatter.field("items", &self.items);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ItemTraitAlias {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "ItemTraitAlias")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ItemTraitAlias {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("vis", &self.vis);
    +        formatter.field("trait_token", &self.trait_token);
    +        formatter.field("ident", &self.ident);
    +        formatter.field("generics", &self.generics);
    +        formatter.field("eq_token", &self.eq_token);
    +        formatter.field("bounds", &self.bounds);
    +        formatter.field("semi_token", &self.semi_token);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ItemType {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "ItemType")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ItemType {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("vis", &self.vis);
    +        formatter.field("type_token", &self.type_token);
    +        formatter.field("ident", &self.ident);
    +        formatter.field("generics", &self.generics);
    +        formatter.field("eq_token", &self.eq_token);
    +        formatter.field("ty", &self.ty);
    +        formatter.field("semi_token", &self.semi_token);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ItemUnion {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "ItemUnion")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ItemUnion {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("vis", &self.vis);
    +        formatter.field("union_token", &self.union_token);
    +        formatter.field("ident", &self.ident);
    +        formatter.field("generics", &self.generics);
    +        formatter.field("fields", &self.fields);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ItemUse {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "ItemUse")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::ItemUse {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("vis", &self.vis);
    +        formatter.field("use_token", &self.use_token);
    +        formatter.field("leading_colon", &self.leading_colon);
    +        formatter.field("tree", &self.tree);
    +        formatter.field("semi_token", &self.semi_token);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::Label {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct("Label");
    +        formatter.field("name", &self.name);
    +        formatter.field("colon_token", &self.colon_token);
    +        formatter.finish()
    +    }
    +}
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::Lifetime {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "Lifetime")
    +    }
    +}
    +impl crate::Lifetime {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("apostrophe", &self.apostrophe);
    +        formatter.field("ident", &self.ident);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::LifetimeParam {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct("LifetimeParam");
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("lifetime", &self.lifetime);
    +        formatter.field("colon_token", &self.colon_token);
    +        formatter.field("bounds", &self.bounds);
    +        formatter.finish()
    +    }
    +}
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::Lit {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("Lit::")?;
             match self {
    -            Member::Named(v0) => {
    -                let mut formatter = formatter.debug_tuple("Named");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Member::Unnamed(v0) => {
    -                let mut formatter = formatter.debug_tuple("Unnamed");
    +            crate::Lit::Str(v0) => v0.debug(formatter, "Str"),
    +            crate::Lit::ByteStr(v0) => v0.debug(formatter, "ByteStr"),
    +            crate::Lit::CStr(v0) => v0.debug(formatter, "CStr"),
    +            crate::Lit::Byte(v0) => v0.debug(formatter, "Byte"),
    +            crate::Lit::Char(v0) => v0.debug(formatter, "Char"),
    +            crate::Lit::Int(v0) => v0.debug(formatter, "Int"),
    +            crate::Lit::Float(v0) => v0.debug(formatter, "Float"),
    +            crate::Lit::Bool(v0) => v0.debug(formatter, "Bool"),
    +            crate::Lit::Verbatim(v0) => {
    +                let mut formatter = formatter.debug_tuple("Verbatim");
                     formatter.field(v0);
                     formatter.finish()
                 }
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Meta {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::Local {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "Local")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::Local {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("let_token", &self.let_token);
    +        formatter.field("pat", &self.pat);
    +        formatter.field("init", &self.init);
    +        formatter.field("semi_token", &self.semi_token);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::LocalInit {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct("LocalInit");
    +        formatter.field("eq_token", &self.eq_token);
    +        formatter.field("expr", &self.expr);
    +        formatter.field("diverge", &self.diverge);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::Macro {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct("Macro");
    +        formatter.field("path", &self.path);
    +        formatter.field("bang_token", &self.bang_token);
    +        formatter.field("delimiter", &self.delimiter);
    +        formatter.field("tokens", &self.tokens);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::MacroDelimiter {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("MacroDelimiter::")?;
             match self {
    -            Meta::Path(v0) => {
    -                let mut formatter = formatter.debug_tuple("Path");
    +            crate::MacroDelimiter::Paren(v0) => {
    +                let mut formatter = formatter.debug_tuple("Paren");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            Meta::List(v0) => {
    -                let mut formatter = formatter.debug_tuple("List");
    +            crate::MacroDelimiter::Brace(v0) => {
    +                let mut formatter = formatter.debug_tuple("Brace");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            Meta::NameValue(v0) => {
    -                let mut formatter = formatter.debug_tuple("NameValue");
    +            crate::MacroDelimiter::Bracket(v0) => {
    +                let mut formatter = formatter.debug_tuple("Bracket");
                     formatter.field(v0);
                     formatter.finish()
                 }
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for MetaList {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("MetaList");
    -        formatter.field("path", &self.path);
    -        formatter.field("paren_token", &self.paren_token);
    -        formatter.field("nested", &self.nested);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for MetaNameValue {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("MetaNameValue");
    -        formatter.field("path", &self.path);
    -        formatter.field("eq_token", &self.eq_token);
    -        formatter.field("lit", &self.lit);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for MethodTurbofish {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("MethodTurbofish");
    -        formatter.field("colon2_token", &self.colon2_token);
    -        formatter.field("lt_token", &self.lt_token);
    -        formatter.field("args", &self.args);
    -        formatter.field("gt_token", &self.gt_token);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for NestedMeta {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::Member {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("Member::")?;
             match self {
    -            NestedMeta::Meta(v0) => {
    -                let mut formatter = formatter.debug_tuple("Meta");
    +            crate::Member::Named(v0) => {
    +                let mut formatter = formatter.debug_tuple("Named");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            NestedMeta::Lit(v0) => {
    -                let mut formatter = formatter.debug_tuple("Lit");
    +            crate::Member::Unnamed(v0) => {
    +                let mut formatter = formatter.debug_tuple("Unnamed");
                     formatter.field(v0);
                     formatter.finish()
                 }
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ParenthesizedGenericArguments {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("ParenthesizedGenericArguments");
    -        formatter.field("paren_token", &self.paren_token);
    -        formatter.field("inputs", &self.inputs);
    -        formatter.field("output", &self.output);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Pat {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::Meta {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("Meta::")?;
             match self {
    -            Pat::Box(v0) => {
    -                let mut formatter = formatter.debug_tuple("Box");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Pat::Ident(v0) => {
    -                let mut formatter = formatter.debug_tuple("Ident");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Pat::Lit(v0) => {
    -                let mut formatter = formatter.debug_tuple("Lit");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Pat::Macro(v0) => {
    -                let mut formatter = formatter.debug_tuple("Macro");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Pat::Or(v0) => {
    -                let mut formatter = formatter.debug_tuple("Or");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Pat::Path(v0) => {
    -                let mut formatter = formatter.debug_tuple("Path");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Pat::Range(v0) => {
    -                let mut formatter = formatter.debug_tuple("Range");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Pat::Reference(v0) => {
    -                let mut formatter = formatter.debug_tuple("Reference");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Pat::Rest(v0) => {
    -                let mut formatter = formatter.debug_tuple("Rest");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Pat::Slice(v0) => {
    -                let mut formatter = formatter.debug_tuple("Slice");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Pat::Struct(v0) => {
    -                let mut formatter = formatter.debug_tuple("Struct");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Pat::Tuple(v0) => {
    -                let mut formatter = formatter.debug_tuple("Tuple");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Pat::TupleStruct(v0) => {
    -                let mut formatter = formatter.debug_tuple("TupleStruct");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Pat::Type(v0) => {
    -                let mut formatter = formatter.debug_tuple("Type");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Pat::Verbatim(v0) => {
    -                let mut formatter = formatter.debug_tuple("Verbatim");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Pat::Wild(v0) => {
    -                let mut formatter = formatter.debug_tuple("Wild");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(syn_no_non_exhaustive)]
    -            _ => unreachable!(),
    +            crate::Meta::Path(v0) => v0.debug(formatter, "Path"),
    +            crate::Meta::List(v0) => v0.debug(formatter, "List"),
    +            crate::Meta::NameValue(v0) => v0.debug(formatter, "NameValue"),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for PatBox {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::MetaList {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("PatBox");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("box_token", &self.box_token);
    -        formatter.field("pat", &self.pat);
    +        self.debug(formatter, "MetaList")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::MetaList {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("path", &self.path);
    +        formatter.field("delimiter", &self.delimiter);
    +        formatter.field("tokens", &self.tokens);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for PatIdent {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::MetaNameValue {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("PatIdent");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("by_ref", &self.by_ref);
    -        formatter.field("mutability", &self.mutability);
    -        formatter.field("ident", &self.ident);
    -        formatter.field("subpat", &self.subpat);
    +        self.debug(formatter, "MetaNameValue")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::MetaNameValue {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("path", &self.path);
    +        formatter.field("eq_token", &self.eq_token);
    +        formatter.field("value", &self.value);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for PatLit {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ParenthesizedGenericArguments {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("PatLit");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("expr", &self.expr);
    +        self.debug(formatter, "ParenthesizedGenericArguments")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::ParenthesizedGenericArguments {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("paren_token", &self.paren_token);
    +        formatter.field("inputs", &self.inputs);
    +        formatter.field("output", &self.output);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for PatMacro {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("PatMacro");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("mac", &self.mac);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for PatOr {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("PatOr");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("leading_vert", &self.leading_vert);
    -        formatter.field("cases", &self.cases);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for PatPath {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("PatPath");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("qself", &self.qself);
    -        formatter.field("path", &self.path);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for PatRange {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("PatRange");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("lo", &self.lo);
    -        formatter.field("limits", &self.limits);
    -        formatter.field("hi", &self.hi);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for PatReference {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("PatReference");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("and_token", &self.and_token);
    -        formatter.field("mutability", &self.mutability);
    -        formatter.field("pat", &self.pat);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for PatRest {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("PatRest");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("dot2_token", &self.dot2_token);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for PatSlice {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("PatSlice");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("bracket_token", &self.bracket_token);
    -        formatter.field("elems", &self.elems);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for PatStruct {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("PatStruct");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("path", &self.path);
    -        formatter.field("brace_token", &self.brace_token);
    -        formatter.field("fields", &self.fields);
    -        formatter.field("dot2_token", &self.dot2_token);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for PatTuple {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("PatTuple");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("paren_token", &self.paren_token);
    -        formatter.field("elems", &self.elems);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for PatTupleStruct {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("PatTupleStruct");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("path", &self.path);
    -        formatter.field("pat", &self.pat);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for PatType {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("PatType");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("pat", &self.pat);
    -        formatter.field("colon_token", &self.colon_token);
    -        formatter.field("ty", &self.ty);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for PatWild {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("PatWild");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("underscore_token", &self.underscore_token);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Path {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("Path");
    -        formatter.field("leading_colon", &self.leading_colon);
    -        formatter.field("segments", &self.segments);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for PathArguments {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::Pat {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("Pat::")?;
             match self {
    -            PathArguments::None => formatter.write_str("None"),
    -            PathArguments::AngleBracketed(v0) => {
    -                let mut formatter = formatter.debug_tuple("AngleBracketed");
    +            crate::Pat::Const(v0) => v0.debug(formatter, "Const"),
    +            crate::Pat::Ident(v0) => v0.debug(formatter, "Ident"),
    +            crate::Pat::Lit(v0) => v0.debug(formatter, "Lit"),
    +            crate::Pat::Macro(v0) => v0.debug(formatter, "Macro"),
    +            crate::Pat::Or(v0) => v0.debug(formatter, "Or"),
    +            crate::Pat::Paren(v0) => v0.debug(formatter, "Paren"),
    +            crate::Pat::Path(v0) => v0.debug(formatter, "Path"),
    +            crate::Pat::Range(v0) => v0.debug(formatter, "Range"),
    +            crate::Pat::Reference(v0) => v0.debug(formatter, "Reference"),
    +            crate::Pat::Rest(v0) => v0.debug(formatter, "Rest"),
    +            crate::Pat::Slice(v0) => v0.debug(formatter, "Slice"),
    +            crate::Pat::Struct(v0) => v0.debug(formatter, "Struct"),
    +            crate::Pat::Tuple(v0) => v0.debug(formatter, "Tuple"),
    +            crate::Pat::TupleStruct(v0) => v0.debug(formatter, "TupleStruct"),
    +            crate::Pat::Type(v0) => v0.debug(formatter, "Type"),
    +            crate::Pat::Verbatim(v0) => {
    +                let mut formatter = formatter.debug_tuple("Verbatim");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            PathArguments::Parenthesized(v0) => {
    -                let mut formatter = formatter.debug_tuple("Parenthesized");
    +            crate::Pat::Wild(v0) => v0.debug(formatter, "Wild"),
    +        }
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::PatIdent {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "PatIdent")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::PatIdent {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("by_ref", &self.by_ref);
    +        formatter.field("mutability", &self.mutability);
    +        formatter.field("ident", &self.ident);
    +        formatter.field("subpat", &self.subpat);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::PatOr {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "PatOr")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::PatOr {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("leading_vert", &self.leading_vert);
    +        formatter.field("cases", &self.cases);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::PatParen {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "PatParen")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::PatParen {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("paren_token", &self.paren_token);
    +        formatter.field("pat", &self.pat);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::PatReference {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "PatReference")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::PatReference {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("and_token", &self.and_token);
    +        formatter.field("mutability", &self.mutability);
    +        formatter.field("pat", &self.pat);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::PatRest {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "PatRest")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::PatRest {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("dot2_token", &self.dot2_token);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::PatSlice {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "PatSlice")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::PatSlice {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("bracket_token", &self.bracket_token);
    +        formatter.field("elems", &self.elems);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::PatStruct {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "PatStruct")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::PatStruct {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("qself", &self.qself);
    +        formatter.field("path", &self.path);
    +        formatter.field("brace_token", &self.brace_token);
    +        formatter.field("fields", &self.fields);
    +        formatter.field("rest", &self.rest);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::PatTuple {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "PatTuple")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::PatTuple {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("paren_token", &self.paren_token);
    +        formatter.field("elems", &self.elems);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::PatTupleStruct {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "PatTupleStruct")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::PatTupleStruct {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("qself", &self.qself);
    +        formatter.field("path", &self.path);
    +        formatter.field("paren_token", &self.paren_token);
    +        formatter.field("elems", &self.elems);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::PatType {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "PatType")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::PatType {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("pat", &self.pat);
    +        formatter.field("colon_token", &self.colon_token);
    +        formatter.field("ty", &self.ty);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::PatWild {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "PatWild")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::PatWild {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("underscore_token", &self.underscore_token);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::Path {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "Path")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::Path {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("leading_colon", &self.leading_colon);
    +        formatter.field("segments", &self.segments);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::PathArguments {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("PathArguments::")?;
    +        match self {
    +            crate::PathArguments::None => formatter.write_str("None"),
    +            crate::PathArguments::AngleBracketed(v0) => {
    +                v0.debug(formatter, "AngleBracketed")
    +            }
    +            crate::PathArguments::Parenthesized(v0) => {
    +                v0.debug(formatter, "Parenthesized")
    +            }
    +        }
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::PathSegment {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct("PathSegment");
    +        formatter.field("ident", &self.ident);
    +        formatter.field("arguments", &self.arguments);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::PointerMutability {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("PointerMutability::")?;
    +        match self {
    +            crate::PointerMutability::Const(v0) => {
    +                let mut formatter = formatter.debug_tuple("Const");
    +                formatter.field(v0);
    +                formatter.finish()
    +            }
    +            crate::PointerMutability::Mut(v0) => {
    +                let mut formatter = formatter.debug_tuple("Mut");
                     formatter.field(v0);
                     formatter.finish()
                 }
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for PathSegment {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::PreciseCapture {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("PathSegment");
    -        formatter.field("ident", &self.ident);
    -        formatter.field("arguments", &self.arguments);
    +        let mut formatter = formatter.debug_struct("PreciseCapture");
    +        formatter.field("use_token", &self.use_token);
    +        formatter.field("lt_token", &self.lt_token);
    +        formatter.field("params", &self.params);
    +        formatter.field("gt_token", &self.gt_token);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for PredicateEq {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::PredicateLifetime {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("PredicateEq");
    -        formatter.field("lhs_ty", &self.lhs_ty);
    -        formatter.field("eq_token", &self.eq_token);
    -        formatter.field("rhs_ty", &self.rhs_ty);
    +        let mut formatter = formatter.debug_struct("PredicateLifetime");
    +        formatter.field("lifetime", &self.lifetime);
    +        formatter.field("colon_token", &self.colon_token);
    +        formatter.field("bounds", &self.bounds);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for PredicateLifetime {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::PredicateType {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("PredicateLifetime");
    -        formatter.field("lifetime", &self.lifetime);
    -        formatter.field("colon_token", &self.colon_token);
    -        formatter.field("bounds", &self.bounds);
    +        let mut formatter = formatter.debug_struct("PredicateType");
    +        formatter.field("lifetimes", &self.lifetimes);
    +        formatter.field("bounded_ty", &self.bounded_ty);
    +        formatter.field("colon_token", &self.colon_token);
    +        formatter.field("bounds", &self.bounds);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for PredicateType {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::QSelf {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("PredicateType");
    -        formatter.field("lifetimes", &self.lifetimes);
    -        formatter.field("bounded_ty", &self.bounded_ty);
    -        formatter.field("colon_token", &self.colon_token);
    -        formatter.field("bounds", &self.bounds);
    +        let mut formatter = formatter.debug_struct("QSelf");
    +        formatter.field("lt_token", &self.lt_token);
    +        formatter.field("ty", &self.ty);
    +        formatter.field("position", &self.position);
    +        formatter.field("as_token", &self.as_token);
    +        formatter.field("gt_token", &self.gt_token);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for QSelf {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("QSelf");
    -        formatter.field("lt_token", &self.lt_token);
    -        formatter.field("ty", &self.ty);
    -        formatter.field("position", &self.position);
    -        formatter.field("as_token", &self.as_token);
    -        formatter.field("gt_token", &self.gt_token);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for RangeLimits {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::RangeLimits {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("RangeLimits::")?;
             match self {
    -            RangeLimits::HalfOpen(v0) => {
    -                let mut formatter = formatter.debug_tuple("HalfOpen");
    +            crate::RangeLimits::HalfOpen(v0) => {
    +                let mut formatter = formatter.debug_tuple("HalfOpen");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            RangeLimits::Closed(v0) => {
    -                let mut formatter = formatter.debug_tuple("Closed");
    +            crate::RangeLimits::Closed(v0) => {
    +                let mut formatter = formatter.debug_tuple("Closed");
                     formatter.field(v0);
                     formatter.finish()
                 }
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Receiver {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::Receiver {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("Receiver");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("reference", &self.reference);
    -        formatter.field("mutability", &self.mutability);
    -        formatter.field("self_token", &self.self_token);
    +        let mut formatter = formatter.debug_struct("Receiver");
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("reference", &self.reference);
    +        formatter.field("mutability", &self.mutability);
    +        formatter.field("self_token", &self.self_token);
    +        formatter.field("colon_token", &self.colon_token);
    +        formatter.field("ty", &self.ty);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for ReturnType {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::ReturnType {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("ReturnType::")?;
             match self {
    -            ReturnType::Default => formatter.write_str("Default"),
    -            ReturnType::Type(v0, v1) => {
    -                let mut formatter = formatter.debug_tuple("Type");
    +            crate::ReturnType::Default => formatter.write_str("Default"),
    +            crate::ReturnType::Type(v0, v1) => {
    +                let mut formatter = formatter.debug_tuple("Type");
                     formatter.field(v0);
                     formatter.field(v1);
                     formatter.finish()
    @@ -5438,644 +5779,695 @@
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Signature {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::Signature {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("Signature");
    -        formatter.field("constness", &self.constness);
    -        formatter.field("asyncness", &self.asyncness);
    -        formatter.field("unsafety", &self.unsafety);
    -        formatter.field("abi", &self.abi);
    -        formatter.field("fn_token", &self.fn_token);
    -        formatter.field("ident", &self.ident);
    -        formatter.field("generics", &self.generics);
    -        formatter.field("paren_token", &self.paren_token);
    -        formatter.field("inputs", &self.inputs);
    -        formatter.field("variadic", &self.variadic);
    -        formatter.field("output", &self.output);
    +        let mut formatter = formatter.debug_struct("Signature");
    +        formatter.field("constness", &self.constness);
    +        formatter.field("asyncness", &self.asyncness);
    +        formatter.field("unsafety", &self.unsafety);
    +        formatter.field("abi", &self.abi);
    +        formatter.field("fn_token", &self.fn_token);
    +        formatter.field("ident", &self.ident);
    +        formatter.field("generics", &self.generics);
    +        formatter.field("paren_token", &self.paren_token);
    +        formatter.field("inputs", &self.inputs);
    +        formatter.field("variadic", &self.variadic);
    +        formatter.field("output", &self.output);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Stmt {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::StaticMutability {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("StaticMutability::")?;
             match self {
    -            Stmt::Local(v0) => {
    -                let mut formatter = formatter.debug_tuple("Local");
    +            crate::StaticMutability::Mut(v0) => {
    +                let mut formatter = formatter.debug_tuple("Mut");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            Stmt::Item(v0) => {
    -                let mut formatter = formatter.debug_tuple("Item");
    +            crate::StaticMutability::None => formatter.write_str("None"),
    +        }
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::Stmt {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("Stmt::")?;
    +        match self {
    +            crate::Stmt::Local(v0) => v0.debug(formatter, "Local"),
    +            crate::Stmt::Item(v0) => {
    +                let mut formatter = formatter.debug_tuple("Item");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            Stmt::Expr(v0) => {
    -                let mut formatter = formatter.debug_tuple("Expr");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Stmt::Semi(v0, v1) => {
    -                let mut formatter = formatter.debug_tuple("Semi");
    +            crate::Stmt::Expr(v0, v1) => {
    +                let mut formatter = formatter.debug_tuple("Expr");
                     formatter.field(v0);
                     formatter.field(v1);
                     formatter.finish()
                 }
    +            crate::Stmt::Macro(v0) => v0.debug(formatter, "Macro"),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for TraitBound {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::StmtMacro {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("TraitBound");
    -        formatter.field("paren_token", &self.paren_token);
    -        formatter.field("modifier", &self.modifier);
    -        formatter.field("lifetimes", &self.lifetimes);
    -        formatter.field("path", &self.path);
    +        self.debug(formatter, "StmtMacro")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::StmtMacro {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("mac", &self.mac);
    +        formatter.field("semi_token", &self.semi_token);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for TraitBoundModifier {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::TraitBound {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct("TraitBound");
    +        formatter.field("paren_token", &self.paren_token);
    +        formatter.field("modifier", &self.modifier);
    +        formatter.field("lifetimes", &self.lifetimes);
    +        formatter.field("path", &self.path);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::TraitBoundModifier {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("TraitBoundModifier::")?;
             match self {
    -            TraitBoundModifier::None => formatter.write_str("None"),
    -            TraitBoundModifier::Maybe(v0) => {
    -                let mut formatter = formatter.debug_tuple("Maybe");
    +            crate::TraitBoundModifier::None => formatter.write_str("None"),
    +            crate::TraitBoundModifier::Maybe(v0) => {
    +                let mut formatter = formatter.debug_tuple("Maybe");
                     formatter.field(v0);
                     formatter.finish()
                 }
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for TraitItem {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::TraitItem {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("TraitItem::")?;
             match self {
    -            TraitItem::Const(v0) => {
    -                let mut formatter = formatter.debug_tuple("Const");
    +            crate::TraitItem::Const(v0) => v0.debug(formatter, "Const"),
    +            crate::TraitItem::Fn(v0) => v0.debug(formatter, "Fn"),
    +            crate::TraitItem::Type(v0) => v0.debug(formatter, "Type"),
    +            crate::TraitItem::Macro(v0) => v0.debug(formatter, "Macro"),
    +            crate::TraitItem::Verbatim(v0) => {
    +                let mut formatter = formatter.debug_tuple("Verbatim");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            TraitItem::Method(v0) => {
    -                let mut formatter = formatter.debug_tuple("Method");
    +        }
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::TraitItemConst {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "TraitItemConst")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::TraitItemConst {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("const_token", &self.const_token);
    +        formatter.field("ident", &self.ident);
    +        formatter.field("generics", &self.generics);
    +        formatter.field("colon_token", &self.colon_token);
    +        formatter.field("ty", &self.ty);
    +        formatter.field("default", &self.default);
    +        formatter.field("semi_token", &self.semi_token);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::TraitItemFn {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "TraitItemFn")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::TraitItemFn {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("sig", &self.sig);
    +        formatter.field("default", &self.default);
    +        formatter.field("semi_token", &self.semi_token);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::TraitItemMacro {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "TraitItemMacro")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::TraitItemMacro {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("mac", &self.mac);
    +        formatter.field("semi_token", &self.semi_token);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::TraitItemType {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "TraitItemType")
    +    }
    +}
    +#[cfg(feature = "full")]
    +impl crate::TraitItemType {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("type_token", &self.type_token);
    +        formatter.field("ident", &self.ident);
    +        formatter.field("generics", &self.generics);
    +        formatter.field("colon_token", &self.colon_token);
    +        formatter.field("bounds", &self.bounds);
    +        formatter.field("default", &self.default);
    +        formatter.field("semi_token", &self.semi_token);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::Type {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("Type::")?;
    +        match self {
    +            crate::Type::Array(v0) => v0.debug(formatter, "Array"),
    +            crate::Type::BareFn(v0) => v0.debug(formatter, "BareFn"),
    +            crate::Type::Group(v0) => v0.debug(formatter, "Group"),
    +            crate::Type::ImplTrait(v0) => v0.debug(formatter, "ImplTrait"),
    +            crate::Type::Infer(v0) => v0.debug(formatter, "Infer"),
    +            crate::Type::Macro(v0) => v0.debug(formatter, "Macro"),
    +            crate::Type::Never(v0) => v0.debug(formatter, "Never"),
    +            crate::Type::Paren(v0) => v0.debug(formatter, "Paren"),
    +            crate::Type::Path(v0) => v0.debug(formatter, "Path"),
    +            crate::Type::Ptr(v0) => v0.debug(formatter, "Ptr"),
    +            crate::Type::Reference(v0) => v0.debug(formatter, "Reference"),
    +            crate::Type::Slice(v0) => v0.debug(formatter, "Slice"),
    +            crate::Type::TraitObject(v0) => v0.debug(formatter, "TraitObject"),
    +            crate::Type::Tuple(v0) => v0.debug(formatter, "Tuple"),
    +            crate::Type::Verbatim(v0) => {
    +                let mut formatter = formatter.debug_tuple("Verbatim");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            TraitItem::Type(v0) => {
    -                let mut formatter = formatter.debug_tuple("Type");
    +        }
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::TypeArray {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "TypeArray")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::TypeArray {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("bracket_token", &self.bracket_token);
    +        formatter.field("elem", &self.elem);
    +        formatter.field("semi_token", &self.semi_token);
    +        formatter.field("len", &self.len);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::TypeBareFn {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "TypeBareFn")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::TypeBareFn {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("lifetimes", &self.lifetimes);
    +        formatter.field("unsafety", &self.unsafety);
    +        formatter.field("abi", &self.abi);
    +        formatter.field("fn_token", &self.fn_token);
    +        formatter.field("paren_token", &self.paren_token);
    +        formatter.field("inputs", &self.inputs);
    +        formatter.field("variadic", &self.variadic);
    +        formatter.field("output", &self.output);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::TypeGroup {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "TypeGroup")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::TypeGroup {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("group_token", &self.group_token);
    +        formatter.field("elem", &self.elem);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::TypeImplTrait {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "TypeImplTrait")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::TypeImplTrait {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("impl_token", &self.impl_token);
    +        formatter.field("bounds", &self.bounds);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::TypeInfer {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "TypeInfer")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::TypeInfer {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("underscore_token", &self.underscore_token);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::TypeMacro {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "TypeMacro")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::TypeMacro {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("mac", &self.mac);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::TypeNever {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "TypeNever")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::TypeNever {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("bang_token", &self.bang_token);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::TypeParam {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct("TypeParam");
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("ident", &self.ident);
    +        formatter.field("colon_token", &self.colon_token);
    +        formatter.field("bounds", &self.bounds);
    +        formatter.field("eq_token", &self.eq_token);
    +        formatter.field("default", &self.default);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::TypeParamBound {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("TypeParamBound::")?;
    +        match self {
    +            crate::TypeParamBound::Trait(v0) => {
    +                let mut formatter = formatter.debug_tuple("Trait");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            TraitItem::Macro(v0) => {
    -                let mut formatter = formatter.debug_tuple("Macro");
    +            crate::TypeParamBound::Lifetime(v0) => v0.debug(formatter, "Lifetime"),
    +            #[cfg(feature = "full")]
    +            crate::TypeParamBound::PreciseCapture(v0) => {
    +                let mut formatter = formatter.debug_tuple("PreciseCapture");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            TraitItem::Verbatim(v0) => {
    -                let mut formatter = formatter.debug_tuple("Verbatim");
    +            crate::TypeParamBound::Verbatim(v0) => {
    +                let mut formatter = formatter.debug_tuple("Verbatim");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            #[cfg(syn_no_non_exhaustive)]
    +            #[cfg(not(feature = "full"))]
                 _ => unreachable!(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for TraitItemConst {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::TypeParen {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("TraitItemConst");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("const_token", &self.const_token);
    -        formatter.field("ident", &self.ident);
    -        formatter.field("colon_token", &self.colon_token);
    -        formatter.field("ty", &self.ty);
    -        formatter.field("default", &self.default);
    -        formatter.field("semi_token", &self.semi_token);
    +        self.debug(formatter, "TypeParen")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::TypeParen {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("paren_token", &self.paren_token);
    +        formatter.field("elem", &self.elem);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for TraitItemMacro {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::TypePath {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("TraitItemMacro");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("mac", &self.mac);
    -        formatter.field("semi_token", &self.semi_token);
    +        self.debug(formatter, "TypePath")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::TypePath {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("qself", &self.qself);
    +        formatter.field("path", &self.path);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for TraitItemMethod {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::TypePtr {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("TraitItemMethod");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("sig", &self.sig);
    -        formatter.field("default", &self.default);
    -        formatter.field("semi_token", &self.semi_token);
    +        self.debug(formatter, "TypePtr")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::TypePtr {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("star_token", &self.star_token);
    +        formatter.field("const_token", &self.const_token);
    +        formatter.field("mutability", &self.mutability);
    +        formatter.field("elem", &self.elem);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for TraitItemType {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::TypeReference {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("TraitItemType");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("type_token", &self.type_token);
    -        formatter.field("ident", &self.ident);
    -        formatter.field("generics", &self.generics);
    -        formatter.field("colon_token", &self.colon_token);
    -        formatter.field("bounds", &self.bounds);
    -        formatter.field("default", &self.default);
    -        formatter.field("semi_token", &self.semi_token);
    +        self.debug(formatter, "TypeReference")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::TypeReference {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("and_token", &self.and_token);
    +        formatter.field("lifetime", &self.lifetime);
    +        formatter.field("mutability", &self.mutability);
    +        formatter.field("elem", &self.elem);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Type {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::TypeSlice {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "TypeSlice")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::TypeSlice {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("bracket_token", &self.bracket_token);
    +        formatter.field("elem", &self.elem);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::TypeTraitObject {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "TypeTraitObject")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::TypeTraitObject {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("dyn_token", &self.dyn_token);
    +        formatter.field("bounds", &self.bounds);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::TypeTuple {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        self.debug(formatter, "TypeTuple")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::TypeTuple {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("paren_token", &self.paren_token);
    +        formatter.field("elems", &self.elems);
    +        formatter.finish()
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::UnOp {
    +    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("UnOp::")?;
             match self {
    -            Type::Array(v0) => {
    -                let mut formatter = formatter.debug_tuple("Array");
    +            crate::UnOp::Deref(v0) => {
    +                let mut formatter = formatter.debug_tuple("Deref");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            Type::BareFn(v0) => {
    -                let mut formatter = formatter.debug_tuple("BareFn");
    +            crate::UnOp::Not(v0) => {
    +                let mut formatter = formatter.debug_tuple("Not");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            Type::Group(v0) => {
    -                let mut formatter = formatter.debug_tuple("Group");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Type::ImplTrait(v0) => {
    -                let mut formatter = formatter.debug_tuple("ImplTrait");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Type::Infer(v0) => {
    -                let mut formatter = formatter.debug_tuple("Infer");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Type::Macro(v0) => {
    -                let mut formatter = formatter.debug_tuple("Macro");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Type::Never(v0) => {
    -                let mut formatter = formatter.debug_tuple("Never");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Type::Paren(v0) => {
    -                let mut formatter = formatter.debug_tuple("Paren");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Type::Path(v0) => {
    -                let mut formatter = formatter.debug_tuple("Path");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Type::Ptr(v0) => {
    -                let mut formatter = formatter.debug_tuple("Ptr");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Type::Reference(v0) => {
    -                let mut formatter = formatter.debug_tuple("Reference");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Type::Slice(v0) => {
    -                let mut formatter = formatter.debug_tuple("Slice");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Type::TraitObject(v0) => {
    -                let mut formatter = formatter.debug_tuple("TraitObject");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Type::Tuple(v0) => {
    -                let mut formatter = formatter.debug_tuple("Tuple");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Type::Verbatim(v0) => {
    -                let mut formatter = formatter.debug_tuple("Verbatim");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            #[cfg(syn_no_non_exhaustive)]
    -            _ => unreachable!(),
    -        }
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for TypeArray {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("TypeArray");
    -        formatter.field("bracket_token", &self.bracket_token);
    -        formatter.field("elem", &self.elem);
    -        formatter.field("semi_token", &self.semi_token);
    -        formatter.field("len", &self.len);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for TypeBareFn {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("TypeBareFn");
    -        formatter.field("lifetimes", &self.lifetimes);
    -        formatter.field("unsafety", &self.unsafety);
    -        formatter.field("abi", &self.abi);
    -        formatter.field("fn_token", &self.fn_token);
    -        formatter.field("paren_token", &self.paren_token);
    -        formatter.field("inputs", &self.inputs);
    -        formatter.field("variadic", &self.variadic);
    -        formatter.field("output", &self.output);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for TypeGroup {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("TypeGroup");
    -        formatter.field("group_token", &self.group_token);
    -        formatter.field("elem", &self.elem);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for TypeImplTrait {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("TypeImplTrait");
    -        formatter.field("impl_token", &self.impl_token);
    -        formatter.field("bounds", &self.bounds);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for TypeInfer {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("TypeInfer");
    -        formatter.field("underscore_token", &self.underscore_token);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for TypeMacro {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("TypeMacro");
    -        formatter.field("mac", &self.mac);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for TypeNever {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("TypeNever");
    -        formatter.field("bang_token", &self.bang_token);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for TypeParam {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("TypeParam");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("ident", &self.ident);
    -        formatter.field("colon_token", &self.colon_token);
    -        formatter.field("bounds", &self.bounds);
    -        formatter.field("eq_token", &self.eq_token);
    -        formatter.field("default", &self.default);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for TypeParamBound {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        match self {
    -            TypeParamBound::Trait(v0) => {
    -                let mut formatter = formatter.debug_tuple("Trait");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            TypeParamBound::Lifetime(v0) => {
    -                let mut formatter = formatter.debug_tuple("Lifetime");
    +            crate::UnOp::Neg(v0) => {
    +                let mut formatter = formatter.debug_tuple("Neg");
                     formatter.field(v0);
                     formatter.finish()
                 }
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for TypeParen {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::UseGlob {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("TypeParen");
    -        formatter.field("paren_token", &self.paren_token);
    -        formatter.field("elem", &self.elem);
    +        let mut formatter = formatter.debug_struct("UseGlob");
    +        formatter.field("star_token", &self.star_token);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for TypePath {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::UseGroup {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("TypePath");
    -        formatter.field("qself", &self.qself);
    -        formatter.field("path", &self.path);
    +        let mut formatter = formatter.debug_struct("UseGroup");
    +        formatter.field("brace_token", &self.brace_token);
    +        formatter.field("items", &self.items);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for TypePtr {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::UseName {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("TypePtr");
    -        formatter.field("star_token", &self.star_token);
    -        formatter.field("const_token", &self.const_token);
    -        formatter.field("mutability", &self.mutability);
    -        formatter.field("elem", &self.elem);
    +        let mut formatter = formatter.debug_struct("UseName");
    +        formatter.field("ident", &self.ident);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for TypeReference {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::UsePath {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("TypeReference");
    -        formatter.field("and_token", &self.and_token);
    -        formatter.field("lifetime", &self.lifetime);
    -        formatter.field("mutability", &self.mutability);
    -        formatter.field("elem", &self.elem);
    +        let mut formatter = formatter.debug_struct("UsePath");
    +        formatter.field("ident", &self.ident);
    +        formatter.field("colon2_token", &self.colon2_token);
    +        formatter.field("tree", &self.tree);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for TypeSlice {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::UseRename {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("TypeSlice");
    -        formatter.field("bracket_token", &self.bracket_token);
    -        formatter.field("elem", &self.elem);
    +        let mut formatter = formatter.debug_struct("UseRename");
    +        formatter.field("ident", &self.ident);
    +        formatter.field("as_token", &self.as_token);
    +        formatter.field("rename", &self.rename);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for TypeTraitObject {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("TypeTraitObject");
    -        formatter.field("dyn_token", &self.dyn_token);
    -        formatter.field("bounds", &self.bounds);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for TypeTuple {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("TypeTuple");
    -        formatter.field("paren_token", &self.paren_token);
    -        formatter.field("elems", &self.elems);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for UnOp {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::UseTree {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("UseTree::")?;
             match self {
    -            UnOp::Deref(v0) => {
    -                let mut formatter = formatter.debug_tuple("Deref");
    +            crate::UseTree::Path(v0) => {
    +                let mut formatter = formatter.debug_tuple("Path");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            UnOp::Not(v0) => {
    -                let mut formatter = formatter.debug_tuple("Not");
    +            crate::UseTree::Name(v0) => {
    +                let mut formatter = formatter.debug_tuple("Name");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            UnOp::Neg(v0) => {
    -                let mut formatter = formatter.debug_tuple("Neg");
    +            crate::UseTree::Rename(v0) => {
    +                let mut formatter = formatter.debug_tuple("Rename");
    +                formatter.field(v0);
    +                formatter.finish()
    +            }
    +            crate::UseTree::Glob(v0) => {
    +                let mut formatter = formatter.debug_tuple("Glob");
    +                formatter.field(v0);
    +                formatter.finish()
    +            }
    +            crate::UseTree::Group(v0) => {
    +                let mut formatter = formatter.debug_tuple("Group");
                     formatter.field(v0);
                     formatter.finish()
                 }
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for UseGlob {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::Variadic {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("UseGlob");
    -        formatter.field("star_token", &self.star_token);
    +        let mut formatter = formatter.debug_struct("Variadic");
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("pat", &self.pat);
    +        formatter.field("dots", &self.dots);
    +        formatter.field("comma", &self.comma);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for UseGroup {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::Variant {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("UseGroup");
    -        formatter.field("brace_token", &self.brace_token);
    -        formatter.field("items", &self.items);
    +        let mut formatter = formatter.debug_struct("Variant");
    +        formatter.field("attrs", &self.attrs);
    +        formatter.field("ident", &self.ident);
    +        formatter.field("fields", &self.fields);
    +        formatter.field("discriminant", &self.discriminant);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for UseName {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::VisRestricted {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("UseName");
    -        formatter.field("ident", &self.ident);
    +        self.debug(formatter, "VisRestricted")
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +impl crate::VisRestricted {
    +    fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +        let mut formatter = formatter.debug_struct(name);
    +        formatter.field("pub_token", &self.pub_token);
    +        formatter.field("paren_token", &self.paren_token);
    +        formatter.field("in_token", &self.in_token);
    +        formatter.field("path", &self.path);
             formatter.finish()
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for UsePath {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("UsePath");
    -        formatter.field("ident", &self.ident);
    -        formatter.field("colon2_token", &self.colon2_token);
    -        formatter.field("tree", &self.tree);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for UseRename {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("UseRename");
    -        formatter.field("ident", &self.ident);
    -        formatter.field("as_token", &self.as_token);
    -        formatter.field("rename", &self.rename);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for UseTree {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::Visibility {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("Visibility::")?;
             match self {
    -            UseTree::Path(v0) => {
    -                let mut formatter = formatter.debug_tuple("Path");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            UseTree::Name(v0) => {
    -                let mut formatter = formatter.debug_tuple("Name");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            UseTree::Rename(v0) => {
    -                let mut formatter = formatter.debug_tuple("Rename");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            UseTree::Glob(v0) => {
    -                let mut formatter = formatter.debug_tuple("Glob");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            UseTree::Group(v0) => {
    -                let mut formatter = formatter.debug_tuple("Group");
    +            crate::Visibility::Public(v0) => {
    +                let mut formatter = formatter.debug_tuple("Public");
                     formatter.field(v0);
                     formatter.finish()
                 }
    +            crate::Visibility::Restricted(v0) => v0.debug(formatter, "Restricted"),
    +            crate::Visibility::Inherited => formatter.write_str("Inherited"),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Variadic {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::WhereClause {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("Variadic");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("dots", &self.dots);
    +        let mut formatter = formatter.debug_struct("WhereClause");
    +        formatter.field("where_token", &self.where_token);
    +        formatter.field("predicates", &self.predicates);
             formatter.finish()
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Variant {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("Variant");
    -        formatter.field("attrs", &self.attrs);
    -        formatter.field("ident", &self.ident);
    -        formatter.field("fields", &self.fields);
    -        formatter.field("discriminant", &self.discriminant);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for VisCrate {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("VisCrate");
    -        formatter.field("crate_token", &self.crate_token);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for VisPublic {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("VisPublic");
    -        formatter.field("pub_token", &self.pub_token);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for VisRestricted {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("VisRestricted");
    -        formatter.field("pub_token", &self.pub_token);
    -        formatter.field("paren_token", &self.paren_token);
    -        formatter.field("in_token", &self.in_token);
    -        formatter.field("path", &self.path);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Visibility {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for crate::WherePredicate {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +        formatter.write_str("WherePredicate::")?;
             match self {
    -            Visibility::Public(v0) => {
    -                let mut formatter = formatter.debug_tuple("Public");
    +            crate::WherePredicate::Lifetime(v0) => {
    +                let mut formatter = formatter.debug_tuple("Lifetime");
                     formatter.field(v0);
                     formatter.finish()
                 }
    -            Visibility::Crate(v0) => {
    -                let mut formatter = formatter.debug_tuple("Crate");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Visibility::Restricted(v0) => {
    -                let mut formatter = formatter.debug_tuple("Restricted");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            Visibility::Inherited => formatter.write_str("Inherited"),
    -        }
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for WhereClause {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        let mut formatter = formatter.debug_struct("WhereClause");
    -        formatter.field("where_token", &self.where_token);
    -        formatter.field("predicates", &self.predicates);
    -        formatter.finish()
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for WherePredicate {
    -    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        match self {
    -            WherePredicate::Type(v0) => {
    -                let mut formatter = formatter.debug_tuple("Type");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            WherePredicate::Lifetime(v0) => {
    -                let mut formatter = formatter.debug_tuple("Lifetime");
    -                formatter.field(v0);
    -                formatter.finish()
    -            }
    -            WherePredicate::Eq(v0) => {
    -                let mut formatter = formatter.debug_tuple("Eq");
    +            crate::WherePredicate::Type(v0) => {
    +                let mut formatter = formatter.debug_tuple("Type");
                     formatter.field(v0);
                     formatter.finish()
                 }
    diff --git a/src/syn/gen/eq.rs.html b/src/syn/gen/eq.rs.html
    index 414760b..b142685 100644
    --- a/src/syn/gen/eq.rs.html
    +++ b/src/syn/gen/eq.rs.html
    @@ -1,4 +1,5 @@
    -eq.rs - source
    1
    +eq.rs - source

    syn/gen/
    eq.rs

    +1
     2
     3
     4
    @@ -2193,1103 +2194,1310 @@
     2193
     2194
     2195
    -
    // This file is @generated by syn-internal-codegen.
    +2196
    +2197
    +2198
    +2199
    +2200
    +2201
    +2202
    +2203
    +2204
    +2205
    +2206
    +2207
    +2208
    +2209
    +2210
    +2211
    +2212
    +2213
    +2214
    +2215
    +2216
    +2217
    +2218
    +2219
    +2220
    +2221
    +2222
    +2223
    +2224
    +2225
    +2226
    +2227
    +2228
    +2229
    +2230
    +2231
    +2232
    +2233
    +2234
    +2235
    +2236
    +2237
    +2238
    +2239
    +2240
    +2241
    +2242
    +2243
    +2244
    +2245
    +2246
    +2247
    +2248
    +2249
    +2250
    +2251
    +2252
    +2253
    +2254
    +2255
    +2256
    +2257
    +2258
    +2259
    +2260
    +2261
    +2262
    +2263
    +2264
    +2265
    +2266
    +2267
    +2268
    +2269
    +2270
    +2271
    +2272
    +2273
    +2274
    +2275
    +2276
    +2277
    +2278
    +2279
    +2280
    +2281
    +2282
    +2283
    +2284
    +2285
    +2286
    +2287
    +2288
    +2289
    +2290
    +2291
    +2292
    +2293
    +2294
    +2295
    +2296
    +2297
    +2298
    +2299
    +2300
    +2301
    +2302
    +2303
    +2304
    +2305
    +2306
    // This file is @generated by syn-internal-codegen.
     // It is not intended for manual editing.
     
    -#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg(any(feature = "derive", feature = "full"))]
     use crate::tt::TokenStreamHelper;
    -use crate::*;
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for Abi {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for Abi {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::Abi {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::Abi {
         fn eq(&self, other: &Self) -> bool {
             self.name == other.name
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for AngleBracketedGenericArguments {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for AngleBracketedGenericArguments {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::AngleBracketedGenericArguments {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::AngleBracketedGenericArguments {
         fn eq(&self, other: &Self) -> bool {
             self.colon2_token == other.colon2_token && self.args == other.args
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for Arm {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for Arm {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::Arm {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::Arm {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.pat == other.pat && self.guard == other.guard
                 && self.body == other.body && self.comma == other.comma
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for AttrStyle {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for AttrStyle {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::AssocConst {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::AssocConst {
    +    fn eq(&self, other: &Self) -> bool {
    +        self.ident == other.ident && self.generics == other.generics
    +            && self.value == other.value
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::AssocType {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::AssocType {
    +    fn eq(&self, other: &Self) -> bool {
    +        self.ident == other.ident && self.generics == other.generics
    +            && self.ty == other.ty
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::AttrStyle {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::AttrStyle {
         fn eq(&self, other: &Self) -> bool {
             match (self, other) {
    -            (AttrStyle::Outer, AttrStyle::Outer) => true,
    -            (AttrStyle::Inner(_), AttrStyle::Inner(_)) => true,
    +            (crate::AttrStyle::Outer, crate::AttrStyle::Outer) => true,
    +            (crate::AttrStyle::Inner(_), crate::AttrStyle::Inner(_)) => true,
                 _ => false,
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for Attribute {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for Attribute {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::Attribute {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::Attribute {
         fn eq(&self, other: &Self) -> bool {
    -        self.style == other.style && self.path == other.path
    -            && TokenStreamHelper(&self.tokens) == TokenStreamHelper(&other.tokens)
    +        self.style == other.style && self.meta == other.meta
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for BareFnArg {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for BareFnArg {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::BareFnArg {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::BareFnArg {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.name == other.name && self.ty == other.ty
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for BinOp {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for BinOp {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::BareVariadic {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::BareVariadic {
    +    fn eq(&self, other: &Self) -> bool {
    +        self.attrs == other.attrs && self.name == other.name && self.comma == other.comma
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::BinOp {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::BinOp {
         fn eq(&self, other: &Self) -> bool {
             match (self, other) {
    -            (BinOp::Add(_), BinOp::Add(_)) => true,
    -            (BinOp::Sub(_), BinOp::Sub(_)) => true,
    -            (BinOp::Mul(_), BinOp::Mul(_)) => true,
    -            (BinOp::Div(_), BinOp::Div(_)) => true,
    -            (BinOp::Rem(_), BinOp::Rem(_)) => true,
    -            (BinOp::And(_), BinOp::And(_)) => true,
    -            (BinOp::Or(_), BinOp::Or(_)) => true,
    -            (BinOp::BitXor(_), BinOp::BitXor(_)) => true,
    -            (BinOp::BitAnd(_), BinOp::BitAnd(_)) => true,
    -            (BinOp::BitOr(_), BinOp::BitOr(_)) => true,
    -            (BinOp::Shl(_), BinOp::Shl(_)) => true,
    -            (BinOp::Shr(_), BinOp::Shr(_)) => true,
    -            (BinOp::Eq(_), BinOp::Eq(_)) => true,
    -            (BinOp::Lt(_), BinOp::Lt(_)) => true,
    -            (BinOp::Le(_), BinOp::Le(_)) => true,
    -            (BinOp::Ne(_), BinOp::Ne(_)) => true,
    -            (BinOp::Ge(_), BinOp::Ge(_)) => true,
    -            (BinOp::Gt(_), BinOp::Gt(_)) => true,
    -            (BinOp::AddEq(_), BinOp::AddEq(_)) => true,
    -            (BinOp::SubEq(_), BinOp::SubEq(_)) => true,
    -            (BinOp::MulEq(_), BinOp::MulEq(_)) => true,
    -            (BinOp::DivEq(_), BinOp::DivEq(_)) => true,
    -            (BinOp::RemEq(_), BinOp::RemEq(_)) => true,
    -            (BinOp::BitXorEq(_), BinOp::BitXorEq(_)) => true,
    -            (BinOp::BitAndEq(_), BinOp::BitAndEq(_)) => true,
    -            (BinOp::BitOrEq(_), BinOp::BitOrEq(_)) => true,
    -            (BinOp::ShlEq(_), BinOp::ShlEq(_)) => true,
    -            (BinOp::ShrEq(_), BinOp::ShrEq(_)) => true,
    +            (crate::BinOp::Add(_), crate::BinOp::Add(_)) => true,
    +            (crate::BinOp::Sub(_), crate::BinOp::Sub(_)) => true,
    +            (crate::BinOp::Mul(_), crate::BinOp::Mul(_)) => true,
    +            (crate::BinOp::Div(_), crate::BinOp::Div(_)) => true,
    +            (crate::BinOp::Rem(_), crate::BinOp::Rem(_)) => true,
    +            (crate::BinOp::And(_), crate::BinOp::And(_)) => true,
    +            (crate::BinOp::Or(_), crate::BinOp::Or(_)) => true,
    +            (crate::BinOp::BitXor(_), crate::BinOp::BitXor(_)) => true,
    +            (crate::BinOp::BitAnd(_), crate::BinOp::BitAnd(_)) => true,
    +            (crate::BinOp::BitOr(_), crate::BinOp::BitOr(_)) => true,
    +            (crate::BinOp::Shl(_), crate::BinOp::Shl(_)) => true,
    +            (crate::BinOp::Shr(_), crate::BinOp::Shr(_)) => true,
    +            (crate::BinOp::Eq(_), crate::BinOp::Eq(_)) => true,
    +            (crate::BinOp::Lt(_), crate::BinOp::Lt(_)) => true,
    +            (crate::BinOp::Le(_), crate::BinOp::Le(_)) => true,
    +            (crate::BinOp::Ne(_), crate::BinOp::Ne(_)) => true,
    +            (crate::BinOp::Ge(_), crate::BinOp::Ge(_)) => true,
    +            (crate::BinOp::Gt(_), crate::BinOp::Gt(_)) => true,
    +            (crate::BinOp::AddAssign(_), crate::BinOp::AddAssign(_)) => true,
    +            (crate::BinOp::SubAssign(_), crate::BinOp::SubAssign(_)) => true,
    +            (crate::BinOp::MulAssign(_), crate::BinOp::MulAssign(_)) => true,
    +            (crate::BinOp::DivAssign(_), crate::BinOp::DivAssign(_)) => true,
    +            (crate::BinOp::RemAssign(_), crate::BinOp::RemAssign(_)) => true,
    +            (crate::BinOp::BitXorAssign(_), crate::BinOp::BitXorAssign(_)) => true,
    +            (crate::BinOp::BitAndAssign(_), crate::BinOp::BitAndAssign(_)) => true,
    +            (crate::BinOp::BitOrAssign(_), crate::BinOp::BitOrAssign(_)) => true,
    +            (crate::BinOp::ShlAssign(_), crate::BinOp::ShlAssign(_)) => true,
    +            (crate::BinOp::ShrAssign(_), crate::BinOp::ShrAssign(_)) => true,
                 _ => false,
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for Binding {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for Binding {
    -    fn eq(&self, other: &Self) -> bool {
    -        self.ident == other.ident && self.ty == other.ty
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for Block {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for Block {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::Block {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::Block {
         fn eq(&self, other: &Self) -> bool {
             self.stmts == other.stmts
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for BoundLifetimes {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for BoundLifetimes {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::BoundLifetimes {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::BoundLifetimes {
         fn eq(&self, other: &Self) -> bool {
             self.lifetimes == other.lifetimes
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ConstParam {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ConstParam {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::CapturedParam {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::CapturedParam {
    +    fn eq(&self, other: &Self) -> bool {
    +        match (self, other) {
    +            (
    +                crate::CapturedParam::Lifetime(self0),
    +                crate::CapturedParam::Lifetime(other0),
    +            ) => self0 == other0,
    +            (crate::CapturedParam::Ident(self0), crate::CapturedParam::Ident(other0)) => {
    +                self0 == other0
    +            }
    +            _ => false,
    +        }
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ConstParam {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ConstParam {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.ident == other.ident && self.ty == other.ty
                 && self.eq_token == other.eq_token && self.default == other.default
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for Constraint {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for Constraint {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::Constraint {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::Constraint {
         fn eq(&self, other: &Self) -> bool {
    -        self.ident == other.ident && self.bounds == other.bounds
    +        self.ident == other.ident && self.generics == other.generics
    +            && self.bounds == other.bounds
         }
     }
    -#[cfg(feature = "derive")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for Data {}
    -#[cfg(feature = "derive")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for Data {
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::Data {}
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::Data {
         fn eq(&self, other: &Self) -> bool {
             match (self, other) {
    -            (Data::Struct(self0), Data::Struct(other0)) => self0 == other0,
    -            (Data::Enum(self0), Data::Enum(other0)) => self0 == other0,
    -            (Data::Union(self0), Data::Union(other0)) => self0 == other0,
    +            (crate::Data::Struct(self0), crate::Data::Struct(other0)) => self0 == other0,
    +            (crate::Data::Enum(self0), crate::Data::Enum(other0)) => self0 == other0,
    +            (crate::Data::Union(self0), crate::Data::Union(other0)) => self0 == other0,
                 _ => false,
             }
         }
     }
    -#[cfg(feature = "derive")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for DataEnum {}
    -#[cfg(feature = "derive")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for DataEnum {
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::DataEnum {}
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::DataEnum {
         fn eq(&self, other: &Self) -> bool {
             self.variants == other.variants
         }
     }
    -#[cfg(feature = "derive")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for DataStruct {}
    -#[cfg(feature = "derive")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for DataStruct {
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::DataStruct {}
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::DataStruct {
         fn eq(&self, other: &Self) -> bool {
             self.fields == other.fields && self.semi_token == other.semi_token
         }
     }
    -#[cfg(feature = "derive")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for DataUnion {}
    -#[cfg(feature = "derive")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for DataUnion {
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::DataUnion {}
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::DataUnion {
         fn eq(&self, other: &Self) -> bool {
             self.fields == other.fields
         }
     }
    -#[cfg(feature = "derive")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for DeriveInput {}
    -#[cfg(feature = "derive")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for DeriveInput {
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::DeriveInput {}
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::DeriveInput {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.vis == other.vis && self.ident == other.ident
                 && self.generics == other.generics && self.data == other.data
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for Expr {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for Expr {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::Expr {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::Expr {
         fn eq(&self, other: &Self) -> bool {
             match (self, other) {
    -            #[cfg(feature = "full")]
    -            (Expr::Array(self0), Expr::Array(other0)) => self0 == other0,
    -            #[cfg(feature = "full")]
    -            (Expr::Assign(self0), Expr::Assign(other0)) => self0 == other0,
    -            #[cfg(feature = "full")]
    -            (Expr::AssignOp(self0), Expr::AssignOp(other0)) => self0 == other0,
    -            #[cfg(feature = "full")]
    -            (Expr::Async(self0), Expr::Async(other0)) => self0 == other0,
    -            #[cfg(feature = "full")]
    -            (Expr::Await(self0), Expr::Await(other0)) => self0 == other0,
    -            (Expr::Binary(self0), Expr::Binary(other0)) => self0 == other0,
    -            #[cfg(feature = "full")]
    -            (Expr::Block(self0), Expr::Block(other0)) => self0 == other0,
    -            #[cfg(feature = "full")]
    -            (Expr::Box(self0), Expr::Box(other0)) => self0 == other0,
    -            #[cfg(feature = "full")]
    -            (Expr::Break(self0), Expr::Break(other0)) => self0 == other0,
    -            (Expr::Call(self0), Expr::Call(other0)) => self0 == other0,
    -            (Expr::Cast(self0), Expr::Cast(other0)) => self0 == other0,
    -            #[cfg(feature = "full")]
    -            (Expr::Closure(self0), Expr::Closure(other0)) => self0 == other0,
    -            #[cfg(feature = "full")]
    -            (Expr::Continue(self0), Expr::Continue(other0)) => self0 == other0,
    -            (Expr::Field(self0), Expr::Field(other0)) => self0 == other0,
    -            #[cfg(feature = "full")]
    -            (Expr::ForLoop(self0), Expr::ForLoop(other0)) => self0 == other0,
    -            #[cfg(feature = "full")]
    -            (Expr::Group(self0), Expr::Group(other0)) => self0 == other0,
    -            #[cfg(feature = "full")]
    -            (Expr::If(self0), Expr::If(other0)) => self0 == other0,
    -            (Expr::Index(self0), Expr::Index(other0)) => self0 == other0,
    -            #[cfg(feature = "full")]
    -            (Expr::Let(self0), Expr::Let(other0)) => self0 == other0,
    -            (Expr::Lit(self0), Expr::Lit(other0)) => self0 == other0,
    -            #[cfg(feature = "full")]
    -            (Expr::Loop(self0), Expr::Loop(other0)) => self0 == other0,
    -            #[cfg(feature = "full")]
    -            (Expr::Macro(self0), Expr::Macro(other0)) => self0 == other0,
    -            #[cfg(feature = "full")]
    -            (Expr::Match(self0), Expr::Match(other0)) => self0 == other0,
    -            #[cfg(feature = "full")]
    -            (Expr::MethodCall(self0), Expr::MethodCall(other0)) => self0 == other0,
    -            (Expr::Paren(self0), Expr::Paren(other0)) => self0 == other0,
    -            (Expr::Path(self0), Expr::Path(other0)) => self0 == other0,
    -            #[cfg(feature = "full")]
    -            (Expr::Range(self0), Expr::Range(other0)) => self0 == other0,
    -            #[cfg(feature = "full")]
    -            (Expr::Reference(self0), Expr::Reference(other0)) => self0 == other0,
    -            #[cfg(feature = "full")]
    -            (Expr::Repeat(self0), Expr::Repeat(other0)) => self0 == other0,
    -            #[cfg(feature = "full")]
    -            (Expr::Return(self0), Expr::Return(other0)) => self0 == other0,
    -            #[cfg(feature = "full")]
    -            (Expr::Struct(self0), Expr::Struct(other0)) => self0 == other0,
    -            #[cfg(feature = "full")]
    -            (Expr::Try(self0), Expr::Try(other0)) => self0 == other0,
    -            #[cfg(feature = "full")]
    -            (Expr::TryBlock(self0), Expr::TryBlock(other0)) => self0 == other0,
    -            #[cfg(feature = "full")]
    -            (Expr::Tuple(self0), Expr::Tuple(other0)) => self0 == other0,
    -            #[cfg(feature = "full")]
    -            (Expr::Type(self0), Expr::Type(other0)) => self0 == other0,
    -            (Expr::Unary(self0), Expr::Unary(other0)) => self0 == other0,
    -            #[cfg(feature = "full")]
    -            (Expr::Unsafe(self0), Expr::Unsafe(other0)) => self0 == other0,
    -            (Expr::Verbatim(self0), Expr::Verbatim(other0)) => {
    +            #[cfg(feature = "full")]
    +            (crate::Expr::Array(self0), crate::Expr::Array(other0)) => self0 == other0,
    +            #[cfg(feature = "full")]
    +            (crate::Expr::Assign(self0), crate::Expr::Assign(other0)) => self0 == other0,
    +            #[cfg(feature = "full")]
    +            (crate::Expr::Async(self0), crate::Expr::Async(other0)) => self0 == other0,
    +            #[cfg(feature = "full")]
    +            (crate::Expr::Await(self0), crate::Expr::Await(other0)) => self0 == other0,
    +            (crate::Expr::Binary(self0), crate::Expr::Binary(other0)) => self0 == other0,
    +            #[cfg(feature = "full")]
    +            (crate::Expr::Block(self0), crate::Expr::Block(other0)) => self0 == other0,
    +            #[cfg(feature = "full")]
    +            (crate::Expr::Break(self0), crate::Expr::Break(other0)) => self0 == other0,
    +            (crate::Expr::Call(self0), crate::Expr::Call(other0)) => self0 == other0,
    +            (crate::Expr::Cast(self0), crate::Expr::Cast(other0)) => self0 == other0,
    +            #[cfg(feature = "full")]
    +            (crate::Expr::Closure(self0), crate::Expr::Closure(other0)) => {
    +                self0 == other0
    +            }
    +            #[cfg(feature = "full")]
    +            (crate::Expr::Const(self0), crate::Expr::Const(other0)) => self0 == other0,
    +            #[cfg(feature = "full")]
    +            (crate::Expr::Continue(self0), crate::Expr::Continue(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::Expr::Field(self0), crate::Expr::Field(other0)) => self0 == other0,
    +            #[cfg(feature = "full")]
    +            (crate::Expr::ForLoop(self0), crate::Expr::ForLoop(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::Expr::Group(self0), crate::Expr::Group(other0)) => self0 == other0,
    +            #[cfg(feature = "full")]
    +            (crate::Expr::If(self0), crate::Expr::If(other0)) => self0 == other0,
    +            (crate::Expr::Index(self0), crate::Expr::Index(other0)) => self0 == other0,
    +            #[cfg(feature = "full")]
    +            (crate::Expr::Infer(self0), crate::Expr::Infer(other0)) => self0 == other0,
    +            #[cfg(feature = "full")]
    +            (crate::Expr::Let(self0), crate::Expr::Let(other0)) => self0 == other0,
    +            (crate::Expr::Lit(self0), crate::Expr::Lit(other0)) => self0 == other0,
    +            #[cfg(feature = "full")]
    +            (crate::Expr::Loop(self0), crate::Expr::Loop(other0)) => self0 == other0,
    +            (crate::Expr::Macro(self0), crate::Expr::Macro(other0)) => self0 == other0,
    +            #[cfg(feature = "full")]
    +            (crate::Expr::Match(self0), crate::Expr::Match(other0)) => self0 == other0,
    +            (crate::Expr::MethodCall(self0), crate::Expr::MethodCall(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::Expr::Paren(self0), crate::Expr::Paren(other0)) => self0 == other0,
    +            (crate::Expr::Path(self0), crate::Expr::Path(other0)) => self0 == other0,
    +            #[cfg(feature = "full")]
    +            (crate::Expr::Range(self0), crate::Expr::Range(other0)) => self0 == other0,
    +            #[cfg(feature = "full")]
    +            (crate::Expr::RawAddr(self0), crate::Expr::RawAddr(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::Expr::Reference(self0), crate::Expr::Reference(other0)) => {
    +                self0 == other0
    +            }
    +            #[cfg(feature = "full")]
    +            (crate::Expr::Repeat(self0), crate::Expr::Repeat(other0)) => self0 == other0,
    +            #[cfg(feature = "full")]
    +            (crate::Expr::Return(self0), crate::Expr::Return(other0)) => self0 == other0,
    +            (crate::Expr::Struct(self0), crate::Expr::Struct(other0)) => self0 == other0,
    +            #[cfg(feature = "full")]
    +            (crate::Expr::Try(self0), crate::Expr::Try(other0)) => self0 == other0,
    +            #[cfg(feature = "full")]
    +            (crate::Expr::TryBlock(self0), crate::Expr::TryBlock(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::Expr::Tuple(self0), crate::Expr::Tuple(other0)) => self0 == other0,
    +            (crate::Expr::Unary(self0), crate::Expr::Unary(other0)) => self0 == other0,
    +            #[cfg(feature = "full")]
    +            (crate::Expr::Unsafe(self0), crate::Expr::Unsafe(other0)) => self0 == other0,
    +            (crate::Expr::Verbatim(self0), crate::Expr::Verbatim(other0)) => {
                     TokenStreamHelper(self0) == TokenStreamHelper(other0)
                 }
    -            #[cfg(feature = "full")]
    -            (Expr::While(self0), Expr::While(other0)) => self0 == other0,
    -            #[cfg(feature = "full")]
    -            (Expr::Yield(self0), Expr::Yield(other0)) => self0 == other0,
    +            #[cfg(feature = "full")]
    +            (crate::Expr::While(self0), crate::Expr::While(other0)) => self0 == other0,
    +            #[cfg(feature = "full")]
    +            (crate::Expr::Yield(self0), crate::Expr::Yield(other0)) => self0 == other0,
                 _ => false,
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprArray {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprArray {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprArray {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprArray {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.elems == other.elems
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprAssign {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprAssign {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprAssign {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprAssign {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.left == other.left && self.right == other.right
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprAssignOp {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprAssignOp {
    -    fn eq(&self, other: &Self) -> bool {
    -        self.attrs == other.attrs && self.left == other.left && self.op == other.op
    -            && self.right == other.right
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprAsync {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprAsync {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprAsync {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprAsync {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.capture == other.capture
                 && self.block == other.block
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprAwait {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprAwait {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprAwait {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprAwait {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.base == other.base
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprBinary {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprBinary {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprBinary {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprBinary {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.left == other.left && self.op == other.op
                 && self.right == other.right
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprBlock {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprBlock {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprBlock {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprBlock {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.label == other.label
                 && self.block == other.block
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprBox {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprBox {
    -    fn eq(&self, other: &Self) -> bool {
    -        self.attrs == other.attrs && self.expr == other.expr
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprBreak {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprBreak {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprBreak {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprBreak {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.label == other.label && self.expr == other.expr
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprCall {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprCall {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprCall {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprCall {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.func == other.func && self.args == other.args
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprCast {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprCast {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprCast {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprCast {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.expr == other.expr && self.ty == other.ty
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprClosure {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprClosure {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprClosure {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprClosure {
         fn eq(&self, other: &Self) -> bool {
    -        self.attrs == other.attrs && self.movability == other.movability
    +        self.attrs == other.attrs && self.lifetimes == other.lifetimes
    +            && self.constness == other.constness && self.movability == other.movability
                 && self.asyncness == other.asyncness && self.capture == other.capture
                 && self.inputs == other.inputs && self.output == other.output
                 && self.body == other.body
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprContinue {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprContinue {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprConst {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprConst {
    +    fn eq(&self, other: &Self) -> bool {
    +        self.attrs == other.attrs && self.block == other.block
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprContinue {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprContinue {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.label == other.label
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprField {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprField {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprField {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprField {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.base == other.base
                 && self.member == other.member
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprForLoop {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprForLoop {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprForLoop {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprForLoop {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.label == other.label && self.pat == other.pat
                 && self.expr == other.expr && self.body == other.body
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprGroup {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprGroup {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprGroup {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprGroup {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.expr == other.expr
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprIf {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprIf {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprIf {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprIf {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.cond == other.cond
                 && self.then_branch == other.then_branch
                 && self.else_branch == other.else_branch
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprIndex {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprIndex {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprIndex {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprIndex {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.expr == other.expr && self.index == other.index
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprLet {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprLet {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprInfer {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprInfer {
    +    fn eq(&self, other: &Self) -> bool {
    +        self.attrs == other.attrs
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprLet {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprLet {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.pat == other.pat && self.expr == other.expr
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprLit {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprLit {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprLit {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprLit {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.lit == other.lit
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprLoop {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprLoop {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprLoop {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprLoop {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.label == other.label && self.body == other.body
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprMacro {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprMacro {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprMacro {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprMacro {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.mac == other.mac
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprMatch {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprMatch {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprMatch {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprMatch {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.expr == other.expr && self.arms == other.arms
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprMethodCall {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprMethodCall {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprMethodCall {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprMethodCall {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.receiver == other.receiver
                 && self.method == other.method && self.turbofish == other.turbofish
                 && self.args == other.args
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprParen {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprParen {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprParen {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprParen {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.expr == other.expr
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprPath {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprPath {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprPath {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprPath {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.qself == other.qself && self.path == other.path
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprRange {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprRange {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprRange {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprRange {
         fn eq(&self, other: &Self) -> bool {
    -        self.attrs == other.attrs && self.from == other.from
    -            && self.limits == other.limits && self.to == other.to
    +        self.attrs == other.attrs && self.start == other.start
    +            && self.limits == other.limits && self.end == other.end
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprReference {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprReference {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprRawAddr {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprRawAddr {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.mutability == other.mutability
                 && self.expr == other.expr
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprRepeat {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprRepeat {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprReference {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprReference {
    +    fn eq(&self, other: &Self) -> bool {
    +        self.attrs == other.attrs && self.mutability == other.mutability
    +            && self.expr == other.expr
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprRepeat {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprRepeat {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.expr == other.expr && self.len == other.len
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprReturn {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprReturn {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprReturn {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprReturn {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.expr == other.expr
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprStruct {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprStruct {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprStruct {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprStruct {
         fn eq(&self, other: &Self) -> bool {
    -        self.attrs == other.attrs && self.path == other.path
    +        self.attrs == other.attrs && self.qself == other.qself && self.path == other.path
                 && self.fields == other.fields && self.dot2_token == other.dot2_token
                 && self.rest == other.rest
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprTry {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprTry {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprTry {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprTry {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.expr == other.expr
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprTryBlock {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprTryBlock {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprTryBlock {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprTryBlock {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.block == other.block
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprTuple {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprTuple {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprTuple {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprTuple {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.elems == other.elems
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprType {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprType {
    -    fn eq(&self, other: &Self) -> bool {
    -        self.attrs == other.attrs && self.expr == other.expr && self.ty == other.ty
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprUnary {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprUnary {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprUnary {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprUnary {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.op == other.op && self.expr == other.expr
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprUnsafe {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprUnsafe {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprUnsafe {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprUnsafe {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.block == other.block
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprWhile {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprWhile {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprWhile {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprWhile {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.label == other.label && self.cond == other.cond
                 && self.body == other.body
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ExprYield {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ExprYield {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ExprYield {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ExprYield {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.expr == other.expr
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for Field {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for Field {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::Field {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::Field {
         fn eq(&self, other: &Self) -> bool {
    -        self.attrs == other.attrs && self.vis == other.vis && self.ident == other.ident
    +        self.attrs == other.attrs && self.vis == other.vis
    +            && self.mutability == other.mutability && self.ident == other.ident
                 && self.colon_token == other.colon_token && self.ty == other.ty
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for FieldPat {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for FieldPat {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::FieldMutability {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::FieldMutability {
    +    fn eq(&self, other: &Self) -> bool {
    +        match (self, other) {
    +            (crate::FieldMutability::None, crate::FieldMutability::None) => true,
    +        }
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::FieldPat {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::FieldPat {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.member == other.member
                 && self.colon_token == other.colon_token && self.pat == other.pat
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for FieldValue {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for FieldValue {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::FieldValue {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::FieldValue {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.member == other.member
                 && self.colon_token == other.colon_token && self.expr == other.expr
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for Fields {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for Fields {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::Fields {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::Fields {
         fn eq(&self, other: &Self) -> bool {
             match (self, other) {
    -            (Fields::Named(self0), Fields::Named(other0)) => self0 == other0,
    -            (Fields::Unnamed(self0), Fields::Unnamed(other0)) => self0 == other0,
    -            (Fields::Unit, Fields::Unit) => true,
    +            (crate::Fields::Named(self0), crate::Fields::Named(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::Fields::Unnamed(self0), crate::Fields::Unnamed(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::Fields::Unit, crate::Fields::Unit) => true,
                 _ => false,
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for FieldsNamed {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for FieldsNamed {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::FieldsNamed {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::FieldsNamed {
         fn eq(&self, other: &Self) -> bool {
             self.named == other.named
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for FieldsUnnamed {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for FieldsUnnamed {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::FieldsUnnamed {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::FieldsUnnamed {
         fn eq(&self, other: &Self) -> bool {
             self.unnamed == other.unnamed
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for File {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for File {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::File {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::File {
         fn eq(&self, other: &Self) -> bool {
             self.shebang == other.shebang && self.attrs == other.attrs
                 && self.items == other.items
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for FnArg {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for FnArg {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::FnArg {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::FnArg {
         fn eq(&self, other: &Self) -> bool {
             match (self, other) {
    -            (FnArg::Receiver(self0), FnArg::Receiver(other0)) => self0 == other0,
    -            (FnArg::Typed(self0), FnArg::Typed(other0)) => self0 == other0,
    -            _ => false,
    -        }
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ForeignItem {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ForeignItem {
    -    fn eq(&self, other: &Self) -> bool {
    -        match (self, other) {
    -            (ForeignItem::Fn(self0), ForeignItem::Fn(other0)) => self0 == other0,
    -            (ForeignItem::Static(self0), ForeignItem::Static(other0)) => self0 == other0,
    -            (ForeignItem::Type(self0), ForeignItem::Type(other0)) => self0 == other0,
    -            (ForeignItem::Macro(self0), ForeignItem::Macro(other0)) => self0 == other0,
    -            (ForeignItem::Verbatim(self0), ForeignItem::Verbatim(other0)) => {
    -                TokenStreamHelper(self0) == TokenStreamHelper(other0)
    +            (crate::FnArg::Receiver(self0), crate::FnArg::Receiver(other0)) => {
    +                self0 == other0
                 }
    +            (crate::FnArg::Typed(self0), crate::FnArg::Typed(other0)) => self0 == other0,
                 _ => false,
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ForeignItemFn {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ForeignItemFn {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ForeignItem {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ForeignItem {
    +    fn eq(&self, other: &Self) -> bool {
    +        match (self, other) {
    +            (crate::ForeignItem::Fn(self0), crate::ForeignItem::Fn(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::ForeignItem::Static(self0), crate::ForeignItem::Static(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::ForeignItem::Type(self0), crate::ForeignItem::Type(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::ForeignItem::Macro(self0), crate::ForeignItem::Macro(other0)) => {
    +                self0 == other0
    +            }
    +            (
    +                crate::ForeignItem::Verbatim(self0),
    +                crate::ForeignItem::Verbatim(other0),
    +            ) => TokenStreamHelper(self0) == TokenStreamHelper(other0),
    +            _ => false,
    +        }
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ForeignItemFn {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ForeignItemFn {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.vis == other.vis && self.sig == other.sig
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ForeignItemMacro {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ForeignItemMacro {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ForeignItemMacro {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ForeignItemMacro {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.mac == other.mac
                 && self.semi_token == other.semi_token
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ForeignItemStatic {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ForeignItemStatic {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ForeignItemStatic {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ForeignItemStatic {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.vis == other.vis
                 && self.mutability == other.mutability && self.ident == other.ident
                 && self.ty == other.ty
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ForeignItemType {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ForeignItemType {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ForeignItemType {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ForeignItemType {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.vis == other.vis && self.ident == other.ident
    +            && self.generics == other.generics
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for GenericArgument {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for GenericArgument {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::GenericArgument {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::GenericArgument {
         fn eq(&self, other: &Self) -> bool {
             match (self, other) {
    -            (GenericArgument::Lifetime(self0), GenericArgument::Lifetime(other0)) => {
    -                self0 == other0
    -            }
    -            (GenericArgument::Type(self0), GenericArgument::Type(other0)) => {
    -                self0 == other0
    -            }
    -            (GenericArgument::Const(self0), GenericArgument::Const(other0)) => {
    -                self0 == other0
    -            }
    -            (GenericArgument::Binding(self0), GenericArgument::Binding(other0)) => {
    -                self0 == other0
    -            }
    -            (GenericArgument::Constraint(self0), GenericArgument::Constraint(other0)) => {
    -                self0 == other0
    -            }
    -            _ => false,
    -        }
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for GenericMethodArgument {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for GenericMethodArgument {
    -    fn eq(&self, other: &Self) -> bool {
    -        match (self, other) {
    -            (GenericMethodArgument::Type(self0), GenericMethodArgument::Type(other0)) => {
    -                self0 == other0
    -            }
                 (
    -                GenericMethodArgument::Const(self0),
    -                GenericMethodArgument::Const(other0),
    +                crate::GenericArgument::Lifetime(self0),
    +                crate::GenericArgument::Lifetime(other0),
    +            ) => self0 == other0,
    +            (
    +                crate::GenericArgument::Type(self0),
    +                crate::GenericArgument::Type(other0),
    +            ) => self0 == other0,
    +            (
    +                crate::GenericArgument::Const(self0),
    +                crate::GenericArgument::Const(other0),
    +            ) => self0 == other0,
    +            (
    +                crate::GenericArgument::AssocType(self0),
    +                crate::GenericArgument::AssocType(other0),
    +            ) => self0 == other0,
    +            (
    +                crate::GenericArgument::AssocConst(self0),
    +                crate::GenericArgument::AssocConst(other0),
    +            ) => self0 == other0,
    +            (
    +                crate::GenericArgument::Constraint(self0),
    +                crate::GenericArgument::Constraint(other0),
                 ) => self0 == other0,
                 _ => false,
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for GenericParam {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for GenericParam {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::GenericParam {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::GenericParam {
         fn eq(&self, other: &Self) -> bool {
             match (self, other) {
    -            (GenericParam::Type(self0), GenericParam::Type(other0)) => self0 == other0,
    -            (GenericParam::Lifetime(self0), GenericParam::Lifetime(other0)) => {
    +            (
    +                crate::GenericParam::Lifetime(self0),
    +                crate::GenericParam::Lifetime(other0),
    +            ) => self0 == other0,
    +            (crate::GenericParam::Type(self0), crate::GenericParam::Type(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::GenericParam::Const(self0), crate::GenericParam::Const(other0)) => {
                     self0 == other0
                 }
    -            (GenericParam::Const(self0), GenericParam::Const(other0)) => self0 == other0,
                 _ => false,
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for Generics {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for Generics {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::Generics {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::Generics {
         fn eq(&self, other: &Self) -> bool {
             self.lt_token == other.lt_token && self.params == other.params
                 && self.gt_token == other.gt_token && self.where_clause == other.where_clause
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ImplItem {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ImplItem {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ImplItem {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ImplItem {
         fn eq(&self, other: &Self) -> bool {
             match (self, other) {
    -            (ImplItem::Const(self0), ImplItem::Const(other0)) => self0 == other0,
    -            (ImplItem::Method(self0), ImplItem::Method(other0)) => self0 == other0,
    -            (ImplItem::Type(self0), ImplItem::Type(other0)) => self0 == other0,
    -            (ImplItem::Macro(self0), ImplItem::Macro(other0)) => self0 == other0,
    -            (ImplItem::Verbatim(self0), ImplItem::Verbatim(other0)) => {
    +            (crate::ImplItem::Const(self0), crate::ImplItem::Const(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::ImplItem::Fn(self0), crate::ImplItem::Fn(other0)) => self0 == other0,
    +            (crate::ImplItem::Type(self0), crate::ImplItem::Type(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::ImplItem::Macro(self0), crate::ImplItem::Macro(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::ImplItem::Verbatim(self0), crate::ImplItem::Verbatim(other0)) => {
                     TokenStreamHelper(self0) == TokenStreamHelper(other0)
                 }
                 _ => false,
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ImplItemConst {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ImplItemConst {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ImplItemConst {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ImplItemConst {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.vis == other.vis
                 && self.defaultness == other.defaultness && self.ident == other.ident
    -            && self.ty == other.ty && self.expr == other.expr
    +            && self.generics == other.generics && self.ty == other.ty
    +            && self.expr == other.expr
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ImplItemMacro {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ImplItemMacro {
    -    fn eq(&self, other: &Self) -> bool {
    -        self.attrs == other.attrs && self.mac == other.mac
    -            && self.semi_token == other.semi_token
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ImplItemMethod {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ImplItemMethod {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ImplItemFn {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ImplItemFn {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.vis == other.vis
                 && self.defaultness == other.defaultness && self.sig == other.sig
                 && self.block == other.block
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ImplItemType {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ImplItemType {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ImplItemMacro {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ImplItemMacro {
    +    fn eq(&self, other: &Self) -> bool {
    +        self.attrs == other.attrs && self.mac == other.mac
    +            && self.semi_token == other.semi_token
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ImplItemType {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ImplItemType {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.vis == other.vis
                 && self.defaultness == other.defaultness && self.ident == other.ident
                 && self.generics == other.generics && self.ty == other.ty
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for Item {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for Item {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ImplRestriction {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ImplRestriction {
    +    fn eq(&self, _other: &Self) -> bool {
    +        match *self {}
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::Item {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::Item {
         fn eq(&self, other: &Self) -> bool {
             match (self, other) {
    -            (Item::Const(self0), Item::Const(other0)) => self0 == other0,
    -            (Item::Enum(self0), Item::Enum(other0)) => self0 == other0,
    -            (Item::ExternCrate(self0), Item::ExternCrate(other0)) => self0 == other0,
    -            (Item::Fn(self0), Item::Fn(other0)) => self0 == other0,
    -            (Item::ForeignMod(self0), Item::ForeignMod(other0)) => self0 == other0,
    -            (Item::Impl(self0), Item::Impl(other0)) => self0 == other0,
    -            (Item::Macro(self0), Item::Macro(other0)) => self0 == other0,
    -            (Item::Macro2(self0), Item::Macro2(other0)) => self0 == other0,
    -            (Item::Mod(self0), Item::Mod(other0)) => self0 == other0,
    -            (Item::Static(self0), Item::Static(other0)) => self0 == other0,
    -            (Item::Struct(self0), Item::Struct(other0)) => self0 == other0,
    -            (Item::Trait(self0), Item::Trait(other0)) => self0 == other0,
    -            (Item::TraitAlias(self0), Item::TraitAlias(other0)) => self0 == other0,
    -            (Item::Type(self0), Item::Type(other0)) => self0 == other0,
    -            (Item::Union(self0), Item::Union(other0)) => self0 == other0,
    -            (Item::Use(self0), Item::Use(other0)) => self0 == other0,
    -            (Item::Verbatim(self0), Item::Verbatim(other0)) => {
    +            (crate::Item::Const(self0), crate::Item::Const(other0)) => self0 == other0,
    +            (crate::Item::Enum(self0), crate::Item::Enum(other0)) => self0 == other0,
    +            (crate::Item::ExternCrate(self0), crate::Item::ExternCrate(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::Item::Fn(self0), crate::Item::Fn(other0)) => self0 == other0,
    +            (crate::Item::ForeignMod(self0), crate::Item::ForeignMod(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::Item::Impl(self0), crate::Item::Impl(other0)) => self0 == other0,
    +            (crate::Item::Macro(self0), crate::Item::Macro(other0)) => self0 == other0,
    +            (crate::Item::Mod(self0), crate::Item::Mod(other0)) => self0 == other0,
    +            (crate::Item::Static(self0), crate::Item::Static(other0)) => self0 == other0,
    +            (crate::Item::Struct(self0), crate::Item::Struct(other0)) => self0 == other0,
    +            (crate::Item::Trait(self0), crate::Item::Trait(other0)) => self0 == other0,
    +            (crate::Item::TraitAlias(self0), crate::Item::TraitAlias(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::Item::Type(self0), crate::Item::Type(other0)) => self0 == other0,
    +            (crate::Item::Union(self0), crate::Item::Union(other0)) => self0 == other0,
    +            (crate::Item::Use(self0), crate::Item::Use(other0)) => self0 == other0,
    +            (crate::Item::Verbatim(self0), crate::Item::Verbatim(other0)) => {
                     TokenStreamHelper(self0) == TokenStreamHelper(other0)
                 }
                 _ => false,
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ItemConst {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ItemConst {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ItemConst {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ItemConst {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.vis == other.vis && self.ident == other.ident
    -            && self.ty == other.ty && self.expr == other.expr
    +            && self.generics == other.generics && self.ty == other.ty
    +            && self.expr == other.expr
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ItemEnum {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ItemEnum {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ItemEnum {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ItemEnum {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.vis == other.vis && self.ident == other.ident
                 && self.generics == other.generics && self.variants == other.variants
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ItemExternCrate {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ItemExternCrate {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ItemExternCrate {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ItemExternCrate {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.vis == other.vis && self.ident == other.ident
                 && self.rename == other.rename
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ItemFn {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ItemFn {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ItemFn {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ItemFn {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.vis == other.vis && self.sig == other.sig
                 && self.block == other.block
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ItemForeignMod {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ItemForeignMod {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ItemForeignMod {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ItemForeignMod {
         fn eq(&self, other: &Self) -> bool {
    -        self.attrs == other.attrs && self.abi == other.abi && self.items == other.items
    +        self.attrs == other.attrs && self.unsafety == other.unsafety
    +            && self.abi == other.abi && self.items == other.items
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ItemImpl {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ItemImpl {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ItemImpl {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ItemImpl {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.defaultness == other.defaultness
                 && self.unsafety == other.unsafety && self.generics == other.generics
    @@ -3297,601 +3505,569 @@
                 && self.items == other.items
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ItemMacro {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ItemMacro {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ItemMacro {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ItemMacro {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.ident == other.ident && self.mac == other.mac
                 && self.semi_token == other.semi_token
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ItemMacro2 {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ItemMacro2 {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ItemMod {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ItemMod {
         fn eq(&self, other: &Self) -> bool {
    -        self.attrs == other.attrs && self.vis == other.vis && self.ident == other.ident
    -            && TokenStreamHelper(&self.rules) == TokenStreamHelper(&other.rules)
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ItemMod {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ItemMod {
    -    fn eq(&self, other: &Self) -> bool {
    -        self.attrs == other.attrs && self.vis == other.vis && self.ident == other.ident
    +        self.attrs == other.attrs && self.vis == other.vis
    +            && self.unsafety == other.unsafety && self.ident == other.ident
                 && self.content == other.content && self.semi == other.semi
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ItemStatic {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ItemStatic {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ItemStatic {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ItemStatic {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.vis == other.vis
                 && self.mutability == other.mutability && self.ident == other.ident
                 && self.ty == other.ty && self.expr == other.expr
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ItemStruct {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ItemStruct {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ItemStruct {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ItemStruct {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.vis == other.vis && self.ident == other.ident
                 && self.generics == other.generics && self.fields == other.fields
                 && self.semi_token == other.semi_token
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ItemTrait {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ItemTrait {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ItemTrait {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ItemTrait {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.vis == other.vis
                 && self.unsafety == other.unsafety && self.auto_token == other.auto_token
    -            && self.ident == other.ident && self.generics == other.generics
    -            && self.colon_token == other.colon_token
    +            && self.restriction == other.restriction && self.ident == other.ident
    +            && self.generics == other.generics && self.colon_token == other.colon_token
                 && self.supertraits == other.supertraits && self.items == other.items
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ItemTraitAlias {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ItemTraitAlias {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ItemTraitAlias {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ItemTraitAlias {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.vis == other.vis && self.ident == other.ident
                 && self.generics == other.generics && self.bounds == other.bounds
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ItemType {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ItemType {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ItemType {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ItemType {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.vis == other.vis && self.ident == other.ident
                 && self.generics == other.generics && self.ty == other.ty
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ItemUnion {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ItemUnion {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ItemUnion {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ItemUnion {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.vis == other.vis && self.ident == other.ident
                 && self.generics == other.generics && self.fields == other.fields
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ItemUse {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ItemUse {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ItemUse {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ItemUse {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.vis == other.vis
                 && self.leading_colon == other.leading_colon && self.tree == other.tree
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for Label {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for Label {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::Label {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::Label {
         fn eq(&self, other: &Self) -> bool {
             self.name == other.name
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for LifetimeDef {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for LifetimeDef {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::LifetimeParam {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::LifetimeParam {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.lifetime == other.lifetime
                 && self.colon_token == other.colon_token && self.bounds == other.bounds
         }
     }
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for Lit {}
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for Lit {
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::Lit {}
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::Lit {
         fn eq(&self, other: &Self) -> bool {
             match (self, other) {
    -            (Lit::Str(self0), Lit::Str(other0)) => self0 == other0,
    -            (Lit::ByteStr(self0), Lit::ByteStr(other0)) => self0 == other0,
    -            (Lit::Byte(self0), Lit::Byte(other0)) => self0 == other0,
    -            (Lit::Char(self0), Lit::Char(other0)) => self0 == other0,
    -            (Lit::Int(self0), Lit::Int(other0)) => self0 == other0,
    -            (Lit::Float(self0), Lit::Float(other0)) => self0 == other0,
    -            (Lit::Bool(self0), Lit::Bool(other0)) => self0 == other0,
    -            (Lit::Verbatim(self0), Lit::Verbatim(other0)) => {
    +            (crate::Lit::Str(self0), crate::Lit::Str(other0)) => self0 == other0,
    +            (crate::Lit::ByteStr(self0), crate::Lit::ByteStr(other0)) => self0 == other0,
    +            (crate::Lit::CStr(self0), crate::Lit::CStr(other0)) => self0 == other0,
    +            (crate::Lit::Byte(self0), crate::Lit::Byte(other0)) => self0 == other0,
    +            (crate::Lit::Char(self0), crate::Lit::Char(other0)) => self0 == other0,
    +            (crate::Lit::Int(self0), crate::Lit::Int(other0)) => self0 == other0,
    +            (crate::Lit::Float(self0), crate::Lit::Float(other0)) => self0 == other0,
    +            (crate::Lit::Bool(self0), crate::Lit::Bool(other0)) => self0 == other0,
    +            (crate::Lit::Verbatim(self0), crate::Lit::Verbatim(other0)) => {
                     self0.to_string() == other0.to_string()
                 }
                 _ => false,
             }
         }
     }
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for LitBool {}
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for LitBool {
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::LitBool {}
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::LitBool {
         fn eq(&self, other: &Self) -> bool {
             self.value == other.value
         }
     }
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for LitByte {}
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for LitByteStr {}
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for LitChar {}
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for LitFloat {}
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for LitInt {}
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for LitStr {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for Local {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for Local {
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::LitByte {}
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::LitByteStr {}
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::LitCStr {}
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::LitChar {}
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::LitFloat {}
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::LitInt {}
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::LitStr {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::Local {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::Local {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.pat == other.pat && self.init == other.init
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for Macro {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for Macro {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::LocalInit {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::LocalInit {
    +    fn eq(&self, other: &Self) -> bool {
    +        self.expr == other.expr && self.diverge == other.diverge
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::Macro {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::Macro {
         fn eq(&self, other: &Self) -> bool {
             self.path == other.path && self.delimiter == other.delimiter
                 && TokenStreamHelper(&self.tokens) == TokenStreamHelper(&other.tokens)
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for MacroDelimiter {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for MacroDelimiter {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::MacroDelimiter {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::MacroDelimiter {
         fn eq(&self, other: &Self) -> bool {
             match (self, other) {
    -            (MacroDelimiter::Paren(_), MacroDelimiter::Paren(_)) => true,
    -            (MacroDelimiter::Brace(_), MacroDelimiter::Brace(_)) => true,
    -            (MacroDelimiter::Bracket(_), MacroDelimiter::Bracket(_)) => true,
    +            (crate::MacroDelimiter::Paren(_), crate::MacroDelimiter::Paren(_)) => true,
    +            (crate::MacroDelimiter::Brace(_), crate::MacroDelimiter::Brace(_)) => true,
    +            (crate::MacroDelimiter::Bracket(_), crate::MacroDelimiter::Bracket(_)) => {
    +                true
    +            }
                 _ => false,
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for Meta {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for Meta {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::Meta {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::Meta {
         fn eq(&self, other: &Self) -> bool {
             match (self, other) {
    -            (Meta::Path(self0), Meta::Path(other0)) => self0 == other0,
    -            (Meta::List(self0), Meta::List(other0)) => self0 == other0,
    -            (Meta::NameValue(self0), Meta::NameValue(other0)) => self0 == other0,
    +            (crate::Meta::Path(self0), crate::Meta::Path(other0)) => self0 == other0,
    +            (crate::Meta::List(self0), crate::Meta::List(other0)) => self0 == other0,
    +            (crate::Meta::NameValue(self0), crate::Meta::NameValue(other0)) => {
    +                self0 == other0
    +            }
                 _ => false,
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for MetaList {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for MetaList {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::MetaList {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::MetaList {
         fn eq(&self, other: &Self) -> bool {
    -        self.path == other.path && self.nested == other.nested
    +        self.path == other.path && self.delimiter == other.delimiter
    +            && TokenStreamHelper(&self.tokens) == TokenStreamHelper(&other.tokens)
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for MetaNameValue {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for MetaNameValue {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::MetaNameValue {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::MetaNameValue {
         fn eq(&self, other: &Self) -> bool {
    -        self.path == other.path && self.lit == other.lit
    +        self.path == other.path && self.value == other.value
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for MethodTurbofish {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for MethodTurbofish {
    -    fn eq(&self, other: &Self) -> bool {
    -        self.args == other.args
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for NestedMeta {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for NestedMeta {
    -    fn eq(&self, other: &Self) -> bool {
    -        match (self, other) {
    -            (NestedMeta::Meta(self0), NestedMeta::Meta(other0)) => self0 == other0,
    -            (NestedMeta::Lit(self0), NestedMeta::Lit(other0)) => self0 == other0,
    -            _ => false,
    -        }
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ParenthesizedGenericArguments {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ParenthesizedGenericArguments {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ParenthesizedGenericArguments {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ParenthesizedGenericArguments {
         fn eq(&self, other: &Self) -> bool {
             self.inputs == other.inputs && self.output == other.output
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for Pat {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for Pat {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::Pat {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::Pat {
         fn eq(&self, other: &Self) -> bool {
             match (self, other) {
    -            (Pat::Box(self0), Pat::Box(other0)) => self0 == other0,
    -            (Pat::Ident(self0), Pat::Ident(other0)) => self0 == other0,
    -            (Pat::Lit(self0), Pat::Lit(other0)) => self0 == other0,
    -            (Pat::Macro(self0), Pat::Macro(other0)) => self0 == other0,
    -            (Pat::Or(self0), Pat::Or(other0)) => self0 == other0,
    -            (Pat::Path(self0), Pat::Path(other0)) => self0 == other0,
    -            (Pat::Range(self0), Pat::Range(other0)) => self0 == other0,
    -            (Pat::Reference(self0), Pat::Reference(other0)) => self0 == other0,
    -            (Pat::Rest(self0), Pat::Rest(other0)) => self0 == other0,
    -            (Pat::Slice(self0), Pat::Slice(other0)) => self0 == other0,
    -            (Pat::Struct(self0), Pat::Struct(other0)) => self0 == other0,
    -            (Pat::Tuple(self0), Pat::Tuple(other0)) => self0 == other0,
    -            (Pat::TupleStruct(self0), Pat::TupleStruct(other0)) => self0 == other0,
    -            (Pat::Type(self0), Pat::Type(other0)) => self0 == other0,
    -            (Pat::Verbatim(self0), Pat::Verbatim(other0)) => {
    +            (crate::Pat::Const(self0), crate::Pat::Const(other0)) => self0 == other0,
    +            (crate::Pat::Ident(self0), crate::Pat::Ident(other0)) => self0 == other0,
    +            (crate::Pat::Lit(self0), crate::Pat::Lit(other0)) => self0 == other0,
    +            (crate::Pat::Macro(self0), crate::Pat::Macro(other0)) => self0 == other0,
    +            (crate::Pat::Or(self0), crate::Pat::Or(other0)) => self0 == other0,
    +            (crate::Pat::Paren(self0), crate::Pat::Paren(other0)) => self0 == other0,
    +            (crate::Pat::Path(self0), crate::Pat::Path(other0)) => self0 == other0,
    +            (crate::Pat::Range(self0), crate::Pat::Range(other0)) => self0 == other0,
    +            (crate::Pat::Reference(self0), crate::Pat::Reference(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::Pat::Rest(self0), crate::Pat::Rest(other0)) => self0 == other0,
    +            (crate::Pat::Slice(self0), crate::Pat::Slice(other0)) => self0 == other0,
    +            (crate::Pat::Struct(self0), crate::Pat::Struct(other0)) => self0 == other0,
    +            (crate::Pat::Tuple(self0), crate::Pat::Tuple(other0)) => self0 == other0,
    +            (crate::Pat::TupleStruct(self0), crate::Pat::TupleStruct(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::Pat::Type(self0), crate::Pat::Type(other0)) => self0 == other0,
    +            (crate::Pat::Verbatim(self0), crate::Pat::Verbatim(other0)) => {
                     TokenStreamHelper(self0) == TokenStreamHelper(other0)
                 }
    -            (Pat::Wild(self0), Pat::Wild(other0)) => self0 == other0,
    +            (crate::Pat::Wild(self0), crate::Pat::Wild(other0)) => self0 == other0,
                 _ => false,
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for PatBox {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for PatBox {
    -    fn eq(&self, other: &Self) -> bool {
    -        self.attrs == other.attrs && self.pat == other.pat
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for PatIdent {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for PatIdent {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::PatIdent {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::PatIdent {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.by_ref == other.by_ref
                 && self.mutability == other.mutability && self.ident == other.ident
                 && self.subpat == other.subpat
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for PatLit {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for PatLit {
    -    fn eq(&self, other: &Self) -> bool {
    -        self.attrs == other.attrs && self.expr == other.expr
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for PatMacro {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for PatMacro {
    -    fn eq(&self, other: &Self) -> bool {
    -        self.attrs == other.attrs && self.mac == other.mac
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for PatOr {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for PatOr {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::PatOr {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::PatOr {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.leading_vert == other.leading_vert
                 && self.cases == other.cases
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for PatPath {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for PatPath {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::PatParen {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::PatParen {
         fn eq(&self, other: &Self) -> bool {
    -        self.attrs == other.attrs && self.qself == other.qself && self.path == other.path
    +        self.attrs == other.attrs && self.pat == other.pat
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for PatRange {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for PatRange {
    -    fn eq(&self, other: &Self) -> bool {
    -        self.attrs == other.attrs && self.lo == other.lo && self.limits == other.limits
    -            && self.hi == other.hi
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for PatReference {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for PatReference {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::PatReference {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::PatReference {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.mutability == other.mutability
                 && self.pat == other.pat
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for PatRest {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for PatRest {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::PatRest {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::PatRest {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for PatSlice {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for PatSlice {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::PatSlice {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::PatSlice {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.elems == other.elems
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for PatStruct {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for PatStruct {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::PatStruct {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::PatStruct {
         fn eq(&self, other: &Self) -> bool {
    -        self.attrs == other.attrs && self.path == other.path
    -            && self.fields == other.fields && self.dot2_token == other.dot2_token
    +        self.attrs == other.attrs && self.qself == other.qself && self.path == other.path
    +            && self.fields == other.fields && self.rest == other.rest
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for PatTuple {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for PatTuple {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::PatTuple {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::PatTuple {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.elems == other.elems
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for PatTupleStruct {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for PatTupleStruct {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::PatTupleStruct {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::PatTupleStruct {
         fn eq(&self, other: &Self) -> bool {
    -        self.attrs == other.attrs && self.path == other.path && self.pat == other.pat
    +        self.attrs == other.attrs && self.qself == other.qself && self.path == other.path
    +            && self.elems == other.elems
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for PatType {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for PatType {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::PatType {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::PatType {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.pat == other.pat && self.ty == other.ty
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for PatWild {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for PatWild {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::PatWild {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::PatWild {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for Path {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for Path {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::Path {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::Path {
         fn eq(&self, other: &Self) -> bool {
             self.leading_colon == other.leading_colon && self.segments == other.segments
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for PathArguments {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for PathArguments {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::PathArguments {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::PathArguments {
         fn eq(&self, other: &Self) -> bool {
             match (self, other) {
    -            (PathArguments::None, PathArguments::None) => true,
    +            (crate::PathArguments::None, crate::PathArguments::None) => true,
                 (
    -                PathArguments::AngleBracketed(self0),
    -                PathArguments::AngleBracketed(other0),
    +                crate::PathArguments::AngleBracketed(self0),
    +                crate::PathArguments::AngleBracketed(other0),
                 ) => self0 == other0,
                 (
    -                PathArguments::Parenthesized(self0),
    -                PathArguments::Parenthesized(other0),
    +                crate::PathArguments::Parenthesized(self0),
    +                crate::PathArguments::Parenthesized(other0),
                 ) => self0 == other0,
                 _ => false,
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for PathSegment {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for PathSegment {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::PathSegment {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::PathSegment {
         fn eq(&self, other: &Self) -> bool {
             self.ident == other.ident && self.arguments == other.arguments
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for PredicateEq {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for PredicateEq {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::PointerMutability {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::PointerMutability {
         fn eq(&self, other: &Self) -> bool {
    -        self.lhs_ty == other.lhs_ty && self.rhs_ty == other.rhs_ty
    +        match (self, other) {
    +            (crate::PointerMutability::Const(_), crate::PointerMutability::Const(_)) => {
    +                true
    +            }
    +            (crate::PointerMutability::Mut(_), crate::PointerMutability::Mut(_)) => true,
    +            _ => false,
    +        }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for PredicateLifetime {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for PredicateLifetime {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::PreciseCapture {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::PreciseCapture {
    +    fn eq(&self, other: &Self) -> bool {
    +        self.params == other.params
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::PredicateLifetime {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::PredicateLifetime {
         fn eq(&self, other: &Self) -> bool {
             self.lifetime == other.lifetime && self.bounds == other.bounds
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for PredicateType {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for PredicateType {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::PredicateType {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::PredicateType {
         fn eq(&self, other: &Self) -> bool {
             self.lifetimes == other.lifetimes && self.bounded_ty == other.bounded_ty
                 && self.bounds == other.bounds
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for QSelf {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for QSelf {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::QSelf {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::QSelf {
         fn eq(&self, other: &Self) -> bool {
             self.ty == other.ty && self.position == other.position
                 && self.as_token == other.as_token
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for RangeLimits {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for RangeLimits {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::RangeLimits {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::RangeLimits {
         fn eq(&self, other: &Self) -> bool {
             match (self, other) {
    -            (RangeLimits::HalfOpen(_), RangeLimits::HalfOpen(_)) => true,
    -            (RangeLimits::Closed(_), RangeLimits::Closed(_)) => true,
    +            (crate::RangeLimits::HalfOpen(_), crate::RangeLimits::HalfOpen(_)) => true,
    +            (crate::RangeLimits::Closed(_), crate::RangeLimits::Closed(_)) => true,
                 _ => false,
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for Receiver {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for Receiver {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::Receiver {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::Receiver {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.reference == other.reference
                 && self.mutability == other.mutability
    +            && self.colon_token == other.colon_token && self.ty == other.ty
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for ReturnType {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for ReturnType {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::ReturnType {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::ReturnType {
         fn eq(&self, other: &Self) -> bool {
             match (self, other) {
    -            (ReturnType::Default, ReturnType::Default) => true,
    -            (ReturnType::Type(_, self1), ReturnType::Type(_, other1)) => self1 == other1,
    +            (crate::ReturnType::Default, crate::ReturnType::Default) => true,
    +            (crate::ReturnType::Type(_, self1), crate::ReturnType::Type(_, other1)) => {
    +                self1 == other1
    +            }
                 _ => false,
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for Signature {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for Signature {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::Signature {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::Signature {
         fn eq(&self, other: &Self) -> bool {
             self.constness == other.constness && self.asyncness == other.asyncness
                 && self.unsafety == other.unsafety && self.abi == other.abi
    @@ -3900,490 +4076,536 @@
                 && self.output == other.output
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for Stmt {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for Stmt {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::StaticMutability {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::StaticMutability {
         fn eq(&self, other: &Self) -> bool {
             match (self, other) {
    -            (Stmt::Local(self0), Stmt::Local(other0)) => self0 == other0,
    -            (Stmt::Item(self0), Stmt::Item(other0)) => self0 == other0,
    -            (Stmt::Expr(self0), Stmt::Expr(other0)) => self0 == other0,
    -            (Stmt::Semi(self0, _), Stmt::Semi(other0, _)) => self0 == other0,
    +            (crate::StaticMutability::Mut(_), crate::StaticMutability::Mut(_)) => true,
    +            (crate::StaticMutability::None, crate::StaticMutability::None) => true,
                 _ => false,
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for TraitBound {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for TraitBound {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::Stmt {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::Stmt {
    +    fn eq(&self, other: &Self) -> bool {
    +        match (self, other) {
    +            (crate::Stmt::Local(self0), crate::Stmt::Local(other0)) => self0 == other0,
    +            (crate::Stmt::Item(self0), crate::Stmt::Item(other0)) => self0 == other0,
    +            (crate::Stmt::Expr(self0, self1), crate::Stmt::Expr(other0, other1)) => {
    +                self0 == other0 && self1 == other1
    +            }
    +            (crate::Stmt::Macro(self0), crate::Stmt::Macro(other0)) => self0 == other0,
    +            _ => false,
    +        }
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::StmtMacro {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::StmtMacro {
    +    fn eq(&self, other: &Self) -> bool {
    +        self.attrs == other.attrs && self.mac == other.mac
    +            && self.semi_token == other.semi_token
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::TraitBound {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::TraitBound {
         fn eq(&self, other: &Self) -> bool {
             self.paren_token == other.paren_token && self.modifier == other.modifier
                 && self.lifetimes == other.lifetimes && self.path == other.path
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for TraitBoundModifier {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for TraitBoundModifier {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::TraitBoundModifier {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::TraitBoundModifier {
         fn eq(&self, other: &Self) -> bool {
             match (self, other) {
    -            (TraitBoundModifier::None, TraitBoundModifier::None) => true,
    -            (TraitBoundModifier::Maybe(_), TraitBoundModifier::Maybe(_)) => true,
    +            (crate::TraitBoundModifier::None, crate::TraitBoundModifier::None) => true,
    +            (
    +                crate::TraitBoundModifier::Maybe(_),
    +                crate::TraitBoundModifier::Maybe(_),
    +            ) => true,
                 _ => false,
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for TraitItem {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for TraitItem {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::TraitItem {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::TraitItem {
         fn eq(&self, other: &Self) -> bool {
             match (self, other) {
    -            (TraitItem::Const(self0), TraitItem::Const(other0)) => self0 == other0,
    -            (TraitItem::Method(self0), TraitItem::Method(other0)) => self0 == other0,
    -            (TraitItem::Type(self0), TraitItem::Type(other0)) => self0 == other0,
    -            (TraitItem::Macro(self0), TraitItem::Macro(other0)) => self0 == other0,
    -            (TraitItem::Verbatim(self0), TraitItem::Verbatim(other0)) => {
    +            (crate::TraitItem::Const(self0), crate::TraitItem::Const(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::TraitItem::Fn(self0), crate::TraitItem::Fn(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::TraitItem::Type(self0), crate::TraitItem::Type(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::TraitItem::Macro(self0), crate::TraitItem::Macro(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::TraitItem::Verbatim(self0), crate::TraitItem::Verbatim(other0)) => {
                     TokenStreamHelper(self0) == TokenStreamHelper(other0)
                 }
                 _ => false,
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for TraitItemConst {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for TraitItemConst {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::TraitItemConst {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::TraitItemConst {
         fn eq(&self, other: &Self) -> bool {
    -        self.attrs == other.attrs && self.ident == other.ident && self.ty == other.ty
    +        self.attrs == other.attrs && self.ident == other.ident
    +            && self.generics == other.generics && self.ty == other.ty
                 && self.default == other.default
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for TraitItemMacro {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for TraitItemMacro {
    -    fn eq(&self, other: &Self) -> bool {
    -        self.attrs == other.attrs && self.mac == other.mac
    -            && self.semi_token == other.semi_token
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for TraitItemMethod {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for TraitItemMethod {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::TraitItemFn {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::TraitItemFn {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.sig == other.sig
                 && self.default == other.default && self.semi_token == other.semi_token
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for TraitItemType {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for TraitItemType {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::TraitItemMacro {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::TraitItemMacro {
    +    fn eq(&self, other: &Self) -> bool {
    +        self.attrs == other.attrs && self.mac == other.mac
    +            && self.semi_token == other.semi_token
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::TraitItemType {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::TraitItemType {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.ident == other.ident
                 && self.generics == other.generics && self.colon_token == other.colon_token
                 && self.bounds == other.bounds && self.default == other.default
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for Type {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for Type {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::Type {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::Type {
         fn eq(&self, other: &Self) -> bool {
             match (self, other) {
    -            (Type::Array(self0), Type::Array(other0)) => self0 == other0,
    -            (Type::BareFn(self0), Type::BareFn(other0)) => self0 == other0,
    -            (Type::Group(self0), Type::Group(other0)) => self0 == other0,
    -            (Type::ImplTrait(self0), Type::ImplTrait(other0)) => self0 == other0,
    -            (Type::Infer(self0), Type::Infer(other0)) => self0 == other0,
    -            (Type::Macro(self0), Type::Macro(other0)) => self0 == other0,
    -            (Type::Never(self0), Type::Never(other0)) => self0 == other0,
    -            (Type::Paren(self0), Type::Paren(other0)) => self0 == other0,
    -            (Type::Path(self0), Type::Path(other0)) => self0 == other0,
    -            (Type::Ptr(self0), Type::Ptr(other0)) => self0 == other0,
    -            (Type::Reference(self0), Type::Reference(other0)) => self0 == other0,
    -            (Type::Slice(self0), Type::Slice(other0)) => self0 == other0,
    -            (Type::TraitObject(self0), Type::TraitObject(other0)) => self0 == other0,
    -            (Type::Tuple(self0), Type::Tuple(other0)) => self0 == other0,
    -            (Type::Verbatim(self0), Type::Verbatim(other0)) => {
    +            (crate::Type::Array(self0), crate::Type::Array(other0)) => self0 == other0,
    +            (crate::Type::BareFn(self0), crate::Type::BareFn(other0)) => self0 == other0,
    +            (crate::Type::Group(self0), crate::Type::Group(other0)) => self0 == other0,
    +            (crate::Type::ImplTrait(self0), crate::Type::ImplTrait(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::Type::Infer(self0), crate::Type::Infer(other0)) => self0 == other0,
    +            (crate::Type::Macro(self0), crate::Type::Macro(other0)) => self0 == other0,
    +            (crate::Type::Never(self0), crate::Type::Never(other0)) => self0 == other0,
    +            (crate::Type::Paren(self0), crate::Type::Paren(other0)) => self0 == other0,
    +            (crate::Type::Path(self0), crate::Type::Path(other0)) => self0 == other0,
    +            (crate::Type::Ptr(self0), crate::Type::Ptr(other0)) => self0 == other0,
    +            (crate::Type::Reference(self0), crate::Type::Reference(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::Type::Slice(self0), crate::Type::Slice(other0)) => self0 == other0,
    +            (crate::Type::TraitObject(self0), crate::Type::TraitObject(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::Type::Tuple(self0), crate::Type::Tuple(other0)) => self0 == other0,
    +            (crate::Type::Verbatim(self0), crate::Type::Verbatim(other0)) => {
                     TokenStreamHelper(self0) == TokenStreamHelper(other0)
                 }
                 _ => false,
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for TypeArray {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for TypeArray {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::TypeArray {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::TypeArray {
         fn eq(&self, other: &Self) -> bool {
             self.elem == other.elem && self.len == other.len
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for TypeBareFn {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for TypeBareFn {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::TypeBareFn {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::TypeBareFn {
         fn eq(&self, other: &Self) -> bool {
             self.lifetimes == other.lifetimes && self.unsafety == other.unsafety
                 && self.abi == other.abi && self.inputs == other.inputs
                 && self.variadic == other.variadic && self.output == other.output
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for TypeGroup {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for TypeGroup {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::TypeGroup {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::TypeGroup {
         fn eq(&self, other: &Self) -> bool {
             self.elem == other.elem
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for TypeImplTrait {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for TypeImplTrait {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::TypeImplTrait {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::TypeImplTrait {
         fn eq(&self, other: &Self) -> bool {
             self.bounds == other.bounds
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for TypeInfer {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for TypeInfer {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::TypeInfer {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::TypeInfer {
         fn eq(&self, _other: &Self) -> bool {
             true
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for TypeMacro {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for TypeMacro {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::TypeMacro {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::TypeMacro {
         fn eq(&self, other: &Self) -> bool {
             self.mac == other.mac
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for TypeNever {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for TypeNever {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::TypeNever {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::TypeNever {
         fn eq(&self, _other: &Self) -> bool {
             true
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for TypeParam {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for TypeParam {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::TypeParam {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::TypeParam {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.ident == other.ident
                 && self.colon_token == other.colon_token && self.bounds == other.bounds
                 && self.eq_token == other.eq_token && self.default == other.default
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for TypeParamBound {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for TypeParamBound {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::TypeParamBound {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::TypeParamBound {
         fn eq(&self, other: &Self) -> bool {
             match (self, other) {
    -            (TypeParamBound::Trait(self0), TypeParamBound::Trait(other0)) => {
    -                self0 == other0
    -            }
    -            (TypeParamBound::Lifetime(self0), TypeParamBound::Lifetime(other0)) => {
    -                self0 == other0
    -            }
    +            (
    +                crate::TypeParamBound::Trait(self0),
    +                crate::TypeParamBound::Trait(other0),
    +            ) => self0 == other0,
    +            (
    +                crate::TypeParamBound::Lifetime(self0),
    +                crate::TypeParamBound::Lifetime(other0),
    +            ) => self0 == other0,
    +            #[cfg(feature = "full")]
    +            (
    +                crate::TypeParamBound::PreciseCapture(self0),
    +                crate::TypeParamBound::PreciseCapture(other0),
    +            ) => self0 == other0,
    +            (
    +                crate::TypeParamBound::Verbatim(self0),
    +                crate::TypeParamBound::Verbatim(other0),
    +            ) => TokenStreamHelper(self0) == TokenStreamHelper(other0),
                 _ => false,
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for TypeParen {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for TypeParen {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::TypeParen {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::TypeParen {
         fn eq(&self, other: &Self) -> bool {
             self.elem == other.elem
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for TypePath {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for TypePath {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::TypePath {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::TypePath {
         fn eq(&self, other: &Self) -> bool {
             self.qself == other.qself && self.path == other.path
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for TypePtr {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for TypePtr {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::TypePtr {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::TypePtr {
         fn eq(&self, other: &Self) -> bool {
             self.const_token == other.const_token && self.mutability == other.mutability
                 && self.elem == other.elem
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for TypeReference {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for TypeReference {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::TypeReference {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::TypeReference {
         fn eq(&self, other: &Self) -> bool {
             self.lifetime == other.lifetime && self.mutability == other.mutability
                 && self.elem == other.elem
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for TypeSlice {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for TypeSlice {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::TypeSlice {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::TypeSlice {
         fn eq(&self, other: &Self) -> bool {
             self.elem == other.elem
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for TypeTraitObject {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for TypeTraitObject {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::TypeTraitObject {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::TypeTraitObject {
         fn eq(&self, other: &Self) -> bool {
             self.dyn_token == other.dyn_token && self.bounds == other.bounds
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for TypeTuple {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for TypeTuple {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::TypeTuple {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::TypeTuple {
         fn eq(&self, other: &Self) -> bool {
             self.elems == other.elems
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for UnOp {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for UnOp {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::UnOp {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::UnOp {
         fn eq(&self, other: &Self) -> bool {
             match (self, other) {
    -            (UnOp::Deref(_), UnOp::Deref(_)) => true,
    -            (UnOp::Not(_), UnOp::Not(_)) => true,
    -            (UnOp::Neg(_), UnOp::Neg(_)) => true,
    +            (crate::UnOp::Deref(_), crate::UnOp::Deref(_)) => true,
    +            (crate::UnOp::Not(_), crate::UnOp::Not(_)) => true,
    +            (crate::UnOp::Neg(_), crate::UnOp::Neg(_)) => true,
                 _ => false,
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for UseGlob {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for UseGlob {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::UseGlob {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::UseGlob {
         fn eq(&self, _other: &Self) -> bool {
             true
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for UseGroup {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for UseGroup {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::UseGroup {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::UseGroup {
         fn eq(&self, other: &Self) -> bool {
             self.items == other.items
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for UseName {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for UseName {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::UseName {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::UseName {
         fn eq(&self, other: &Self) -> bool {
             self.ident == other.ident
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for UsePath {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for UsePath {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::UsePath {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::UsePath {
         fn eq(&self, other: &Self) -> bool {
             self.ident == other.ident && self.tree == other.tree
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for UseRename {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for UseRename {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::UseRename {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::UseRename {
         fn eq(&self, other: &Self) -> bool {
             self.ident == other.ident && self.rename == other.rename
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for UseTree {}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for UseTree {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::UseTree {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::UseTree {
         fn eq(&self, other: &Self) -> bool {
             match (self, other) {
    -            (UseTree::Path(self0), UseTree::Path(other0)) => self0 == other0,
    -            (UseTree::Name(self0), UseTree::Name(other0)) => self0 == other0,
    -            (UseTree::Rename(self0), UseTree::Rename(other0)) => self0 == other0,
    -            (UseTree::Glob(self0), UseTree::Glob(other0)) => self0 == other0,
    -            (UseTree::Group(self0), UseTree::Group(other0)) => self0 == other0,
    +            (crate::UseTree::Path(self0), crate::UseTree::Path(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::UseTree::Name(self0), crate::UseTree::Name(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::UseTree::Rename(self0), crate::UseTree::Rename(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::UseTree::Glob(self0), crate::UseTree::Glob(other0)) => {
    +                self0 == other0
    +            }
    +            (crate::UseTree::Group(self0), crate::UseTree::Group(other0)) => {
    +                self0 == other0
    +            }
                 _ => false,
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for Variadic {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for Variadic {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::Variadic {}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::Variadic {
         fn eq(&self, other: &Self) -> bool {
    -        self.attrs == other.attrs
    +        self.attrs == other.attrs && self.pat == other.pat && self.comma == other.comma
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for Variant {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for Variant {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::Variant {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::Variant {
         fn eq(&self, other: &Self) -> bool {
             self.attrs == other.attrs && self.ident == other.ident
                 && self.fields == other.fields && self.discriminant == other.discriminant
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for VisCrate {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for VisCrate {
    -    fn eq(&self, _other: &Self) -> bool {
    -        true
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for VisPublic {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for VisPublic {
    -    fn eq(&self, _other: &Self) -> bool {
    -        true
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for VisRestricted {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for VisRestricted {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::VisRestricted {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::VisRestricted {
         fn eq(&self, other: &Self) -> bool {
             self.in_token == other.in_token && self.path == other.path
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for Visibility {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for Visibility {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::Visibility {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::Visibility {
         fn eq(&self, other: &Self) -> bool {
             match (self, other) {
    -            (Visibility::Public(self0), Visibility::Public(other0)) => self0 == other0,
    -            (Visibility::Crate(self0), Visibility::Crate(other0)) => self0 == other0,
    -            (Visibility::Restricted(self0), Visibility::Restricted(other0)) => {
    -                self0 == other0
    -            }
    -            (Visibility::Inherited, Visibility::Inherited) => true,
    +            (crate::Visibility::Public(_), crate::Visibility::Public(_)) => true,
    +            (
    +                crate::Visibility::Restricted(self0),
    +                crate::Visibility::Restricted(other0),
    +            ) => self0 == other0,
    +            (crate::Visibility::Inherited, crate::Visibility::Inherited) => true,
                 _ => false,
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for WhereClause {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for WhereClause {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::WhereClause {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::WhereClause {
         fn eq(&self, other: &Self) -> bool {
             self.predicates == other.predicates
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Eq for WherePredicate {}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl PartialEq for WherePredicate {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Eq for crate::WherePredicate {}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for crate::WherePredicate {
         fn eq(&self, other: &Self) -> bool {
             match (self, other) {
    -            (WherePredicate::Type(self0), WherePredicate::Type(other0)) => {
    +            (
    +                crate::WherePredicate::Lifetime(self0),
    +                crate::WherePredicate::Lifetime(other0),
    +            ) => self0 == other0,
    +            (crate::WherePredicate::Type(self0), crate::WherePredicate::Type(other0)) => {
                     self0 == other0
                 }
    -            (WherePredicate::Lifetime(self0), WherePredicate::Lifetime(other0)) => {
    -                self0 == other0
    -            }
    -            (WherePredicate::Eq(self0), WherePredicate::Eq(other0)) => self0 == other0,
                 _ => false,
             }
         }
    diff --git a/src/syn/gen/hash.rs.html b/src/syn/gen/hash.rs.html
    index 7b07c62..df82f70 100644
    --- a/src/syn/gen/hash.rs.html
    +++ b/src/syn/gen/hash.rs.html
    @@ -1,4 +1,5 @@
    -hash.rs - source
    1
    +hash.rs - source

    syn/gen/
    hash.rs

    +1
     2
     3
     4
    @@ -2867,16 +2868,21 @@
     2867
     2868
     2869
    -
    // This file is @generated by syn-internal-codegen.
    +2870
    +2871
    +2872
    +2873
    +2874
    +2875
    +2876
    // This file is @generated by syn-internal-codegen.
     // It is not intended for manual editing.
     
    -#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg(any(feature = "derive", feature = "full"))]
     use crate::tt::TokenStreamHelper;
    -use crate::*;
     use std::hash::{Hash, Hasher};
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for Abi {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::Abi {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -2884,9 +2890,9 @@
             self.name.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for AngleBracketedGenericArguments {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::AngleBracketedGenericArguments {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -2895,9 +2901,9 @@
             self.args.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for Arm {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::Arm {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -2909,38 +2915,61 @@
             self.comma.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for AttrStyle {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::AssocConst {
    +    fn hash<H>(&self, state: &mut H)
    +    where
    +        H: Hasher,
    +    {
    +        self.ident.hash(state);
    +        self.generics.hash(state);
    +        self.value.hash(state);
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::AssocType {
    +    fn hash<H>(&self, state: &mut H)
    +    where
    +        H: Hasher,
    +    {
    +        self.ident.hash(state);
    +        self.generics.hash(state);
    +        self.ty.hash(state);
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::AttrStyle {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             match self {
    -            AttrStyle::Outer => {
    +            crate::AttrStyle::Outer => {
                     state.write_u8(0u8);
                 }
    -            AttrStyle::Inner(_) => {
    +            crate::AttrStyle::Inner(_) => {
                     state.write_u8(1u8);
                 }
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for Attribute {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::Attribute {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             self.style.hash(state);
    -        self.path.hash(state);
    -        TokenStreamHelper(&self.tokens).hash(state);
    +        self.meta.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for BareFnArg {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::BareFnArg {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -2950,115 +2979,116 @@
             self.ty.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for BinOp {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::BareVariadic {
    +    fn hash<H>(&self, state: &mut H)
    +    where
    +        H: Hasher,
    +    {
    +        self.attrs.hash(state);
    +        self.name.hash(state);
    +        self.comma.hash(state);
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::BinOp {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             match self {
    -            BinOp::Add(_) => {
    +            crate::BinOp::Add(_) => {
                     state.write_u8(0u8);
                 }
    -            BinOp::Sub(_) => {
    +            crate::BinOp::Sub(_) => {
                     state.write_u8(1u8);
                 }
    -            BinOp::Mul(_) => {
    +            crate::BinOp::Mul(_) => {
                     state.write_u8(2u8);
                 }
    -            BinOp::Div(_) => {
    +            crate::BinOp::Div(_) => {
                     state.write_u8(3u8);
                 }
    -            BinOp::Rem(_) => {
    +            crate::BinOp::Rem(_) => {
                     state.write_u8(4u8);
                 }
    -            BinOp::And(_) => {
    +            crate::BinOp::And(_) => {
                     state.write_u8(5u8);
                 }
    -            BinOp::Or(_) => {
    +            crate::BinOp::Or(_) => {
                     state.write_u8(6u8);
                 }
    -            BinOp::BitXor(_) => {
    +            crate::BinOp::BitXor(_) => {
                     state.write_u8(7u8);
                 }
    -            BinOp::BitAnd(_) => {
    +            crate::BinOp::BitAnd(_) => {
                     state.write_u8(8u8);
                 }
    -            BinOp::BitOr(_) => {
    +            crate::BinOp::BitOr(_) => {
                     state.write_u8(9u8);
                 }
    -            BinOp::Shl(_) => {
    +            crate::BinOp::Shl(_) => {
                     state.write_u8(10u8);
                 }
    -            BinOp::Shr(_) => {
    +            crate::BinOp::Shr(_) => {
                     state.write_u8(11u8);
                 }
    -            BinOp::Eq(_) => {
    +            crate::BinOp::Eq(_) => {
                     state.write_u8(12u8);
                 }
    -            BinOp::Lt(_) => {
    +            crate::BinOp::Lt(_) => {
                     state.write_u8(13u8);
                 }
    -            BinOp::Le(_) => {
    +            crate::BinOp::Le(_) => {
                     state.write_u8(14u8);
                 }
    -            BinOp::Ne(_) => {
    +            crate::BinOp::Ne(_) => {
                     state.write_u8(15u8);
                 }
    -            BinOp::Ge(_) => {
    +            crate::BinOp::Ge(_) => {
                     state.write_u8(16u8);
                 }
    -            BinOp::Gt(_) => {
    +            crate::BinOp::Gt(_) => {
                     state.write_u8(17u8);
                 }
    -            BinOp::AddEq(_) => {
    +            crate::BinOp::AddAssign(_) => {
                     state.write_u8(18u8);
                 }
    -            BinOp::SubEq(_) => {
    +            crate::BinOp::SubAssign(_) => {
                     state.write_u8(19u8);
                 }
    -            BinOp::MulEq(_) => {
    +            crate::BinOp::MulAssign(_) => {
                     state.write_u8(20u8);
                 }
    -            BinOp::DivEq(_) => {
    +            crate::BinOp::DivAssign(_) => {
                     state.write_u8(21u8);
                 }
    -            BinOp::RemEq(_) => {
    +            crate::BinOp::RemAssign(_) => {
                     state.write_u8(22u8);
                 }
    -            BinOp::BitXorEq(_) => {
    +            crate::BinOp::BitXorAssign(_) => {
                     state.write_u8(23u8);
                 }
    -            BinOp::BitAndEq(_) => {
    +            crate::BinOp::BitAndAssign(_) => {
                     state.write_u8(24u8);
                 }
    -            BinOp::BitOrEq(_) => {
    +            crate::BinOp::BitOrAssign(_) => {
                     state.write_u8(25u8);
                 }
    -            BinOp::ShlEq(_) => {
    +            crate::BinOp::ShlAssign(_) => {
                     state.write_u8(26u8);
                 }
    -            BinOp::ShrEq(_) => {
    +            crate::BinOp::ShrAssign(_) => {
                     state.write_u8(27u8);
                 }
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for Binding {
    -    fn hash<H>(&self, state: &mut H)
    -    where
    -        H: Hasher,
    -    {
    -        self.ident.hash(state);
    -        self.ty.hash(state);
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for Block {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::Block {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3066,9 +3096,9 @@
             self.stmts.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for BoundLifetimes {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::BoundLifetimes {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3076,9 +3106,28 @@
             self.lifetimes.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ConstParam {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::CapturedParam {
    +    fn hash<H>(&self, state: &mut H)
    +    where
    +        H: Hasher,
    +    {
    +        match self {
    +            crate::CapturedParam::Lifetime(v0) => {
    +                state.write_u8(0u8);
    +                v0.hash(state);
    +            }
    +            crate::CapturedParam::Ident(v0) => {
    +                state.write_u8(1u8);
    +                v0.hash(state);
    +            }
    +        }
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ConstParam {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3090,43 +3139,44 @@
             self.default.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for Constraint {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::Constraint {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             self.ident.hash(state);
    +        self.generics.hash(state);
             self.bounds.hash(state);
         }
     }
    -#[cfg(feature = "derive")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for Data {
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::Data {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             match self {
    -            Data::Struct(v0) => {
    +            crate::Data::Struct(v0) => {
                     state.write_u8(0u8);
                     v0.hash(state);
                 }
    -            Data::Enum(v0) => {
    +            crate::Data::Enum(v0) => {
                     state.write_u8(1u8);
                     v0.hash(state);
                 }
    -            Data::Union(v0) => {
    +            crate::Data::Union(v0) => {
                     state.write_u8(2u8);
                     v0.hash(state);
                 }
             }
         }
     }
    -#[cfg(feature = "derive")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for DataEnum {
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::DataEnum {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3134,9 +3184,9 @@
             self.variants.hash(state);
         }
     }
    -#[cfg(feature = "derive")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for DataStruct {
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::DataStruct {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3145,9 +3195,9 @@
             self.semi_token.hash(state);
         }
     }
    -#[cfg(feature = "derive")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for DataUnion {
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::DataUnion {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3155,9 +3205,9 @@
             self.fields.hash(state);
         }
     }
    -#[cfg(feature = "derive")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for DeriveInput {
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::DeriveInput {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3169,212 +3219,206 @@
             self.data.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for Expr {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::Expr {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             match self {
    -            #[cfg(feature = "full")]
    -            Expr::Array(v0) => {
    +            #[cfg(feature = "full")]
    +            crate::Expr::Array(v0) => {
                     state.write_u8(0u8);
                     v0.hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::Assign(v0) => {
    +            #[cfg(feature = "full")]
    +            crate::Expr::Assign(v0) => {
                     state.write_u8(1u8);
                     v0.hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::AssignOp(v0) => {
    +            #[cfg(feature = "full")]
    +            crate::Expr::Async(v0) => {
                     state.write_u8(2u8);
                     v0.hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::Async(v0) => {
    +            #[cfg(feature = "full")]
    +            crate::Expr::Await(v0) => {
                     state.write_u8(3u8);
                     v0.hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::Await(v0) => {
    +            crate::Expr::Binary(v0) => {
                     state.write_u8(4u8);
                     v0.hash(state);
                 }
    -            Expr::Binary(v0) => {
    +            #[cfg(feature = "full")]
    +            crate::Expr::Block(v0) => {
                     state.write_u8(5u8);
                     v0.hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::Block(v0) => {
    +            #[cfg(feature = "full")]
    +            crate::Expr::Break(v0) => {
                     state.write_u8(6u8);
                     v0.hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::Box(v0) => {
    +            crate::Expr::Call(v0) => {
                     state.write_u8(7u8);
                     v0.hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::Break(v0) => {
    +            crate::Expr::Cast(v0) => {
                     state.write_u8(8u8);
                     v0.hash(state);
                 }
    -            Expr::Call(v0) => {
    +            #[cfg(feature = "full")]
    +            crate::Expr::Closure(v0) => {
                     state.write_u8(9u8);
                     v0.hash(state);
                 }
    -            Expr::Cast(v0) => {
    +            #[cfg(feature = "full")]
    +            crate::Expr::Const(v0) => {
                     state.write_u8(10u8);
                     v0.hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::Closure(v0) => {
    +            #[cfg(feature = "full")]
    +            crate::Expr::Continue(v0) => {
                     state.write_u8(11u8);
                     v0.hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::Continue(v0) => {
    +            crate::Expr::Field(v0) => {
                     state.write_u8(12u8);
                     v0.hash(state);
                 }
    -            Expr::Field(v0) => {
    +            #[cfg(feature = "full")]
    +            crate::Expr::ForLoop(v0) => {
                     state.write_u8(13u8);
                     v0.hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::ForLoop(v0) => {
    +            crate::Expr::Group(v0) => {
                     state.write_u8(14u8);
                     v0.hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::Group(v0) => {
    +            #[cfg(feature = "full")]
    +            crate::Expr::If(v0) => {
                     state.write_u8(15u8);
                     v0.hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::If(v0) => {
    +            crate::Expr::Index(v0) => {
                     state.write_u8(16u8);
                     v0.hash(state);
                 }
    -            Expr::Index(v0) => {
    +            #[cfg(feature = "full")]
    +            crate::Expr::Infer(v0) => {
                     state.write_u8(17u8);
                     v0.hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::Let(v0) => {
    +            #[cfg(feature = "full")]
    +            crate::Expr::Let(v0) => {
                     state.write_u8(18u8);
                     v0.hash(state);
                 }
    -            Expr::Lit(v0) => {
    +            crate::Expr::Lit(v0) => {
                     state.write_u8(19u8);
                     v0.hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::Loop(v0) => {
    +            #[cfg(feature = "full")]
    +            crate::Expr::Loop(v0) => {
                     state.write_u8(20u8);
                     v0.hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::Macro(v0) => {
    +            crate::Expr::Macro(v0) => {
                     state.write_u8(21u8);
                     v0.hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::Match(v0) => {
    +            #[cfg(feature = "full")]
    +            crate::Expr::Match(v0) => {
                     state.write_u8(22u8);
                     v0.hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::MethodCall(v0) => {
    +            crate::Expr::MethodCall(v0) => {
                     state.write_u8(23u8);
                     v0.hash(state);
                 }
    -            Expr::Paren(v0) => {
    +            crate::Expr::Paren(v0) => {
                     state.write_u8(24u8);
                     v0.hash(state);
                 }
    -            Expr::Path(v0) => {
    +            crate::Expr::Path(v0) => {
                     state.write_u8(25u8);
                     v0.hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::Range(v0) => {
    +            #[cfg(feature = "full")]
    +            crate::Expr::Range(v0) => {
                     state.write_u8(26u8);
                     v0.hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::Reference(v0) => {
    +            #[cfg(feature = "full")]
    +            crate::Expr::RawAddr(v0) => {
                     state.write_u8(27u8);
                     v0.hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::Repeat(v0) => {
    +            crate::Expr::Reference(v0) => {
                     state.write_u8(28u8);
                     v0.hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::Return(v0) => {
    +            #[cfg(feature = "full")]
    +            crate::Expr::Repeat(v0) => {
                     state.write_u8(29u8);
                     v0.hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::Struct(v0) => {
    +            #[cfg(feature = "full")]
    +            crate::Expr::Return(v0) => {
                     state.write_u8(30u8);
                     v0.hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::Try(v0) => {
    +            crate::Expr::Struct(v0) => {
                     state.write_u8(31u8);
                     v0.hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::TryBlock(v0) => {
    +            #[cfg(feature = "full")]
    +            crate::Expr::Try(v0) => {
                     state.write_u8(32u8);
                     v0.hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::Tuple(v0) => {
    +            #[cfg(feature = "full")]
    +            crate::Expr::TryBlock(v0) => {
                     state.write_u8(33u8);
                     v0.hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::Type(v0) => {
    +            crate::Expr::Tuple(v0) => {
                     state.write_u8(34u8);
                     v0.hash(state);
                 }
    -            Expr::Unary(v0) => {
    +            crate::Expr::Unary(v0) => {
                     state.write_u8(35u8);
                     v0.hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::Unsafe(v0) => {
    +            #[cfg(feature = "full")]
    +            crate::Expr::Unsafe(v0) => {
                     state.write_u8(36u8);
                     v0.hash(state);
                 }
    -            Expr::Verbatim(v0) => {
    +            crate::Expr::Verbatim(v0) => {
                     state.write_u8(37u8);
                     TokenStreamHelper(v0).hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::While(v0) => {
    +            #[cfg(feature = "full")]
    +            crate::Expr::While(v0) => {
                     state.write_u8(38u8);
                     v0.hash(state);
                 }
    -            #[cfg(feature = "full")]
    -            Expr::Yield(v0) => {
    +            #[cfg(feature = "full")]
    +            crate::Expr::Yield(v0) => {
                     state.write_u8(39u8);
                     v0.hash(state);
                 }
    -            #[cfg(any(syn_no_non_exhaustive, not(feature = "full")))]
    +            #[cfg(not(feature = "full"))]
                 _ => unreachable!(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprArray {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprArray {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3383,9 +3427,9 @@
             self.elems.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprAssign {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprAssign {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3395,22 +3439,9 @@
             self.right.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprAssignOp {
    -    fn hash<H>(&self, state: &mut H)
    -    where
    -        H: Hasher,
    -    {
    -        self.attrs.hash(state);
    -        self.left.hash(state);
    -        self.op.hash(state);
    -        self.right.hash(state);
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprAsync {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprAsync {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3420,9 +3451,9 @@
             self.block.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprAwait {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprAwait {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3431,9 +3462,9 @@
             self.base.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprBinary {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprBinary {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3444,9 +3475,9 @@
             self.right.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprBlock {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprBlock {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3456,20 +3487,9 @@
             self.block.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprBox {
    -    fn hash<H>(&self, state: &mut H)
    -    where
    -        H: Hasher,
    -    {
    -        self.attrs.hash(state);
    -        self.expr.hash(state);
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprBreak {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprBreak {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3479,9 +3499,9 @@
             self.expr.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprCall {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprCall {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3491,9 +3511,9 @@
             self.args.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprCast {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprCast {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3503,14 +3523,16 @@
             self.ty.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprClosure {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprClosure {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             self.attrs.hash(state);
    +        self.lifetimes.hash(state);
    +        self.constness.hash(state);
             self.movability.hash(state);
             self.asyncness.hash(state);
             self.capture.hash(state);
    @@ -3519,9 +3541,20 @@
             self.body.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprContinue {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprConst {
    +    fn hash<H>(&self, state: &mut H)
    +    where
    +        H: Hasher,
    +    {
    +        self.attrs.hash(state);
    +        self.block.hash(state);
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprContinue {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3530,9 +3563,9 @@
             self.label.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprField {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprField {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3542,9 +3575,9 @@
             self.member.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprForLoop {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprForLoop {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3556,9 +3589,9 @@
             self.body.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprGroup {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprGroup {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3567,9 +3600,9 @@
             self.expr.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprIf {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprIf {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3580,9 +3613,9 @@
             self.else_branch.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprIndex {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprIndex {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3592,9 +3625,19 @@
             self.index.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprLet {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprInfer {
    +    fn hash<H>(&self, state: &mut H)
    +    where
    +        H: Hasher,
    +    {
    +        self.attrs.hash(state);
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprLet {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3604,9 +3647,9 @@
             self.expr.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprLit {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprLit {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3615,9 +3658,9 @@
             self.lit.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprLoop {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprLoop {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3627,9 +3670,9 @@
             self.body.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprMacro {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprMacro {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3638,9 +3681,9 @@
             self.mac.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprMatch {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprMatch {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3650,9 +3693,9 @@
             self.arms.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprMethodCall {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprMethodCall {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3664,9 +3707,9 @@
             self.args.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprParen {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprParen {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3675,9 +3718,9 @@
             self.expr.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprPath {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprPath {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3687,22 +3730,22 @@
             self.path.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprRange {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprRange {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             self.attrs.hash(state);
    -        self.from.hash(state);
    +        self.start.hash(state);
             self.limits.hash(state);
    -        self.to.hash(state);
    +        self.end.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprReference {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprRawAddr {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3712,9 +3755,21 @@
             self.expr.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprRepeat {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprReference {
    +    fn hash<H>(&self, state: &mut H)
    +    where
    +        H: Hasher,
    +    {
    +        self.attrs.hash(state);
    +        self.mutability.hash(state);
    +        self.expr.hash(state);
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprRepeat {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3724,9 +3779,9 @@
             self.len.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprReturn {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprReturn {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3735,23 +3790,24 @@
             self.expr.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprStruct {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprStruct {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             self.attrs.hash(state);
    +        self.qself.hash(state);
             self.path.hash(state);
             self.fields.hash(state);
             self.dot2_token.hash(state);
             self.rest.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprTry {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprTry {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3760,9 +3816,9 @@
             self.expr.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprTryBlock {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprTryBlock {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3771,9 +3827,9 @@
             self.block.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprTuple {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprTuple {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3782,21 +3838,9 @@
             self.elems.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprType {
    -    fn hash<H>(&self, state: &mut H)
    -    where
    -        H: Hasher,
    -    {
    -        self.attrs.hash(state);
    -        self.expr.hash(state);
    -        self.ty.hash(state);
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprUnary {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprUnary {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3806,9 +3850,9 @@
             self.expr.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprUnsafe {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprUnsafe {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3817,9 +3861,9 @@
             self.block.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprWhile {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprWhile {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3830,9 +3874,9 @@
             self.body.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ExprYield {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ExprYield {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3841,23 +3885,38 @@
             self.expr.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for Field {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::Field {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             self.attrs.hash(state);
             self.vis.hash(state);
    +        self.mutability.hash(state);
             self.ident.hash(state);
             self.colon_token.hash(state);
             self.ty.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for FieldPat {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::FieldMutability {
    +    fn hash<H>(&self, state: &mut H)
    +    where
    +        H: Hasher,
    +    {
    +        match self {
    +            crate::FieldMutability::None => {
    +                state.write_u8(0u8);
    +            }
    +        }
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::FieldPat {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3868,9 +3927,9 @@
             self.pat.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for FieldValue {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::FieldValue {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3881,31 +3940,31 @@
             self.expr.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for Fields {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::Fields {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             match self {
    -            Fields::Named(v0) => {
    +            crate::Fields::Named(v0) => {
                     state.write_u8(0u8);
                     v0.hash(state);
                 }
    -            Fields::Unnamed(v0) => {
    +            crate::Fields::Unnamed(v0) => {
                     state.write_u8(1u8);
                     v0.hash(state);
                 }
    -            Fields::Unit => {
    +            crate::Fields::Unit => {
                     state.write_u8(2u8);
                 }
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for FieldsNamed {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::FieldsNamed {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3913,9 +3972,9 @@
             self.named.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for FieldsUnnamed {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::FieldsUnnamed {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3923,9 +3982,9 @@
             self.unnamed.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for File {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::File {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3935,61 +3994,59 @@
             self.items.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for FnArg {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::FnArg {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             match self {
    -            FnArg::Receiver(v0) => {
    +            crate::FnArg::Receiver(v0) => {
                     state.write_u8(0u8);
                     v0.hash(state);
                 }
    -            FnArg::Typed(v0) => {
    +            crate::FnArg::Typed(v0) => {
                     state.write_u8(1u8);
                     v0.hash(state);
                 }
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ForeignItem {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ForeignItem {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             match self {
    -            ForeignItem::Fn(v0) => {
    +            crate::ForeignItem::Fn(v0) => {
                     state.write_u8(0u8);
                     v0.hash(state);
                 }
    -            ForeignItem::Static(v0) => {
    +            crate::ForeignItem::Static(v0) => {
                     state.write_u8(1u8);
                     v0.hash(state);
                 }
    -            ForeignItem::Type(v0) => {
    +            crate::ForeignItem::Type(v0) => {
                     state.write_u8(2u8);
                     v0.hash(state);
                 }
    -            ForeignItem::Macro(v0) => {
    +            crate::ForeignItem::Macro(v0) => {
                     state.write_u8(3u8);
                     v0.hash(state);
                 }
    -            ForeignItem::Verbatim(v0) => {
    +            crate::ForeignItem::Verbatim(v0) => {
                     state.write_u8(4u8);
                     TokenStreamHelper(v0).hash(state);
                 }
    -            #[cfg(syn_no_non_exhaustive)]
    -            _ => unreachable!(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ForeignItemFn {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ForeignItemFn {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -3999,9 +4056,9 @@
             self.sig.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ForeignItemMacro {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ForeignItemMacro {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4011,9 +4068,9 @@
             self.semi_token.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ForeignItemStatic {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ForeignItemStatic {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4025,9 +4082,9 @@
             self.ty.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ForeignItemType {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ForeignItemType {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4035,84 +4092,70 @@
             self.attrs.hash(state);
             self.vis.hash(state);
             self.ident.hash(state);
    +        self.generics.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for GenericArgument {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::GenericArgument {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             match self {
    -            GenericArgument::Lifetime(v0) => {
    +            crate::GenericArgument::Lifetime(v0) => {
                     state.write_u8(0u8);
                     v0.hash(state);
                 }
    -            GenericArgument::Type(v0) => {
    +            crate::GenericArgument::Type(v0) => {
                     state.write_u8(1u8);
                     v0.hash(state);
                 }
    -            GenericArgument::Const(v0) => {
    +            crate::GenericArgument::Const(v0) => {
                     state.write_u8(2u8);
                     v0.hash(state);
                 }
    -            GenericArgument::Binding(v0) => {
    +            crate::GenericArgument::AssocType(v0) => {
                     state.write_u8(3u8);
                     v0.hash(state);
                 }
    -            GenericArgument::Constraint(v0) => {
    +            crate::GenericArgument::AssocConst(v0) => {
                     state.write_u8(4u8);
                     v0.hash(state);
                 }
    -        }
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for GenericMethodArgument {
    -    fn hash<H>(&self, state: &mut H)
    -    where
    -        H: Hasher,
    -    {
    -        match self {
    -            GenericMethodArgument::Type(v0) => {
    -                state.write_u8(0u8);
    -                v0.hash(state);
    -            }
    -            GenericMethodArgument::Const(v0) => {
    -                state.write_u8(1u8);
    +            crate::GenericArgument::Constraint(v0) => {
    +                state.write_u8(5u8);
                     v0.hash(state);
                 }
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for GenericParam {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::GenericParam {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             match self {
    -            GenericParam::Type(v0) => {
    +            crate::GenericParam::Lifetime(v0) => {
                     state.write_u8(0u8);
                     v0.hash(state);
                 }
    -            GenericParam::Lifetime(v0) => {
    +            crate::GenericParam::Type(v0) => {
                     state.write_u8(1u8);
                     v0.hash(state);
                 }
    -            GenericParam::Const(v0) => {
    +            crate::GenericParam::Const(v0) => {
                     state.write_u8(2u8);
                     v0.hash(state);
                 }
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for Generics {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::Generics {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4123,42 +4166,40 @@
             self.where_clause.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ImplItem {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ImplItem {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             match self {
    -            ImplItem::Const(v0) => {
    +            crate::ImplItem::Const(v0) => {
                     state.write_u8(0u8);
                     v0.hash(state);
                 }
    -            ImplItem::Method(v0) => {
    +            crate::ImplItem::Fn(v0) => {
                     state.write_u8(1u8);
                     v0.hash(state);
                 }
    -            ImplItem::Type(v0) => {
    +            crate::ImplItem::Type(v0) => {
                     state.write_u8(2u8);
                     v0.hash(state);
                 }
    -            ImplItem::Macro(v0) => {
    +            crate::ImplItem::Macro(v0) => {
                     state.write_u8(3u8);
                     v0.hash(state);
                 }
    -            ImplItem::Verbatim(v0) => {
    +            crate::ImplItem::Verbatim(v0) => {
                     state.write_u8(4u8);
                     TokenStreamHelper(v0).hash(state);
                 }
    -            #[cfg(syn_no_non_exhaustive)]
    -            _ => unreachable!(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ImplItemConst {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ImplItemConst {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4167,25 +4208,14 @@
             self.vis.hash(state);
             self.defaultness.hash(state);
             self.ident.hash(state);
    +        self.generics.hash(state);
             self.ty.hash(state);
             self.expr.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ImplItemMacro {
    -    fn hash<H>(&self, state: &mut H)
    -    where
    -        H: Hasher,
    -    {
    -        self.attrs.hash(state);
    -        self.mac.hash(state);
    -        self.semi_token.hash(state);
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ImplItemMethod {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ImplItemFn {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4197,9 +4227,21 @@
             self.block.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ImplItemType {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ImplItemMacro {
    +    fn hash<H>(&self, state: &mut H)
    +    where
    +        H: Hasher,
    +    {
    +        self.attrs.hash(state);
    +        self.mac.hash(state);
    +        self.semi_token.hash(state);
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ImplItemType {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4212,90 +4254,94 @@
             self.ty.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for Item {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ImplRestriction {
    +    fn hash<H>(&self, _state: &mut H)
    +    where
    +        H: Hasher,
    +    {
    +        match *self {}
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::Item {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             match self {
    -            Item::Const(v0) => {
    +            crate::Item::Const(v0) => {
                     state.write_u8(0u8);
                     v0.hash(state);
                 }
    -            Item::Enum(v0) => {
    +            crate::Item::Enum(v0) => {
                     state.write_u8(1u8);
                     v0.hash(state);
                 }
    -            Item::ExternCrate(v0) => {
    +            crate::Item::ExternCrate(v0) => {
                     state.write_u8(2u8);
                     v0.hash(state);
                 }
    -            Item::Fn(v0) => {
    +            crate::Item::Fn(v0) => {
                     state.write_u8(3u8);
                     v0.hash(state);
                 }
    -            Item::ForeignMod(v0) => {
    +            crate::Item::ForeignMod(v0) => {
                     state.write_u8(4u8);
                     v0.hash(state);
                 }
    -            Item::Impl(v0) => {
    +            crate::Item::Impl(v0) => {
                     state.write_u8(5u8);
                     v0.hash(state);
                 }
    -            Item::Macro(v0) => {
    +            crate::Item::Macro(v0) => {
                     state.write_u8(6u8);
                     v0.hash(state);
                 }
    -            Item::Macro2(v0) => {
    +            crate::Item::Mod(v0) => {
                     state.write_u8(7u8);
                     v0.hash(state);
                 }
    -            Item::Mod(v0) => {
    +            crate::Item::Static(v0) => {
                     state.write_u8(8u8);
                     v0.hash(state);
                 }
    -            Item::Static(v0) => {
    +            crate::Item::Struct(v0) => {
                     state.write_u8(9u8);
                     v0.hash(state);
                 }
    -            Item::Struct(v0) => {
    +            crate::Item::Trait(v0) => {
                     state.write_u8(10u8);
                     v0.hash(state);
                 }
    -            Item::Trait(v0) => {
    +            crate::Item::TraitAlias(v0) => {
                     state.write_u8(11u8);
                     v0.hash(state);
                 }
    -            Item::TraitAlias(v0) => {
    +            crate::Item::Type(v0) => {
                     state.write_u8(12u8);
                     v0.hash(state);
                 }
    -            Item::Type(v0) => {
    +            crate::Item::Union(v0) => {
                     state.write_u8(13u8);
                     v0.hash(state);
                 }
    -            Item::Union(v0) => {
    +            crate::Item::Use(v0) => {
                     state.write_u8(14u8);
                     v0.hash(state);
                 }
    -            Item::Use(v0) => {
    +            crate::Item::Verbatim(v0) => {
                     state.write_u8(15u8);
    -                v0.hash(state);
    -            }
    -            Item::Verbatim(v0) => {
    -                state.write_u8(16u8);
                     TokenStreamHelper(v0).hash(state);
                 }
    -            #[cfg(syn_no_non_exhaustive)]
    -            _ => unreachable!(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ItemConst {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ItemConst {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4303,13 +4349,14 @@
             self.attrs.hash(state);
             self.vis.hash(state);
             self.ident.hash(state);
    +        self.generics.hash(state);
             self.ty.hash(state);
             self.expr.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ItemEnum {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ItemEnum {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4321,9 +4368,9 @@
             self.variants.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ItemExternCrate {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ItemExternCrate {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4334,9 +4381,9 @@
             self.rename.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ItemFn {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ItemFn {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4347,21 +4394,22 @@
             self.block.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ItemForeignMod {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ItemForeignMod {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             self.attrs.hash(state);
    +        self.unsafety.hash(state);
             self.abi.hash(state);
             self.items.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ItemImpl {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ItemImpl {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4375,9 +4423,9 @@
             self.items.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ItemMacro {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ItemMacro {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4388,36 +4436,24 @@
             self.semi_token.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ItemMacro2 {
    -    fn hash<H>(&self, state: &mut H)
    -    where
    -        H: Hasher,
    -    {
    -        self.attrs.hash(state);
    -        self.vis.hash(state);
    -        self.ident.hash(state);
    -        TokenStreamHelper(&self.rules).hash(state);
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ItemMod {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ItemMod {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             self.attrs.hash(state);
             self.vis.hash(state);
    +        self.unsafety.hash(state);
             self.ident.hash(state);
             self.content.hash(state);
             self.semi.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ItemStatic {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ItemStatic {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4430,9 +4466,9 @@
             self.expr.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ItemStruct {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ItemStruct {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4445,9 +4481,9 @@
             self.semi_token.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ItemTrait {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ItemTrait {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4456,6 +4492,7 @@
             self.vis.hash(state);
             self.unsafety.hash(state);
             self.auto_token.hash(state);
    +        self.restriction.hash(state);
             self.ident.hash(state);
             self.generics.hash(state);
             self.colon_token.hash(state);
    @@ -4463,9 +4500,9 @@
             self.items.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ItemTraitAlias {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ItemTraitAlias {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4477,9 +4514,9 @@
             self.bounds.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ItemType {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ItemType {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4491,9 +4528,9 @@
             self.ty.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ItemUnion {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ItemUnion {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4505,9 +4542,9 @@
             self.fields.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ItemUse {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ItemUse {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4518,9 +4555,9 @@
             self.tree.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for Label {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::Label {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4528,9 +4565,9 @@
             self.name.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for LifetimeDef {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::LifetimeParam {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4541,50 +4578,54 @@
             self.bounds.hash(state);
         }
     }
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for Lit {
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::Lit {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             match self {
    -            Lit::Str(v0) => {
    +            crate::Lit::Str(v0) => {
                     state.write_u8(0u8);
                     v0.hash(state);
                 }
    -            Lit::ByteStr(v0) => {
    +            crate::Lit::ByteStr(v0) => {
                     state.write_u8(1u8);
                     v0.hash(state);
                 }
    -            Lit::Byte(v0) => {
    +            crate::Lit::CStr(v0) => {
                     state.write_u8(2u8);
                     v0.hash(state);
                 }
    -            Lit::Char(v0) => {
    +            crate::Lit::Byte(v0) => {
                     state.write_u8(3u8);
                     v0.hash(state);
                 }
    -            Lit::Int(v0) => {
    +            crate::Lit::Char(v0) => {
                     state.write_u8(4u8);
                     v0.hash(state);
                 }
    -            Lit::Float(v0) => {
    +            crate::Lit::Int(v0) => {
                     state.write_u8(5u8);
                     v0.hash(state);
                 }
    -            Lit::Bool(v0) => {
    +            crate::Lit::Float(v0) => {
                     state.write_u8(6u8);
                     v0.hash(state);
                 }
    -            Lit::Verbatim(v0) => {
    +            crate::Lit::Bool(v0) => {
                     state.write_u8(7u8);
    +                v0.hash(state);
    +            }
    +            crate::Lit::Verbatim(v0) => {
    +                state.write_u8(8u8);
                     v0.to_string().hash(state);
                 }
             }
         }
     }
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for LitBool {
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::LitBool {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4592,9 +4633,9 @@
             self.value.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for Local {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::Local {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4604,9 +4645,20 @@
             self.init.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for Macro {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::LocalInit {
    +    fn hash<H>(&self, state: &mut H)
    +    where
    +        H: Hasher,
    +    {
    +        self.expr.hash(state);
    +        self.diverge.hash(state);
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::Macro {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4616,103 +4668,75 @@
             TokenStreamHelper(&self.tokens).hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for MacroDelimiter {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::MacroDelimiter {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             match self {
    -            MacroDelimiter::Paren(_) => {
    +            crate::MacroDelimiter::Paren(_) => {
                     state.write_u8(0u8);
                 }
    -            MacroDelimiter::Brace(_) => {
    +            crate::MacroDelimiter::Brace(_) => {
                     state.write_u8(1u8);
                 }
    -            MacroDelimiter::Bracket(_) => {
    +            crate::MacroDelimiter::Bracket(_) => {
                     state.write_u8(2u8);
                 }
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for Meta {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::Meta {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             match self {
    -            Meta::Path(v0) => {
    +            crate::Meta::Path(v0) => {
                     state.write_u8(0u8);
                     v0.hash(state);
                 }
    -            Meta::List(v0) => {
    +            crate::Meta::List(v0) => {
                     state.write_u8(1u8);
                     v0.hash(state);
                 }
    -            Meta::NameValue(v0) => {
    +            crate::Meta::NameValue(v0) => {
                     state.write_u8(2u8);
                     v0.hash(state);
                 }
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for MetaList {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::MetaList {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             self.path.hash(state);
    -        self.nested.hash(state);
    +        self.delimiter.hash(state);
    +        TokenStreamHelper(&self.tokens).hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for MetaNameValue {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::MetaNameValue {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             self.path.hash(state);
    -        self.lit.hash(state);
    +        self.value.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for MethodTurbofish {
    -    fn hash<H>(&self, state: &mut H)
    -    where
    -        H: Hasher,
    -    {
    -        self.args.hash(state);
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for NestedMeta {
    -    fn hash<H>(&self, state: &mut H)
    -    where
    -        H: Hasher,
    -    {
    -        match self {
    -            NestedMeta::Meta(v0) => {
    -                state.write_u8(0u8);
    -                v0.hash(state);
    -            }
    -            NestedMeta::Lit(v0) => {
    -                state.write_u8(1u8);
    -                v0.hash(state);
    -            }
    -        }
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ParenthesizedGenericArguments {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ParenthesizedGenericArguments {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4721,97 +4745,88 @@
             self.output.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for Pat {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::Pat {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             match self {
    -            Pat::Box(v0) => {
    +            crate::Pat::Const(v0) => {
                     state.write_u8(0u8);
                     v0.hash(state);
                 }
    -            Pat::Ident(v0) => {
    +            crate::Pat::Ident(v0) => {
                     state.write_u8(1u8);
                     v0.hash(state);
                 }
    -            Pat::Lit(v0) => {
    +            crate::Pat::Lit(v0) => {
                     state.write_u8(2u8);
                     v0.hash(state);
                 }
    -            Pat::Macro(v0) => {
    +            crate::Pat::Macro(v0) => {
                     state.write_u8(3u8);
                     v0.hash(state);
                 }
    -            Pat::Or(v0) => {
    +            crate::Pat::Or(v0) => {
                     state.write_u8(4u8);
                     v0.hash(state);
                 }
    -            Pat::Path(v0) => {
    +            crate::Pat::Paren(v0) => {
                     state.write_u8(5u8);
                     v0.hash(state);
                 }
    -            Pat::Range(v0) => {
    +            crate::Pat::Path(v0) => {
                     state.write_u8(6u8);
                     v0.hash(state);
                 }
    -            Pat::Reference(v0) => {
    +            crate::Pat::Range(v0) => {
                     state.write_u8(7u8);
                     v0.hash(state);
                 }
    -            Pat::Rest(v0) => {
    +            crate::Pat::Reference(v0) => {
                     state.write_u8(8u8);
                     v0.hash(state);
                 }
    -            Pat::Slice(v0) => {
    +            crate::Pat::Rest(v0) => {
                     state.write_u8(9u8);
                     v0.hash(state);
                 }
    -            Pat::Struct(v0) => {
    +            crate::Pat::Slice(v0) => {
                     state.write_u8(10u8);
                     v0.hash(state);
                 }
    -            Pat::Tuple(v0) => {
    +            crate::Pat::Struct(v0) => {
                     state.write_u8(11u8);
                     v0.hash(state);
                 }
    -            Pat::TupleStruct(v0) => {
    +            crate::Pat::Tuple(v0) => {
                     state.write_u8(12u8);
                     v0.hash(state);
                 }
    -            Pat::Type(v0) => {
    +            crate::Pat::TupleStruct(v0) => {
                     state.write_u8(13u8);
                     v0.hash(state);
                 }
    -            Pat::Verbatim(v0) => {
    +            crate::Pat::Type(v0) => {
                     state.write_u8(14u8);
    -                TokenStreamHelper(v0).hash(state);
    -            }
    -            Pat::Wild(v0) => {
    -                state.write_u8(15u8);
                     v0.hash(state);
                 }
    -            #[cfg(syn_no_non_exhaustive)]
    -            _ => unreachable!(),
    +            crate::Pat::Verbatim(v0) => {
    +                state.write_u8(15u8);
    +                TokenStreamHelper(v0).hash(state);
    +            }
    +            crate::Pat::Wild(v0) => {
    +                state.write_u8(16u8);
    +                v0.hash(state);
    +            }
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for PatBox {
    -    fn hash<H>(&self, state: &mut H)
    -    where
    -        H: Hasher,
    -    {
    -        self.attrs.hash(state);
    -        self.pat.hash(state);
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for PatIdent {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::PatIdent {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4823,31 +4838,9 @@
             self.subpat.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for PatLit {
    -    fn hash<H>(&self, state: &mut H)
    -    where
    -        H: Hasher,
    -    {
    -        self.attrs.hash(state);
    -        self.expr.hash(state);
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for PatMacro {
    -    fn hash<H>(&self, state: &mut H)
    -    where
    -        H: Hasher,
    -    {
    -        self.attrs.hash(state);
    -        self.mac.hash(state);
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for PatOr {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::PatOr {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4857,34 +4850,20 @@
             self.cases.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for PatPath {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::PatParen {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             self.attrs.hash(state);
    -        self.qself.hash(state);
    -        self.path.hash(state);
    +        self.pat.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for PatRange {
    -    fn hash<H>(&self, state: &mut H)
    -    where
    -        H: Hasher,
    -    {
    -        self.attrs.hash(state);
    -        self.lo.hash(state);
    -        self.limits.hash(state);
    -        self.hi.hash(state);
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for PatReference {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::PatReference {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4894,9 +4873,9 @@
             self.pat.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for PatRest {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::PatRest {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4904,9 +4883,9 @@
             self.attrs.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for PatSlice {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::PatSlice {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4915,22 +4894,23 @@
             self.elems.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for PatStruct {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::PatStruct {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             self.attrs.hash(state);
    +        self.qself.hash(state);
             self.path.hash(state);
             self.fields.hash(state);
    -        self.dot2_token.hash(state);
    +        self.rest.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for PatTuple {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::PatTuple {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4939,21 +4919,22 @@
             self.elems.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for PatTupleStruct {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::PatTupleStruct {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             self.attrs.hash(state);
    +        self.qself.hash(state);
             self.path.hash(state);
    -        self.pat.hash(state);
    +        self.elems.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for PatType {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::PatType {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4963,9 +4944,9 @@
             self.ty.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for PatWild {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::PatWild {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4973,9 +4954,9 @@
             self.attrs.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for Path {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::Path {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -4984,31 +4965,31 @@
             self.segments.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for PathArguments {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::PathArguments {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             match self {
    -            PathArguments::None => {
    +            crate::PathArguments::None => {
                     state.write_u8(0u8);
                 }
    -            PathArguments::AngleBracketed(v0) => {
    +            crate::PathArguments::AngleBracketed(v0) => {
                     state.write_u8(1u8);
                     v0.hash(state);
                 }
    -            PathArguments::Parenthesized(v0) => {
    +            crate::PathArguments::Parenthesized(v0) => {
                     state.write_u8(2u8);
                     v0.hash(state);
                 }
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for PathSegment {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::PathSegment {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5017,20 +4998,36 @@
             self.arguments.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for PredicateEq {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::PointerMutability {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
    -        self.lhs_ty.hash(state);
    -        self.rhs_ty.hash(state);
    +        match self {
    +            crate::PointerMutability::Const(_) => {
    +                state.write_u8(0u8);
    +            }
    +            crate::PointerMutability::Mut(_) => {
    +                state.write_u8(1u8);
    +            }
    +        }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for PredicateLifetime {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::PreciseCapture {
    +    fn hash<H>(&self, state: &mut H)
    +    where
    +        H: Hasher,
    +    {
    +        self.params.hash(state);
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::PredicateLifetime {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5039,9 +5036,9 @@
             self.bounds.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for PredicateType {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::PredicateType {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5051,9 +5048,9 @@
             self.bounds.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for QSelf {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::QSelf {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5063,26 +5060,26 @@
             self.as_token.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for RangeLimits {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::RangeLimits {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             match self {
    -            RangeLimits::HalfOpen(_) => {
    +            crate::RangeLimits::HalfOpen(_) => {
                     state.write_u8(0u8);
                 }
    -            RangeLimits::Closed(_) => {
    +            crate::RangeLimits::Closed(_) => {
                     state.write_u8(1u8);
                 }
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for Receiver {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::Receiver {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5090,29 +5087,31 @@
             self.attrs.hash(state);
             self.reference.hash(state);
             self.mutability.hash(state);
    +        self.colon_token.hash(state);
    +        self.ty.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for ReturnType {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::ReturnType {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             match self {
    -            ReturnType::Default => {
    +            crate::ReturnType::Default => {
                     state.write_u8(0u8);
                 }
    -            ReturnType::Type(_, v1) => {
    +            crate::ReturnType::Type(_, v1) => {
                     state.write_u8(1u8);
                     v1.hash(state);
                 }
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for Signature {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::Signature {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5128,36 +5127,66 @@
             self.output.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for Stmt {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::StaticMutability {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             match self {
    -            Stmt::Local(v0) => {
    +            crate::StaticMutability::Mut(_) => {
    +                state.write_u8(0u8);
    +            }
    +            crate::StaticMutability::None => {
    +                state.write_u8(1u8);
    +            }
    +        }
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::Stmt {
    +    fn hash<H>(&self, state: &mut H)
    +    where
    +        H: Hasher,
    +    {
    +        match self {
    +            crate::Stmt::Local(v0) => {
                     state.write_u8(0u8);
                     v0.hash(state);
                 }
    -            Stmt::Item(v0) => {
    +            crate::Stmt::Item(v0) => {
                     state.write_u8(1u8);
                     v0.hash(state);
                 }
    -            Stmt::Expr(v0) => {
    +            crate::Stmt::Expr(v0, v1) => {
                     state.write_u8(2u8);
                     v0.hash(state);
    +                v1.hash(state);
                 }
    -            Stmt::Semi(v0, _) => {
    +            crate::Stmt::Macro(v0) => {
                     state.write_u8(3u8);
                     v0.hash(state);
                 }
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for TraitBound {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::StmtMacro {
    +    fn hash<H>(&self, state: &mut H)
    +    where
    +        H: Hasher,
    +    {
    +        self.attrs.hash(state);
    +        self.mac.hash(state);
    +        self.semi_token.hash(state);
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::TraitBound {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5168,84 +5197,71 @@
             self.path.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for TraitBoundModifier {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::TraitBoundModifier {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             match self {
    -            TraitBoundModifier::None => {
    +            crate::TraitBoundModifier::None => {
                     state.write_u8(0u8);
                 }
    -            TraitBoundModifier::Maybe(_) => {
    +            crate::TraitBoundModifier::Maybe(_) => {
                     state.write_u8(1u8);
                 }
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for TraitItem {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::TraitItem {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             match self {
    -            TraitItem::Const(v0) => {
    +            crate::TraitItem::Const(v0) => {
                     state.write_u8(0u8);
                     v0.hash(state);
                 }
    -            TraitItem::Method(v0) => {
    +            crate::TraitItem::Fn(v0) => {
                     state.write_u8(1u8);
                     v0.hash(state);
                 }
    -            TraitItem::Type(v0) => {
    +            crate::TraitItem::Type(v0) => {
                     state.write_u8(2u8);
                     v0.hash(state);
                 }
    -            TraitItem::Macro(v0) => {
    +            crate::TraitItem::Macro(v0) => {
                     state.write_u8(3u8);
                     v0.hash(state);
                 }
    -            TraitItem::Verbatim(v0) => {
    +            crate::TraitItem::Verbatim(v0) => {
                     state.write_u8(4u8);
                     TokenStreamHelper(v0).hash(state);
                 }
    -            #[cfg(syn_no_non_exhaustive)]
    -            _ => unreachable!(),
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for TraitItemConst {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::TraitItemConst {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             self.attrs.hash(state);
             self.ident.hash(state);
    +        self.generics.hash(state);
             self.ty.hash(state);
             self.default.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for TraitItemMacro {
    -    fn hash<H>(&self, state: &mut H)
    -    where
    -        H: Hasher,
    -    {
    -        self.attrs.hash(state);
    -        self.mac.hash(state);
    -        self.semi_token.hash(state);
    -    }
    -}
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for TraitItemMethod {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::TraitItemFn {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5256,9 +5272,21 @@
             self.semi_token.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for TraitItemType {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::TraitItemMacro {
    +    fn hash<H>(&self, state: &mut H)
    +    where
    +        H: Hasher,
    +    {
    +        self.attrs.hash(state);
    +        self.mac.hash(state);
    +        self.semi_token.hash(state);
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::TraitItemType {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5271,82 +5299,80 @@
             self.default.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for Type {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::Type {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             match self {
    -            Type::Array(v0) => {
    +            crate::Type::Array(v0) => {
                     state.write_u8(0u8);
                     v0.hash(state);
                 }
    -            Type::BareFn(v0) => {
    +            crate::Type::BareFn(v0) => {
                     state.write_u8(1u8);
                     v0.hash(state);
                 }
    -            Type::Group(v0) => {
    +            crate::Type::Group(v0) => {
                     state.write_u8(2u8);
                     v0.hash(state);
                 }
    -            Type::ImplTrait(v0) => {
    +            crate::Type::ImplTrait(v0) => {
                     state.write_u8(3u8);
                     v0.hash(state);
                 }
    -            Type::Infer(v0) => {
    +            crate::Type::Infer(v0) => {
                     state.write_u8(4u8);
                     v0.hash(state);
                 }
    -            Type::Macro(v0) => {
    +            crate::Type::Macro(v0) => {
                     state.write_u8(5u8);
                     v0.hash(state);
                 }
    -            Type::Never(v0) => {
    +            crate::Type::Never(v0) => {
                     state.write_u8(6u8);
                     v0.hash(state);
                 }
    -            Type::Paren(v0) => {
    +            crate::Type::Paren(v0) => {
                     state.write_u8(7u8);
                     v0.hash(state);
                 }
    -            Type::Path(v0) => {
    +            crate::Type::Path(v0) => {
                     state.write_u8(8u8);
                     v0.hash(state);
                 }
    -            Type::Ptr(v0) => {
    +            crate::Type::Ptr(v0) => {
                     state.write_u8(9u8);
                     v0.hash(state);
                 }
    -            Type::Reference(v0) => {
    +            crate::Type::Reference(v0) => {
                     state.write_u8(10u8);
                     v0.hash(state);
                 }
    -            Type::Slice(v0) => {
    +            crate::Type::Slice(v0) => {
                     state.write_u8(11u8);
                     v0.hash(state);
                 }
    -            Type::TraitObject(v0) => {
    +            crate::Type::TraitObject(v0) => {
                     state.write_u8(12u8);
                     v0.hash(state);
                 }
    -            Type::Tuple(v0) => {
    +            crate::Type::Tuple(v0) => {
                     state.write_u8(13u8);
                     v0.hash(state);
                 }
    -            Type::Verbatim(v0) => {
    +            crate::Type::Verbatim(v0) => {
                     state.write_u8(14u8);
                     TokenStreamHelper(v0).hash(state);
                 }
    -            #[cfg(syn_no_non_exhaustive)]
    -            _ => unreachable!(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for TypeArray {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::TypeArray {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5355,9 +5381,9 @@
             self.len.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for TypeBareFn {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::TypeBareFn {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5370,9 +5396,9 @@
             self.output.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for TypeGroup {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::TypeGroup {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5380,9 +5406,9 @@
             self.elem.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for TypeImplTrait {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::TypeImplTrait {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5390,17 +5416,17 @@
             self.bounds.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for TypeInfer {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::TypeInfer {
         fn hash<H>(&self, _state: &mut H)
         where
             H: Hasher,
         {}
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for TypeMacro {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::TypeMacro {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5408,17 +5434,17 @@
             self.mac.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for TypeNever {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::TypeNever {
         fn hash<H>(&self, _state: &mut H)
         where
             H: Hasher,
         {}
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for TypeParam {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::TypeParam {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5431,28 +5457,39 @@
             self.default.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for TypeParamBound {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::TypeParamBound {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             match self {
    -            TypeParamBound::Trait(v0) => {
    +            crate::TypeParamBound::Trait(v0) => {
                     state.write_u8(0u8);
                     v0.hash(state);
                 }
    -            TypeParamBound::Lifetime(v0) => {
    +            crate::TypeParamBound::Lifetime(v0) => {
                     state.write_u8(1u8);
                     v0.hash(state);
                 }
    +            #[cfg(feature = "full")]
    +            crate::TypeParamBound::PreciseCapture(v0) => {
    +                state.write_u8(2u8);
    +                v0.hash(state);
    +            }
    +            crate::TypeParamBound::Verbatim(v0) => {
    +                state.write_u8(3u8);
    +                TokenStreamHelper(v0).hash(state);
    +            }
    +            #[cfg(not(feature = "full"))]
    +            _ => unreachable!(),
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for TypeParen {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::TypeParen {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5460,9 +5497,9 @@
             self.elem.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for TypePath {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::TypePath {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5471,9 +5508,9 @@
             self.path.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for TypePtr {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::TypePtr {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5483,9 +5520,9 @@
             self.elem.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for TypeReference {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::TypeReference {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5495,9 +5532,9 @@
             self.elem.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for TypeSlice {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::TypeSlice {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5505,9 +5542,9 @@
             self.elem.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for TypeTraitObject {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::TypeTraitObject {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5516,9 +5553,9 @@
             self.bounds.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for TypeTuple {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::TypeTuple {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5526,37 +5563,37 @@
             self.elems.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for UnOp {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::UnOp {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             match self {
    -            UnOp::Deref(_) => {
    +            crate::UnOp::Deref(_) => {
                     state.write_u8(0u8);
                 }
    -            UnOp::Not(_) => {
    +            crate::UnOp::Not(_) => {
                     state.write_u8(1u8);
                 }
    -            UnOp::Neg(_) => {
    +            crate::UnOp::Neg(_) => {
                     state.write_u8(2u8);
                 }
             }
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for UseGlob {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::UseGlob {
         fn hash<H>(&self, _state: &mut H)
         where
             H: Hasher,
         {}
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for UseGroup {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::UseGroup {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5564,9 +5601,9 @@
             self.items.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for UseName {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::UseName {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5574,9 +5611,9 @@
             self.ident.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for UsePath {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::UsePath {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5585,9 +5622,9 @@
             self.tree.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for UseRename {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::UseRename {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5596,50 +5633,52 @@
             self.rename.hash(state);
         }
     }
    -#[cfg(feature = "full")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for UseTree {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::UseTree {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             match self {
    -            UseTree::Path(v0) => {
    +            crate::UseTree::Path(v0) => {
                     state.write_u8(0u8);
                     v0.hash(state);
                 }
    -            UseTree::Name(v0) => {
    +            crate::UseTree::Name(v0) => {
                     state.write_u8(1u8);
                     v0.hash(state);
                 }
    -            UseTree::Rename(v0) => {
    +            crate::UseTree::Rename(v0) => {
                     state.write_u8(2u8);
                     v0.hash(state);
                 }
    -            UseTree::Glob(v0) => {
    +            crate::UseTree::Glob(v0) => {
                     state.write_u8(3u8);
                     v0.hash(state);
                 }
    -            UseTree::Group(v0) => {
    +            crate::UseTree::Group(v0) => {
                     state.write_u8(4u8);
                     v0.hash(state);
                 }
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for Variadic {
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::Variadic {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             self.attrs.hash(state);
    +        self.pat.hash(state);
    +        self.comma.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for Variant {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::Variant {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5650,25 +5689,9 @@
             self.discriminant.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for VisCrate {
    -    fn hash<H>(&self, _state: &mut H)
    -    where
    -        H: Hasher,
    -    {}
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for VisPublic {
    -    fn hash<H>(&self, _state: &mut H)
    -    where
    -        H: Hasher,
    -    {}
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for VisRestricted {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::VisRestricted {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5677,35 +5700,30 @@
             self.path.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for Visibility {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::Visibility {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             match self {
    -            Visibility::Public(v0) => {
    +            crate::Visibility::Public(_) => {
                     state.write_u8(0u8);
    -                v0.hash(state);
                 }
    -            Visibility::Crate(v0) => {
    +            crate::Visibility::Restricted(v0) => {
                     state.write_u8(1u8);
                     v0.hash(state);
                 }
    -            Visibility::Restricted(v0) => {
    +            crate::Visibility::Inherited => {
                     state.write_u8(2u8);
    -                v0.hash(state);
    -            }
    -            Visibility::Inherited => {
    -                state.write_u8(3u8);
                 }
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for WhereClause {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::WhereClause {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
    @@ -5713,26 +5731,22 @@
             self.predicates.hash(state);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Hash for WherePredicate {
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for crate::WherePredicate {
         fn hash<H>(&self, state: &mut H)
         where
             H: Hasher,
         {
             match self {
    -            WherePredicate::Type(v0) => {
    +            crate::WherePredicate::Lifetime(v0) => {
                     state.write_u8(0u8);
                     v0.hash(state);
                 }
    -            WherePredicate::Lifetime(v0) => {
    +            crate::WherePredicate::Type(v0) => {
                     state.write_u8(1u8);
                     v0.hash(state);
                 }
    -            WherePredicate::Eq(v0) => {
    -                state.write_u8(2u8);
    -                v0.hash(state);
    -            }
             }
         }
     }
    diff --git a/src/syn/gen/visit.rs.html b/src/syn/gen/visit.rs.html
    index 486e657..6b454ca 100644
    --- a/src/syn/gen/visit.rs.html
    +++ b/src/syn/gen/visit.rs.html
    @@ -1,4 +1,5 @@
    -visit.rs - source
    1
    +visit.rs - source

    syn/gen/
    visit.rs

    // This file is @generated by syn-internal-codegen.
     // It is not intended for manual editing.
     
     #![allow(unused_variables)]
    -#[cfg(any(feature = "full", feature = "derive"))]
    -use crate::gen::helper::visit::*;
    -#[cfg(any(feature = "full", feature = "derive"))]
    +#![allow(clippy::needless_pass_by_ref_mut)]
    +#[cfg(any(feature = "full", feature = "derive"))]
     use crate::punctuated::Punctuated;
    -use crate::*;
    -use proc_macro2::Span;
    -#[cfg(feature = "full")]
    -macro_rules! full {
    +#[cfg(feature = "full")]
    +macro_rules! full {
         ($e:expr) => {
             $e
         };
     }
    -#[cfg(all(feature = "derive", not(feature = "full")))]
    -macro_rules! full {
    +#[cfg(all(feature = "derive", not(feature = "full")))]
    +macro_rules! full {
         ($e:expr) => {
             unreachable!()
         };
     }
    -macro_rules! skip {
    +macro_rules! skip {
         ($($tt:tt)*) => {};
     }
     /// Syntax tree traversal to walk a shared borrow of a syntax tree.
    @@ -3814,1056 +3967,1274 @@
     /// See the [module documentation] for details.
     ///
     /// [module documentation]: self
    -///
    -/// *This trait is available only if Syn is built with the `"visit"` feature.*
    -pub trait Visit<'ast> {
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_abi(&mut self, i: &'ast Abi) {
    +pub trait Visit<'ast> {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_abi(&mut self, i: &'ast crate::Abi) {
             visit_abi(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
         fn visit_angle_bracketed_generic_arguments(
             &mut self,
    -        i: &'ast AngleBracketedGenericArguments,
    +        i: &'ast crate::AngleBracketedGenericArguments,
         ) {
             visit_angle_bracketed_generic_arguments(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_arm(&mut self, i: &'ast Arm) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_arm(&mut self, i: &'ast crate::Arm) {
             visit_arm(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_attr_style(&mut self, i: &'ast AttrStyle) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_assoc_const(&mut self, i: &'ast crate::AssocConst) {
    +        visit_assoc_const(self, i);
    +    }
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_assoc_type(&mut self, i: &'ast crate::AssocType) {
    +        visit_assoc_type(self, i);
    +    }
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_attr_style(&mut self, i: &'ast crate::AttrStyle) {
             visit_attr_style(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_attribute(&mut self, i: &'ast Attribute) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_attribute(&mut self, i: &'ast crate::Attribute) {
             visit_attribute(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_bare_fn_arg(&mut self, i: &'ast BareFnArg) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_bare_fn_arg(&mut self, i: &'ast crate::BareFnArg) {
             visit_bare_fn_arg(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_bin_op(&mut self, i: &'ast BinOp) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_bare_variadic(&mut self, i: &'ast crate::BareVariadic) {
    +        visit_bare_variadic(self, i);
    +    }
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_bin_op(&mut self, i: &'ast crate::BinOp) {
             visit_bin_op(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_binding(&mut self, i: &'ast Binding) {
    -        visit_binding(self, i);
    -    }
    -    #[cfg(feature = "full")]
    -    fn visit_block(&mut self, i: &'ast Block) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_block(&mut self, i: &'ast crate::Block) {
             visit_block(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_bound_lifetimes(&mut self, i: &'ast BoundLifetimes) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_bound_lifetimes(&mut self, i: &'ast crate::BoundLifetimes) {
             visit_bound_lifetimes(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_const_param(&mut self, i: &'ast ConstParam) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_captured_param(&mut self, i: &'ast crate::CapturedParam) {
    +        visit_captured_param(self, i);
    +    }
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_const_param(&mut self, i: &'ast crate::ConstParam) {
             visit_const_param(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_constraint(&mut self, i: &'ast Constraint) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_constraint(&mut self, i: &'ast crate::Constraint) {
             visit_constraint(self, i);
         }
    -    #[cfg(feature = "derive")]
    -    fn visit_data(&mut self, i: &'ast Data) {
    +    #[cfg(feature = "derive")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
    +    fn visit_data(&mut self, i: &'ast crate::Data) {
             visit_data(self, i);
         }
    -    #[cfg(feature = "derive")]
    -    fn visit_data_enum(&mut self, i: &'ast DataEnum) {
    +    #[cfg(feature = "derive")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
    +    fn visit_data_enum(&mut self, i: &'ast crate::DataEnum) {
             visit_data_enum(self, i);
         }
    -    #[cfg(feature = "derive")]
    -    fn visit_data_struct(&mut self, i: &'ast DataStruct) {
    +    #[cfg(feature = "derive")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
    +    fn visit_data_struct(&mut self, i: &'ast crate::DataStruct) {
             visit_data_struct(self, i);
         }
    -    #[cfg(feature = "derive")]
    -    fn visit_data_union(&mut self, i: &'ast DataUnion) {
    +    #[cfg(feature = "derive")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
    +    fn visit_data_union(&mut self, i: &'ast crate::DataUnion) {
             visit_data_union(self, i);
         }
    -    #[cfg(feature = "derive")]
    -    fn visit_derive_input(&mut self, i: &'ast DeriveInput) {
    +    #[cfg(feature = "derive")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
    +    fn visit_derive_input(&mut self, i: &'ast crate::DeriveInput) {
             visit_derive_input(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_expr(&mut self, i: &'ast Expr) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_expr(&mut self, i: &'ast crate::Expr) {
             visit_expr(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_array(&mut self, i: &'ast ExprArray) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_expr_array(&mut self, i: &'ast crate::ExprArray) {
             visit_expr_array(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_assign(&mut self, i: &'ast ExprAssign) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_expr_assign(&mut self, i: &'ast crate::ExprAssign) {
             visit_expr_assign(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_assign_op(&mut self, i: &'ast ExprAssignOp) {
    -        visit_expr_assign_op(self, i);
    -    }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_async(&mut self, i: &'ast ExprAsync) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_expr_async(&mut self, i: &'ast crate::ExprAsync) {
             visit_expr_async(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_await(&mut self, i: &'ast ExprAwait) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_expr_await(&mut self, i: &'ast crate::ExprAwait) {
             visit_expr_await(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_expr_binary(&mut self, i: &'ast ExprBinary) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_expr_binary(&mut self, i: &'ast crate::ExprBinary) {
             visit_expr_binary(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_block(&mut self, i: &'ast ExprBlock) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_expr_block(&mut self, i: &'ast crate::ExprBlock) {
             visit_expr_block(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_box(&mut self, i: &'ast ExprBox) {
    -        visit_expr_box(self, i);
    -    }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_break(&mut self, i: &'ast ExprBreak) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_expr_break(&mut self, i: &'ast crate::ExprBreak) {
             visit_expr_break(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_expr_call(&mut self, i: &'ast ExprCall) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_expr_call(&mut self, i: &'ast crate::ExprCall) {
             visit_expr_call(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_expr_cast(&mut self, i: &'ast ExprCast) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_expr_cast(&mut self, i: &'ast crate::ExprCast) {
             visit_expr_cast(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_closure(&mut self, i: &'ast ExprClosure) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_expr_closure(&mut self, i: &'ast crate::ExprClosure) {
             visit_expr_closure(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_continue(&mut self, i: &'ast ExprContinue) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_expr_const(&mut self, i: &'ast crate::ExprConst) {
    +        visit_expr_const(self, i);
    +    }
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_expr_continue(&mut self, i: &'ast crate::ExprContinue) {
             visit_expr_continue(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_expr_field(&mut self, i: &'ast ExprField) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_expr_field(&mut self, i: &'ast crate::ExprField) {
             visit_expr_field(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_for_loop(&mut self, i: &'ast ExprForLoop) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_expr_for_loop(&mut self, i: &'ast crate::ExprForLoop) {
             visit_expr_for_loop(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_group(&mut self, i: &'ast ExprGroup) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_expr_group(&mut self, i: &'ast crate::ExprGroup) {
             visit_expr_group(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_if(&mut self, i: &'ast ExprIf) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_expr_if(&mut self, i: &'ast crate::ExprIf) {
             visit_expr_if(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_expr_index(&mut self, i: &'ast ExprIndex) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_expr_index(&mut self, i: &'ast crate::ExprIndex) {
             visit_expr_index(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_let(&mut self, i: &'ast ExprLet) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_expr_infer(&mut self, i: &'ast crate::ExprInfer) {
    +        visit_expr_infer(self, i);
    +    }
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_expr_let(&mut self, i: &'ast crate::ExprLet) {
             visit_expr_let(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_expr_lit(&mut self, i: &'ast ExprLit) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_expr_lit(&mut self, i: &'ast crate::ExprLit) {
             visit_expr_lit(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_loop(&mut self, i: &'ast ExprLoop) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_expr_loop(&mut self, i: &'ast crate::ExprLoop) {
             visit_expr_loop(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_macro(&mut self, i: &'ast ExprMacro) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_expr_macro(&mut self, i: &'ast crate::ExprMacro) {
             visit_expr_macro(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_match(&mut self, i: &'ast ExprMatch) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_expr_match(&mut self, i: &'ast crate::ExprMatch) {
             visit_expr_match(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_method_call(&mut self, i: &'ast ExprMethodCall) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_expr_method_call(&mut self, i: &'ast crate::ExprMethodCall) {
             visit_expr_method_call(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_expr_paren(&mut self, i: &'ast ExprParen) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_expr_paren(&mut self, i: &'ast crate::ExprParen) {
             visit_expr_paren(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_expr_path(&mut self, i: &'ast ExprPath) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_expr_path(&mut self, i: &'ast crate::ExprPath) {
             visit_expr_path(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_range(&mut self, i: &'ast ExprRange) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_expr_range(&mut self, i: &'ast crate::ExprRange) {
             visit_expr_range(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_reference(&mut self, i: &'ast ExprReference) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_expr_raw_addr(&mut self, i: &'ast crate::ExprRawAddr) {
    +        visit_expr_raw_addr(self, i);
    +    }
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_expr_reference(&mut self, i: &'ast crate::ExprReference) {
             visit_expr_reference(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_repeat(&mut self, i: &'ast ExprRepeat) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_expr_repeat(&mut self, i: &'ast crate::ExprRepeat) {
             visit_expr_repeat(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_return(&mut self, i: &'ast ExprReturn) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_expr_return(&mut self, i: &'ast crate::ExprReturn) {
             visit_expr_return(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_struct(&mut self, i: &'ast ExprStruct) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_expr_struct(&mut self, i: &'ast crate::ExprStruct) {
             visit_expr_struct(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_try(&mut self, i: &'ast ExprTry) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_expr_try(&mut self, i: &'ast crate::ExprTry) {
             visit_expr_try(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_try_block(&mut self, i: &'ast ExprTryBlock) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_expr_try_block(&mut self, i: &'ast crate::ExprTryBlock) {
             visit_expr_try_block(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_tuple(&mut self, i: &'ast ExprTuple) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_expr_tuple(&mut self, i: &'ast crate::ExprTuple) {
             visit_expr_tuple(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_type(&mut self, i: &'ast ExprType) {
    -        visit_expr_type(self, i);
    -    }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_expr_unary(&mut self, i: &'ast ExprUnary) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_expr_unary(&mut self, i: &'ast crate::ExprUnary) {
             visit_expr_unary(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_unsafe(&mut self, i: &'ast ExprUnsafe) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_expr_unsafe(&mut self, i: &'ast crate::ExprUnsafe) {
             visit_expr_unsafe(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_while(&mut self, i: &'ast ExprWhile) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_expr_while(&mut self, i: &'ast crate::ExprWhile) {
             visit_expr_while(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_expr_yield(&mut self, i: &'ast ExprYield) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_expr_yield(&mut self, i: &'ast crate::ExprYield) {
             visit_expr_yield(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_field(&mut self, i: &'ast Field) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_field(&mut self, i: &'ast crate::Field) {
             visit_field(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_field_pat(&mut self, i: &'ast FieldPat) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_field_mutability(&mut self, i: &'ast crate::FieldMutability) {
    +        visit_field_mutability(self, i);
    +    }
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_field_pat(&mut self, i: &'ast crate::FieldPat) {
             visit_field_pat(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_field_value(&mut self, i: &'ast FieldValue) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_field_value(&mut self, i: &'ast crate::FieldValue) {
             visit_field_value(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_fields(&mut self, i: &'ast Fields) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_fields(&mut self, i: &'ast crate::Fields) {
             visit_fields(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_fields_named(&mut self, i: &'ast FieldsNamed) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_fields_named(&mut self, i: &'ast crate::FieldsNamed) {
             visit_fields_named(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_fields_unnamed(&mut self, i: &'ast FieldsUnnamed) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_fields_unnamed(&mut self, i: &'ast crate::FieldsUnnamed) {
             visit_fields_unnamed(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_file(&mut self, i: &'ast File) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_file(&mut self, i: &'ast crate::File) {
             visit_file(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_fn_arg(&mut self, i: &'ast FnArg) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_fn_arg(&mut self, i: &'ast crate::FnArg) {
             visit_fn_arg(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_foreign_item(&mut self, i: &'ast ForeignItem) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_foreign_item(&mut self, i: &'ast crate::ForeignItem) {
             visit_foreign_item(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_foreign_item_fn(&mut self, i: &'ast ForeignItemFn) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_foreign_item_fn(&mut self, i: &'ast crate::ForeignItemFn) {
             visit_foreign_item_fn(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_foreign_item_macro(&mut self, i: &'ast ForeignItemMacro) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_foreign_item_macro(&mut self, i: &'ast crate::ForeignItemMacro) {
             visit_foreign_item_macro(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_foreign_item_static(&mut self, i: &'ast ForeignItemStatic) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_foreign_item_static(&mut self, i: &'ast crate::ForeignItemStatic) {
             visit_foreign_item_static(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_foreign_item_type(&mut self, i: &'ast ForeignItemType) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_foreign_item_type(&mut self, i: &'ast crate::ForeignItemType) {
             visit_foreign_item_type(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_generic_argument(&mut self, i: &'ast GenericArgument) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_generic_argument(&mut self, i: &'ast crate::GenericArgument) {
             visit_generic_argument(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_generic_method_argument(&mut self, i: &'ast GenericMethodArgument) {
    -        visit_generic_method_argument(self, i);
    -    }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_generic_param(&mut self, i: &'ast GenericParam) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_generic_param(&mut self, i: &'ast crate::GenericParam) {
             visit_generic_param(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_generics(&mut self, i: &'ast Generics) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_generics(&mut self, i: &'ast crate::Generics) {
             visit_generics(self, i);
         }
    -    fn visit_ident(&mut self, i: &'ast Ident) {
    +    fn visit_ident(&mut self, i: &'ast proc_macro2::Ident) {
             visit_ident(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_impl_item(&mut self, i: &'ast ImplItem) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_impl_item(&mut self, i: &'ast crate::ImplItem) {
             visit_impl_item(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_impl_item_const(&mut self, i: &'ast ImplItemConst) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_impl_item_const(&mut self, i: &'ast crate::ImplItemConst) {
             visit_impl_item_const(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_impl_item_macro(&mut self, i: &'ast ImplItemMacro) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_impl_item_fn(&mut self, i: &'ast crate::ImplItemFn) {
    +        visit_impl_item_fn(self, i);
    +    }
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_impl_item_macro(&mut self, i: &'ast crate::ImplItemMacro) {
             visit_impl_item_macro(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_impl_item_method(&mut self, i: &'ast ImplItemMethod) {
    -        visit_impl_item_method(self, i);
    -    }
    -    #[cfg(feature = "full")]
    -    fn visit_impl_item_type(&mut self, i: &'ast ImplItemType) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_impl_item_type(&mut self, i: &'ast crate::ImplItemType) {
             visit_impl_item_type(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_index(&mut self, i: &'ast Index) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_impl_restriction(&mut self, i: &'ast crate::ImplRestriction) {
    +        visit_impl_restriction(self, i);
    +    }
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_index(&mut self, i: &'ast crate::Index) {
             visit_index(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_item(&mut self, i: &'ast Item) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_item(&mut self, i: &'ast crate::Item) {
             visit_item(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_item_const(&mut self, i: &'ast ItemConst) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_item_const(&mut self, i: &'ast crate::ItemConst) {
             visit_item_const(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_item_enum(&mut self, i: &'ast ItemEnum) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_item_enum(&mut self, i: &'ast crate::ItemEnum) {
             visit_item_enum(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_item_extern_crate(&mut self, i: &'ast ItemExternCrate) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_item_extern_crate(&mut self, i: &'ast crate::ItemExternCrate) {
             visit_item_extern_crate(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_item_fn(&mut self, i: &'ast ItemFn) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_item_fn(&mut self, i: &'ast crate::ItemFn) {
             visit_item_fn(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_item_foreign_mod(&mut self, i: &'ast ItemForeignMod) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_item_foreign_mod(&mut self, i: &'ast crate::ItemForeignMod) {
             visit_item_foreign_mod(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_item_impl(&mut self, i: &'ast ItemImpl) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_item_impl(&mut self, i: &'ast crate::ItemImpl) {
             visit_item_impl(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_item_macro(&mut self, i: &'ast ItemMacro) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_item_macro(&mut self, i: &'ast crate::ItemMacro) {
             visit_item_macro(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_item_macro2(&mut self, i: &'ast ItemMacro2) {
    -        visit_item_macro2(self, i);
    -    }
    -    #[cfg(feature = "full")]
    -    fn visit_item_mod(&mut self, i: &'ast ItemMod) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_item_mod(&mut self, i: &'ast crate::ItemMod) {
             visit_item_mod(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_item_static(&mut self, i: &'ast ItemStatic) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_item_static(&mut self, i: &'ast crate::ItemStatic) {
             visit_item_static(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_item_struct(&mut self, i: &'ast ItemStruct) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_item_struct(&mut self, i: &'ast crate::ItemStruct) {
             visit_item_struct(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_item_trait(&mut self, i: &'ast ItemTrait) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_item_trait(&mut self, i: &'ast crate::ItemTrait) {
             visit_item_trait(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_item_trait_alias(&mut self, i: &'ast ItemTraitAlias) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_item_trait_alias(&mut self, i: &'ast crate::ItemTraitAlias) {
             visit_item_trait_alias(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_item_type(&mut self, i: &'ast ItemType) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_item_type(&mut self, i: &'ast crate::ItemType) {
             visit_item_type(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_item_union(&mut self, i: &'ast ItemUnion) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_item_union(&mut self, i: &'ast crate::ItemUnion) {
             visit_item_union(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_item_use(&mut self, i: &'ast ItemUse) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_item_use(&mut self, i: &'ast crate::ItemUse) {
             visit_item_use(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_label(&mut self, i: &'ast Label) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_label(&mut self, i: &'ast crate::Label) {
             visit_label(self, i);
         }
    -    fn visit_lifetime(&mut self, i: &'ast Lifetime) {
    +    fn visit_lifetime(&mut self, i: &'ast crate::Lifetime) {
             visit_lifetime(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_lifetime_def(&mut self, i: &'ast LifetimeDef) {
    -        visit_lifetime_def(self, i);
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_lifetime_param(&mut self, i: &'ast crate::LifetimeParam) {
    +        visit_lifetime_param(self, i);
         }
    -    fn visit_lit(&mut self, i: &'ast Lit) {
    +    fn visit_lit(&mut self, i: &'ast crate::Lit) {
             visit_lit(self, i);
         }
    -    fn visit_lit_bool(&mut self, i: &'ast LitBool) {
    +    fn visit_lit_bool(&mut self, i: &'ast crate::LitBool) {
             visit_lit_bool(self, i);
         }
    -    fn visit_lit_byte(&mut self, i: &'ast LitByte) {
    +    fn visit_lit_byte(&mut self, i: &'ast crate::LitByte) {
             visit_lit_byte(self, i);
         }
    -    fn visit_lit_byte_str(&mut self, i: &'ast LitByteStr) {
    +    fn visit_lit_byte_str(&mut self, i: &'ast crate::LitByteStr) {
             visit_lit_byte_str(self, i);
         }
    -    fn visit_lit_char(&mut self, i: &'ast LitChar) {
    +    fn visit_lit_cstr(&mut self, i: &'ast crate::LitCStr) {
    +        visit_lit_cstr(self, i);
    +    }
    +    fn visit_lit_char(&mut self, i: &'ast crate::LitChar) {
             visit_lit_char(self, i);
         }
    -    fn visit_lit_float(&mut self, i: &'ast LitFloat) {
    +    fn visit_lit_float(&mut self, i: &'ast crate::LitFloat) {
             visit_lit_float(self, i);
         }
    -    fn visit_lit_int(&mut self, i: &'ast LitInt) {
    +    fn visit_lit_int(&mut self, i: &'ast crate::LitInt) {
             visit_lit_int(self, i);
         }
    -    fn visit_lit_str(&mut self, i: &'ast LitStr) {
    +    fn visit_lit_str(&mut self, i: &'ast crate::LitStr) {
             visit_lit_str(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_local(&mut self, i: &'ast Local) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_local(&mut self, i: &'ast crate::Local) {
             visit_local(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_macro(&mut self, i: &'ast Macro) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_local_init(&mut self, i: &'ast crate::LocalInit) {
    +        visit_local_init(self, i);
    +    }
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_macro(&mut self, i: &'ast crate::Macro) {
             visit_macro(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_macro_delimiter(&mut self, i: &'ast MacroDelimiter) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_macro_delimiter(&mut self, i: &'ast crate::MacroDelimiter) {
             visit_macro_delimiter(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_member(&mut self, i: &'ast Member) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_member(&mut self, i: &'ast crate::Member) {
             visit_member(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_meta(&mut self, i: &'ast Meta) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_meta(&mut self, i: &'ast crate::Meta) {
             visit_meta(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_meta_list(&mut self, i: &'ast MetaList) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_meta_list(&mut self, i: &'ast crate::MetaList) {
             visit_meta_list(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_meta_name_value(&mut self, i: &'ast MetaNameValue) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_meta_name_value(&mut self, i: &'ast crate::MetaNameValue) {
             visit_meta_name_value(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_method_turbofish(&mut self, i: &'ast MethodTurbofish) {
    -        visit_method_turbofish(self, i);
    -    }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_nested_meta(&mut self, i: &'ast NestedMeta) {
    -        visit_nested_meta(self, i);
    -    }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
         fn visit_parenthesized_generic_arguments(
             &mut self,
    -        i: &'ast ParenthesizedGenericArguments,
    +        i: &'ast crate::ParenthesizedGenericArguments,
         ) {
             visit_parenthesized_generic_arguments(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_pat(&mut self, i: &'ast Pat) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_pat(&mut self, i: &'ast crate::Pat) {
             visit_pat(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_pat_box(&mut self, i: &'ast PatBox) {
    -        visit_pat_box(self, i);
    -    }
    -    #[cfg(feature = "full")]
    -    fn visit_pat_ident(&mut self, i: &'ast PatIdent) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_pat_ident(&mut self, i: &'ast crate::PatIdent) {
             visit_pat_ident(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_pat_lit(&mut self, i: &'ast PatLit) {
    -        visit_pat_lit(self, i);
    -    }
    -    #[cfg(feature = "full")]
    -    fn visit_pat_macro(&mut self, i: &'ast PatMacro) {
    -        visit_pat_macro(self, i);
    -    }
    -    #[cfg(feature = "full")]
    -    fn visit_pat_or(&mut self, i: &'ast PatOr) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_pat_or(&mut self, i: &'ast crate::PatOr) {
             visit_pat_or(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_pat_path(&mut self, i: &'ast PatPath) {
    -        visit_pat_path(self, i);
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_pat_paren(&mut self, i: &'ast crate::PatParen) {
    +        visit_pat_paren(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_pat_range(&mut self, i: &'ast PatRange) {
    -        visit_pat_range(self, i);
    -    }
    -    #[cfg(feature = "full")]
    -    fn visit_pat_reference(&mut self, i: &'ast PatReference) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_pat_reference(&mut self, i: &'ast crate::PatReference) {
             visit_pat_reference(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_pat_rest(&mut self, i: &'ast PatRest) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_pat_rest(&mut self, i: &'ast crate::PatRest) {
             visit_pat_rest(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_pat_slice(&mut self, i: &'ast PatSlice) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_pat_slice(&mut self, i: &'ast crate::PatSlice) {
             visit_pat_slice(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_pat_struct(&mut self, i: &'ast PatStruct) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_pat_struct(&mut self, i: &'ast crate::PatStruct) {
             visit_pat_struct(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_pat_tuple(&mut self, i: &'ast PatTuple) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_pat_tuple(&mut self, i: &'ast crate::PatTuple) {
             visit_pat_tuple(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_pat_tuple_struct(&mut self, i: &'ast PatTupleStruct) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_pat_tuple_struct(&mut self, i: &'ast crate::PatTupleStruct) {
             visit_pat_tuple_struct(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_pat_type(&mut self, i: &'ast PatType) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_pat_type(&mut self, i: &'ast crate::PatType) {
             visit_pat_type(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_pat_wild(&mut self, i: &'ast PatWild) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_pat_wild(&mut self, i: &'ast crate::PatWild) {
             visit_pat_wild(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_path(&mut self, i: &'ast Path) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_path(&mut self, i: &'ast crate::Path) {
             visit_path(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_path_arguments(&mut self, i: &'ast PathArguments) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_path_arguments(&mut self, i: &'ast crate::PathArguments) {
             visit_path_arguments(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_path_segment(&mut self, i: &'ast PathSegment) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_path_segment(&mut self, i: &'ast crate::PathSegment) {
             visit_path_segment(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_predicate_eq(&mut self, i: &'ast PredicateEq) {
    -        visit_predicate_eq(self, i);
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_pointer_mutability(&mut self, i: &'ast crate::PointerMutability) {
    +        visit_pointer_mutability(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_predicate_lifetime(&mut self, i: &'ast PredicateLifetime) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_precise_capture(&mut self, i: &'ast crate::PreciseCapture) {
    +        visit_precise_capture(self, i);
    +    }
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_predicate_lifetime(&mut self, i: &'ast crate::PredicateLifetime) {
             visit_predicate_lifetime(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_predicate_type(&mut self, i: &'ast PredicateType) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_predicate_type(&mut self, i: &'ast crate::PredicateType) {
             visit_predicate_type(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_qself(&mut self, i: &'ast QSelf) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_qself(&mut self, i: &'ast crate::QSelf) {
             visit_qself(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_range_limits(&mut self, i: &'ast RangeLimits) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_range_limits(&mut self, i: &'ast crate::RangeLimits) {
             visit_range_limits(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_receiver(&mut self, i: &'ast Receiver) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_receiver(&mut self, i: &'ast crate::Receiver) {
             visit_receiver(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_return_type(&mut self, i: &'ast ReturnType) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_return_type(&mut self, i: &'ast crate::ReturnType) {
             visit_return_type(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_signature(&mut self, i: &'ast Signature) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_signature(&mut self, i: &'ast crate::Signature) {
             visit_signature(self, i);
         }
    -    fn visit_span(&mut self, i: &Span) {
    +    fn visit_span(&mut self, i: &proc_macro2::Span) {
             visit_span(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_stmt(&mut self, i: &'ast Stmt) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_static_mutability(&mut self, i: &'ast crate::StaticMutability) {
    +        visit_static_mutability(self, i);
    +    }
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_stmt(&mut self, i: &'ast crate::Stmt) {
             visit_stmt(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_trait_bound(&mut self, i: &'ast TraitBound) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_stmt_macro(&mut self, i: &'ast crate::StmtMacro) {
    +        visit_stmt_macro(self, i);
    +    }
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_trait_bound(&mut self, i: &'ast crate::TraitBound) {
             visit_trait_bound(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_trait_bound_modifier(&mut self, i: &'ast TraitBoundModifier) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_trait_bound_modifier(&mut self, i: &'ast crate::TraitBoundModifier) {
             visit_trait_bound_modifier(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_trait_item(&mut self, i: &'ast TraitItem) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_trait_item(&mut self, i: &'ast crate::TraitItem) {
             visit_trait_item(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_trait_item_const(&mut self, i: &'ast TraitItemConst) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_trait_item_const(&mut self, i: &'ast crate::TraitItemConst) {
             visit_trait_item_const(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_trait_item_macro(&mut self, i: &'ast TraitItemMacro) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_trait_item_fn(&mut self, i: &'ast crate::TraitItemFn) {
    +        visit_trait_item_fn(self, i);
    +    }
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_trait_item_macro(&mut self, i: &'ast crate::TraitItemMacro) {
             visit_trait_item_macro(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_trait_item_method(&mut self, i: &'ast TraitItemMethod) {
    -        visit_trait_item_method(self, i);
    -    }
    -    #[cfg(feature = "full")]
    -    fn visit_trait_item_type(&mut self, i: &'ast TraitItemType) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_trait_item_type(&mut self, i: &'ast crate::TraitItemType) {
             visit_trait_item_type(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_type(&mut self, i: &'ast Type) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_type(&mut self, i: &'ast crate::Type) {
             visit_type(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_type_array(&mut self, i: &'ast TypeArray) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_type_array(&mut self, i: &'ast crate::TypeArray) {
             visit_type_array(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_type_bare_fn(&mut self, i: &'ast TypeBareFn) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_type_bare_fn(&mut self, i: &'ast crate::TypeBareFn) {
             visit_type_bare_fn(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_type_group(&mut self, i: &'ast TypeGroup) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_type_group(&mut self, i: &'ast crate::TypeGroup) {
             visit_type_group(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_type_impl_trait(&mut self, i: &'ast TypeImplTrait) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_type_impl_trait(&mut self, i: &'ast crate::TypeImplTrait) {
             visit_type_impl_trait(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_type_infer(&mut self, i: &'ast TypeInfer) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_type_infer(&mut self, i: &'ast crate::TypeInfer) {
             visit_type_infer(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_type_macro(&mut self, i: &'ast TypeMacro) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_type_macro(&mut self, i: &'ast crate::TypeMacro) {
             visit_type_macro(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_type_never(&mut self, i: &'ast TypeNever) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_type_never(&mut self, i: &'ast crate::TypeNever) {
             visit_type_never(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_type_param(&mut self, i: &'ast TypeParam) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_type_param(&mut self, i: &'ast crate::TypeParam) {
             visit_type_param(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_type_param_bound(&mut self, i: &'ast TypeParamBound) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_type_param_bound(&mut self, i: &'ast crate::TypeParamBound) {
             visit_type_param_bound(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_type_paren(&mut self, i: &'ast TypeParen) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_type_paren(&mut self, i: &'ast crate::TypeParen) {
             visit_type_paren(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_type_path(&mut self, i: &'ast TypePath) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_type_path(&mut self, i: &'ast crate::TypePath) {
             visit_type_path(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_type_ptr(&mut self, i: &'ast TypePtr) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_type_ptr(&mut self, i: &'ast crate::TypePtr) {
             visit_type_ptr(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_type_reference(&mut self, i: &'ast TypeReference) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_type_reference(&mut self, i: &'ast crate::TypeReference) {
             visit_type_reference(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_type_slice(&mut self, i: &'ast TypeSlice) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_type_slice(&mut self, i: &'ast crate::TypeSlice) {
             visit_type_slice(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_type_trait_object(&mut self, i: &'ast TypeTraitObject) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_type_trait_object(&mut self, i: &'ast crate::TypeTraitObject) {
             visit_type_trait_object(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_type_tuple(&mut self, i: &'ast TypeTuple) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_type_tuple(&mut self, i: &'ast crate::TypeTuple) {
             visit_type_tuple(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_un_op(&mut self, i: &'ast UnOp) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_un_op(&mut self, i: &'ast crate::UnOp) {
             visit_un_op(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_use_glob(&mut self, i: &'ast UseGlob) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_use_glob(&mut self, i: &'ast crate::UseGlob) {
             visit_use_glob(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_use_group(&mut self, i: &'ast UseGroup) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_use_group(&mut self, i: &'ast crate::UseGroup) {
             visit_use_group(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_use_name(&mut self, i: &'ast UseName) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_use_name(&mut self, i: &'ast crate::UseName) {
             visit_use_name(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_use_path(&mut self, i: &'ast UsePath) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_use_path(&mut self, i: &'ast crate::UsePath) {
             visit_use_path(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_use_rename(&mut self, i: &'ast UseRename) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_use_rename(&mut self, i: &'ast crate::UseRename) {
             visit_use_rename(self, i);
         }
    -    #[cfg(feature = "full")]
    -    fn visit_use_tree(&mut self, i: &'ast UseTree) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_use_tree(&mut self, i: &'ast crate::UseTree) {
             visit_use_tree(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_variadic(&mut self, i: &'ast Variadic) {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    fn visit_variadic(&mut self, i: &'ast crate::Variadic) {
             visit_variadic(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_variant(&mut self, i: &'ast Variant) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_variant(&mut self, i: &'ast crate::Variant) {
             visit_variant(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_vis_crate(&mut self, i: &'ast VisCrate) {
    -        visit_vis_crate(self, i);
    -    }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_vis_public(&mut self, i: &'ast VisPublic) {
    -        visit_vis_public(self, i);
    -    }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_vis_restricted(&mut self, i: &'ast VisRestricted) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_vis_restricted(&mut self, i: &'ast crate::VisRestricted) {
             visit_vis_restricted(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_visibility(&mut self, i: &'ast Visibility) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_visibility(&mut self, i: &'ast crate::Visibility) {
             visit_visibility(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_where_clause(&mut self, i: &'ast WhereClause) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_where_clause(&mut self, i: &'ast crate::WhereClause) {
             visit_where_clause(self, i);
         }
    -    #[cfg(any(feature = "derive", feature = "full"))]
    -    fn visit_where_predicate(&mut self, i: &'ast WherePredicate) {
    +    #[cfg(any(feature = "derive", feature = "full"))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +    fn visit_where_predicate(&mut self, i: &'ast crate::WherePredicate) {
             visit_where_predicate(self, i);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_abi<'ast, V>(v: &mut V, node: &'ast Abi)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_abi<'ast, V>(v: &mut V, node: &'ast crate::Abi)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    tokens_helper(v, &node.extern_token.span);
    +    skip!(node.extern_token);
         if let Some(it) = &node.name {
             v.visit_lit_str(it);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_angle_bracketed_generic_arguments<'ast, V>(
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_angle_bracketed_generic_arguments<'ast, V>(
         v: &mut V,
    -    node: &'ast AngleBracketedGenericArguments,
    +    node: &'ast crate::AngleBracketedGenericArguments,
     )
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    if let Some(it) = &node.colon2_token {
    -        tokens_helper(v, &it.spans);
    -    }
    -    tokens_helper(v, &node.lt_token.spans);
    +    skip!(node.colon2_token);
    +    skip!(node.lt_token);
         for el in Punctuated::pairs(&node.args) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_generic_argument(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
         }
    -    tokens_helper(v, &node.gt_token.spans);
    +    skip!(node.gt_token);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_arm<'ast, V>(v: &mut V, node: &'ast Arm)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_arm<'ast, V>(v: &mut V, node: &'ast crate::Arm)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_pat(&node.pat);
         if let Some(it) = &node.guard {
    -        tokens_helper(v, &(it).0.span);
    +        skip!((it).0);
             v.visit_expr(&*(it).1);
         }
    -    tokens_helper(v, &node.fat_arrow_token.spans);
    +    skip!(node.fat_arrow_token);
         v.visit_expr(&*node.body);
    -    if let Some(it) = &node.comma {
    -        tokens_helper(v, &it.spans);
    -    }
    +    skip!(node.comma);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_attr_style<'ast, V>(v: &mut V, node: &'ast AttrStyle)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_assoc_const<'ast, V>(v: &mut V, node: &'ast crate::AssocConst)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
    +{
    +    v.visit_ident(&node.ident);
    +    if let Some(it) = &node.generics {
    +        v.visit_angle_bracketed_generic_arguments(it);
    +    }
    +    skip!(node.eq_token);
    +    v.visit_expr(&node.value);
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_assoc_type<'ast, V>(v: &mut V, node: &'ast crate::AssocType)
    +where
    +    V: Visit<'ast> + ?Sized,
    +{
    +    v.visit_ident(&node.ident);
    +    if let Some(it) = &node.generics {
    +        v.visit_angle_bracketed_generic_arguments(it);
    +    }
    +    skip!(node.eq_token);
    +    v.visit_type(&node.ty);
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_attr_style<'ast, V>(v: &mut V, node: &'ast crate::AttrStyle)
    +where
    +    V: Visit<'ast> + ?Sized,
     {
         match node {
    -        AttrStyle::Outer => {}
    -        AttrStyle::Inner(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    +        crate::AttrStyle::Outer => {}
    +        crate::AttrStyle::Inner(_binding_0) => {
    +            skip!(_binding_0);
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_attribute<'ast, V>(v: &mut V, node: &'ast Attribute)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_attribute<'ast, V>(v: &mut V, node: &'ast crate::Attribute)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    tokens_helper(v, &node.pound_token.spans);
    +    skip!(node.pound_token);
         v.visit_attr_style(&node.style);
    -    tokens_helper(v, &node.bracket_token.span);
    -    v.visit_path(&node.path);
    -    skip!(node.tokens);
    +    skip!(node.bracket_token);
    +    v.visit_meta(&node.meta);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_bare_fn_arg<'ast, V>(v: &mut V, node: &'ast BareFnArg)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_bare_fn_arg<'ast, V>(v: &mut V, node: &'ast crate::BareFnArg)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         if let Some(it) = &node.name {
             v.visit_ident(&(it).0);
    -        tokens_helper(v, &(it).1.spans);
    +        skip!((it).1);
         }
         v.visit_type(&node.ty);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_bin_op<'ast, V>(v: &mut V, node: &'ast BinOp)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_bare_variadic<'ast, V>(v: &mut V, node: &'ast crate::BareVariadic)
     where
    -    V: Visit<'ast> + ?Sized,
    -{
    -    match node {
    -        BinOp::Add(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -        BinOp::Sub(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -        BinOp::Mul(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -        BinOp::Div(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -        BinOp::Rem(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -        BinOp::And(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -        BinOp::Or(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -        BinOp::BitXor(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -        BinOp::BitAnd(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -        BinOp::BitOr(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -        BinOp::Shl(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -        BinOp::Shr(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -        BinOp::Eq(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -        BinOp::Lt(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -        BinOp::Le(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -        BinOp::Ne(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -        BinOp::Ge(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -        BinOp::Gt(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -        BinOp::AddEq(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -        BinOp::SubEq(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -        BinOp::MulEq(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -        BinOp::DivEq(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -        BinOp::RemEq(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -        BinOp::BitXorEq(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -        BinOp::BitAndEq(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -        BinOp::BitOrEq(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -        BinOp::ShlEq(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -        BinOp::ShrEq(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_binding<'ast, V>(v: &mut V, node: &'ast Binding)
    -where
    -    V: Visit<'ast> + ?Sized,
    -{
    -    v.visit_ident(&node.ident);
    -    tokens_helper(v, &node.eq_token.spans);
    -    v.visit_type(&node.ty);
    -}
    -#[cfg(feature = "full")]
    -pub fn visit_block<'ast, V>(v: &mut V, node: &'ast Block)
    -where
    -    V: Visit<'ast> + ?Sized,
    -{
    -    tokens_helper(v, &node.brace_token.span);
    -    for it in &node.stmts {
    -        v.visit_stmt(it);
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_bound_lifetimes<'ast, V>(v: &mut V, node: &'ast BoundLifetimes)
    -where
    -    V: Visit<'ast> + ?Sized,
    -{
    -    tokens_helper(v, &node.for_token.span);
    -    tokens_helper(v, &node.lt_token.spans);
    -    for el in Punctuated::pairs(&node.lifetimes) {
    -        let (it, p) = el.into_tuple();
    -        v.visit_lifetime_def(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
    -    }
    -    tokens_helper(v, &node.gt_token.spans);
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_const_param<'ast, V>(v: &mut V, node: &'ast ConstParam)
    -where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    -    tokens_helper(v, &node.const_token.span);
    -    v.visit_ident(&node.ident);
    -    tokens_helper(v, &node.colon_token.spans);
    -    v.visit_type(&node.ty);
    -    if let Some(it) = &node.eq_token {
    -        tokens_helper(v, &it.spans);
    +    if let Some(it) = &node.name {
    +        v.visit_ident(&(it).0);
    +        skip!((it).1);
         }
    +    skip!(node.dots);
    +    skip!(node.comma);
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_bin_op<'ast, V>(v: &mut V, node: &'ast crate::BinOp)
    +where
    +    V: Visit<'ast> + ?Sized,
    +{
    +    match node {
    +        crate::BinOp::Add(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::BinOp::Sub(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::BinOp::Mul(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::BinOp::Div(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::BinOp::Rem(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::BinOp::And(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::BinOp::Or(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::BinOp::BitXor(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::BinOp::BitAnd(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::BinOp::BitOr(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::BinOp::Shl(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::BinOp::Shr(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::BinOp::Eq(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::BinOp::Lt(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::BinOp::Le(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::BinOp::Ne(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::BinOp::Ge(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::BinOp::Gt(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::BinOp::AddAssign(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::BinOp::SubAssign(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::BinOp::MulAssign(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::BinOp::DivAssign(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::BinOp::RemAssign(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::BinOp::BitXorAssign(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::BinOp::BitAndAssign(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::BinOp::BitOrAssign(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::BinOp::ShlAssign(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::BinOp::ShrAssign(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_block<'ast, V>(v: &mut V, node: &'ast crate::Block)
    +where
    +    V: Visit<'ast> + ?Sized,
    +{
    +    skip!(node.brace_token);
    +    for it in &node.stmts {
    +        v.visit_stmt(it);
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_bound_lifetimes<'ast, V>(v: &mut V, node: &'ast crate::BoundLifetimes)
    +where
    +    V: Visit<'ast> + ?Sized,
    +{
    +    skip!(node.for_token);
    +    skip!(node.lt_token);
    +    for el in Punctuated::pairs(&node.lifetimes) {
    +        let it = el.value();
    +        v.visit_generic_param(it);
    +    }
    +    skip!(node.gt_token);
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_captured_param<'ast, V>(v: &mut V, node: &'ast crate::CapturedParam)
    +where
    +    V: Visit<'ast> + ?Sized,
    +{
    +    match node {
    +        crate::CapturedParam::Lifetime(_binding_0) => {
    +            v.visit_lifetime(_binding_0);
    +        }
    +        crate::CapturedParam::Ident(_binding_0) => {
    +            v.visit_ident(_binding_0);
    +        }
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_const_param<'ast, V>(v: &mut V, node: &'ast crate::ConstParam)
    +where
    +    V: Visit<'ast> + ?Sized,
    +{
    +    for it in &node.attrs {
    +        v.visit_attribute(it);
    +    }
    +    skip!(node.const_token);
    +    v.visit_ident(&node.ident);
    +    skip!(node.colon_token);
    +    v.visit_type(&node.ty);
    +    skip!(node.eq_token);
         if let Some(it) = &node.default {
             v.visit_expr(it);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_constraint<'ast, V>(v: &mut V, node: &'ast Constraint)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_constraint<'ast, V>(v: &mut V, node: &'ast crate::Constraint)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         v.visit_ident(&node.ident);
    -    tokens_helper(v, &node.colon_token.spans);
    +    if let Some(it) = &node.generics {
    +        v.visit_angle_bracketed_generic_arguments(it);
    +    }
    +    skip!(node.colon_token);
         for el in Punctuated::pairs(&node.bounds) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_type_param_bound(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
         }
     }
    -#[cfg(feature = "derive")]
    -pub fn visit_data<'ast, V>(v: &mut V, node: &'ast Data)
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
    +pub fn visit_data<'ast, V>(v: &mut V, node: &'ast crate::Data)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         match node {
    -        Data::Struct(_binding_0) => {
    +        crate::Data::Struct(_binding_0) => {
                 v.visit_data_struct(_binding_0);
             }
    -        Data::Enum(_binding_0) => {
    +        crate::Data::Enum(_binding_0) => {
                 v.visit_data_enum(_binding_0);
             }
    -        Data::Union(_binding_0) => {
    +        crate::Data::Union(_binding_0) => {
                 v.visit_data_union(_binding_0);
             }
         }
     }
    -#[cfg(feature = "derive")]
    -pub fn visit_data_enum<'ast, V>(v: &mut V, node: &'ast DataEnum)
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
    +pub fn visit_data_enum<'ast, V>(v: &mut V, node: &'ast crate::DataEnum)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    tokens_helper(v, &node.enum_token.span);
    -    tokens_helper(v, &node.brace_token.span);
    +    skip!(node.enum_token);
    +    skip!(node.brace_token);
         for el in Punctuated::pairs(&node.variants) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_variant(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
         }
     }
    -#[cfg(feature = "derive")]
    -pub fn visit_data_struct<'ast, V>(v: &mut V, node: &'ast DataStruct)
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
    +pub fn visit_data_struct<'ast, V>(v: &mut V, node: &'ast crate::DataStruct)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    tokens_helper(v, &node.struct_token.span);
    +    skip!(node.struct_token);
         v.visit_fields(&node.fields);
    -    if let Some(it) = &node.semi_token {
    -        tokens_helper(v, &it.spans);
    -    }
    +    skip!(node.semi_token);
     }
    -#[cfg(feature = "derive")]
    -pub fn visit_data_union<'ast, V>(v: &mut V, node: &'ast DataUnion)
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
    +pub fn visit_data_union<'ast, V>(v: &mut V, node: &'ast crate::DataUnion)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    tokens_helper(v, &node.union_token.span);
    +    skip!(node.union_token);
         v.visit_fields_named(&node.fields);
     }
    -#[cfg(feature = "derive")]
    -pub fn visit_derive_input<'ast, V>(v: &mut V, node: &'ast DeriveInput)
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
    +pub fn visit_derive_input<'ast, V>(v: &mut V, node: &'ast crate::DeriveInput)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
    @@ -4873,207 +5244,194 @@
         v.visit_generics(&node.generics);
         v.visit_data(&node.data);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_expr<'ast, V>(v: &mut V, node: &'ast Expr)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_expr<'ast, V>(v: &mut V, node: &'ast crate::Expr)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         match node {
    -        Expr::Array(_binding_0) => {
    +        crate::Expr::Array(_binding_0) => {
                 full!(v.visit_expr_array(_binding_0));
             }
    -        Expr::Assign(_binding_0) => {
    +        crate::Expr::Assign(_binding_0) => {
                 full!(v.visit_expr_assign(_binding_0));
             }
    -        Expr::AssignOp(_binding_0) => {
    -            full!(v.visit_expr_assign_op(_binding_0));
    -        }
    -        Expr::Async(_binding_0) => {
    +        crate::Expr::Async(_binding_0) => {
                 full!(v.visit_expr_async(_binding_0));
             }
    -        Expr::Await(_binding_0) => {
    +        crate::Expr::Await(_binding_0) => {
                 full!(v.visit_expr_await(_binding_0));
             }
    -        Expr::Binary(_binding_0) => {
    +        crate::Expr::Binary(_binding_0) => {
                 v.visit_expr_binary(_binding_0);
             }
    -        Expr::Block(_binding_0) => {
    +        crate::Expr::Block(_binding_0) => {
                 full!(v.visit_expr_block(_binding_0));
             }
    -        Expr::Box(_binding_0) => {
    -            full!(v.visit_expr_box(_binding_0));
    -        }
    -        Expr::Break(_binding_0) => {
    +        crate::Expr::Break(_binding_0) => {
                 full!(v.visit_expr_break(_binding_0));
             }
    -        Expr::Call(_binding_0) => {
    +        crate::Expr::Call(_binding_0) => {
                 v.visit_expr_call(_binding_0);
             }
    -        Expr::Cast(_binding_0) => {
    +        crate::Expr::Cast(_binding_0) => {
                 v.visit_expr_cast(_binding_0);
             }
    -        Expr::Closure(_binding_0) => {
    +        crate::Expr::Closure(_binding_0) => {
                 full!(v.visit_expr_closure(_binding_0));
             }
    -        Expr::Continue(_binding_0) => {
    +        crate::Expr::Const(_binding_0) => {
    +            full!(v.visit_expr_const(_binding_0));
    +        }
    +        crate::Expr::Continue(_binding_0) => {
                 full!(v.visit_expr_continue(_binding_0));
             }
    -        Expr::Field(_binding_0) => {
    +        crate::Expr::Field(_binding_0) => {
                 v.visit_expr_field(_binding_0);
             }
    -        Expr::ForLoop(_binding_0) => {
    +        crate::Expr::ForLoop(_binding_0) => {
                 full!(v.visit_expr_for_loop(_binding_0));
             }
    -        Expr::Group(_binding_0) => {
    -            full!(v.visit_expr_group(_binding_0));
    +        crate::Expr::Group(_binding_0) => {
    +            v.visit_expr_group(_binding_0);
             }
    -        Expr::If(_binding_0) => {
    +        crate::Expr::If(_binding_0) => {
                 full!(v.visit_expr_if(_binding_0));
             }
    -        Expr::Index(_binding_0) => {
    +        crate::Expr::Index(_binding_0) => {
                 v.visit_expr_index(_binding_0);
             }
    -        Expr::Let(_binding_0) => {
    +        crate::Expr::Infer(_binding_0) => {
    +            full!(v.visit_expr_infer(_binding_0));
    +        }
    +        crate::Expr::Let(_binding_0) => {
                 full!(v.visit_expr_let(_binding_0));
             }
    -        Expr::Lit(_binding_0) => {
    +        crate::Expr::Lit(_binding_0) => {
                 v.visit_expr_lit(_binding_0);
             }
    -        Expr::Loop(_binding_0) => {
    +        crate::Expr::Loop(_binding_0) => {
                 full!(v.visit_expr_loop(_binding_0));
             }
    -        Expr::Macro(_binding_0) => {
    -            full!(v.visit_expr_macro(_binding_0));
    +        crate::Expr::Macro(_binding_0) => {
    +            v.visit_expr_macro(_binding_0);
             }
    -        Expr::Match(_binding_0) => {
    +        crate::Expr::Match(_binding_0) => {
                 full!(v.visit_expr_match(_binding_0));
             }
    -        Expr::MethodCall(_binding_0) => {
    -            full!(v.visit_expr_method_call(_binding_0));
    +        crate::Expr::MethodCall(_binding_0) => {
    +            v.visit_expr_method_call(_binding_0);
             }
    -        Expr::Paren(_binding_0) => {
    +        crate::Expr::Paren(_binding_0) => {
                 v.visit_expr_paren(_binding_0);
             }
    -        Expr::Path(_binding_0) => {
    +        crate::Expr::Path(_binding_0) => {
                 v.visit_expr_path(_binding_0);
             }
    -        Expr::Range(_binding_0) => {
    +        crate::Expr::Range(_binding_0) => {
                 full!(v.visit_expr_range(_binding_0));
             }
    -        Expr::Reference(_binding_0) => {
    -            full!(v.visit_expr_reference(_binding_0));
    +        crate::Expr::RawAddr(_binding_0) => {
    +            full!(v.visit_expr_raw_addr(_binding_0));
             }
    -        Expr::Repeat(_binding_0) => {
    +        crate::Expr::Reference(_binding_0) => {
    +            v.visit_expr_reference(_binding_0);
    +        }
    +        crate::Expr::Repeat(_binding_0) => {
                 full!(v.visit_expr_repeat(_binding_0));
             }
    -        Expr::Return(_binding_0) => {
    +        crate::Expr::Return(_binding_0) => {
                 full!(v.visit_expr_return(_binding_0));
             }
    -        Expr::Struct(_binding_0) => {
    -            full!(v.visit_expr_struct(_binding_0));
    +        crate::Expr::Struct(_binding_0) => {
    +            v.visit_expr_struct(_binding_0);
             }
    -        Expr::Try(_binding_0) => {
    +        crate::Expr::Try(_binding_0) => {
                 full!(v.visit_expr_try(_binding_0));
             }
    -        Expr::TryBlock(_binding_0) => {
    +        crate::Expr::TryBlock(_binding_0) => {
                 full!(v.visit_expr_try_block(_binding_0));
             }
    -        Expr::Tuple(_binding_0) => {
    -            full!(v.visit_expr_tuple(_binding_0));
    +        crate::Expr::Tuple(_binding_0) => {
    +            v.visit_expr_tuple(_binding_0);
             }
    -        Expr::Type(_binding_0) => {
    -            full!(v.visit_expr_type(_binding_0));
    -        }
    -        Expr::Unary(_binding_0) => {
    +        crate::Expr::Unary(_binding_0) => {
                 v.visit_expr_unary(_binding_0);
             }
    -        Expr::Unsafe(_binding_0) => {
    +        crate::Expr::Unsafe(_binding_0) => {
                 full!(v.visit_expr_unsafe(_binding_0));
             }
    -        Expr::Verbatim(_binding_0) => {
    +        crate::Expr::Verbatim(_binding_0) => {
                 skip!(_binding_0);
             }
    -        Expr::While(_binding_0) => {
    +        crate::Expr::While(_binding_0) => {
                 full!(v.visit_expr_while(_binding_0));
             }
    -        Expr::Yield(_binding_0) => {
    +        crate::Expr::Yield(_binding_0) => {
                 full!(v.visit_expr_yield(_binding_0));
             }
    -        #[cfg(syn_no_non_exhaustive)]
    -        _ => unreachable!(),
         }
     }
    -#[cfg(feature = "full")]
    -pub fn visit_expr_array<'ast, V>(v: &mut V, node: &'ast ExprArray)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_expr_array<'ast, V>(v: &mut V, node: &'ast crate::ExprArray)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    -    tokens_helper(v, &node.bracket_token.span);
    +    skip!(node.bracket_token);
         for el in Punctuated::pairs(&node.elems) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_expr(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
         }
     }
    -#[cfg(feature = "full")]
    -pub fn visit_expr_assign<'ast, V>(v: &mut V, node: &'ast ExprAssign)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_expr_assign<'ast, V>(v: &mut V, node: &'ast crate::ExprAssign)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_expr(&*node.left);
    -    tokens_helper(v, &node.eq_token.spans);
    +    skip!(node.eq_token);
         v.visit_expr(&*node.right);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_expr_assign_op<'ast, V>(v: &mut V, node: &'ast ExprAssignOp)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_expr_async<'ast, V>(v: &mut V, node: &'ast crate::ExprAsync)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    -    v.visit_expr(&*node.left);
    -    v.visit_bin_op(&node.op);
    -    v.visit_expr(&*node.right);
    -}
    -#[cfg(feature = "full")]
    -pub fn visit_expr_async<'ast, V>(v: &mut V, node: &'ast ExprAsync)
    -where
    -    V: Visit<'ast> + ?Sized,
    -{
    -    for it in &node.attrs {
    -        v.visit_attribute(it);
    -    }
    -    tokens_helper(v, &node.async_token.span);
    -    if let Some(it) = &node.capture {
    -        tokens_helper(v, &it.span);
    -    }
    +    skip!(node.async_token);
    +    skip!(node.capture);
         v.visit_block(&node.block);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_expr_await<'ast, V>(v: &mut V, node: &'ast ExprAwait)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_expr_await<'ast, V>(v: &mut V, node: &'ast crate::ExprAwait)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_expr(&*node.base);
    -    tokens_helper(v, &node.dot_token.spans);
    -    tokens_helper(v, &node.await_token.span);
    +    skip!(node.dot_token);
    +    skip!(node.await_token);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_expr_binary<'ast, V>(v: &mut V, node: &'ast ExprBinary)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_expr_binary<'ast, V>(v: &mut V, node: &'ast crate::ExprBinary)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
    @@ -5082,10 +5440,11 @@
         v.visit_bin_op(&node.op);
         v.visit_expr(&*node.right);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_expr_block<'ast, V>(v: &mut V, node: &'ast ExprBlock)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_expr_block<'ast, V>(v: &mut V, node: &'ast crate::ExprBlock)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
    @@ -5095,26 +5454,16 @@
         }
         v.visit_block(&node.block);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_expr_box<'ast, V>(v: &mut V, node: &'ast ExprBox)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_expr_break<'ast, V>(v: &mut V, node: &'ast crate::ExprBreak)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    -    tokens_helper(v, &node.box_token.span);
    -    v.visit_expr(&*node.expr);
    -}
    -#[cfg(feature = "full")]
    -pub fn visit_expr_break<'ast, V>(v: &mut V, node: &'ast ExprBreak)
    -where
    -    V: Visit<'ast> + ?Sized,
    -{
    -    for it in &node.attrs {
    -        v.visit_attribute(it);
    -    }
    -    tokens_helper(v, &node.break_token.span);
    +    skip!(node.break_token);
         if let Some(it) = &node.label {
             v.visit_lifetime(it);
         }
    @@ -5122,94 +5471,104 @@
             v.visit_expr(&**it);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_expr_call<'ast, V>(v: &mut V, node: &'ast ExprCall)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_expr_call<'ast, V>(v: &mut V, node: &'ast crate::ExprCall)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_expr(&*node.func);
    -    tokens_helper(v, &node.paren_token.span);
    +    skip!(node.paren_token);
         for el in Punctuated::pairs(&node.args) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_expr(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_expr_cast<'ast, V>(v: &mut V, node: &'ast ExprCast)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_expr_cast<'ast, V>(v: &mut V, node: &'ast crate::ExprCast)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_expr(&*node.expr);
    -    tokens_helper(v, &node.as_token.span);
    +    skip!(node.as_token);
         v.visit_type(&*node.ty);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_expr_closure<'ast, V>(v: &mut V, node: &'ast ExprClosure)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_expr_closure<'ast, V>(v: &mut V, node: &'ast crate::ExprClosure)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    -    if let Some(it) = &node.movability {
    -        tokens_helper(v, &it.span);
    +    if let Some(it) = &node.lifetimes {
    +        v.visit_bound_lifetimes(it);
         }
    -    if let Some(it) = &node.asyncness {
    -        tokens_helper(v, &it.span);
    -    }
    -    if let Some(it) = &node.capture {
    -        tokens_helper(v, &it.span);
    -    }
    -    tokens_helper(v, &node.or1_token.spans);
    +    skip!(node.constness);
    +    skip!(node.movability);
    +    skip!(node.asyncness);
    +    skip!(node.capture);
    +    skip!(node.or1_token);
         for el in Punctuated::pairs(&node.inputs) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_pat(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
         }
    -    tokens_helper(v, &node.or2_token.spans);
    +    skip!(node.or2_token);
         v.visit_return_type(&node.output);
         v.visit_expr(&*node.body);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_expr_continue<'ast, V>(v: &mut V, node: &'ast ExprContinue)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_expr_const<'ast, V>(v: &mut V, node: &'ast crate::ExprConst)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    -    tokens_helper(v, &node.continue_token.span);
    +    skip!(node.const_token);
    +    v.visit_block(&node.block);
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_expr_continue<'ast, V>(v: &mut V, node: &'ast crate::ExprContinue)
    +where
    +    V: Visit<'ast> + ?Sized,
    +{
    +    for it in &node.attrs {
    +        v.visit_attribute(it);
    +    }
    +    skip!(node.continue_token);
         if let Some(it) = &node.label {
             v.visit_lifetime(it);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_expr_field<'ast, V>(v: &mut V, node: &'ast ExprField)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_expr_field<'ast, V>(v: &mut V, node: &'ast crate::ExprField)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_expr(&*node.base);
    -    tokens_helper(v, &node.dot_token.spans);
    +    skip!(node.dot_token);
         v.visit_member(&node.member);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_expr_for_loop<'ast, V>(v: &mut V, node: &'ast ExprForLoop)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_expr_for_loop<'ast, V>(v: &mut V, node: &'ast crate::ExprForLoop)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
    @@ -5217,78 +5576,95 @@
         if let Some(it) = &node.label {
             v.visit_label(it);
         }
    -    tokens_helper(v, &node.for_token.span);
    -    v.visit_pat(&node.pat);
    -    tokens_helper(v, &node.in_token.span);
    +    skip!(node.for_token);
    +    v.visit_pat(&*node.pat);
    +    skip!(node.in_token);
         v.visit_expr(&*node.expr);
         v.visit_block(&node.body);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_expr_group<'ast, V>(v: &mut V, node: &'ast ExprGroup)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_expr_group<'ast, V>(v: &mut V, node: &'ast crate::ExprGroup)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    -    tokens_helper(v, &node.group_token.span);
    +    skip!(node.group_token);
         v.visit_expr(&*node.expr);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_expr_if<'ast, V>(v: &mut V, node: &'ast ExprIf)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_expr_if<'ast, V>(v: &mut V, node: &'ast crate::ExprIf)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    -    tokens_helper(v, &node.if_token.span);
    +    skip!(node.if_token);
         v.visit_expr(&*node.cond);
         v.visit_block(&node.then_branch);
         if let Some(it) = &node.else_branch {
    -        tokens_helper(v, &(it).0.span);
    +        skip!((it).0);
             v.visit_expr(&*(it).1);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_expr_index<'ast, V>(v: &mut V, node: &'ast ExprIndex)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_expr_index<'ast, V>(v: &mut V, node: &'ast crate::ExprIndex)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_expr(&*node.expr);
    -    tokens_helper(v, &node.bracket_token.span);
    +    skip!(node.bracket_token);
         v.visit_expr(&*node.index);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_expr_let<'ast, V>(v: &mut V, node: &'ast ExprLet)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_expr_infer<'ast, V>(v: &mut V, node: &'ast crate::ExprInfer)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    -    tokens_helper(v, &node.let_token.span);
    -    v.visit_pat(&node.pat);
    -    tokens_helper(v, &node.eq_token.spans);
    +    skip!(node.underscore_token);
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_expr_let<'ast, V>(v: &mut V, node: &'ast crate::ExprLet)
    +where
    +    V: Visit<'ast> + ?Sized,
    +{
    +    for it in &node.attrs {
    +        v.visit_attribute(it);
    +    }
    +    skip!(node.let_token);
    +    v.visit_pat(&*node.pat);
    +    skip!(node.eq_token);
         v.visit_expr(&*node.expr);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_expr_lit<'ast, V>(v: &mut V, node: &'ast ExprLit)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_expr_lit<'ast, V>(v: &mut V, node: &'ast crate::ExprLit)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_lit(&node.lit);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_expr_loop<'ast, V>(v: &mut V, node: &'ast ExprLoop)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_expr_loop<'ast, V>(v: &mut V, node: &'ast crate::ExprLoop)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
    @@ -5296,72 +5672,74 @@
         if let Some(it) = &node.label {
             v.visit_label(it);
         }
    -    tokens_helper(v, &node.loop_token.span);
    +    skip!(node.loop_token);
         v.visit_block(&node.body);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_expr_macro<'ast, V>(v: &mut V, node: &'ast ExprMacro)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_expr_macro<'ast, V>(v: &mut V, node: &'ast crate::ExprMacro)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_macro(&node.mac);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_expr_match<'ast, V>(v: &mut V, node: &'ast ExprMatch)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_expr_match<'ast, V>(v: &mut V, node: &'ast crate::ExprMatch)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    -    tokens_helper(v, &node.match_token.span);
    +    skip!(node.match_token);
         v.visit_expr(&*node.expr);
    -    tokens_helper(v, &node.brace_token.span);
    +    skip!(node.brace_token);
         for it in &node.arms {
             v.visit_arm(it);
         }
     }
    -#[cfg(feature = "full")]
    -pub fn visit_expr_method_call<'ast, V>(v: &mut V, node: &'ast ExprMethodCall)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_expr_method_call<'ast, V>(v: &mut V, node: &'ast crate::ExprMethodCall)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_expr(&*node.receiver);
    -    tokens_helper(v, &node.dot_token.spans);
    +    skip!(node.dot_token);
         v.visit_ident(&node.method);
         if let Some(it) = &node.turbofish {
    -        v.visit_method_turbofish(it);
    +        v.visit_angle_bracketed_generic_arguments(it);
         }
    -    tokens_helper(v, &node.paren_token.span);
    +    skip!(node.paren_token);
         for el in Punctuated::pairs(&node.args) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_expr(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_expr_paren<'ast, V>(v: &mut V, node: &'ast ExprParen)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_expr_paren<'ast, V>(v: &mut V, node: &'ast crate::ExprParen)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    -    tokens_helper(v, &node.paren_token.span);
    +    skip!(node.paren_token);
         v.visit_expr(&*node.expr);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_expr_path<'ast, V>(v: &mut V, node: &'ast ExprPath)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_expr_path<'ast, V>(v: &mut V, node: &'ast crate::ExprPath)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
    @@ -5371,141 +5749,145 @@
         }
         v.visit_path(&node.path);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_expr_range<'ast, V>(v: &mut V, node: &'ast ExprRange)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_expr_range<'ast, V>(v: &mut V, node: &'ast crate::ExprRange)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    -    if let Some(it) = &node.from {
    +    if let Some(it) = &node.start {
             v.visit_expr(&**it);
         }
         v.visit_range_limits(&node.limits);
    -    if let Some(it) = &node.to {
    +    if let Some(it) = &node.end {
             v.visit_expr(&**it);
         }
     }
    -#[cfg(feature = "full")]
    -pub fn visit_expr_reference<'ast, V>(v: &mut V, node: &'ast ExprReference)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_expr_raw_addr<'ast, V>(v: &mut V, node: &'ast crate::ExprRawAddr)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    -    tokens_helper(v, &node.and_token.spans);
    -    if let Some(it) = &node.mutability {
    -        tokens_helper(v, &it.span);
    -    }
    +    skip!(node.and_token);
    +    skip!(node.raw);
    +    v.visit_pointer_mutability(&node.mutability);
         v.visit_expr(&*node.expr);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_expr_repeat<'ast, V>(v: &mut V, node: &'ast ExprRepeat)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_expr_reference<'ast, V>(v: &mut V, node: &'ast crate::ExprReference)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    -    tokens_helper(v, &node.bracket_token.span);
    +    skip!(node.and_token);
    +    skip!(node.mutability);
         v.visit_expr(&*node.expr);
    -    tokens_helper(v, &node.semi_token.spans);
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_expr_repeat<'ast, V>(v: &mut V, node: &'ast crate::ExprRepeat)
    +where
    +    V: Visit<'ast> + ?Sized,
    +{
    +    for it in &node.attrs {
    +        v.visit_attribute(it);
    +    }
    +    skip!(node.bracket_token);
    +    v.visit_expr(&*node.expr);
    +    skip!(node.semi_token);
         v.visit_expr(&*node.len);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_expr_return<'ast, V>(v: &mut V, node: &'ast ExprReturn)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_expr_return<'ast, V>(v: &mut V, node: &'ast crate::ExprReturn)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    -    tokens_helper(v, &node.return_token.span);
    +    skip!(node.return_token);
         if let Some(it) = &node.expr {
             v.visit_expr(&**it);
         }
     }
    -#[cfg(feature = "full")]
    -pub fn visit_expr_struct<'ast, V>(v: &mut V, node: &'ast ExprStruct)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_expr_struct<'ast, V>(v: &mut V, node: &'ast crate::ExprStruct)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    +    if let Some(it) = &node.qself {
    +        v.visit_qself(it);
    +    }
         v.visit_path(&node.path);
    -    tokens_helper(v, &node.brace_token.span);
    +    skip!(node.brace_token);
         for el in Punctuated::pairs(&node.fields) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_field_value(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
    -    }
    -    if let Some(it) = &node.dot2_token {
    -        tokens_helper(v, &it.spans);
         }
    +    skip!(node.dot2_token);
         if let Some(it) = &node.rest {
             v.visit_expr(&**it);
         }
     }
    -#[cfg(feature = "full")]
    -pub fn visit_expr_try<'ast, V>(v: &mut V, node: &'ast ExprTry)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_expr_try<'ast, V>(v: &mut V, node: &'ast crate::ExprTry)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_expr(&*node.expr);
    -    tokens_helper(v, &node.question_token.spans);
    +    skip!(node.question_token);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_expr_try_block<'ast, V>(v: &mut V, node: &'ast ExprTryBlock)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_expr_try_block<'ast, V>(v: &mut V, node: &'ast crate::ExprTryBlock)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    -    tokens_helper(v, &node.try_token.span);
    +    skip!(node.try_token);
         v.visit_block(&node.block);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_expr_tuple<'ast, V>(v: &mut V, node: &'ast ExprTuple)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_expr_tuple<'ast, V>(v: &mut V, node: &'ast crate::ExprTuple)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    -    tokens_helper(v, &node.paren_token.span);
    +    skip!(node.paren_token);
         for el in Punctuated::pairs(&node.elems) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_expr(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
         }
     }
    -#[cfg(feature = "full")]
    -pub fn visit_expr_type<'ast, V>(v: &mut V, node: &'ast ExprType)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_expr_unary<'ast, V>(v: &mut V, node: &'ast crate::ExprUnary)
     where
    -    V: Visit<'ast> + ?Sized,
    -{
    -    for it in &node.attrs {
    -        v.visit_attribute(it);
    -    }
    -    v.visit_expr(&*node.expr);
    -    tokens_helper(v, &node.colon_token.spans);
    -    v.visit_type(&*node.ty);
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_expr_unary<'ast, V>(v: &mut V, node: &'ast ExprUnary)
    -where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
    @@ -5513,21 +5895,23 @@
         v.visit_un_op(&node.op);
         v.visit_expr(&*node.expr);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_expr_unsafe<'ast, V>(v: &mut V, node: &'ast ExprUnsafe)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_expr_unsafe<'ast, V>(v: &mut V, node: &'ast crate::ExprUnsafe)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    -    tokens_helper(v, &node.unsafe_token.span);
    +    skip!(node.unsafe_token);
         v.visit_block(&node.block);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_expr_while<'ast, V>(v: &mut V, node: &'ast ExprWhile)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_expr_while<'ast, V>(v: &mut V, node: &'ast crate::ExprWhile)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
    @@ -5535,115 +5919,122 @@
         if let Some(it) = &node.label {
             v.visit_label(it);
         }
    -    tokens_helper(v, &node.while_token.span);
    +    skip!(node.while_token);
         v.visit_expr(&*node.cond);
         v.visit_block(&node.body);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_expr_yield<'ast, V>(v: &mut V, node: &'ast ExprYield)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_expr_yield<'ast, V>(v: &mut V, node: &'ast crate::ExprYield)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    -    tokens_helper(v, &node.yield_token.span);
    +    skip!(node.yield_token);
         if let Some(it) = &node.expr {
             v.visit_expr(&**it);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_field<'ast, V>(v: &mut V, node: &'ast Field)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_field<'ast, V>(v: &mut V, node: &'ast crate::Field)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_visibility(&node.vis);
    +    v.visit_field_mutability(&node.mutability);
         if let Some(it) = &node.ident {
             v.visit_ident(it);
         }
    -    if let Some(it) = &node.colon_token {
    -        tokens_helper(v, &it.spans);
    -    }
    +    skip!(node.colon_token);
         v.visit_type(&node.ty);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_field_pat<'ast, V>(v: &mut V, node: &'ast FieldPat)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_field_mutability<'ast, V>(v: &mut V, node: &'ast crate::FieldMutability)
     where
    -    V: Visit<'ast> + ?Sized,
    -{
    -    for it in &node.attrs {
    -        v.visit_attribute(it);
    -    }
    -    v.visit_member(&node.member);
    -    if let Some(it) = &node.colon_token {
    -        tokens_helper(v, &it.spans);
    -    }
    -    v.visit_pat(&*node.pat);
    -}
    -#[cfg(feature = "full")]
    -pub fn visit_field_value<'ast, V>(v: &mut V, node: &'ast FieldValue)
    -where
    -    V: Visit<'ast> + ?Sized,
    -{
    -    for it in &node.attrs {
    -        v.visit_attribute(it);
    -    }
    -    v.visit_member(&node.member);
    -    if let Some(it) = &node.colon_token {
    -        tokens_helper(v, &it.spans);
    -    }
    -    v.visit_expr(&node.expr);
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_fields<'ast, V>(v: &mut V, node: &'ast Fields)
    -where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         match node {
    -        Fields::Named(_binding_0) => {
    +        crate::FieldMutability::None => {}
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_field_pat<'ast, V>(v: &mut V, node: &'ast crate::FieldPat)
    +where
    +    V: Visit<'ast> + ?Sized,
    +{
    +    for it in &node.attrs {
    +        v.visit_attribute(it);
    +    }
    +    v.visit_member(&node.member);
    +    skip!(node.colon_token);
    +    v.visit_pat(&*node.pat);
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_field_value<'ast, V>(v: &mut V, node: &'ast crate::FieldValue)
    +where
    +    V: Visit<'ast> + ?Sized,
    +{
    +    for it in &node.attrs {
    +        v.visit_attribute(it);
    +    }
    +    v.visit_member(&node.member);
    +    skip!(node.colon_token);
    +    v.visit_expr(&node.expr);
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_fields<'ast, V>(v: &mut V, node: &'ast crate::Fields)
    +where
    +    V: Visit<'ast> + ?Sized,
    +{
    +    match node {
    +        crate::Fields::Named(_binding_0) => {
                 v.visit_fields_named(_binding_0);
             }
    -        Fields::Unnamed(_binding_0) => {
    +        crate::Fields::Unnamed(_binding_0) => {
                 v.visit_fields_unnamed(_binding_0);
             }
    -        Fields::Unit => {}
    +        crate::Fields::Unit => {}
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_fields_named<'ast, V>(v: &mut V, node: &'ast FieldsNamed)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_fields_named<'ast, V>(v: &mut V, node: &'ast crate::FieldsNamed)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    tokens_helper(v, &node.brace_token.span);
    +    skip!(node.brace_token);
         for el in Punctuated::pairs(&node.named) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_field(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_fields_unnamed<'ast, V>(v: &mut V, node: &'ast FieldsUnnamed)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_fields_unnamed<'ast, V>(v: &mut V, node: &'ast crate::FieldsUnnamed)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    tokens_helper(v, &node.paren_token.span);
    +    skip!(node.paren_token);
         for el in Punctuated::pairs(&node.unnamed) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_field(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
         }
     }
    -#[cfg(feature = "full")]
    -pub fn visit_file<'ast, V>(v: &mut V, node: &'ast File)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_file<'ast, V>(v: &mut V, node: &'ast crate::File)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         skip!(node.shebang);
         for it in &node.attrs {
    @@ -5653,407 +6044,396 @@
             v.visit_item(it);
         }
     }
    -#[cfg(feature = "full")]
    -pub fn visit_fn_arg<'ast, V>(v: &mut V, node: &'ast FnArg)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_fn_arg<'ast, V>(v: &mut V, node: &'ast crate::FnArg)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         match node {
    -        FnArg::Receiver(_binding_0) => {
    +        crate::FnArg::Receiver(_binding_0) => {
                 v.visit_receiver(_binding_0);
             }
    -        FnArg::Typed(_binding_0) => {
    +        crate::FnArg::Typed(_binding_0) => {
                 v.visit_pat_type(_binding_0);
             }
         }
     }
    -#[cfg(feature = "full")]
    -pub fn visit_foreign_item<'ast, V>(v: &mut V, node: &'ast ForeignItem)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_foreign_item<'ast, V>(v: &mut V, node: &'ast crate::ForeignItem)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         match node {
    -        ForeignItem::Fn(_binding_0) => {
    +        crate::ForeignItem::Fn(_binding_0) => {
                 v.visit_foreign_item_fn(_binding_0);
             }
    -        ForeignItem::Static(_binding_0) => {
    +        crate::ForeignItem::Static(_binding_0) => {
                 v.visit_foreign_item_static(_binding_0);
             }
    -        ForeignItem::Type(_binding_0) => {
    +        crate::ForeignItem::Type(_binding_0) => {
                 v.visit_foreign_item_type(_binding_0);
             }
    -        ForeignItem::Macro(_binding_0) => {
    +        crate::ForeignItem::Macro(_binding_0) => {
                 v.visit_foreign_item_macro(_binding_0);
             }
    -        ForeignItem::Verbatim(_binding_0) => {
    +        crate::ForeignItem::Verbatim(_binding_0) => {
                 skip!(_binding_0);
             }
    -        #[cfg(syn_no_non_exhaustive)]
    -        _ => unreachable!(),
         }
     }
    -#[cfg(feature = "full")]
    -pub fn visit_foreign_item_fn<'ast, V>(v: &mut V, node: &'ast ForeignItemFn)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_foreign_item_fn<'ast, V>(v: &mut V, node: &'ast crate::ForeignItemFn)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_visibility(&node.vis);
         v.visit_signature(&node.sig);
    -    tokens_helper(v, &node.semi_token.spans);
    +    skip!(node.semi_token);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_foreign_item_macro<'ast, V>(v: &mut V, node: &'ast ForeignItemMacro)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_foreign_item_macro<'ast, V>(v: &mut V, node: &'ast crate::ForeignItemMacro)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_macro(&node.mac);
    -    if let Some(it) = &node.semi_token {
    -        tokens_helper(v, &it.spans);
    -    }
    +    skip!(node.semi_token);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_foreign_item_static<'ast, V>(v: &mut V, node: &'ast ForeignItemStatic)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_foreign_item_static<'ast, V>(
    +    v: &mut V,
    +    node: &'ast crate::ForeignItemStatic,
    +)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_visibility(&node.vis);
    -    tokens_helper(v, &node.static_token.span);
    -    if let Some(it) = &node.mutability {
    -        tokens_helper(v, &it.span);
    -    }
    +    skip!(node.static_token);
    +    v.visit_static_mutability(&node.mutability);
         v.visit_ident(&node.ident);
    -    tokens_helper(v, &node.colon_token.spans);
    +    skip!(node.colon_token);
         v.visit_type(&*node.ty);
    -    tokens_helper(v, &node.semi_token.spans);
    +    skip!(node.semi_token);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_foreign_item_type<'ast, V>(v: &mut V, node: &'ast ForeignItemType)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_foreign_item_type<'ast, V>(v: &mut V, node: &'ast crate::ForeignItemType)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_visibility(&node.vis);
    -    tokens_helper(v, &node.type_token.span);
    +    skip!(node.type_token);
         v.visit_ident(&node.ident);
    -    tokens_helper(v, &node.semi_token.spans);
    +    v.visit_generics(&node.generics);
    +    skip!(node.semi_token);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_generic_argument<'ast, V>(v: &mut V, node: &'ast GenericArgument)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_generic_argument<'ast, V>(v: &mut V, node: &'ast crate::GenericArgument)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         match node {
    -        GenericArgument::Lifetime(_binding_0) => {
    +        crate::GenericArgument::Lifetime(_binding_0) => {
                 v.visit_lifetime(_binding_0);
             }
    -        GenericArgument::Type(_binding_0) => {
    +        crate::GenericArgument::Type(_binding_0) => {
                 v.visit_type(_binding_0);
             }
    -        GenericArgument::Const(_binding_0) => {
    +        crate::GenericArgument::Const(_binding_0) => {
                 v.visit_expr(_binding_0);
             }
    -        GenericArgument::Binding(_binding_0) => {
    -            v.visit_binding(_binding_0);
    +        crate::GenericArgument::AssocType(_binding_0) => {
    +            v.visit_assoc_type(_binding_0);
             }
    -        GenericArgument::Constraint(_binding_0) => {
    +        crate::GenericArgument::AssocConst(_binding_0) => {
    +            v.visit_assoc_const(_binding_0);
    +        }
    +        crate::GenericArgument::Constraint(_binding_0) => {
                 v.visit_constraint(_binding_0);
             }
         }
     }
    -#[cfg(feature = "full")]
    -pub fn visit_generic_method_argument<'ast, V>(
    -    v: &mut V,
    -    node: &'ast GenericMethodArgument,
    -)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_generic_param<'ast, V>(v: &mut V, node: &'ast crate::GenericParam)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         match node {
    -        GenericMethodArgument::Type(_binding_0) => {
    -            v.visit_type(_binding_0);
    +        crate::GenericParam::Lifetime(_binding_0) => {
    +            v.visit_lifetime_param(_binding_0);
             }
    -        GenericMethodArgument::Const(_binding_0) => {
    -            v.visit_expr(_binding_0);
    -        }
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_generic_param<'ast, V>(v: &mut V, node: &'ast GenericParam)
    -where
    -    V: Visit<'ast> + ?Sized,
    -{
    -    match node {
    -        GenericParam::Type(_binding_0) => {
    +        crate::GenericParam::Type(_binding_0) => {
                 v.visit_type_param(_binding_0);
             }
    -        GenericParam::Lifetime(_binding_0) => {
    -            v.visit_lifetime_def(_binding_0);
    -        }
    -        GenericParam::Const(_binding_0) => {
    +        crate::GenericParam::Const(_binding_0) => {
                 v.visit_const_param(_binding_0);
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_generics<'ast, V>(v: &mut V, node: &'ast Generics)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_generics<'ast, V>(v: &mut V, node: &'ast crate::Generics)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    if let Some(it) = &node.lt_token {
    -        tokens_helper(v, &it.spans);
    -    }
    +    skip!(node.lt_token);
         for el in Punctuated::pairs(&node.params) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_generic_param(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
    -    }
    -    if let Some(it) = &node.gt_token {
    -        tokens_helper(v, &it.spans);
         }
    +    skip!(node.gt_token);
         if let Some(it) = &node.where_clause {
             v.visit_where_clause(it);
         }
     }
    -pub fn visit_ident<'ast, V>(v: &mut V, node: &'ast Ident)
    +pub fn visit_ident<'ast, V>(v: &mut V, node: &'ast proc_macro2::Ident)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         v.visit_span(&node.span());
     }
    -#[cfg(feature = "full")]
    -pub fn visit_impl_item<'ast, V>(v: &mut V, node: &'ast ImplItem)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_impl_item<'ast, V>(v: &mut V, node: &'ast crate::ImplItem)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         match node {
    -        ImplItem::Const(_binding_0) => {
    +        crate::ImplItem::Const(_binding_0) => {
                 v.visit_impl_item_const(_binding_0);
             }
    -        ImplItem::Method(_binding_0) => {
    -            v.visit_impl_item_method(_binding_0);
    +        crate::ImplItem::Fn(_binding_0) => {
    +            v.visit_impl_item_fn(_binding_0);
             }
    -        ImplItem::Type(_binding_0) => {
    +        crate::ImplItem::Type(_binding_0) => {
                 v.visit_impl_item_type(_binding_0);
             }
    -        ImplItem::Macro(_binding_0) => {
    +        crate::ImplItem::Macro(_binding_0) => {
                 v.visit_impl_item_macro(_binding_0);
             }
    -        ImplItem::Verbatim(_binding_0) => {
    +        crate::ImplItem::Verbatim(_binding_0) => {
                 skip!(_binding_0);
             }
    -        #[cfg(syn_no_non_exhaustive)]
    -        _ => unreachable!(),
         }
     }
    -#[cfg(feature = "full")]
    -pub fn visit_impl_item_const<'ast, V>(v: &mut V, node: &'ast ImplItemConst)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_impl_item_const<'ast, V>(v: &mut V, node: &'ast crate::ImplItemConst)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_visibility(&node.vis);
    -    if let Some(it) = &node.defaultness {
    -        tokens_helper(v, &it.span);
    -    }
    -    tokens_helper(v, &node.const_token.span);
    +    skip!(node.defaultness);
    +    skip!(node.const_token);
         v.visit_ident(&node.ident);
    -    tokens_helper(v, &node.colon_token.spans);
    +    v.visit_generics(&node.generics);
    +    skip!(node.colon_token);
         v.visit_type(&node.ty);
    -    tokens_helper(v, &node.eq_token.spans);
    +    skip!(node.eq_token);
         v.visit_expr(&node.expr);
    -    tokens_helper(v, &node.semi_token.spans);
    +    skip!(node.semi_token);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_impl_item_macro<'ast, V>(v: &mut V, node: &'ast ImplItemMacro)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_impl_item_fn<'ast, V>(v: &mut V, node: &'ast crate::ImplItemFn)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
    +{
    +    for it in &node.attrs {
    +        v.visit_attribute(it);
    +    }
    +    v.visit_visibility(&node.vis);
    +    skip!(node.defaultness);
    +    v.visit_signature(&node.sig);
    +    v.visit_block(&node.block);
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_impl_item_macro<'ast, V>(v: &mut V, node: &'ast crate::ImplItemMacro)
    +where
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_macro(&node.mac);
    -    if let Some(it) = &node.semi_token {
    -        tokens_helper(v, &it.spans);
    -    }
    +    skip!(node.semi_token);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_impl_item_method<'ast, V>(v: &mut V, node: &'ast ImplItemMethod)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_impl_item_type<'ast, V>(v: &mut V, node: &'ast crate::ImplItemType)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_visibility(&node.vis);
    -    if let Some(it) = &node.defaultness {
    -        tokens_helper(v, &it.span);
    -    }
    -    v.visit_signature(&node.sig);
    -    v.visit_block(&node.block);
    -}
    -#[cfg(feature = "full")]
    -pub fn visit_impl_item_type<'ast, V>(v: &mut V, node: &'ast ImplItemType)
    -where
    -    V: Visit<'ast> + ?Sized,
    -{
    -    for it in &node.attrs {
    -        v.visit_attribute(it);
    -    }
    -    v.visit_visibility(&node.vis);
    -    if let Some(it) = &node.defaultness {
    -        tokens_helper(v, &it.span);
    -    }
    -    tokens_helper(v, &node.type_token.span);
    +    skip!(node.defaultness);
    +    skip!(node.type_token);
         v.visit_ident(&node.ident);
         v.visit_generics(&node.generics);
    -    tokens_helper(v, &node.eq_token.spans);
    +    skip!(node.eq_token);
         v.visit_type(&node.ty);
    -    tokens_helper(v, &node.semi_token.spans);
    +    skip!(node.semi_token);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_index<'ast, V>(v: &mut V, node: &'ast Index)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_impl_restriction<'ast, V>(v: &mut V, node: &'ast crate::ImplRestriction)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
    +{
    +    match *node {}
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_index<'ast, V>(v: &mut V, node: &'ast crate::Index)
    +where
    +    V: Visit<'ast> + ?Sized,
     {
         skip!(node.index);
         v.visit_span(&node.span);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_item<'ast, V>(v: &mut V, node: &'ast Item)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_item<'ast, V>(v: &mut V, node: &'ast crate::Item)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         match node {
    -        Item::Const(_binding_0) => {
    +        crate::Item::Const(_binding_0) => {
                 v.visit_item_const(_binding_0);
             }
    -        Item::Enum(_binding_0) => {
    +        crate::Item::Enum(_binding_0) => {
                 v.visit_item_enum(_binding_0);
             }
    -        Item::ExternCrate(_binding_0) => {
    +        crate::Item::ExternCrate(_binding_0) => {
                 v.visit_item_extern_crate(_binding_0);
             }
    -        Item::Fn(_binding_0) => {
    +        crate::Item::Fn(_binding_0) => {
                 v.visit_item_fn(_binding_0);
             }
    -        Item::ForeignMod(_binding_0) => {
    +        crate::Item::ForeignMod(_binding_0) => {
                 v.visit_item_foreign_mod(_binding_0);
             }
    -        Item::Impl(_binding_0) => {
    +        crate::Item::Impl(_binding_0) => {
                 v.visit_item_impl(_binding_0);
             }
    -        Item::Macro(_binding_0) => {
    +        crate::Item::Macro(_binding_0) => {
                 v.visit_item_macro(_binding_0);
             }
    -        Item::Macro2(_binding_0) => {
    -            v.visit_item_macro2(_binding_0);
    -        }
    -        Item::Mod(_binding_0) => {
    +        crate::Item::Mod(_binding_0) => {
                 v.visit_item_mod(_binding_0);
             }
    -        Item::Static(_binding_0) => {
    +        crate::Item::Static(_binding_0) => {
                 v.visit_item_static(_binding_0);
             }
    -        Item::Struct(_binding_0) => {
    +        crate::Item::Struct(_binding_0) => {
                 v.visit_item_struct(_binding_0);
             }
    -        Item::Trait(_binding_0) => {
    +        crate::Item::Trait(_binding_0) => {
                 v.visit_item_trait(_binding_0);
             }
    -        Item::TraitAlias(_binding_0) => {
    +        crate::Item::TraitAlias(_binding_0) => {
                 v.visit_item_trait_alias(_binding_0);
             }
    -        Item::Type(_binding_0) => {
    +        crate::Item::Type(_binding_0) => {
                 v.visit_item_type(_binding_0);
             }
    -        Item::Union(_binding_0) => {
    +        crate::Item::Union(_binding_0) => {
                 v.visit_item_union(_binding_0);
             }
    -        Item::Use(_binding_0) => {
    +        crate::Item::Use(_binding_0) => {
                 v.visit_item_use(_binding_0);
             }
    -        Item::Verbatim(_binding_0) => {
    +        crate::Item::Verbatim(_binding_0) => {
                 skip!(_binding_0);
             }
    -        #[cfg(syn_no_non_exhaustive)]
    -        _ => unreachable!(),
         }
     }
    -#[cfg(feature = "full")]
    -pub fn visit_item_const<'ast, V>(v: &mut V, node: &'ast ItemConst)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_item_const<'ast, V>(v: &mut V, node: &'ast crate::ItemConst)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_visibility(&node.vis);
    -    tokens_helper(v, &node.const_token.span);
    -    v.visit_ident(&node.ident);
    -    tokens_helper(v, &node.colon_token.spans);
    -    v.visit_type(&*node.ty);
    -    tokens_helper(v, &node.eq_token.spans);
    -    v.visit_expr(&*node.expr);
    -    tokens_helper(v, &node.semi_token.spans);
    -}
    -#[cfg(feature = "full")]
    -pub fn visit_item_enum<'ast, V>(v: &mut V, node: &'ast ItemEnum)
    -where
    -    V: Visit<'ast> + ?Sized,
    -{
    -    for it in &node.attrs {
    -        v.visit_attribute(it);
    -    }
    -    v.visit_visibility(&node.vis);
    -    tokens_helper(v, &node.enum_token.span);
    +    skip!(node.const_token);
         v.visit_ident(&node.ident);
         v.visit_generics(&node.generics);
    -    tokens_helper(v, &node.brace_token.span);
    -    for el in Punctuated::pairs(&node.variants) {
    -        let (it, p) = el.into_tuple();
    -        v.visit_variant(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
    -    }
    +    skip!(node.colon_token);
    +    v.visit_type(&*node.ty);
    +    skip!(node.eq_token);
    +    v.visit_expr(&*node.expr);
    +    skip!(node.semi_token);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_item_extern_crate<'ast, V>(v: &mut V, node: &'ast ItemExternCrate)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_item_enum<'ast, V>(v: &mut V, node: &'ast crate::ItemEnum)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_visibility(&node.vis);
    -    tokens_helper(v, &node.extern_token.span);
    -    tokens_helper(v, &node.crate_token.span);
    +    skip!(node.enum_token);
    +    v.visit_ident(&node.ident);
    +    v.visit_generics(&node.generics);
    +    skip!(node.brace_token);
    +    for el in Punctuated::pairs(&node.variants) {
    +        let it = el.value();
    +        v.visit_variant(it);
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_item_extern_crate<'ast, V>(v: &mut V, node: &'ast crate::ItemExternCrate)
    +where
    +    V: Visit<'ast> + ?Sized,
    +{
    +    for it in &node.attrs {
    +        v.visit_attribute(it);
    +    }
    +    v.visit_visibility(&node.vis);
    +    skip!(node.extern_token);
    +    skip!(node.crate_token);
         v.visit_ident(&node.ident);
         if let Some(it) = &node.rename {
    -        tokens_helper(v, &(it).0.span);
    +        skip!((it).0);
             v.visit_ident(&(it).1);
         }
    -    tokens_helper(v, &node.semi_token.spans);
    +    skip!(node.semi_token);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_item_fn<'ast, V>(v: &mut V, node: &'ast ItemFn)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_item_fn<'ast, V>(v: &mut V, node: &'ast crate::ItemFn)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
    @@ -6062,53 +6442,51 @@
         v.visit_signature(&node.sig);
         v.visit_block(&*node.block);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_item_foreign_mod<'ast, V>(v: &mut V, node: &'ast ItemForeignMod)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_item_foreign_mod<'ast, V>(v: &mut V, node: &'ast crate::ItemForeignMod)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    +    skip!(node.unsafety);
         v.visit_abi(&node.abi);
    -    tokens_helper(v, &node.brace_token.span);
    +    skip!(node.brace_token);
         for it in &node.items {
             v.visit_foreign_item(it);
         }
     }
    -#[cfg(feature = "full")]
    -pub fn visit_item_impl<'ast, V>(v: &mut V, node: &'ast ItemImpl)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_item_impl<'ast, V>(v: &mut V, node: &'ast crate::ItemImpl)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    -    if let Some(it) = &node.defaultness {
    -        tokens_helper(v, &it.span);
    -    }
    -    if let Some(it) = &node.unsafety {
    -        tokens_helper(v, &it.span);
    -    }
    -    tokens_helper(v, &node.impl_token.span);
    +    skip!(node.defaultness);
    +    skip!(node.unsafety);
    +    skip!(node.impl_token);
         v.visit_generics(&node.generics);
         if let Some(it) = &node.trait_ {
    -        if let Some(it) = &(it).0 {
    -            tokens_helper(v, &it.spans);
    -        }
    +        skip!((it).0);
             v.visit_path(&(it).1);
    -        tokens_helper(v, &(it).2.span);
    +        skip!((it).2);
         }
         v.visit_type(&*node.self_ty);
    -    tokens_helper(v, &node.brace_token.span);
    +    skip!(node.brace_token);
         for it in &node.items {
             v.visit_impl_item(it);
         }
     }
    -#[cfg(feature = "full")]
    -pub fn visit_item_macro<'ast, V>(v: &mut V, node: &'ast ItemMacro)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_item_macro<'ast, V>(v: &mut V, node: &'ast crate::ItemMacro)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
    @@ -6117,557 +6495,535 @@
             v.visit_ident(it);
         }
         v.visit_macro(&node.mac);
    -    if let Some(it) = &node.semi_token {
    -        tokens_helper(v, &it.spans);
    -    }
    +    skip!(node.semi_token);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_item_macro2<'ast, V>(v: &mut V, node: &'ast ItemMacro2)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_item_mod<'ast, V>(v: &mut V, node: &'ast crate::ItemMod)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_visibility(&node.vis);
    -    tokens_helper(v, &node.macro_token.span);
    -    v.visit_ident(&node.ident);
    -    skip!(node.rules);
    -}
    -#[cfg(feature = "full")]
    -pub fn visit_item_mod<'ast, V>(v: &mut V, node: &'ast ItemMod)
    -where
    -    V: Visit<'ast> + ?Sized,
    -{
    -    for it in &node.attrs {
    -        v.visit_attribute(it);
    -    }
    -    v.visit_visibility(&node.vis);
    -    tokens_helper(v, &node.mod_token.span);
    +    skip!(node.unsafety);
    +    skip!(node.mod_token);
         v.visit_ident(&node.ident);
         if let Some(it) = &node.content {
    -        tokens_helper(v, &(it).0.span);
    +        skip!((it).0);
             for it in &(it).1 {
                 v.visit_item(it);
             }
         }
    -    if let Some(it) = &node.semi {
    -        tokens_helper(v, &it.spans);
    -    }
    +    skip!(node.semi);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_item_static<'ast, V>(v: &mut V, node: &'ast ItemStatic)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_item_static<'ast, V>(v: &mut V, node: &'ast crate::ItemStatic)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_visibility(&node.vis);
    -    tokens_helper(v, &node.static_token.span);
    -    if let Some(it) = &node.mutability {
    -        tokens_helper(v, &it.span);
    -    }
    +    skip!(node.static_token);
    +    v.visit_static_mutability(&node.mutability);
         v.visit_ident(&node.ident);
    -    tokens_helper(v, &node.colon_token.spans);
    +    skip!(node.colon_token);
         v.visit_type(&*node.ty);
    -    tokens_helper(v, &node.eq_token.spans);
    +    skip!(node.eq_token);
         v.visit_expr(&*node.expr);
    -    tokens_helper(v, &node.semi_token.spans);
    +    skip!(node.semi_token);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_item_struct<'ast, V>(v: &mut V, node: &'ast ItemStruct)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_item_struct<'ast, V>(v: &mut V, node: &'ast crate::ItemStruct)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_visibility(&node.vis);
    -    tokens_helper(v, &node.struct_token.span);
    +    skip!(node.struct_token);
         v.visit_ident(&node.ident);
         v.visit_generics(&node.generics);
         v.visit_fields(&node.fields);
    -    if let Some(it) = &node.semi_token {
    -        tokens_helper(v, &it.spans);
    -    }
    +    skip!(node.semi_token);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_item_trait<'ast, V>(v: &mut V, node: &'ast ItemTrait)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_item_trait<'ast, V>(v: &mut V, node: &'ast crate::ItemTrait)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_visibility(&node.vis);
    -    if let Some(it) = &node.unsafety {
    -        tokens_helper(v, &it.span);
    +    skip!(node.unsafety);
    +    skip!(node.auto_token);
    +    if let Some(it) = &node.restriction {
    +        v.visit_impl_restriction(it);
         }
    -    if let Some(it) = &node.auto_token {
    -        tokens_helper(v, &it.span);
    -    }
    -    tokens_helper(v, &node.trait_token.span);
    +    skip!(node.trait_token);
         v.visit_ident(&node.ident);
         v.visit_generics(&node.generics);
    -    if let Some(it) = &node.colon_token {
    -        tokens_helper(v, &it.spans);
    -    }
    +    skip!(node.colon_token);
         for el in Punctuated::pairs(&node.supertraits) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_type_param_bound(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
         }
    -    tokens_helper(v, &node.brace_token.span);
    +    skip!(node.brace_token);
         for it in &node.items {
             v.visit_trait_item(it);
         }
     }
    -#[cfg(feature = "full")]
    -pub fn visit_item_trait_alias<'ast, V>(v: &mut V, node: &'ast ItemTraitAlias)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_item_trait_alias<'ast, V>(v: &mut V, node: &'ast crate::ItemTraitAlias)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_visibility(&node.vis);
    -    tokens_helper(v, &node.trait_token.span);
    +    skip!(node.trait_token);
         v.visit_ident(&node.ident);
         v.visit_generics(&node.generics);
    -    tokens_helper(v, &node.eq_token.spans);
    +    skip!(node.eq_token);
         for el in Punctuated::pairs(&node.bounds) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_type_param_bound(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
         }
    -    tokens_helper(v, &node.semi_token.spans);
    +    skip!(node.semi_token);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_item_type<'ast, V>(v: &mut V, node: &'ast ItemType)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_item_type<'ast, V>(v: &mut V, node: &'ast crate::ItemType)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_visibility(&node.vis);
    -    tokens_helper(v, &node.type_token.span);
    +    skip!(node.type_token);
         v.visit_ident(&node.ident);
         v.visit_generics(&node.generics);
    -    tokens_helper(v, &node.eq_token.spans);
    +    skip!(node.eq_token);
         v.visit_type(&*node.ty);
    -    tokens_helper(v, &node.semi_token.spans);
    +    skip!(node.semi_token);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_item_union<'ast, V>(v: &mut V, node: &'ast ItemUnion)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_item_union<'ast, V>(v: &mut V, node: &'ast crate::ItemUnion)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_visibility(&node.vis);
    -    tokens_helper(v, &node.union_token.span);
    +    skip!(node.union_token);
         v.visit_ident(&node.ident);
         v.visit_generics(&node.generics);
         v.visit_fields_named(&node.fields);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_item_use<'ast, V>(v: &mut V, node: &'ast ItemUse)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_item_use<'ast, V>(v: &mut V, node: &'ast crate::ItemUse)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_visibility(&node.vis);
    -    tokens_helper(v, &node.use_token.span);
    -    if let Some(it) = &node.leading_colon {
    -        tokens_helper(v, &it.spans);
    -    }
    +    skip!(node.use_token);
    +    skip!(node.leading_colon);
         v.visit_use_tree(&node.tree);
    -    tokens_helper(v, &node.semi_token.spans);
    +    skip!(node.semi_token);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_label<'ast, V>(v: &mut V, node: &'ast Label)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_label<'ast, V>(v: &mut V, node: &'ast crate::Label)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         v.visit_lifetime(&node.name);
    -    tokens_helper(v, &node.colon_token.spans);
    +    skip!(node.colon_token);
     }
    -pub fn visit_lifetime<'ast, V>(v: &mut V, node: &'ast Lifetime)
    +pub fn visit_lifetime<'ast, V>(v: &mut V, node: &'ast crate::Lifetime)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         v.visit_span(&node.apostrophe);
         v.visit_ident(&node.ident);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_lifetime_def<'ast, V>(v: &mut V, node: &'ast LifetimeDef)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_lifetime_param<'ast, V>(v: &mut V, node: &'ast crate::LifetimeParam)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_lifetime(&node.lifetime);
    -    if let Some(it) = &node.colon_token {
    -        tokens_helper(v, &it.spans);
    -    }
    +    skip!(node.colon_token);
         for el in Punctuated::pairs(&node.bounds) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_lifetime(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
         }
     }
    -pub fn visit_lit<'ast, V>(v: &mut V, node: &'ast Lit)
    +pub fn visit_lit<'ast, V>(v: &mut V, node: &'ast crate::Lit)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         match node {
    -        Lit::Str(_binding_0) => {
    +        crate::Lit::Str(_binding_0) => {
                 v.visit_lit_str(_binding_0);
             }
    -        Lit::ByteStr(_binding_0) => {
    +        crate::Lit::ByteStr(_binding_0) => {
                 v.visit_lit_byte_str(_binding_0);
             }
    -        Lit::Byte(_binding_0) => {
    +        crate::Lit::CStr(_binding_0) => {
    +            v.visit_lit_cstr(_binding_0);
    +        }
    +        crate::Lit::Byte(_binding_0) => {
                 v.visit_lit_byte(_binding_0);
             }
    -        Lit::Char(_binding_0) => {
    +        crate::Lit::Char(_binding_0) => {
                 v.visit_lit_char(_binding_0);
             }
    -        Lit::Int(_binding_0) => {
    +        crate::Lit::Int(_binding_0) => {
                 v.visit_lit_int(_binding_0);
             }
    -        Lit::Float(_binding_0) => {
    +        crate::Lit::Float(_binding_0) => {
                 v.visit_lit_float(_binding_0);
             }
    -        Lit::Bool(_binding_0) => {
    +        crate::Lit::Bool(_binding_0) => {
                 v.visit_lit_bool(_binding_0);
             }
    -        Lit::Verbatim(_binding_0) => {
    +        crate::Lit::Verbatim(_binding_0) => {
                 skip!(_binding_0);
             }
         }
     }
    -pub fn visit_lit_bool<'ast, V>(v: &mut V, node: &'ast LitBool)
    +pub fn visit_lit_bool<'ast, V>(v: &mut V, node: &'ast crate::LitBool)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         skip!(node.value);
         v.visit_span(&node.span);
     }
    -pub fn visit_lit_byte<'ast, V>(v: &mut V, node: &'ast LitByte)
    +pub fn visit_lit_byte<'ast, V>(v: &mut V, node: &'ast crate::LitByte)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {}
    -pub fn visit_lit_byte_str<'ast, V>(v: &mut V, node: &'ast LitByteStr)
    +pub fn visit_lit_byte_str<'ast, V>(v: &mut V, node: &'ast crate::LitByteStr)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {}
    -pub fn visit_lit_char<'ast, V>(v: &mut V, node: &'ast LitChar)
    +pub fn visit_lit_cstr<'ast, V>(v: &mut V, node: &'ast crate::LitCStr)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {}
    -pub fn visit_lit_float<'ast, V>(v: &mut V, node: &'ast LitFloat)
    +pub fn visit_lit_char<'ast, V>(v: &mut V, node: &'ast crate::LitChar)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {}
    -pub fn visit_lit_int<'ast, V>(v: &mut V, node: &'ast LitInt)
    +pub fn visit_lit_float<'ast, V>(v: &mut V, node: &'ast crate::LitFloat)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {}
    -pub fn visit_lit_str<'ast, V>(v: &mut V, node: &'ast LitStr)
    +pub fn visit_lit_int<'ast, V>(v: &mut V, node: &'ast crate::LitInt)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {}
    -#[cfg(feature = "full")]
    -pub fn visit_local<'ast, V>(v: &mut V, node: &'ast Local)
    +pub fn visit_lit_str<'ast, V>(v: &mut V, node: &'ast crate::LitStr)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
    +{}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_local<'ast, V>(v: &mut V, node: &'ast crate::Local)
    +where
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    -    tokens_helper(v, &node.let_token.span);
    +    skip!(node.let_token);
         v.visit_pat(&node.pat);
         if let Some(it) = &node.init {
    -        tokens_helper(v, &(it).0.spans);
    +        v.visit_local_init(it);
    +    }
    +    skip!(node.semi_token);
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_local_init<'ast, V>(v: &mut V, node: &'ast crate::LocalInit)
    +where
    +    V: Visit<'ast> + ?Sized,
    +{
    +    skip!(node.eq_token);
    +    v.visit_expr(&*node.expr);
    +    if let Some(it) = &node.diverge {
    +        skip!((it).0);
             v.visit_expr(&*(it).1);
         }
    -    tokens_helper(v, &node.semi_token.spans);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_macro<'ast, V>(v: &mut V, node: &'ast Macro)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_macro<'ast, V>(v: &mut V, node: &'ast crate::Macro)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         v.visit_path(&node.path);
    -    tokens_helper(v, &node.bang_token.spans);
    +    skip!(node.bang_token);
         v.visit_macro_delimiter(&node.delimiter);
         skip!(node.tokens);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_macro_delimiter<'ast, V>(v: &mut V, node: &'ast MacroDelimiter)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_macro_delimiter<'ast, V>(v: &mut V, node: &'ast crate::MacroDelimiter)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         match node {
    -        MacroDelimiter::Paren(_binding_0) => {
    -            tokens_helper(v, &_binding_0.span);
    +        crate::MacroDelimiter::Paren(_binding_0) => {
    +            skip!(_binding_0);
             }
    -        MacroDelimiter::Brace(_binding_0) => {
    -            tokens_helper(v, &_binding_0.span);
    +        crate::MacroDelimiter::Brace(_binding_0) => {
    +            skip!(_binding_0);
             }
    -        MacroDelimiter::Bracket(_binding_0) => {
    -            tokens_helper(v, &_binding_0.span);
    +        crate::MacroDelimiter::Bracket(_binding_0) => {
    +            skip!(_binding_0);
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_member<'ast, V>(v: &mut V, node: &'ast Member)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_member<'ast, V>(v: &mut V, node: &'ast crate::Member)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         match node {
    -        Member::Named(_binding_0) => {
    +        crate::Member::Named(_binding_0) => {
                 v.visit_ident(_binding_0);
             }
    -        Member::Unnamed(_binding_0) => {
    +        crate::Member::Unnamed(_binding_0) => {
                 v.visit_index(_binding_0);
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_meta<'ast, V>(v: &mut V, node: &'ast Meta)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_meta<'ast, V>(v: &mut V, node: &'ast crate::Meta)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         match node {
    -        Meta::Path(_binding_0) => {
    +        crate::Meta::Path(_binding_0) => {
                 v.visit_path(_binding_0);
             }
    -        Meta::List(_binding_0) => {
    +        crate::Meta::List(_binding_0) => {
                 v.visit_meta_list(_binding_0);
             }
    -        Meta::NameValue(_binding_0) => {
    +        crate::Meta::NameValue(_binding_0) => {
                 v.visit_meta_name_value(_binding_0);
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_meta_list<'ast, V>(v: &mut V, node: &'ast MetaList)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_meta_list<'ast, V>(v: &mut V, node: &'ast crate::MetaList)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         v.visit_path(&node.path);
    -    tokens_helper(v, &node.paren_token.span);
    -    for el in Punctuated::pairs(&node.nested) {
    -        let (it, p) = el.into_tuple();
    -        v.visit_nested_meta(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
    -    }
    +    v.visit_macro_delimiter(&node.delimiter);
    +    skip!(node.tokens);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_meta_name_value<'ast, V>(v: &mut V, node: &'ast MetaNameValue)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_meta_name_value<'ast, V>(v: &mut V, node: &'ast crate::MetaNameValue)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         v.visit_path(&node.path);
    -    tokens_helper(v, &node.eq_token.spans);
    -    v.visit_lit(&node.lit);
    +    skip!(node.eq_token);
    +    v.visit_expr(&node.value);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_method_turbofish<'ast, V>(v: &mut V, node: &'ast MethodTurbofish)
    -where
    -    V: Visit<'ast> + ?Sized,
    -{
    -    tokens_helper(v, &node.colon2_token.spans);
    -    tokens_helper(v, &node.lt_token.spans);
    -    for el in Punctuated::pairs(&node.args) {
    -        let (it, p) = el.into_tuple();
    -        v.visit_generic_method_argument(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
    -    }
    -    tokens_helper(v, &node.gt_token.spans);
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_nested_meta<'ast, V>(v: &mut V, node: &'ast NestedMeta)
    -where
    -    V: Visit<'ast> + ?Sized,
    -{
    -    match node {
    -        NestedMeta::Meta(_binding_0) => {
    -            v.visit_meta(_binding_0);
    -        }
    -        NestedMeta::Lit(_binding_0) => {
    -            v.visit_lit(_binding_0);
    -        }
    -    }
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_parenthesized_generic_arguments<'ast, V>(
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_parenthesized_generic_arguments<'ast, V>(
         v: &mut V,
    -    node: &'ast ParenthesizedGenericArguments,
    +    node: &'ast crate::ParenthesizedGenericArguments,
     )
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    tokens_helper(v, &node.paren_token.span);
    +    skip!(node.paren_token);
         for el in Punctuated::pairs(&node.inputs) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_type(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
         }
         v.visit_return_type(&node.output);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_pat<'ast, V>(v: &mut V, node: &'ast Pat)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_pat<'ast, V>(v: &mut V, node: &'ast crate::Pat)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         match node {
    -        Pat::Box(_binding_0) => {
    -            v.visit_pat_box(_binding_0);
    +        crate::Pat::Const(_binding_0) => {
    +            v.visit_expr_const(_binding_0);
             }
    -        Pat::Ident(_binding_0) => {
    +        crate::Pat::Ident(_binding_0) => {
                 v.visit_pat_ident(_binding_0);
             }
    -        Pat::Lit(_binding_0) => {
    -            v.visit_pat_lit(_binding_0);
    +        crate::Pat::Lit(_binding_0) => {
    +            v.visit_expr_lit(_binding_0);
             }
    -        Pat::Macro(_binding_0) => {
    -            v.visit_pat_macro(_binding_0);
    +        crate::Pat::Macro(_binding_0) => {
    +            v.visit_expr_macro(_binding_0);
             }
    -        Pat::Or(_binding_0) => {
    +        crate::Pat::Or(_binding_0) => {
                 v.visit_pat_or(_binding_0);
             }
    -        Pat::Path(_binding_0) => {
    -            v.visit_pat_path(_binding_0);
    +        crate::Pat::Paren(_binding_0) => {
    +            v.visit_pat_paren(_binding_0);
             }
    -        Pat::Range(_binding_0) => {
    -            v.visit_pat_range(_binding_0);
    +        crate::Pat::Path(_binding_0) => {
    +            v.visit_expr_path(_binding_0);
             }
    -        Pat::Reference(_binding_0) => {
    +        crate::Pat::Range(_binding_0) => {
    +            v.visit_expr_range(_binding_0);
    +        }
    +        crate::Pat::Reference(_binding_0) => {
                 v.visit_pat_reference(_binding_0);
             }
    -        Pat::Rest(_binding_0) => {
    +        crate::Pat::Rest(_binding_0) => {
                 v.visit_pat_rest(_binding_0);
             }
    -        Pat::Slice(_binding_0) => {
    +        crate::Pat::Slice(_binding_0) => {
                 v.visit_pat_slice(_binding_0);
             }
    -        Pat::Struct(_binding_0) => {
    +        crate::Pat::Struct(_binding_0) => {
                 v.visit_pat_struct(_binding_0);
             }
    -        Pat::Tuple(_binding_0) => {
    +        crate::Pat::Tuple(_binding_0) => {
                 v.visit_pat_tuple(_binding_0);
             }
    -        Pat::TupleStruct(_binding_0) => {
    +        crate::Pat::TupleStruct(_binding_0) => {
                 v.visit_pat_tuple_struct(_binding_0);
             }
    -        Pat::Type(_binding_0) => {
    +        crate::Pat::Type(_binding_0) => {
                 v.visit_pat_type(_binding_0);
             }
    -        Pat::Verbatim(_binding_0) => {
    +        crate::Pat::Verbatim(_binding_0) => {
                 skip!(_binding_0);
             }
    -        Pat::Wild(_binding_0) => {
    +        crate::Pat::Wild(_binding_0) => {
                 v.visit_pat_wild(_binding_0);
             }
    -        #[cfg(syn_no_non_exhaustive)]
    -        _ => unreachable!(),
         }
     }
    -#[cfg(feature = "full")]
    -pub fn visit_pat_box<'ast, V>(v: &mut V, node: &'ast PatBox)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_pat_ident<'ast, V>(v: &mut V, node: &'ast crate::PatIdent)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    -    tokens_helper(v, &node.box_token.span);
    -    v.visit_pat(&*node.pat);
    -}
    -#[cfg(feature = "full")]
    -pub fn visit_pat_ident<'ast, V>(v: &mut V, node: &'ast PatIdent)
    -where
    -    V: Visit<'ast> + ?Sized,
    -{
    -    for it in &node.attrs {
    -        v.visit_attribute(it);
    -    }
    -    if let Some(it) = &node.by_ref {
    -        tokens_helper(v, &it.span);
    -    }
    -    if let Some(it) = &node.mutability {
    -        tokens_helper(v, &it.span);
    -    }
    +    skip!(node.by_ref);
    +    skip!(node.mutability);
         v.visit_ident(&node.ident);
         if let Some(it) = &node.subpat {
    -        tokens_helper(v, &(it).0.spans);
    +        skip!((it).0);
             v.visit_pat(&*(it).1);
         }
     }
    -#[cfg(feature = "full")]
    -pub fn visit_pat_lit<'ast, V>(v: &mut V, node: &'ast PatLit)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_pat_or<'ast, V>(v: &mut V, node: &'ast crate::PatOr)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    -    v.visit_expr(&*node.expr);
    -}
    -#[cfg(feature = "full")]
    -pub fn visit_pat_macro<'ast, V>(v: &mut V, node: &'ast PatMacro)
    -where
    -    V: Visit<'ast> + ?Sized,
    -{
    -    for it in &node.attrs {
    -        v.visit_attribute(it);
    -    }
    -    v.visit_macro(&node.mac);
    -}
    -#[cfg(feature = "full")]
    -pub fn visit_pat_or<'ast, V>(v: &mut V, node: &'ast PatOr)
    -where
    -    V: Visit<'ast> + ?Sized,
    -{
    -    for it in &node.attrs {
    -        v.visit_attribute(it);
    -    }
    -    if let Some(it) = &node.leading_vert {
    -        tokens_helper(v, &it.spans);
    -    }
    +    skip!(node.leading_vert);
         for el in Punctuated::pairs(&node.cases) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_pat(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
         }
     }
    -#[cfg(feature = "full")]
    -pub fn visit_pat_path<'ast, V>(v: &mut V, node: &'ast PatPath)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_pat_paren<'ast, V>(v: &mut V, node: &'ast crate::PatParen)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
    +{
    +    for it in &node.attrs {
    +        v.visit_attribute(it);
    +    }
    +    skip!(node.paren_token);
    +    v.visit_pat(&*node.pat);
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_pat_reference<'ast, V>(v: &mut V, node: &'ast crate::PatReference)
    +where
    +    V: Visit<'ast> + ?Sized,
    +{
    +    for it in &node.attrs {
    +        v.visit_attribute(it);
    +    }
    +    skip!(node.and_token);
    +    skip!(node.mutability);
    +    v.visit_pat(&*node.pat);
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_pat_rest<'ast, V>(v: &mut V, node: &'ast crate::PatRest)
    +where
    +    V: Visit<'ast> + ?Sized,
    +{
    +    for it in &node.attrs {
    +        v.visit_attribute(it);
    +    }
    +    skip!(node.dot2_token);
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_pat_slice<'ast, V>(v: &mut V, node: &'ast crate::PatSlice)
    +where
    +    V: Visit<'ast> + ?Sized,
    +{
    +    for it in &node.attrs {
    +        v.visit_attribute(it);
    +    }
    +    skip!(node.bracket_token);
    +    for el in Punctuated::pairs(&node.elems) {
    +        let it = el.value();
    +        v.visit_pat(it);
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_pat_struct<'ast, V>(v: &mut V, node: &'ast crate::PatStruct)
    +where
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
    @@ -6676,415 +7032,383 @@
             v.visit_qself(it);
         }
         v.visit_path(&node.path);
    -}
    -#[cfg(feature = "full")]
    -pub fn visit_pat_range<'ast, V>(v: &mut V, node: &'ast PatRange)
    -where
    -    V: Visit<'ast> + ?Sized,
    -{
    -    for it in &node.attrs {
    -        v.visit_attribute(it);
    -    }
    -    v.visit_expr(&*node.lo);
    -    v.visit_range_limits(&node.limits);
    -    v.visit_expr(&*node.hi);
    -}
    -#[cfg(feature = "full")]
    -pub fn visit_pat_reference<'ast, V>(v: &mut V, node: &'ast PatReference)
    -where
    -    V: Visit<'ast> + ?Sized,
    -{
    -    for it in &node.attrs {
    -        v.visit_attribute(it);
    -    }
    -    tokens_helper(v, &node.and_token.spans);
    -    if let Some(it) = &node.mutability {
    -        tokens_helper(v, &it.span);
    -    }
    -    v.visit_pat(&*node.pat);
    -}
    -#[cfg(feature = "full")]
    -pub fn visit_pat_rest<'ast, V>(v: &mut V, node: &'ast PatRest)
    -where
    -    V: Visit<'ast> + ?Sized,
    -{
    -    for it in &node.attrs {
    -        v.visit_attribute(it);
    -    }
    -    tokens_helper(v, &node.dot2_token.spans);
    -}
    -#[cfg(feature = "full")]
    -pub fn visit_pat_slice<'ast, V>(v: &mut V, node: &'ast PatSlice)
    -where
    -    V: Visit<'ast> + ?Sized,
    -{
    -    for it in &node.attrs {
    -        v.visit_attribute(it);
    -    }
    -    tokens_helper(v, &node.bracket_token.span);
    -    for el in Punctuated::pairs(&node.elems) {
    -        let (it, p) = el.into_tuple();
    -        v.visit_pat(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
    -    }
    -}
    -#[cfg(feature = "full")]
    -pub fn visit_pat_struct<'ast, V>(v: &mut V, node: &'ast PatStruct)
    -where
    -    V: Visit<'ast> + ?Sized,
    -{
    -    for it in &node.attrs {
    -        v.visit_attribute(it);
    -    }
    -    v.visit_path(&node.path);
    -    tokens_helper(v, &node.brace_token.span);
    +    skip!(node.brace_token);
         for el in Punctuated::pairs(&node.fields) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_field_pat(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
         }
    -    if let Some(it) = &node.dot2_token {
    -        tokens_helper(v, &it.spans);
    +    if let Some(it) = &node.rest {
    +        v.visit_pat_rest(it);
         }
     }
    -#[cfg(feature = "full")]
    -pub fn visit_pat_tuple<'ast, V>(v: &mut V, node: &'ast PatTuple)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_pat_tuple<'ast, V>(v: &mut V, node: &'ast crate::PatTuple)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    -    tokens_helper(v, &node.paren_token.span);
    +    skip!(node.paren_token);
         for el in Punctuated::pairs(&node.elems) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_pat(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
         }
     }
    -#[cfg(feature = "full")]
    -pub fn visit_pat_tuple_struct<'ast, V>(v: &mut V, node: &'ast PatTupleStruct)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_pat_tuple_struct<'ast, V>(v: &mut V, node: &'ast crate::PatTupleStruct)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    +    if let Some(it) = &node.qself {
    +        v.visit_qself(it);
    +    }
         v.visit_path(&node.path);
    -    v.visit_pat_tuple(&node.pat);
    +    skip!(node.paren_token);
    +    for el in Punctuated::pairs(&node.elems) {
    +        let it = el.value();
    +        v.visit_pat(it);
    +    }
     }
    -#[cfg(feature = "full")]
    -pub fn visit_pat_type<'ast, V>(v: &mut V, node: &'ast PatType)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_pat_type<'ast, V>(v: &mut V, node: &'ast crate::PatType)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_pat(&*node.pat);
    -    tokens_helper(v, &node.colon_token.spans);
    +    skip!(node.colon_token);
         v.visit_type(&*node.ty);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_pat_wild<'ast, V>(v: &mut V, node: &'ast PatWild)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_pat_wild<'ast, V>(v: &mut V, node: &'ast crate::PatWild)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    -    tokens_helper(v, &node.underscore_token.spans);
    +    skip!(node.underscore_token);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_path<'ast, V>(v: &mut V, node: &'ast Path)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_path<'ast, V>(v: &mut V, node: &'ast crate::Path)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    if let Some(it) = &node.leading_colon {
    -        tokens_helper(v, &it.spans);
    -    }
    +    skip!(node.leading_colon);
         for el in Punctuated::pairs(&node.segments) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_path_segment(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_path_arguments<'ast, V>(v: &mut V, node: &'ast PathArguments)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_path_arguments<'ast, V>(v: &mut V, node: &'ast crate::PathArguments)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         match node {
    -        PathArguments::None => {}
    -        PathArguments::AngleBracketed(_binding_0) => {
    +        crate::PathArguments::None => {}
    +        crate::PathArguments::AngleBracketed(_binding_0) => {
                 v.visit_angle_bracketed_generic_arguments(_binding_0);
             }
    -        PathArguments::Parenthesized(_binding_0) => {
    +        crate::PathArguments::Parenthesized(_binding_0) => {
                 v.visit_parenthesized_generic_arguments(_binding_0);
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_path_segment<'ast, V>(v: &mut V, node: &'ast PathSegment)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_path_segment<'ast, V>(v: &mut V, node: &'ast crate::PathSegment)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         v.visit_ident(&node.ident);
         v.visit_path_arguments(&node.arguments);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_predicate_eq<'ast, V>(v: &mut V, node: &'ast PredicateEq)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_pointer_mutability<'ast, V>(v: &mut V, node: &'ast crate::PointerMutability)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    v.visit_type(&node.lhs_ty);
    -    tokens_helper(v, &node.eq_token.spans);
    -    v.visit_type(&node.rhs_ty);
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_predicate_lifetime<'ast, V>(v: &mut V, node: &'ast PredicateLifetime)
    -where
    -    V: Visit<'ast> + ?Sized,
    -{
    -    v.visit_lifetime(&node.lifetime);
    -    tokens_helper(v, &node.colon_token.spans);
    -    for el in Punctuated::pairs(&node.bounds) {
    -        let (it, p) = el.into_tuple();
    -        v.visit_lifetime(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    +    match node {
    +        crate::PointerMutability::Const(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::PointerMutability::Mut(_binding_0) => {
    +            skip!(_binding_0);
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_predicate_type<'ast, V>(v: &mut V, node: &'ast PredicateType)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_precise_capture<'ast, V>(v: &mut V, node: &'ast crate::PreciseCapture)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
    +{
    +    skip!(node.use_token);
    +    skip!(node.lt_token);
    +    for el in Punctuated::pairs(&node.params) {
    +        let it = el.value();
    +        v.visit_captured_param(it);
    +    }
    +    skip!(node.gt_token);
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_predicate_lifetime<'ast, V>(v: &mut V, node: &'ast crate::PredicateLifetime)
    +where
    +    V: Visit<'ast> + ?Sized,
    +{
    +    v.visit_lifetime(&node.lifetime);
    +    skip!(node.colon_token);
    +    for el in Punctuated::pairs(&node.bounds) {
    +        let it = el.value();
    +        v.visit_lifetime(it);
    +    }
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_predicate_type<'ast, V>(v: &mut V, node: &'ast crate::PredicateType)
    +where
    +    V: Visit<'ast> + ?Sized,
     {
         if let Some(it) = &node.lifetimes {
             v.visit_bound_lifetimes(it);
         }
         v.visit_type(&node.bounded_ty);
    -    tokens_helper(v, &node.colon_token.spans);
    +    skip!(node.colon_token);
         for el in Punctuated::pairs(&node.bounds) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_type_param_bound(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_qself<'ast, V>(v: &mut V, node: &'ast QSelf)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_qself<'ast, V>(v: &mut V, node: &'ast crate::QSelf)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    tokens_helper(v, &node.lt_token.spans);
    +    skip!(node.lt_token);
         v.visit_type(&*node.ty);
         skip!(node.position);
    -    if let Some(it) = &node.as_token {
    -        tokens_helper(v, &it.span);
    -    }
    -    tokens_helper(v, &node.gt_token.spans);
    +    skip!(node.as_token);
    +    skip!(node.gt_token);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_range_limits<'ast, V>(v: &mut V, node: &'ast RangeLimits)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_range_limits<'ast, V>(v: &mut V, node: &'ast crate::RangeLimits)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         match node {
    -        RangeLimits::HalfOpen(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    +        crate::RangeLimits::HalfOpen(_binding_0) => {
    +            skip!(_binding_0);
             }
    -        RangeLimits::Closed(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    +        crate::RangeLimits::Closed(_binding_0) => {
    +            skip!(_binding_0);
             }
         }
     }
    -#[cfg(feature = "full")]
    -pub fn visit_receiver<'ast, V>(v: &mut V, node: &'ast Receiver)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_receiver<'ast, V>(v: &mut V, node: &'ast crate::Receiver)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         if let Some(it) = &node.reference {
    -        tokens_helper(v, &(it).0.spans);
    +        skip!((it).0);
             if let Some(it) = &(it).1 {
                 v.visit_lifetime(it);
             }
         }
    -    if let Some(it) = &node.mutability {
    -        tokens_helper(v, &it.span);
    -    }
    -    tokens_helper(v, &node.self_token.span);
    +    skip!(node.mutability);
    +    skip!(node.self_token);
    +    skip!(node.colon_token);
    +    v.visit_type(&*node.ty);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_return_type<'ast, V>(v: &mut V, node: &'ast ReturnType)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_return_type<'ast, V>(v: &mut V, node: &'ast crate::ReturnType)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         match node {
    -        ReturnType::Default => {}
    -        ReturnType::Type(_binding_0, _binding_1) => {
    -            tokens_helper(v, &_binding_0.spans);
    +        crate::ReturnType::Default => {}
    +        crate::ReturnType::Type(_binding_0, _binding_1) => {
    +            skip!(_binding_0);
                 v.visit_type(&**_binding_1);
             }
         }
     }
    -#[cfg(feature = "full")]
    -pub fn visit_signature<'ast, V>(v: &mut V, node: &'ast Signature)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_signature<'ast, V>(v: &mut V, node: &'ast crate::Signature)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    if let Some(it) = &node.constness {
    -        tokens_helper(v, &it.span);
    -    }
    -    if let Some(it) = &node.asyncness {
    -        tokens_helper(v, &it.span);
    -    }
    -    if let Some(it) = &node.unsafety {
    -        tokens_helper(v, &it.span);
    -    }
    +    skip!(node.constness);
    +    skip!(node.asyncness);
    +    skip!(node.unsafety);
         if let Some(it) = &node.abi {
             v.visit_abi(it);
         }
    -    tokens_helper(v, &node.fn_token.span);
    +    skip!(node.fn_token);
         v.visit_ident(&node.ident);
         v.visit_generics(&node.generics);
    -    tokens_helper(v, &node.paren_token.span);
    +    skip!(node.paren_token);
         for el in Punctuated::pairs(&node.inputs) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_fn_arg(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
         }
         if let Some(it) = &node.variadic {
             v.visit_variadic(it);
         }
         v.visit_return_type(&node.output);
     }
    -pub fn visit_span<'ast, V>(v: &mut V, node: &Span)
    +pub fn visit_span<'ast, V>(v: &mut V, node: &proc_macro2::Span)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {}
    -#[cfg(feature = "full")]
    -pub fn visit_stmt<'ast, V>(v: &mut V, node: &'ast Stmt)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_static_mutability<'ast, V>(v: &mut V, node: &'ast crate::StaticMutability)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         match node {
    -        Stmt::Local(_binding_0) => {
    +        crate::StaticMutability::Mut(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +        crate::StaticMutability::None => {}
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_stmt<'ast, V>(v: &mut V, node: &'ast crate::Stmt)
    +where
    +    V: Visit<'ast> + ?Sized,
    +{
    +    match node {
    +        crate::Stmt::Local(_binding_0) => {
                 v.visit_local(_binding_0);
             }
    -        Stmt::Item(_binding_0) => {
    +        crate::Stmt::Item(_binding_0) => {
                 v.visit_item(_binding_0);
             }
    -        Stmt::Expr(_binding_0) => {
    +        crate::Stmt::Expr(_binding_0, _binding_1) => {
                 v.visit_expr(_binding_0);
    +            skip!(_binding_1);
             }
    -        Stmt::Semi(_binding_0, _binding_1) => {
    -            v.visit_expr(_binding_0);
    -            tokens_helper(v, &_binding_1.spans);
    +        crate::Stmt::Macro(_binding_0) => {
    +            v.visit_stmt_macro(_binding_0);
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_trait_bound<'ast, V>(v: &mut V, node: &'ast TraitBound)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_stmt_macro<'ast, V>(v: &mut V, node: &'ast crate::StmtMacro)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    if let Some(it) = &node.paren_token {
    -        tokens_helper(v, &it.span);
    +    for it in &node.attrs {
    +        v.visit_attribute(it);
         }
    +    v.visit_macro(&node.mac);
    +    skip!(node.semi_token);
    +}
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_trait_bound<'ast, V>(v: &mut V, node: &'ast crate::TraitBound)
    +where
    +    V: Visit<'ast> + ?Sized,
    +{
    +    skip!(node.paren_token);
         v.visit_trait_bound_modifier(&node.modifier);
         if let Some(it) = &node.lifetimes {
             v.visit_bound_lifetimes(it);
         }
         v.visit_path(&node.path);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_trait_bound_modifier<'ast, V>(v: &mut V, node: &'ast TraitBoundModifier)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_trait_bound_modifier<'ast, V>(
    +    v: &mut V,
    +    node: &'ast crate::TraitBoundModifier,
    +)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         match node {
    -        TraitBoundModifier::None => {}
    -        TraitBoundModifier::Maybe(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    -        }
    -    }
    -}
    -#[cfg(feature = "full")]
    -pub fn visit_trait_item<'ast, V>(v: &mut V, node: &'ast TraitItem)
    -where
    -    V: Visit<'ast> + ?Sized,
    -{
    -    match node {
    -        TraitItem::Const(_binding_0) => {
    -            v.visit_trait_item_const(_binding_0);
    -        }
    -        TraitItem::Method(_binding_0) => {
    -            v.visit_trait_item_method(_binding_0);
    -        }
    -        TraitItem::Type(_binding_0) => {
    -            v.visit_trait_item_type(_binding_0);
    -        }
    -        TraitItem::Macro(_binding_0) => {
    -            v.visit_trait_item_macro(_binding_0);
    -        }
    -        TraitItem::Verbatim(_binding_0) => {
    +        crate::TraitBoundModifier::None => {}
    +        crate::TraitBoundModifier::Maybe(_binding_0) => {
                 skip!(_binding_0);
             }
    -        #[cfg(syn_no_non_exhaustive)]
    -        _ => unreachable!(),
         }
     }
    -#[cfg(feature = "full")]
    -pub fn visit_trait_item_const<'ast, V>(v: &mut V, node: &'ast TraitItemConst)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_trait_item<'ast, V>(v: &mut V, node: &'ast crate::TraitItem)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
    +{
    +    match node {
    +        crate::TraitItem::Const(_binding_0) => {
    +            v.visit_trait_item_const(_binding_0);
    +        }
    +        crate::TraitItem::Fn(_binding_0) => {
    +            v.visit_trait_item_fn(_binding_0);
    +        }
    +        crate::TraitItem::Type(_binding_0) => {
    +            v.visit_trait_item_type(_binding_0);
    +        }
    +        crate::TraitItem::Macro(_binding_0) => {
    +            v.visit_trait_item_macro(_binding_0);
    +        }
    +        crate::TraitItem::Verbatim(_binding_0) => {
    +            skip!(_binding_0);
    +        }
    +    }
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_trait_item_const<'ast, V>(v: &mut V, node: &'ast crate::TraitItemConst)
    +where
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    -    tokens_helper(v, &node.const_token.span);
    +    skip!(node.const_token);
         v.visit_ident(&node.ident);
    -    tokens_helper(v, &node.colon_token.spans);
    +    v.visit_generics(&node.generics);
    +    skip!(node.colon_token);
         v.visit_type(&node.ty);
         if let Some(it) = &node.default {
    -        tokens_helper(v, &(it).0.spans);
    +        skip!((it).0);
             v.visit_expr(&(it).1);
         }
    -    tokens_helper(v, &node.semi_token.spans);
    +    skip!(node.semi_token);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_trait_item_macro<'ast, V>(v: &mut V, node: &'ast TraitItemMacro)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_trait_item_fn<'ast, V>(v: &mut V, node: &'ast crate::TraitItemFn)
     where
    -    V: Visit<'ast> + ?Sized,
    -{
    -    for it in &node.attrs {
    -        v.visit_attribute(it);
    -    }
    -    v.visit_macro(&node.mac);
    -    if let Some(it) = &node.semi_token {
    -        tokens_helper(v, &it.spans);
    -    }
    -}
    -#[cfg(feature = "full")]
    -pub fn visit_trait_item_method<'ast, V>(v: &mut V, node: &'ast TraitItemMethod)
    -where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
    @@ -7093,397 +7417,406 @@
         if let Some(it) = &node.default {
             v.visit_block(it);
         }
    -    if let Some(it) = &node.semi_token {
    -        tokens_helper(v, &it.spans);
    -    }
    +    skip!(node.semi_token);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_trait_item_type<'ast, V>(v: &mut V, node: &'ast TraitItemType)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_trait_item_macro<'ast, V>(v: &mut V, node: &'ast crate::TraitItemMacro)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    -    tokens_helper(v, &node.type_token.span);
    +    v.visit_macro(&node.mac);
    +    skip!(node.semi_token);
    +}
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_trait_item_type<'ast, V>(v: &mut V, node: &'ast crate::TraitItemType)
    +where
    +    V: Visit<'ast> + ?Sized,
    +{
    +    for it in &node.attrs {
    +        v.visit_attribute(it);
    +    }
    +    skip!(node.type_token);
         v.visit_ident(&node.ident);
         v.visit_generics(&node.generics);
    -    if let Some(it) = &node.colon_token {
    -        tokens_helper(v, &it.spans);
    -    }
    +    skip!(node.colon_token);
         for el in Punctuated::pairs(&node.bounds) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_type_param_bound(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
         }
         if let Some(it) = &node.default {
    -        tokens_helper(v, &(it).0.spans);
    +        skip!((it).0);
             v.visit_type(&(it).1);
         }
    -    tokens_helper(v, &node.semi_token.spans);
    +    skip!(node.semi_token);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_type<'ast, V>(v: &mut V, node: &'ast Type)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_type<'ast, V>(v: &mut V, node: &'ast crate::Type)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         match node {
    -        Type::Array(_binding_0) => {
    +        crate::Type::Array(_binding_0) => {
                 v.visit_type_array(_binding_0);
             }
    -        Type::BareFn(_binding_0) => {
    +        crate::Type::BareFn(_binding_0) => {
                 v.visit_type_bare_fn(_binding_0);
             }
    -        Type::Group(_binding_0) => {
    +        crate::Type::Group(_binding_0) => {
                 v.visit_type_group(_binding_0);
             }
    -        Type::ImplTrait(_binding_0) => {
    +        crate::Type::ImplTrait(_binding_0) => {
                 v.visit_type_impl_trait(_binding_0);
             }
    -        Type::Infer(_binding_0) => {
    +        crate::Type::Infer(_binding_0) => {
                 v.visit_type_infer(_binding_0);
             }
    -        Type::Macro(_binding_0) => {
    +        crate::Type::Macro(_binding_0) => {
                 v.visit_type_macro(_binding_0);
             }
    -        Type::Never(_binding_0) => {
    +        crate::Type::Never(_binding_0) => {
                 v.visit_type_never(_binding_0);
             }
    -        Type::Paren(_binding_0) => {
    +        crate::Type::Paren(_binding_0) => {
                 v.visit_type_paren(_binding_0);
             }
    -        Type::Path(_binding_0) => {
    +        crate::Type::Path(_binding_0) => {
                 v.visit_type_path(_binding_0);
             }
    -        Type::Ptr(_binding_0) => {
    +        crate::Type::Ptr(_binding_0) => {
                 v.visit_type_ptr(_binding_0);
             }
    -        Type::Reference(_binding_0) => {
    +        crate::Type::Reference(_binding_0) => {
                 v.visit_type_reference(_binding_0);
             }
    -        Type::Slice(_binding_0) => {
    +        crate::Type::Slice(_binding_0) => {
                 v.visit_type_slice(_binding_0);
             }
    -        Type::TraitObject(_binding_0) => {
    +        crate::Type::TraitObject(_binding_0) => {
                 v.visit_type_trait_object(_binding_0);
             }
    -        Type::Tuple(_binding_0) => {
    +        crate::Type::Tuple(_binding_0) => {
                 v.visit_type_tuple(_binding_0);
             }
    -        Type::Verbatim(_binding_0) => {
    +        crate::Type::Verbatim(_binding_0) => {
                 skip!(_binding_0);
             }
    -        #[cfg(syn_no_non_exhaustive)]
    -        _ => unreachable!(),
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_type_array<'ast, V>(v: &mut V, node: &'ast TypeArray)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_type_array<'ast, V>(v: &mut V, node: &'ast crate::TypeArray)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    tokens_helper(v, &node.bracket_token.span);
    +    skip!(node.bracket_token);
         v.visit_type(&*node.elem);
    -    tokens_helper(v, &node.semi_token.spans);
    +    skip!(node.semi_token);
         v.visit_expr(&node.len);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_type_bare_fn<'ast, V>(v: &mut V, node: &'ast TypeBareFn)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_type_bare_fn<'ast, V>(v: &mut V, node: &'ast crate::TypeBareFn)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         if let Some(it) = &node.lifetimes {
             v.visit_bound_lifetimes(it);
         }
    -    if let Some(it) = &node.unsafety {
    -        tokens_helper(v, &it.span);
    -    }
    +    skip!(node.unsafety);
         if let Some(it) = &node.abi {
             v.visit_abi(it);
         }
    -    tokens_helper(v, &node.fn_token.span);
    -    tokens_helper(v, &node.paren_token.span);
    +    skip!(node.fn_token);
    +    skip!(node.paren_token);
         for el in Punctuated::pairs(&node.inputs) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_bare_fn_arg(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
         }
         if let Some(it) = &node.variadic {
    -        v.visit_variadic(it);
    +        v.visit_bare_variadic(it);
         }
         v.visit_return_type(&node.output);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_type_group<'ast, V>(v: &mut V, node: &'ast TypeGroup)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_type_group<'ast, V>(v: &mut V, node: &'ast crate::TypeGroup)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    tokens_helper(v, &node.group_token.span);
    +    skip!(node.group_token);
         v.visit_type(&*node.elem);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_type_impl_trait<'ast, V>(v: &mut V, node: &'ast TypeImplTrait)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_type_impl_trait<'ast, V>(v: &mut V, node: &'ast crate::TypeImplTrait)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    tokens_helper(v, &node.impl_token.span);
    +    skip!(node.impl_token);
         for el in Punctuated::pairs(&node.bounds) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_type_param_bound(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_type_infer<'ast, V>(v: &mut V, node: &'ast TypeInfer)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_type_infer<'ast, V>(v: &mut V, node: &'ast crate::TypeInfer)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    tokens_helper(v, &node.underscore_token.spans);
    +    skip!(node.underscore_token);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_type_macro<'ast, V>(v: &mut V, node: &'ast TypeMacro)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_type_macro<'ast, V>(v: &mut V, node: &'ast crate::TypeMacro)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         v.visit_macro(&node.mac);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_type_never<'ast, V>(v: &mut V, node: &'ast TypeNever)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_type_never<'ast, V>(v: &mut V, node: &'ast crate::TypeNever)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    tokens_helper(v, &node.bang_token.spans);
    +    skip!(node.bang_token);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_type_param<'ast, V>(v: &mut V, node: &'ast TypeParam)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_type_param<'ast, V>(v: &mut V, node: &'ast crate::TypeParam)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
         v.visit_ident(&node.ident);
    -    if let Some(it) = &node.colon_token {
    -        tokens_helper(v, &it.spans);
    -    }
    +    skip!(node.colon_token);
         for el in Punctuated::pairs(&node.bounds) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_type_param_bound(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
    -    }
    -    if let Some(it) = &node.eq_token {
    -        tokens_helper(v, &it.spans);
         }
    +    skip!(node.eq_token);
         if let Some(it) = &node.default {
             v.visit_type(it);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_type_param_bound<'ast, V>(v: &mut V, node: &'ast TypeParamBound)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_type_param_bound<'ast, V>(v: &mut V, node: &'ast crate::TypeParamBound)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         match node {
    -        TypeParamBound::Trait(_binding_0) => {
    +        crate::TypeParamBound::Trait(_binding_0) => {
                 v.visit_trait_bound(_binding_0);
             }
    -        TypeParamBound::Lifetime(_binding_0) => {
    +        crate::TypeParamBound::Lifetime(_binding_0) => {
                 v.visit_lifetime(_binding_0);
             }
    +        crate::TypeParamBound::PreciseCapture(_binding_0) => {
    +            full!(v.visit_precise_capture(_binding_0));
    +        }
    +        crate::TypeParamBound::Verbatim(_binding_0) => {
    +            skip!(_binding_0);
    +        }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_type_paren<'ast, V>(v: &mut V, node: &'ast TypeParen)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_type_paren<'ast, V>(v: &mut V, node: &'ast crate::TypeParen)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    tokens_helper(v, &node.paren_token.span);
    +    skip!(node.paren_token);
         v.visit_type(&*node.elem);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_type_path<'ast, V>(v: &mut V, node: &'ast TypePath)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_type_path<'ast, V>(v: &mut V, node: &'ast crate::TypePath)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         if let Some(it) = &node.qself {
             v.visit_qself(it);
         }
         v.visit_path(&node.path);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_type_ptr<'ast, V>(v: &mut V, node: &'ast TypePtr)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_type_ptr<'ast, V>(v: &mut V, node: &'ast crate::TypePtr)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    tokens_helper(v, &node.star_token.spans);
    -    if let Some(it) = &node.const_token {
    -        tokens_helper(v, &it.span);
    -    }
    -    if let Some(it) = &node.mutability {
    -        tokens_helper(v, &it.span);
    -    }
    +    skip!(node.star_token);
    +    skip!(node.const_token);
    +    skip!(node.mutability);
         v.visit_type(&*node.elem);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_type_reference<'ast, V>(v: &mut V, node: &'ast TypeReference)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_type_reference<'ast, V>(v: &mut V, node: &'ast crate::TypeReference)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    tokens_helper(v, &node.and_token.spans);
    +    skip!(node.and_token);
         if let Some(it) = &node.lifetime {
             v.visit_lifetime(it);
         }
    -    if let Some(it) = &node.mutability {
    -        tokens_helper(v, &it.span);
    -    }
    +    skip!(node.mutability);
         v.visit_type(&*node.elem);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_type_slice<'ast, V>(v: &mut V, node: &'ast TypeSlice)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_type_slice<'ast, V>(v: &mut V, node: &'ast crate::TypeSlice)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    tokens_helper(v, &node.bracket_token.span);
    +    skip!(node.bracket_token);
         v.visit_type(&*node.elem);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_type_trait_object<'ast, V>(v: &mut V, node: &'ast TypeTraitObject)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_type_trait_object<'ast, V>(v: &mut V, node: &'ast crate::TypeTraitObject)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    if let Some(it) = &node.dyn_token {
    -        tokens_helper(v, &it.span);
    -    }
    +    skip!(node.dyn_token);
         for el in Punctuated::pairs(&node.bounds) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_type_param_bound(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_type_tuple<'ast, V>(v: &mut V, node: &'ast TypeTuple)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_type_tuple<'ast, V>(v: &mut V, node: &'ast crate::TypeTuple)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    tokens_helper(v, &node.paren_token.span);
    +    skip!(node.paren_token);
         for el in Punctuated::pairs(&node.elems) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_type(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_un_op<'ast, V>(v: &mut V, node: &'ast UnOp)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_un_op<'ast, V>(v: &mut V, node: &'ast crate::UnOp)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         match node {
    -        UnOp::Deref(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    +        crate::UnOp::Deref(_binding_0) => {
    +            skip!(_binding_0);
             }
    -        UnOp::Not(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    +        crate::UnOp::Not(_binding_0) => {
    +            skip!(_binding_0);
             }
    -        UnOp::Neg(_binding_0) => {
    -            tokens_helper(v, &_binding_0.spans);
    +        crate::UnOp::Neg(_binding_0) => {
    +            skip!(_binding_0);
             }
         }
     }
    -#[cfg(feature = "full")]
    -pub fn visit_use_glob<'ast, V>(v: &mut V, node: &'ast UseGlob)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_use_glob<'ast, V>(v: &mut V, node: &'ast crate::UseGlob)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    tokens_helper(v, &node.star_token.spans);
    +    skip!(node.star_token);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_use_group<'ast, V>(v: &mut V, node: &'ast UseGroup)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_use_group<'ast, V>(v: &mut V, node: &'ast crate::UseGroup)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    tokens_helper(v, &node.brace_token.span);
    +    skip!(node.brace_token);
         for el in Punctuated::pairs(&node.items) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_use_tree(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
         }
     }
    -#[cfg(feature = "full")]
    -pub fn visit_use_name<'ast, V>(v: &mut V, node: &'ast UseName)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_use_name<'ast, V>(v: &mut V, node: &'ast crate::UseName)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         v.visit_ident(&node.ident);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_use_path<'ast, V>(v: &mut V, node: &'ast UsePath)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_use_path<'ast, V>(v: &mut V, node: &'ast crate::UsePath)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         v.visit_ident(&node.ident);
    -    tokens_helper(v, &node.colon2_token.spans);
    +    skip!(node.colon2_token);
         v.visit_use_tree(&*node.tree);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_use_rename<'ast, V>(v: &mut V, node: &'ast UseRename)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_use_rename<'ast, V>(v: &mut V, node: &'ast crate::UseRename)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         v.visit_ident(&node.ident);
    -    tokens_helper(v, &node.as_token.span);
    +    skip!(node.as_token);
         v.visit_ident(&node.rename);
     }
    -#[cfg(feature = "full")]
    -pub fn visit_use_tree<'ast, V>(v: &mut V, node: &'ast UseTree)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_use_tree<'ast, V>(v: &mut V, node: &'ast crate::UseTree)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         match node {
    -        UseTree::Path(_binding_0) => {
    +        crate::UseTree::Path(_binding_0) => {
                 v.visit_use_path(_binding_0);
             }
    -        UseTree::Name(_binding_0) => {
    +        crate::UseTree::Name(_binding_0) => {
                 v.visit_use_name(_binding_0);
             }
    -        UseTree::Rename(_binding_0) => {
    +        crate::UseTree::Rename(_binding_0) => {
                 v.visit_use_rename(_binding_0);
             }
    -        UseTree::Glob(_binding_0) => {
    +        crate::UseTree::Glob(_binding_0) => {
                 v.visit_use_glob(_binding_0);
             }
    -        UseTree::Group(_binding_0) => {
    +        crate::UseTree::Group(_binding_0) => {
                 v.visit_use_group(_binding_0);
             }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_variadic<'ast, V>(v: &mut V, node: &'ast Variadic)
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub fn visit_variadic<'ast, V>(v: &mut V, node: &'ast crate::Variadic)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
         }
    -    tokens_helper(v, &node.dots.spans);
    +    if let Some(it) = &node.pat {
    +        v.visit_pat(&*(it).0);
    +        skip!((it).1);
    +    }
    +    skip!(node.dots);
    +    skip!(node.comma);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_variant<'ast, V>(v: &mut V, node: &'ast Variant)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_variant<'ast, V>(v: &mut V, node: &'ast crate::Variant)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for it in &node.attrs {
             v.visit_attribute(it);
    @@ -7491,82 +7824,61 @@
         v.visit_ident(&node.ident);
         v.visit_fields(&node.fields);
         if let Some(it) = &node.discriminant {
    -        tokens_helper(v, &(it).0.spans);
    +        skip!((it).0);
             v.visit_expr(&(it).1);
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_vis_crate<'ast, V>(v: &mut V, node: &'ast VisCrate)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_vis_restricted<'ast, V>(v: &mut V, node: &'ast crate::VisRestricted)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    tokens_helper(v, &node.crate_token.span);
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_vis_public<'ast, V>(v: &mut V, node: &'ast VisPublic)
    -where
    -    V: Visit<'ast> + ?Sized,
    -{
    -    tokens_helper(v, &node.pub_token.span);
    -}
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_vis_restricted<'ast, V>(v: &mut V, node: &'ast VisRestricted)
    -where
    -    V: Visit<'ast> + ?Sized,
    -{
    -    tokens_helper(v, &node.pub_token.span);
    -    tokens_helper(v, &node.paren_token.span);
    -    if let Some(it) = &node.in_token {
    -        tokens_helper(v, &it.span);
    -    }
    +    skip!(node.pub_token);
    +    skip!(node.paren_token);
    +    skip!(node.in_token);
         v.visit_path(&*node.path);
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_visibility<'ast, V>(v: &mut V, node: &'ast Visibility)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_visibility<'ast, V>(v: &mut V, node: &'ast crate::Visibility)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         match node {
    -        Visibility::Public(_binding_0) => {
    -            v.visit_vis_public(_binding_0);
    +        crate::Visibility::Public(_binding_0) => {
    +            skip!(_binding_0);
             }
    -        Visibility::Crate(_binding_0) => {
    -            v.visit_vis_crate(_binding_0);
    -        }
    -        Visibility::Restricted(_binding_0) => {
    +        crate::Visibility::Restricted(_binding_0) => {
                 v.visit_vis_restricted(_binding_0);
             }
    -        Visibility::Inherited => {}
    +        crate::Visibility::Inherited => {}
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_where_clause<'ast, V>(v: &mut V, node: &'ast WhereClause)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_where_clause<'ast, V>(v: &mut V, node: &'ast crate::WhereClause)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
    -    tokens_helper(v, &node.where_token.span);
    +    skip!(node.where_token);
         for el in Punctuated::pairs(&node.predicates) {
    -        let (it, p) = el.into_tuple();
    +        let it = el.value();
             v.visit_where_predicate(it);
    -        if let Some(p) = p {
    -            tokens_helper(v, &p.spans);
    -        }
         }
     }
    -#[cfg(any(feature = "derive", feature = "full"))]
    -pub fn visit_where_predicate<'ast, V>(v: &mut V, node: &'ast WherePredicate)
    +#[cfg(any(feature = "derive", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
    +pub fn visit_where_predicate<'ast, V>(v: &mut V, node: &'ast crate::WherePredicate)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         match node {
    -        WherePredicate::Type(_binding_0) => {
    -            v.visit_predicate_type(_binding_0);
    -        }
    -        WherePredicate::Lifetime(_binding_0) => {
    +        crate::WherePredicate::Lifetime(_binding_0) => {
                 v.visit_predicate_lifetime(_binding_0);
             }
    -        WherePredicate::Eq(_binding_0) => {
    -            v.visit_predicate_eq(_binding_0);
    +        crate::WherePredicate::Type(_binding_0) => {
    +            v.visit_predicate_type(_binding_0);
             }
         }
     }
    diff --git a/src/syn/gen_helper.rs.html b/src/syn/gen_helper.rs.html
    deleted file mode 100644
    index a5c84ac..0000000
    --- a/src/syn/gen_helper.rs.html
    +++ /dev/null
    @@ -1,309 +0,0 @@
    -gen_helper.rs - source
    1
    -2
    -3
    -4
    -5
    -6
    -7
    -8
    -9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -31
    -32
    -33
    -34
    -35
    -36
    -37
    -38
    -39
    -40
    -41
    -42
    -43
    -44
    -45
    -46
    -47
    -48
    -49
    -50
    -51
    -52
    -53
    -54
    -55
    -56
    -57
    -58
    -59
    -60
    -61
    -62
    -63
    -64
    -65
    -66
    -67
    -68
    -69
    -70
    -71
    -72
    -73
    -74
    -75
    -76
    -77
    -78
    -79
    -80
    -81
    -82
    -83
    -84
    -85
    -86
    -87
    -88
    -89
    -90
    -91
    -92
    -93
    -94
    -95
    -96
    -97
    -98
    -99
    -100
    -101
    -102
    -103
    -104
    -105
    -106
    -107
    -108
    -109
    -110
    -111
    -112
    -113
    -114
    -115
    -116
    -117
    -118
    -119
    -120
    -121
    -122
    -123
    -124
    -125
    -126
    -127
    -128
    -129
    -130
    -131
    -132
    -133
    -134
    -135
    -136
    -137
    -138
    -139
    -140
    -141
    -142
    -143
    -144
    -145
    -146
    -147
    -148
    -149
    -150
    -151
    -152
    -153
    -154
    -
    #[cfg(feature = "fold")]
    -pub mod fold {
    -    use crate::fold::Fold;
    -    use crate::punctuated::{Pair, Punctuated};
    -    use proc_macro2::Span;
    -
    -    pub trait FoldHelper {
    -        type Item;
    -        fn lift<F>(self, f: F) -> Self
    -        where
    -            F: FnMut(Self::Item) -> Self::Item;
    -    }
    -
    -    impl<T> FoldHelper for Vec<T> {
    -        type Item = T;
    -        fn lift<F>(self, f: F) -> Self
    -        where
    -            F: FnMut(Self::Item) -> Self::Item,
    -        {
    -            self.into_iter().map(f).collect()
    -        }
    -    }
    -
    -    impl<T, U> FoldHelper for Punctuated<T, U> {
    -        type Item = T;
    -        fn lift<F>(self, mut f: F) -> Self
    -        where
    -            F: FnMut(Self::Item) -> Self::Item,
    -        {
    -            self.into_pairs()
    -                .map(Pair::into_tuple)
    -                .map(|(t, u)| Pair::new(f(t), u))
    -                .collect()
    -        }
    -    }
    -
    -    pub fn tokens_helper<F: Fold + ?Sized, S: Spans>(folder: &mut F, spans: &S) -> S {
    -        spans.fold(folder)
    -    }
    -
    -    pub trait Spans {
    -        fn fold<F: Fold + ?Sized>(&self, folder: &mut F) -> Self;
    -    }
    -
    -    impl Spans for Span {
    -        fn fold<F: Fold + ?Sized>(&self, folder: &mut F) -> Self {
    -            folder.fold_span(*self)
    -        }
    -    }
    -
    -    impl Spans for [Span; 1] {
    -        fn fold<F: Fold + ?Sized>(&self, folder: &mut F) -> Self {
    -            [folder.fold_span(self[0])]
    -        }
    -    }
    -
    -    impl Spans for [Span; 2] {
    -        fn fold<F: Fold + ?Sized>(&self, folder: &mut F) -> Self {
    -            [folder.fold_span(self[0]), folder.fold_span(self[1])]
    -        }
    -    }
    -
    -    impl Spans for [Span; 3] {
    -        fn fold<F: Fold + ?Sized>(&self, folder: &mut F) -> Self {
    -            [
    -                folder.fold_span(self[0]),
    -                folder.fold_span(self[1]),
    -                folder.fold_span(self[2]),
    -            ]
    -        }
    -    }
    -}
    -
    -#[cfg(feature = "visit")]
    -pub mod visit {
    -    use crate::visit::Visit;
    -    use proc_macro2::Span;
    -
    -    pub fn tokens_helper<'ast, V: Visit<'ast> + ?Sized, S: Spans>(visitor: &mut V, spans: &S) {
    -        spans.visit(visitor);
    -    }
    -
    -    pub trait Spans {
    -        fn visit<'ast, V: Visit<'ast> + ?Sized>(&self, visitor: &mut V);
    -    }
    -
    -    impl Spans for Span {
    -        fn visit<'ast, V: Visit<'ast> + ?Sized>(&self, visitor: &mut V) {
    -            visitor.visit_span(self);
    -        }
    -    }
    -
    -    impl Spans for [Span; 1] {
    -        fn visit<'ast, V: Visit<'ast> + ?Sized>(&self, visitor: &mut V) {
    -            visitor.visit_span(&self[0]);
    -        }
    -    }
    -
    -    impl Spans for [Span; 2] {
    -        fn visit<'ast, V: Visit<'ast> + ?Sized>(&self, visitor: &mut V) {
    -            visitor.visit_span(&self[0]);
    -            visitor.visit_span(&self[1]);
    -        }
    -    }
    -
    -    impl Spans for [Span; 3] {
    -        fn visit<'ast, V: Visit<'ast> + ?Sized>(&self, visitor: &mut V) {
    -            visitor.visit_span(&self[0]);
    -            visitor.visit_span(&self[1]);
    -            visitor.visit_span(&self[2]);
    -        }
    -    }
    -}
    -
    -#[cfg(feature = "visit-mut")]
    -pub mod visit_mut {
    -    use crate::visit_mut::VisitMut;
    -    use proc_macro2::Span;
    -
    -    pub fn tokens_helper<V: VisitMut + ?Sized, S: Spans>(visitor: &mut V, spans: &mut S) {
    -        spans.visit_mut(visitor);
    -    }
    -
    -    pub trait Spans {
    -        fn visit_mut<V: VisitMut + ?Sized>(&mut self, visitor: &mut V);
    -    }
    -
    -    impl Spans for Span {
    -        fn visit_mut<V: VisitMut + ?Sized>(&mut self, visitor: &mut V) {
    -            visitor.visit_span_mut(self);
    -        }
    -    }
    -
    -    impl Spans for [Span; 1] {
    -        fn visit_mut<V: VisitMut + ?Sized>(&mut self, visitor: &mut V) {
    -            visitor.visit_span_mut(&mut self[0]);
    -        }
    -    }
    -
    -    impl Spans for [Span; 2] {
    -        fn visit_mut<V: VisitMut + ?Sized>(&mut self, visitor: &mut V) {
    -            visitor.visit_span_mut(&mut self[0]);
    -            visitor.visit_span_mut(&mut self[1]);
    -        }
    -    }
    -
    -    impl Spans for [Span; 3] {
    -        fn visit_mut<V: VisitMut + ?Sized>(&mut self, visitor: &mut V) {
    -            visitor.visit_span_mut(&mut self[0]);
    -            visitor.visit_span_mut(&mut self[1]);
    -            visitor.visit_span_mut(&mut self[2]);
    -        }
    -    }
    -}
    -
    \ No newline at end of file diff --git a/src/syn/generics.rs.html b/src/syn/generics.rs.html index 0ea2feb..bf42230 100644 --- a/src/syn/generics.rs.html +++ b/src/syn/generics.rs.html @@ -1,4 +1,5 @@ -generics.rs - source
    1
    +generics.rs - source

    syn/
    generics.rs

    +1
     2
     3
     4
    @@ -1360,20 +1361,76 @@
     1360
     1361
     1362
    -
    use super::*;
    +1363
    +1364
    +1365
    +1366
    +1367
    +1368
    +1369
    +1370
    +1371
    +1372
    +1373
    +1374
    +1375
    +1376
    +1377
    +1378
    +1379
    +1380
    +1381
    +1382
    +1383
    +1384
    +1385
    +1386
    +1387
    +1388
    +1389
    +1390
    +1391
    +1392
    +1393
    +1394
    +1395
    +1396
    +1397
    +1398
    +1399
    +1400
    +1401
    +1402
    +1403
    +1404
    +1405
    +1406
    +1407
    +1408
    use crate::attr::Attribute;
    +use crate::expr::Expr;
    +use crate::ident::Ident;
    +use crate::lifetime::Lifetime;
    +use crate::path::Path;
     use crate::punctuated::{Iter, IterMut, Punctuated};
    -#[cfg(all(feature = "printing", feature = "extra-traits"))]
    +use crate::token;
    +use crate::ty::Type;
    +use proc_macro2::TokenStream;
    +#[cfg(all(feature = "printing", feature = "extra-traits"))]
     use std::fmt::{self, Debug};
    -#[cfg(all(feature = "printing", feature = "extra-traits"))]
    +#[cfg(all(feature = "printing", feature = "extra-traits"))]
     use std::hash::{Hash, Hasher};
     
    -ast_struct! {
    +ast_struct! {
         /// Lifetimes and type parameters attached to a declaration of a function,
         /// enum, trait, etc.
         ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    /// This struct represents two distinct optional syntactic elements,
    +    /// [generic parameters] and [where clause]. In some locations of the
    +    /// grammar, there may be other tokens in between these two things.
    +    ///
    +    /// [generic parameters]: https://doc.rust-lang.org/stable/reference/items/generics.html#generic-parameters
    +    /// [where clause]: https://doc.rust-lang.org/stable/reference/items/generics.html#where-clauses
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct Generics {
             pub lt_token: Option<Token![<]>,
             pub params: Punctuated<GenericParam, Token![,]>,
    @@ -1382,37 +1439,42 @@
         }
     }
     
    -ast_enum_of_structs! {
    +ast_enum_of_structs! {
         /// A generic type parameter, lifetime, or const generic: `T: Into<String>`,
    -    /// `'a: 'b`, `const LEN: usize`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    +    /// `'a: 'b`, `const LEN: usize`.
         ///
         /// # Syntax tree enum
         ///
         /// This type is a [syntax tree enum].
         ///
    -    /// [syntax tree enum]: Expr#syntax-tree-enums
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    /// [syntax tree enum]: crate::expr::Expr#syntax-tree-enums
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub enum GenericParam {
    +        /// A lifetime parameter: `'a: 'b + 'c + 'd`.
    +        Lifetime(LifetimeParam),
    +
             /// A generic type parameter: `T: Into<String>`.
             Type(TypeParam),
     
    -        /// A lifetime definition: `'a: 'b + 'c + 'd`.
    -        Lifetime(LifetimeDef),
    -
             /// A const generic parameter: `const LENGTH: usize`.
             Const(ConstParam),
         }
     }
     
    -ast_struct! {
    +ast_struct! {
    +    /// A lifetime definition: `'a: 'b + 'c + 'd`.
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    pub struct LifetimeParam {
    +        pub attrs: Vec<Attribute>,
    +        pub lifetime: Lifetime,
    +        pub colon_token: Option<Token![:]>,
    +        pub bounds: Punctuated<Lifetime, Token![+]>,
    +    }
    +}
    +
    +ast_struct! {
         /// A generic type parameter: `T: Into<String>`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct TypeParam {
             pub attrs: Vec<Attribute>,
             pub ident: Ident,
    @@ -1423,26 +1485,9 @@
         }
     }
     
    -ast_struct! {
    -    /// A lifetime definition: `'a: 'b + 'c + 'd`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    -    pub struct LifetimeDef {
    -        pub attrs: Vec<Attribute>,
    -        pub lifetime: Lifetime,
    -        pub colon_token: Option<Token![:]>,
    -        pub bounds: Punctuated<Lifetime, Token![+]>,
    -    }
    -}
    -
    -ast_struct! {
    +ast_struct! {
         /// A const generic parameter: `const LENGTH: usize`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct ConstParam {
             pub attrs: Vec<Attribute>,
             pub const_token: Token![const],
    @@ -1466,70 +1511,46 @@
     }
     
     impl Generics {
    -    /// Returns an
    -    /// <code
    -    ///   style="padding-right:0;">Iterator&lt;Item = &amp;</code><a
    -    ///   href="struct.TypeParam.html"><code
    -    ///   style="padding-left:0;padding-right:0;">TypeParam</code></a><code
    -    ///   style="padding-left:0;">&gt;</code>
    -    /// over the type parameters in `self.params`.
    -    pub fn type_params(&self) -> TypeParams {
    -        TypeParams(self.params.iter())
    +    return_impl_trait! {
    +        /// Iterator over the lifetime parameters in `self.params`.
    +        pub fn lifetimes(&self) -> impl Iterator<Item = &LifetimeParam> [Lifetimes] {
    +            Lifetimes(self.params.iter())
    +        }
         }
     
    -    /// Returns an
    -    /// <code
    -    ///   style="padding-right:0;">Iterator&lt;Item = &amp;mut </code><a
    -    ///   href="struct.TypeParam.html"><code
    -    ///   style="padding-left:0;padding-right:0;">TypeParam</code></a><code
    -    ///   style="padding-left:0;">&gt;</code>
    -    /// over the type parameters in `self.params`.
    -    pub fn type_params_mut(&mut self) -> TypeParamsMut {
    -        TypeParamsMut(self.params.iter_mut())
    +    return_impl_trait! {
    +        /// Iterator over the lifetime parameters in `self.params`.
    +        pub fn lifetimes_mut(&mut self) -> impl Iterator<Item = &mut LifetimeParam> [LifetimesMut] {
    +            LifetimesMut(self.params.iter_mut())
    +        }
         }
     
    -    /// Returns an
    -    /// <code
    -    ///   style="padding-right:0;">Iterator&lt;Item = &amp;</code><a
    -    ///   href="struct.LifetimeDef.html"><code
    -    ///   style="padding-left:0;padding-right:0;">LifetimeDef</code></a><code
    -    ///   style="padding-left:0;">&gt;</code>
    -    /// over the lifetime parameters in `self.params`.
    -    pub fn lifetimes(&self) -> Lifetimes {
    -        Lifetimes(self.params.iter())
    +    return_impl_trait! {
    +        /// Iterator over the type parameters in `self.params`.
    +        pub fn type_params(&self) -> impl Iterator<Item = &TypeParam> [TypeParams] {
    +            TypeParams(self.params.iter())
    +        }
         }
     
    -    /// Returns an
    -    /// <code
    -    ///   style="padding-right:0;">Iterator&lt;Item = &amp;mut </code><a
    -    ///   href="struct.LifetimeDef.html"><code
    -    ///   style="padding-left:0;padding-right:0;">LifetimeDef</code></a><code
    -    ///   style="padding-left:0;">&gt;</code>
    -    /// over the lifetime parameters in `self.params`.
    -    pub fn lifetimes_mut(&mut self) -> LifetimesMut {
    -        LifetimesMut(self.params.iter_mut())
    +    return_impl_trait! {
    +        /// Iterator over the type parameters in `self.params`.
    +        pub fn type_params_mut(&mut self) -> impl Iterator<Item = &mut TypeParam> [TypeParamsMut] {
    +            TypeParamsMut(self.params.iter_mut())
    +        }
         }
     
    -    /// Returns an
    -    /// <code
    -    ///   style="padding-right:0;">Iterator&lt;Item = &amp;</code><a
    -    ///   href="struct.ConstParam.html"><code
    -    ///   style="padding-left:0;padding-right:0;">ConstParam</code></a><code
    -    ///   style="padding-left:0;">&gt;</code>
    -    /// over the constant parameters in `self.params`.
    -    pub fn const_params(&self) -> ConstParams {
    -        ConstParams(self.params.iter())
    +    return_impl_trait! {
    +        /// Iterator over the constant parameters in `self.params`.
    +        pub fn const_params(&self) -> impl Iterator<Item = &ConstParam> [ConstParams] {
    +            ConstParams(self.params.iter())
    +        }
         }
     
    -    /// Returns an
    -    /// <code
    -    ///   style="padding-right:0;">Iterator&lt;Item = &amp;mut </code><a
    -    ///   href="struct.ConstParam.html"><code
    -    ///   style="padding-left:0;padding-right:0;">ConstParam</code></a><code
    -    ///   style="padding-left:0;">&gt;</code>
    -    /// over the constant parameters in `self.params`.
    -    pub fn const_params_mut(&mut self) -> ConstParamsMut {
    -        ConstParamsMut(self.params.iter_mut())
    +    return_impl_trait! {
    +        /// Iterator over the constant parameters in `self.params`.
    +        pub fn const_params_mut(&mut self) -> impl Iterator<Item = &mut ConstParam> [ConstParamsMut] {
    +            ConstParamsMut(self.params.iter_mut())
    +        }
         }
     
         /// Initializes an empty `where`-clause if there is not one present already.
    @@ -1539,152 +1560,8 @@
                 predicates: Punctuated::new(),
             })
         }
    -}
     
    -pub struct TypeParams<'a>(Iter<'a, GenericParam>);
    -
    -impl<'a> Iterator for TypeParams<'a> {
    -    type Item = &'a TypeParam;
    -
    -    fn next(&mut self) -> Option<Self::Item> {
    -        let next = match self.0.next() {
    -            Some(item) => item,
    -            None => return None,
    -        };
    -        if let GenericParam::Type(type_param) = next {
    -            Some(type_param)
    -        } else {
    -            self.next()
    -        }
    -    }
    -}
    -
    -pub struct TypeParamsMut<'a>(IterMut<'a, GenericParam>);
    -
    -impl<'a> Iterator for TypeParamsMut<'a> {
    -    type Item = &'a mut TypeParam;
    -
    -    fn next(&mut self) -> Option<Self::Item> {
    -        let next = match self.0.next() {
    -            Some(item) => item,
    -            None => return None,
    -        };
    -        if let GenericParam::Type(type_param) = next {
    -            Some(type_param)
    -        } else {
    -            self.next()
    -        }
    -    }
    -}
    -
    -pub struct Lifetimes<'a>(Iter<'a, GenericParam>);
    -
    -impl<'a> Iterator for Lifetimes<'a> {
    -    type Item = &'a LifetimeDef;
    -
    -    fn next(&mut self) -> Option<Self::Item> {
    -        let next = match self.0.next() {
    -            Some(item) => item,
    -            None => return None,
    -        };
    -        if let GenericParam::Lifetime(lifetime) = next {
    -            Some(lifetime)
    -        } else {
    -            self.next()
    -        }
    -    }
    -}
    -
    -pub struct LifetimesMut<'a>(IterMut<'a, GenericParam>);
    -
    -impl<'a> Iterator for LifetimesMut<'a> {
    -    type Item = &'a mut LifetimeDef;
    -
    -    fn next(&mut self) -> Option<Self::Item> {
    -        let next = match self.0.next() {
    -            Some(item) => item,
    -            None => return None,
    -        };
    -        if let GenericParam::Lifetime(lifetime) = next {
    -            Some(lifetime)
    -        } else {
    -            self.next()
    -        }
    -    }
    -}
    -
    -pub struct ConstParams<'a>(Iter<'a, GenericParam>);
    -
    -impl<'a> Iterator for ConstParams<'a> {
    -    type Item = &'a ConstParam;
    -
    -    fn next(&mut self) -> Option<Self::Item> {
    -        let next = match self.0.next() {
    -            Some(item) => item,
    -            None => return None,
    -        };
    -        if let GenericParam::Const(const_param) = next {
    -            Some(const_param)
    -        } else {
    -            self.next()
    -        }
    -    }
    -}
    -
    -pub struct ConstParamsMut<'a>(IterMut<'a, GenericParam>);
    -
    -impl<'a> Iterator for ConstParamsMut<'a> {
    -    type Item = &'a mut ConstParam;
    -
    -    fn next(&mut self) -> Option<Self::Item> {
    -        let next = match self.0.next() {
    -            Some(item) => item,
    -            None => return None,
    -        };
    -        if let GenericParam::Const(const_param) = next {
    -            Some(const_param)
    -        } else {
    -            self.next()
    -        }
    -    }
    -}
    -
    -/// Returned by `Generics::split_for_impl`.
    -///
    -/// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -/// feature and the `"printing"` feature.*
    -#[cfg(feature = "printing")]
    -#[cfg_attr(
    -    doc_cfg,
    -    doc(cfg(all(any(feature = "full", feature = "derive"), feature = "printing")))
    -)]
    -pub struct ImplGenerics<'a>(&'a Generics);
    -
    -/// Returned by `Generics::split_for_impl`.
    -///
    -/// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -/// feature and the `"printing"` feature.*
    -#[cfg(feature = "printing")]
    -#[cfg_attr(
    -    doc_cfg,
    -    doc(cfg(all(any(feature = "full", feature = "derive"), feature = "printing")))
    -)]
    -pub struct TypeGenerics<'a>(&'a Generics);
    -
    -/// Returned by `TypeGenerics::as_turbofish`.
    -///
    -/// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -/// feature and the `"printing"` feature.*
    -#[cfg(feature = "printing")]
    -#[cfg_attr(
    -    doc_cfg,
    -    doc(cfg(all(any(feature = "full", feature = "derive"), feature = "printing")))
    -)]
    -pub struct Turbofish<'a>(&'a Generics);
    -
    -#[cfg(feature = "printing")]
    -impl Generics {
    -    /// Split a type's generics into the pieces required for impl'ing a trait
    +    /// Split a type's generics into the pieces required for impl'ing a trait
         /// for that type.
         ///
         /// ```
    @@ -1692,7 +1569,7 @@
         /// # use quote::quote;
         /// #
         /// # let generics: syn::Generics = Default::default();
    -    /// # let name = Ident::new("MyType", Span::call_site());
    +    /// # let name = Ident::new("MyType", Span::call_site());
         /// #
         /// let (impl_generics, ty_generics, where_clause) = generics.split_for_impl();
         /// quote! {
    @@ -1702,13 +1579,8 @@
         /// }
         /// # ;
         /// ```
    -    ///
    -    /// *This method is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature and the `"printing"` feature.*
    -    #[cfg_attr(
    -        doc_cfg,
    -        doc(cfg(all(any(feature = "full", feature = "derive"), feature = "printing")))
    -    )]
    +    #[cfg(feature = "printing")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         pub fn split_for_impl(&self) -> (ImplGenerics, TypeGenerics, Option<&WhereClause>) {
             (
                 ImplGenerics(self),
    @@ -1718,20 +1590,128 @@
         }
     }
     
    -#[cfg(feature = "printing")]
    -macro_rules! generics_wrapper_impls {
    +pub struct Lifetimes<'a>(Iter<'a, GenericParam>);
    +
    +impl<'a> Iterator for Lifetimes<'a> {
    +    type Item = &'a LifetimeParam;
    +
    +    fn next(&mut self) -> Option<Self::Item> {
    +        if let GenericParam::Lifetime(lifetime) = self.0.next()? {
    +            Some(lifetime)
    +        } else {
    +            self.next()
    +        }
    +    }
    +}
    +
    +pub struct LifetimesMut<'a>(IterMut<'a, GenericParam>);
    +
    +impl<'a> Iterator for LifetimesMut<'a> {
    +    type Item = &'a mut LifetimeParam;
    +
    +    fn next(&mut self) -> Option<Self::Item> {
    +        if let GenericParam::Lifetime(lifetime) = self.0.next()? {
    +            Some(lifetime)
    +        } else {
    +            self.next()
    +        }
    +    }
    +}
    +
    +pub struct TypeParams<'a>(Iter<'a, GenericParam>);
    +
    +impl<'a> Iterator for TypeParams<'a> {
    +    type Item = &'a TypeParam;
    +
    +    fn next(&mut self) -> Option<Self::Item> {
    +        if let GenericParam::Type(type_param) = self.0.next()? {
    +            Some(type_param)
    +        } else {
    +            self.next()
    +        }
    +    }
    +}
    +
    +pub struct TypeParamsMut<'a>(IterMut<'a, GenericParam>);
    +
    +impl<'a> Iterator for TypeParamsMut<'a> {
    +    type Item = &'a mut TypeParam;
    +
    +    fn next(&mut self) -> Option<Self::Item> {
    +        if let GenericParam::Type(type_param) = self.0.next()? {
    +            Some(type_param)
    +        } else {
    +            self.next()
    +        }
    +    }
    +}
    +
    +pub struct ConstParams<'a>(Iter<'a, GenericParam>);
    +
    +impl<'a> Iterator for ConstParams<'a> {
    +    type Item = &'a ConstParam;
    +
    +    fn next(&mut self) -> Option<Self::Item> {
    +        if let GenericParam::Const(const_param) = self.0.next()? {
    +            Some(const_param)
    +        } else {
    +            self.next()
    +        }
    +    }
    +}
    +
    +pub struct ConstParamsMut<'a>(IterMut<'a, GenericParam>);
    +
    +impl<'a> Iterator for ConstParamsMut<'a> {
    +    type Item = &'a mut ConstParam;
    +
    +    fn next(&mut self) -> Option<Self::Item> {
    +        if let GenericParam::Const(const_param) = self.0.next()? {
    +            Some(const_param)
    +        } else {
    +            self.next()
    +        }
    +    }
    +}
    +
    +/// Returned by `Generics::split_for_impl`.
    +#[cfg(feature = "printing")]
    +#[cfg_attr(
    +    docsrs,
    +    doc(cfg(all(any(feature = "full", feature = "derive"), feature = "printing")))
    +)]
    +pub struct ImplGenerics<'a>(&'a Generics);
    +
    +/// Returned by `Generics::split_for_impl`.
    +#[cfg(feature = "printing")]
    +#[cfg_attr(
    +    docsrs,
    +    doc(cfg(all(any(feature = "full", feature = "derive"), feature = "printing")))
    +)]
    +pub struct TypeGenerics<'a>(&'a Generics);
    +
    +/// Returned by `TypeGenerics::as_turbofish`.
    +#[cfg(feature = "printing")]
    +#[cfg_attr(
    +    docsrs,
    +    doc(cfg(all(any(feature = "full", feature = "derive"), feature = "printing")))
    +)]
    +pub struct Turbofish<'a>(&'a Generics);
    +
    +#[cfg(feature = "printing")]
    +macro_rules! generics_wrapper_impls {
         ($ty:ident) => {
    -        #[cfg(feature = "clone-impls")]
    -        #[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    -        impl<'a> Clone for $ty<'a> {
    +        #[cfg(feature = "clone-impls")]
    +        #[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +        impl<'a> Clone for $ty<'a> {
                 fn clone(&self) -> Self {
                     $ty(self.0)
                 }
             }
     
    -        #[cfg(feature = "extra-traits")]
    -        #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -        impl<'a> Debug for $ty<'a> {
    +        #[cfg(feature = "extra-traits")]
    +        #[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +        impl<'a> Debug for $ty<'a> {
                 fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
                     formatter
                         .debug_tuple(stringify!($ty))
    @@ -1740,21 +1720,21 @@
                 }
             }
     
    -        #[cfg(feature = "extra-traits")]
    -        #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -        impl<'a> Eq for $ty<'a> {}
    +        #[cfg(feature = "extra-traits")]
    +        #[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +        impl<'a> Eq for $ty<'a> {}
     
    -        #[cfg(feature = "extra-traits")]
    -        #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -        impl<'a> PartialEq for $ty<'a> {
    +        #[cfg(feature = "extra-traits")]
    +        #[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +        impl<'a> PartialEq for $ty<'a> {
                 fn eq(&self, other: &Self) -> bool {
                     self.0 == other.0
                 }
             }
     
    -        #[cfg(feature = "extra-traits")]
    -        #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -        impl<'a> Hash for $ty<'a> {
    +        #[cfg(feature = "extra-traits")]
    +        #[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +        impl<'a> Hash for $ty<'a> {
                 fn hash<H: Hasher>(&self, state: &mut H) {
                     self.0.hash(state);
                 }
    @@ -1762,34 +1742,28 @@
         };
     }
     
    -#[cfg(feature = "printing")]
    +#[cfg(feature = "printing")]
     generics_wrapper_impls!(ImplGenerics);
    -#[cfg(feature = "printing")]
    +#[cfg(feature = "printing")]
     generics_wrapper_impls!(TypeGenerics);
    -#[cfg(feature = "printing")]
    +#[cfg(feature = "printing")]
     generics_wrapper_impls!(Turbofish);
     
    -#[cfg(feature = "printing")]
    -impl<'a> TypeGenerics<'a> {
    -    /// Turn a type's generics like `<X, Y>` into a turbofish like `::<X, Y>`.
    -    ///
    -    /// *This method is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature and the `"printing"` feature.*
    +#[cfg(feature = "printing")]
    +impl<'a> TypeGenerics<'a> {
    +    /// Turn a type's generics like `<X, Y>` into a turbofish like `::<X, Y>`.
         pub fn as_turbofish(&self) -> Turbofish {
             Turbofish(self.0)
         }
     }
     
    -ast_struct! {
    -    /// A set of bound lifetimes: `for<'a, 'b, 'c>`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +ast_struct! {
    +    /// A set of bound lifetimes: `for<'a, 'b, 'c>`.
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct BoundLifetimes {
             pub for_token: Token![for],
             pub lt_token: Token![<],
    -        pub lifetimes: Punctuated<LifetimeDef, Token![,]>,
    +        pub lifetimes: Punctuated<GenericParam, Token![,]>,
             pub gt_token: Token![>],
         }
     }
    @@ -1805,9 +1779,9 @@
         }
     }
     
    -impl LifetimeDef {
    +impl LifetimeParam {
         pub fn new(lifetime: Lifetime) -> Self {
    -        LifetimeDef {
    +        LifetimeParam {
                 attrs: Vec::new(),
                 lifetime,
                 colon_token: None,
    @@ -1829,107 +1803,101 @@
         }
     }
     
    -ast_enum_of_structs! {
    +ast_enum_of_structs! {
         /// A trait or lifetime used as a bound on a type parameter.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[non_exhaustive]
         pub enum TypeParamBound {
             Trait(TraitBound),
             Lifetime(Lifetime),
    +        PreciseCapture(PreciseCapture),
    +        Verbatim(TokenStream),
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A trait used as a bound on a type parameter.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct TraitBound {
             pub paren_token: Option<token::Paren>,
             pub modifier: TraitBoundModifier,
    -        /// The `for<'a>` in `for<'a> Foo<&'a T>`
    +        /// The `for<'a>` in `for<'a> Foo<&'a T>`
             pub lifetimes: Option<BoundLifetimes>,
    -        /// The `Foo<&'a T>` in `for<'a> Foo<&'a T>`
    +        /// The `Foo<&'a T>` in `for<'a> Foo<&'a T>`
             pub path: Path,
         }
     }
     
    -ast_enum! {
    +ast_enum! {
         /// A modifier on a trait bound, currently only used for the `?` in
         /// `?Sized`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub enum TraitBoundModifier {
             None,
             Maybe(Token![?]),
         }
     }
     
    -ast_struct! {
    -    /// A `where` clause in a definition: `where T: Deserialize<'de>, D:
    -    /// 'static`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +ast_struct! {
    +    /// Precise capturing bound: the 'use&lt;&hellip;&gt;' in `impl Trait +
    +    /// use<'a, T>`.
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    pub struct PreciseCapture #full {
    +        pub use_token: Token![use],
    +        pub lt_token: Token![<],
    +        pub params: Punctuated<CapturedParam, Token![,]>,
    +        pub gt_token: Token![>],
    +    }
    +}
    +
    +#[cfg(feature = "full")]
    +ast_enum! {
    +    /// Single parameter in a precise capturing bound.
    +    #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +    #[non_exhaustive]
    +    pub enum CapturedParam {
    +        /// A lifetime parameter in precise capturing bound: `fn f<'a>() -> impl
    +        /// Trait + use<'a>`.
    +        Lifetime(Lifetime),
    +        /// A type parameter or const generic parameter in precise capturing
    +        /// bound: `fn f<T>() -> impl Trait + use<T>` or `fn f<const K: T>() ->
    +        /// impl Trait + use<K>`.
    +        Ident(Ident),
    +    }
    +}
    +
    +ast_struct! {
    +    /// A `where` clause in a definition: `where T: Deserialize<'de>, D:
    +    /// 'static`.
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct WhereClause {
             pub where_token: Token![where],
             pub predicates: Punctuated<WherePredicate, Token![,]>,
         }
     }
     
    -ast_enum_of_structs! {
    -    /// A single predicate in a `where` clause: `T: Deserialize<'de>`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    +ast_enum_of_structs! {
    +    /// A single predicate in a `where` clause: `T: Deserialize<'de>`.
         ///
         /// # Syntax tree enum
         ///
         /// This type is a [syntax tree enum].
         ///
    -    /// [syntax tree enum]: Expr#syntax-tree-enums
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    /// [syntax tree enum]: crate::expr::Expr#syntax-tree-enums
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[non_exhaustive]
         pub enum WherePredicate {
    -        /// A type predicate in a `where` clause: `for<'c> Foo<'c>: Trait<'c>`.
    -        Type(PredicateType),
    -
    -        /// A lifetime predicate in a `where` clause: `'a: 'b + 'c`.
    +        /// A lifetime predicate in a `where` clause: `'a: 'b + 'c`.
             Lifetime(PredicateLifetime),
     
    -        /// An equality predicate in a `where` clause (unsupported).
    -        Eq(PredicateEq),
    +        /// A type predicate in a `where` clause: `for<'c> Foo<'c>: Trait<'c>`.
    +        Type(PredicateType),
         }
     }
     
    -ast_struct! {
    -    /// A type predicate in a `where` clause: `for<'c> Foo<'c>: Trait<'c>`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    -    pub struct PredicateType {
    -        /// Any lifetimes from a `for` binding
    -        pub lifetimes: Option<BoundLifetimes>,
    -        /// The type being bounded
    -        pub bounded_ty: Type,
    -        pub colon_token: Token![:],
    -        /// Trait and lifetime bounds (`Clone+Send+'static`)
    -        pub bounds: Punctuated<TypeParamBound, Token![+]>,
    -    }
    -}
    -
    -ast_struct! {
    -    /// A lifetime predicate in a `where` clause: `'a: 'b + 'c`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +ast_struct! {
    +    /// A lifetime predicate in a `where` clause: `'a: 'b + 'c`.
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct PredicateLifetime {
             pub lifetime: Lifetime,
             pub colon_token: Token![:],
    @@ -1937,26 +1905,42 @@
         }
     }
     
    -ast_struct! {
    -    /// An equality predicate in a `where` clause (unsupported).
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    -    pub struct PredicateEq {
    -        pub lhs_ty: Type,
    -        pub eq_token: Token![=],
    -        pub rhs_ty: Type,
    +ast_struct! {
    +    /// A type predicate in a `where` clause: `for<'c> Foo<'c>: Trait<'c>`.
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    pub struct PredicateType {
    +        /// Any lifetimes from a `for` binding
    +        pub lifetimes: Option<BoundLifetimes>,
    +        /// The type being bounded
    +        pub bounded_ty: Type,
    +        pub colon_token: Token![:],
    +        /// Trait and lifetime bounds (`Clone+Send+'static`)
    +        pub bounds: Punctuated<TypeParamBound, Token![+]>,
         }
     }
     
    -#[cfg(feature = "parsing")]
    -pub mod parsing {
    -    use super::*;
    -    use crate::ext::IdentExt;
    -    use crate::parse::{Parse, ParseStream, Result};
    +#[cfg(feature = "parsing")]
    +pub(crate) mod parsing {
    +    use crate::attr::Attribute;
    +    use crate::error::{self, Result};
    +    use crate::ext::IdentExt as _;
    +    use crate::generics::{
    +        BoundLifetimes, ConstParam, GenericParam, Generics, LifetimeParam, PredicateLifetime,
    +        PredicateType, TraitBound, TraitBoundModifier, TypeParam, TypeParamBound, WhereClause,
    +        WherePredicate,
    +    };
    +    #[cfg(feature = "full")]
    +    use crate::generics::{CapturedParam, PreciseCapture};
    +    use crate::ident::Ident;
    +    use crate::lifetime::Lifetime;
    +    use crate::parse::{Parse, ParseStream};
    +    use crate::path::{self, ParenthesizedGenericArguments, Path, PathArguments};
    +    use crate::punctuated::Punctuated;
    +    use crate::token;
    +    use crate::ty::Type;
    +    use crate::verbatim;
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for Generics {
             fn parse(input: ParseStream) -> Result<Self> {
                 if !input.peek(Token![<]) {
    @@ -1974,7 +1958,7 @@
                     let attrs = input.call(Attribute::parse_outer)?;
                     let lookahead = input.lookahead1();
                     if lookahead.peek(Lifetime) {
    -                    params.push_value(GenericParam::Lifetime(LifetimeDef {
    +                    params.push_value(GenericParam::Lifetime(LifetimeParam {
                             attrs,
                             ..input.parse()?
                         }));
    @@ -2019,7 +2003,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for GenericParam {
             fn parse(input: ParseStream) -> Result<Self> {
                 let attrs = input.call(Attribute::parse_outer)?;
    @@ -2031,7 +2015,7 @@
                         ..input.parse()?
                     }))
                 } else if lookahead.peek(Lifetime) {
    -                Ok(GenericParam::Lifetime(LifetimeDef {
    +                Ok(GenericParam::Lifetime(LifetimeParam {
                         attrs,
                         ..input.parse()?
                     }))
    @@ -2046,11 +2030,11 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    -    impl Parse for LifetimeDef {
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
    +    impl Parse for LifetimeParam {
             fn parse(input: ParseStream) -> Result<Self> {
                 let has_colon;
    -            Ok(LifetimeDef {
    +            Ok(LifetimeParam {
                     attrs: input.call(Attribute::parse_outer)?,
                     lifetime: input.parse()?,
                     colon_token: {
    @@ -2084,7 +2068,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for BoundLifetimes {
             fn parse(input: ParseStream) -> Result<Self> {
                 Ok(BoundLifetimes {
    @@ -2093,7 +2077,14 @@
                     lifetimes: {
                         let mut lifetimes = Punctuated::new();
                         while !input.peek(Token![>]) {
    -                        lifetimes.push_value(input.parse()?);
    +                        let attrs = input.call(Attribute::parse_outer)?;
    +                        let lifetime: Lifetime = input.parse()?;
    +                        lifetimes.push_value(GenericParam::Lifetime(LifetimeParam {
    +                            attrs,
    +                            lifetime,
    +                            colon_token: None,
    +                            bounds: Punctuated::new(),
    +                        }));
                             if input.peek(Token![>]) {
                                 break;
                             }
    @@ -2106,7 +2097,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for Option<BoundLifetimes> {
             fn parse(input: ParseStream) -> Result<Self> {
                 if input.peek(Token![for]) {
    @@ -2117,28 +2108,28 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for TypeParam {
             fn parse(input: ParseStream) -> Result<Self> {
                 let attrs = input.call(Attribute::parse_outer)?;
                 let ident: Ident = input.parse()?;
                 let colon_token: Option<Token![:]> = input.parse()?;
     
    -            let begin_bound = input.fork();
    -            let mut is_maybe_const = false;
                 let mut bounds = Punctuated::new();
                 if colon_token.is_some() {
                     loop {
                         if input.peek(Token![,]) || input.peek(Token![>]) || input.peek(Token![=]) {
                             break;
                         }
    -                    if input.peek(Token![~]) && input.peek2(Token![const]) {
    -                        input.parse::<Token![~]>()?;
    -                        input.parse::<Token![const]>()?;
    -                        is_maybe_const = true;
    -                    }
    -                    let value: TypeParamBound = input.parse()?;
    -                    bounds.push_value(value);
    +                    bounds.push_value({
    +                        let allow_precise_capture = false;
    +                        let allow_tilde_const = true;
    +                        TypeParamBound::parse_single(
    +                            input,
    +                            allow_precise_capture,
    +                            allow_tilde_const,
    +                        )?
    +                    });
                         if !input.peek(Token![+]) {
                             break;
                         }
    @@ -2147,19 +2138,13 @@
                     }
                 }
     
    -            let mut eq_token: Option<Token![=]> = input.parse()?;
    -            let mut default = if eq_token.is_some() {
    +            let eq_token: Option<Token![=]> = input.parse()?;
    +            let default = if eq_token.is_some() {
                     Some(input.parse::<Type>()?)
                 } else {
                     None
                 };
     
    -            if is_maybe_const {
    -                bounds.clear();
    -                eq_token = None;
    -                default = Some(Type::Verbatim(verbatim::between(begin_bound, input)));
    -            }
    -
                 Ok(TypeParam {
                     attrs,
                     ident,
    @@ -2171,33 +2156,82 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for TypeParamBound {
             fn parse(input: ParseStream) -> Result<Self> {
    -            if input.peek(Lifetime) {
    -                return input.parse().map(TypeParamBound::Lifetime);
    -            }
    -
    -            if input.peek(token::Paren) {
    -                let content;
    -                let paren_token = parenthesized!(content in input);
    -                let mut bound: TraitBound = content.parse()?;
    -                bound.paren_token = Some(paren_token);
    -                return Ok(TypeParamBound::Trait(bound));
    -            }
    -
    -            input.parse().map(TypeParamBound::Trait)
    +            let allow_precise_capture = true;
    +            let allow_tilde_const = true;
    +            Self::parse_single(input, allow_precise_capture, allow_tilde_const)
             }
         }
     
         impl TypeParamBound {
    +        pub(crate) fn parse_single(
    +            input: ParseStream,
    +            #[cfg_attr(not(feature = "full"), allow(unused_variables))] allow_precise_capture: bool,
    +            allow_tilde_const: bool,
    +        ) -> Result<Self> {
    +            if input.peek(Lifetime) {
    +                return input.parse().map(TypeParamBound::Lifetime);
    +            }
    +
    +            let begin = input.fork();
    +
    +            #[cfg(feature = "full")]
    +            {
    +                if input.peek(Token![use]) {
    +                    let precise_capture: PreciseCapture = input.parse()?;
    +                    return if allow_precise_capture {
    +                        Ok(TypeParamBound::PreciseCapture(precise_capture))
    +                    } else {
    +                        let msg = "`use<...>` precise capturing syntax is not allowed here";
    +                        Err(error::new2(
    +                            precise_capture.use_token.span,
    +                            precise_capture.gt_token.span,
    +                            msg,
    +                        ))
    +                    };
    +                }
    +            }
    +
    +            let content;
    +            let (paren_token, content) = if input.peek(token::Paren) {
    +                (Some(parenthesized!(content in input)), &content)
    +            } else {
    +                (None, input)
    +            };
    +
    +            let is_tilde_const =
    +                cfg!(feature = "full") && content.peek(Token![~]) && content.peek2(Token![const]);
    +            if is_tilde_const {
    +                let tilde_token: Token![~] = content.parse()?;
    +                let const_token: Token![const] = content.parse()?;
    +                if !allow_tilde_const {
    +                    let msg = "`~const` is not allowed here";
    +                    return Err(error::new2(tilde_token.span, const_token.span, msg));
    +                }
    +            }
    +
    +            let mut bound: TraitBound = content.parse()?;
    +            bound.paren_token = paren_token;
    +
    +            if is_tilde_const {
    +                Ok(TypeParamBound::Verbatim(verbatim::between(&begin, input)))
    +            } else {
    +                Ok(TypeParamBound::Trait(bound))
    +            }
    +        }
    +
             pub(crate) fn parse_multiple(
                 input: ParseStream,
                 allow_plus: bool,
    +            allow_precise_capture: bool,
    +            allow_tilde_const: bool,
             ) -> Result<Punctuated<Self, Token![+]>> {
                 let mut bounds = Punctuated::new();
                 loop {
    -                bounds.push_value(input.parse()?);
    +                let bound = Self::parse_single(input, allow_precise_capture, allow_tilde_const)?;
    +                bounds.push_value(bound);
                     if !(allow_plus && input.peek(Token![+])) {
                         break;
                     }
    @@ -2206,7 +2240,8 @@
                         || input.peek(Token![::])
                         || input.peek(Token![?])
                         || input.peek(Lifetime)
    -                    || input.peek(token::Paren))
    +                    || input.peek(token::Paren)
    +                    || input.peek(Token![~]))
                     {
                         break;
                     }
    @@ -2215,18 +2250,9 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for TraitBound {
             fn parse(input: ParseStream) -> Result<Self> {
    -            #[cfg(feature = "full")]
    -            let tilde_const = if input.peek(Token![~]) && input.peek2(Token![const]) {
    -                let tilde_token = input.parse::<Token![~]>()?;
    -                let const_token = input.parse::<Token![const]>()?;
    -                Some((tilde_token, const_token))
    -            } else {
    -                None
    -            };
    -
                 let modifier: TraitBoundModifier = input.parse()?;
                 let lifetimes: Option<BoundLifetimes> = input.parse()?;
     
    @@ -2240,21 +2266,6 @@
                     path.segments.last_mut().unwrap().arguments = parenthesized;
                 }
     
    -            #[cfg(feature = "full")]
    -            {
    -                if let Some((tilde_token, const_token)) = tilde_const {
    -                    path.segments.insert(
    -                        0,
    -                        PathSegment {
    -                            ident: Ident::new("const", const_token.span),
    -                            arguments: PathArguments::None,
    -                        },
    -                    );
    -                    let (_const, punct) = path.segments.pairs_mut().next().unwrap().into_tuple();
    -                    *punct.unwrap() = Token![::](tilde_token.span);
    -                }
    -            }
    -
                 Ok(TraitBound {
                     paren_token: None,
                     modifier,
    @@ -2264,7 +2275,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for TraitBoundModifier {
             fn parse(input: ParseStream) -> Result<Self> {
                 if input.peek(Token![?]) {
    @@ -2275,7 +2286,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for ConstParam {
             fn parse(input: ParseStream) -> Result<Self> {
                 let mut default = None;
    @@ -2299,7 +2310,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for WhereClause {
             fn parse(input: ParseStream) -> Result<Self> {
                 Ok(WhereClause {
    @@ -2330,7 +2341,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for Option<WhereClause> {
             fn parse(input: ParseStream) -> Result<Self> {
                 if input.peek(Token![where]) {
    @@ -2341,7 +2352,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for WherePredicate {
             fn parse(input: ParseStream) -> Result<Self> {
                 if input.peek(Lifetime) && input.peek2(Token![:]) {
    @@ -2388,8 +2399,15 @@
                                 {
                                     break;
                                 }
    -                            let value = input.parse()?;
    -                            bounds.push_value(value);
    +                            bounds.push_value({
    +                                let allow_precise_capture = false;
    +                                let allow_tilde_const = true;
    +                                TypeParamBound::parse_single(
    +                                    input,
    +                                    allow_precise_capture,
    +                                    allow_tilde_const,
    +                                )?
    +                            });
                                 if !input.peek(Token![+]) {
                                     break;
                                 }
    @@ -2402,21 +2420,82 @@
                 }
             }
         }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
    +    impl Parse for PreciseCapture {
    +        fn parse(input: ParseStream) -> Result<Self> {
    +            let use_token: Token![use] = input.parse()?;
    +            let lt_token: Token![<] = input.parse()?;
    +            let mut params = Punctuated::new();
    +            loop {
    +                let lookahead = input.lookahead1();
    +                params.push_value(
    +                    if lookahead.peek(Lifetime) || lookahead.peek(Ident) || input.peek(Token![Self])
    +                    {
    +                        input.parse::<CapturedParam>()?
    +                    } else if lookahead.peek(Token![>]) {
    +                        break;
    +                    } else {
    +                        return Err(lookahead.error());
    +                    },
    +                );
    +                let lookahead = input.lookahead1();
    +                params.push_punct(if lookahead.peek(Token![,]) {
    +                    input.parse::<Token![,]>()?
    +                } else if lookahead.peek(Token![>]) {
    +                    break;
    +                } else {
    +                    return Err(lookahead.error());
    +                });
    +            }
    +            let gt_token: Token![>] = input.parse()?;
    +            Ok(PreciseCapture {
    +                use_token,
    +                lt_token,
    +                params,
    +                gt_token,
    +            })
    +        }
    +    }
    +
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
    +    impl Parse for CapturedParam {
    +        fn parse(input: ParseStream) -> Result<Self> {
    +            let lookahead = input.lookahead1();
    +            if lookahead.peek(Lifetime) {
    +                input.parse().map(CapturedParam::Lifetime)
    +            } else if lookahead.peek(Ident) || input.peek(Token![Self]) {
    +                input.call(Ident::parse_any).map(CapturedParam::Ident)
    +            } else {
    +                Err(lookahead.error())
    +            }
    +        }
    +    }
     }
     
    -#[cfg(feature = "printing")]
    -mod printing {
    -    use super::*;
    +#[cfg(feature = "printing")]
    +pub(crate) mod printing {
         use crate::attr::FilterAttrs;
    +    #[cfg(feature = "full")]
    +    use crate::expr;
    +    use crate::expr::Expr;
    +    #[cfg(feature = "full")]
    +    use crate::fixup::FixupContext;
    +    use crate::generics::{
    +        BoundLifetimes, ConstParam, GenericParam, Generics, ImplGenerics, LifetimeParam,
    +        PredicateLifetime, PredicateType, TraitBound, TraitBoundModifier, Turbofish, TypeGenerics,
    +        TypeParam, WhereClause,
    +    };
    +    #[cfg(feature = "full")]
    +    use crate::generics::{CapturedParam, PreciseCapture};
         use crate::print::TokensOrDefault;
    -    #[cfg(feature = "full")]
    -    use crate::punctuated::Pair;
    +    use crate::token;
         use proc_macro2::TokenStream;
    -    #[cfg(feature = "full")]
    -    use proc_macro2::TokenTree;
         use quote::{ToTokens, TokenStreamExt};
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for Generics {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 if self.params.is_empty() {
    @@ -2427,9 +2506,6 @@
     
                 // Print lifetimes before types and consts, regardless of their
                 // order in self.params.
    -            //
    -            // TODO: ordering rules for const parameters vs type parameters have
    -            // not been settled yet. https://github.com/rust-lang/rust/issues/44580
                 let mut trailing_or_empty = true;
                 for param in self.params.pairs() {
                     if let GenericParam::Lifetime(_) = **param.value() {
    @@ -2438,7 +2514,7 @@
                     }
                 }
                 for param in self.params.pairs() {
    -                match **param.value() {
    +                match param.value() {
                         GenericParam::Type(_) | GenericParam::Const(_) => {
                             if !trailing_or_empty {
                                 <Token![,]>::default().to_tokens(tokens);
    @@ -2454,7 +2530,7 @@
             }
         }
     
    -    impl<'a> ToTokens for ImplGenerics<'a> {
    +    impl<'a> ToTokens for ImplGenerics<'a> {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 if self.0.params.is_empty() {
                     return;
    @@ -2464,9 +2540,6 @@
     
                 // Print lifetimes before types and consts, regardless of their
                 // order in self.params.
    -            //
    -            // TODO: ordering rules for const parameters vs type parameters have
    -            // not been settled yet. https://github.com/rust-lang/rust/issues/44580
                 let mut trailing_or_empty = true;
                 for param in self.0.params.pairs() {
                     if let GenericParam::Lifetime(_) = **param.value() {
    @@ -2482,7 +2555,7 @@
                         <Token![,]>::default().to_tokens(tokens);
                         trailing_or_empty = true;
                     }
    -                match *param.value() {
    +                match param.value() {
                         GenericParam::Lifetime(_) => unreachable!(),
                         GenericParam::Type(param) => {
                             // Leave off the type parameter defaults
    @@ -2509,7 +2582,7 @@
             }
         }
     
    -    impl<'a> ToTokens for TypeGenerics<'a> {
    +    impl<'a> ToTokens for TypeGenerics<'a> {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 if self.0.params.is_empty() {
                     return;
    @@ -2519,9 +2592,6 @@
     
                 // Print lifetimes before types and consts, regardless of their
                 // order in self.params.
    -            //
    -            // TODO: ordering rules for const parameters vs type parameters have
    -            // not been settled yet. https://github.com/rust-lang/rust/issues/44580
                 let mut trailing_or_empty = true;
                 for param in self.0.params.pairs() {
                     if let GenericParam::Lifetime(def) = *param.value() {
    @@ -2539,7 +2609,7 @@
                         <Token![,]>::default().to_tokens(tokens);
                         trailing_or_empty = true;
                     }
    -                match *param.value() {
    +                match param.value() {
                         GenericParam::Lifetime(_) => unreachable!(),
                         GenericParam::Type(param) => {
                             // Leave off the type parameter defaults
    @@ -2557,7 +2627,7 @@
             }
         }
     
    -    impl<'a> ToTokens for Turbofish<'a> {
    +    impl<'a> ToTokens for Turbofish<'a> {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 if !self.0.params.is_empty() {
                     <Token![::]>::default().to_tokens(tokens);
    @@ -2566,7 +2636,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for BoundLifetimes {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 self.for_token.to_tokens(tokens);
    @@ -2576,8 +2646,8 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for LifetimeDef {
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for LifetimeParam {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 tokens.append_all(self.attrs.outer());
                 self.lifetime.to_tokens(tokens);
    @@ -2588,7 +2658,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for TypeParam {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 tokens.append_all(self.attrs.outer());
    @@ -2598,59 +2668,19 @@
                     self.bounds.to_tokens(tokens);
                 }
                 if let Some(default) = &self.default {
    -                #[cfg(feature = "full")]
    -                {
    -                    if self.eq_token.is_none() {
    -                        if let Type::Verbatim(default) = default {
    -                            let mut iter = default.clone().into_iter().peekable();
    -                            while let Some(token) = iter.next() {
    -                                if let TokenTree::Punct(q) = token {
    -                                    if q.as_char() == '~' {
    -                                        if let Some(TokenTree::Ident(c)) = iter.peek() {
    -                                            if c == "const" {
    -                                                if self.bounds.is_empty() {
    -                                                    TokensOrDefault(&self.colon_token)
    -                                                        .to_tokens(tokens);
    -                                                }
    -                                                return default.to_tokens(tokens);
    -                                            }
    -                                        }
    -                                    }
    -                                }
    -                            }
    -                        }
    -                    }
    -                }
                     TokensOrDefault(&self.eq_token).to_tokens(tokens);
                     default.to_tokens(tokens);
                 }
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for TraitBound {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 let to_tokens = |tokens: &mut TokenStream| {
    -                #[cfg(feature = "full")]
    -                let skip = match self.path.segments.pairs().next() {
    -                    Some(Pair::Punctuated(t, p)) if t.ident == "const" => {
    -                        Token![~](p.spans[0]).to_tokens(tokens);
    -                        t.to_tokens(tokens);
    -                        1
    -                    }
    -                    _ => 0,
    -                };
                     self.modifier.to_tokens(tokens);
                     self.lifetimes.to_tokens(tokens);
    -                #[cfg(feature = "full")]
    -                {
    -                    self.path.leading_colon.to_tokens(tokens);
    -                    tokens.append_all(self.path.segments.pairs().skip(skip));
    -                }
    -                #[cfg(not(feature = "full"))]
    -                {
    -                    self.path.to_tokens(tokens);
    -                }
    +                self.path.to_tokens(tokens);
                 };
                 match &self.paren_token {
                     Some(paren) => paren.surround(tokens, to_tokens),
    @@ -2659,7 +2689,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for TraitBoundModifier {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 match self {
    @@ -2669,7 +2699,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for ConstParam {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 tokens.append_all(self.attrs.outer());
    @@ -2679,12 +2709,12 @@
                 self.ty.to_tokens(tokens);
                 if let Some(default) = &self.default {
                     TokensOrDefault(&self.eq_token).to_tokens(tokens);
    -                default.to_tokens(tokens);
    +                print_const_argument(default, tokens);
                 }
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for WhereClause {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 if !self.predicates.is_empty() {
    @@ -2694,7 +2724,16 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for PredicateLifetime {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            self.lifetime.to_tokens(tokens);
    +            self.colon_token.to_tokens(tokens);
    +            self.bounds.to_tokens(tokens);
    +        }
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for PredicateType {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 self.lifetimes.to_tokens(tokens);
    @@ -2704,21 +2743,74 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for PredicateLifetime {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for PreciseCapture {
             fn to_tokens(&self, tokens: &mut TokenStream) {
    -            self.lifetime.to_tokens(tokens);
    -            self.colon_token.to_tokens(tokens);
    -            self.bounds.to_tokens(tokens);
    +            self.use_token.to_tokens(tokens);
    +            self.lt_token.to_tokens(tokens);
    +
    +            // Print lifetimes before types and consts, regardless of their
    +            // order in self.params.
    +            let mut trailing_or_empty = true;
    +            for param in self.params.pairs() {
    +                if let CapturedParam::Lifetime(_) = **param.value() {
    +                    param.to_tokens(tokens);
    +                    trailing_or_empty = param.punct().is_some();
    +                }
    +            }
    +            for param in self.params.pairs() {
    +                if let CapturedParam::Ident(_) = **param.value() {
    +                    if !trailing_or_empty {
    +                        <Token![,]>::default().to_tokens(tokens);
    +                        trailing_or_empty = true;
    +                    }
    +                    param.to_tokens(tokens);
    +                }
    +            }
    +
    +            self.gt_token.to_tokens(tokens);
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for PredicateEq {
    +    #[cfg(feature = "full")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for CapturedParam {
             fn to_tokens(&self, tokens: &mut TokenStream) {
    -            self.lhs_ty.to_tokens(tokens);
    -            self.eq_token.to_tokens(tokens);
    -            self.rhs_ty.to_tokens(tokens);
    +            match self {
    +                CapturedParam::Lifetime(lifetime) => lifetime.to_tokens(tokens),
    +                CapturedParam::Ident(ident) => ident.to_tokens(tokens),
    +            }
    +        }
    +    }
    +
    +    pub(crate) fn print_const_argument(expr: &Expr, tokens: &mut TokenStream) {
    +        match expr {
    +            Expr::Lit(expr) => expr.to_tokens(tokens),
    +
    +            Expr::Path(expr)
    +                if expr.attrs.is_empty()
    +                    && expr.qself.is_none()
    +                    && expr.path.get_ident().is_some() =>
    +            {
    +                expr.to_tokens(tokens);
    +            }
    +
    +            #[cfg(feature = "full")]
    +            Expr::Block(expr) => expr.to_tokens(tokens),
    +
    +            #[cfg(not(feature = "full"))]
    +            Expr::Verbatim(expr) => expr.to_tokens(tokens),
    +
    +            // ERROR CORRECTION: Add braces to make sure that the
    +            // generated code is valid.
    +            _ => token::Brace::default().surround(tokens, |tokens| {
    +                #[cfg(feature = "full")]
    +                expr::printing::print_expr(expr, tokens, FixupContext::new_stmt());
    +
    +                #[cfg(not(feature = "full"))]
    +                expr.to_tokens(tokens);
    +            }),
             }
         }
     }
    diff --git a/src/syn/group.rs.html b/src/syn/group.rs.html
    index ef337e8..96c8e41 100644
    --- a/src/syn/group.rs.html
    +++ b/src/syn/group.rs.html
    @@ -1,4 +1,5 @@
    -group.rs - source
    1
    +group.rs - source

    syn/
    group.rs

    +1
     2
     3
     4
    @@ -280,43 +281,60 @@
     280
     281
     282
    -
    use crate::error::Result;
    +283
    +284
    +285
    +286
    +287
    +288
    +289
    +290
    +291
    use crate::error::Result;
     use crate::parse::ParseBuffer;
     use crate::token;
    -use proc_macro2::{Delimiter, Span};
    +use proc_macro2::extra::DelimSpan;
    +use proc_macro2::Delimiter;
     
     // Not public API.
     #[doc(hidden)]
    -pub struct Parens<'a> {
    -    pub token: token::Paren,
    -    pub content: ParseBuffer<'a>,
    +pub struct Parens<'a> {
    +    #[doc(hidden)]
    +    pub token: token::Paren,
    +    #[doc(hidden)]
    +    pub content: ParseBuffer<'a>,
     }
     
     // Not public API.
     #[doc(hidden)]
    -pub struct Braces<'a> {
    -    pub token: token::Brace,
    -    pub content: ParseBuffer<'a>,
    +pub struct Braces<'a> {
    +    #[doc(hidden)]
    +    pub token: token::Brace,
    +    #[doc(hidden)]
    +    pub content: ParseBuffer<'a>,
     }
     
     // Not public API.
     #[doc(hidden)]
    -pub struct Brackets<'a> {
    -    pub token: token::Bracket,
    -    pub content: ParseBuffer<'a>,
    +pub struct Brackets<'a> {
    +    #[doc(hidden)]
    +    pub token: token::Bracket,
    +    #[doc(hidden)]
    +    pub content: ParseBuffer<'a>,
     }
     
     // Not public API.
    -#[cfg(any(feature = "full", feature = "derive"))]
    +#[cfg(any(feature = "full", feature = "derive"))]
     #[doc(hidden)]
    -pub struct Group<'a> {
    -    pub token: token::Group,
    -    pub content: ParseBuffer<'a>,
    +pub struct Group<'a> {
    +    #[doc(hidden)]
    +    pub token: token::Group,
    +    #[doc(hidden)]
    +    pub content: ParseBuffer<'a>,
     }
     
     // Not public API.
     #[doc(hidden)]
    -pub fn parse_parens<'a>(input: &ParseBuffer<'a>) -> Result<Parens<'a>> {
    +pub fn parse_parens<'a>(input: &ParseBuffer<'a>) -> Result<Parens<'a>> {
         parse_delimited(input, Delimiter::Parenthesis).map(|(span, content)| Parens {
             token: token::Paren(span),
             content,
    @@ -325,7 +343,7 @@
     
     // Not public API.
     #[doc(hidden)]
    -pub fn parse_braces<'a>(input: &ParseBuffer<'a>) -> Result<Braces<'a>> {
    +pub fn parse_braces<'a>(input: &ParseBuffer<'a>) -> Result<Braces<'a>> {
         parse_delimited(input, Delimiter::Brace).map(|(span, content)| Braces {
             token: token::Brace(span),
             content,
    @@ -334,38 +352,38 @@
     
     // Not public API.
     #[doc(hidden)]
    -pub fn parse_brackets<'a>(input: &ParseBuffer<'a>) -> Result<Brackets<'a>> {
    +pub fn parse_brackets<'a>(input: &ParseBuffer<'a>) -> Result<Brackets<'a>> {
         parse_delimited(input, Delimiter::Bracket).map(|(span, content)| Brackets {
             token: token::Bracket(span),
             content,
         })
     }
     
    -#[cfg(any(feature = "full", feature = "derive"))]
    -pub(crate) fn parse_group<'a>(input: &ParseBuffer<'a>) -> Result<Group<'a>> {
    +#[cfg(any(feature = "full", feature = "derive"))]
    +pub(crate) fn parse_group<'a>(input: &ParseBuffer<'a>) -> Result<Group<'a>> {
         parse_delimited(input, Delimiter::None).map(|(span, content)| Group {
    -        token: token::Group(span),
    +        token: token::Group(span.join()),
             content,
         })
     }
     
    -fn parse_delimited<'a>(
    -    input: &ParseBuffer<'a>,
    +fn parse_delimited<'a>(
    +    input: &ParseBuffer<'a>,
         delimiter: Delimiter,
    -) -> Result<(Span, ParseBuffer<'a>)> {
    +) -> Result<(DelimSpan, ParseBuffer<'a>)> {
         input.step(|cursor| {
             if let Some((content, span, rest)) = cursor.group(delimiter) {
    -            let scope = crate::buffer::close_span_of_group(*cursor);
    +            let scope = span.close();
                 let nested = crate::parse::advance_step_cursor(cursor, content);
                 let unexpected = crate::parse::get_unexpected(input);
                 let content = crate::parse::new_parse_buffer(scope, nested, unexpected);
                 Ok(((span, content), rest))
             } else {
                 let message = match delimiter {
    -                Delimiter::Parenthesis => "expected parentheses",
    -                Delimiter::Brace => "expected curly braces",
    -                Delimiter::Bracket => "expected square brackets",
    -                Delimiter::None => "expected invisible group",
    +                Delimiter::Parenthesis => "expected parentheses",
    +                Delimiter::Brace => "expected curly braces",
    +                Delimiter::Bracket => "expected square brackets",
    +                Delimiter::None => "expected invisible group",
                 };
                 Err(cursor.error(message))
             }
    @@ -401,7 +419,7 @@
     ///             struct_token: input.parse()?,
     ///             ident: input.parse()?,
     ///             paren_token: parenthesized!(content in input),
    -///             fields: content.parse_terminated(Type::parse)?,
    +///             fields: content.parse_terminated(Type::parse, Token![,])?,
     ///             semi_token: input.parse()?,
     ///         })
     ///     }
    @@ -415,8 +433,8 @@
     /// # }
     /// ```
     #[macro_export]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    -macro_rules! parenthesized {
    +#[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
    +macro_rules! parenthesized {
         ($content:ident in $cursor:expr) => {
             match $crate::__private::parse_parens(&$cursor) {
                 $crate::__private::Ok(parens) => {
    @@ -467,7 +485,7 @@
     ///             struct_token: input.parse()?,
     ///             ident: input.parse()?,
     ///             brace_token: braced!(content in input),
    -///             fields: content.parse_terminated(Field::parse)?,
    +///             fields: content.parse_terminated(Field::parse, Token![,])?,
     ///         })
     ///     }
     /// }
    @@ -493,8 +511,8 @@
     /// # }
     /// ```
     #[macro_export]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    -macro_rules! braced {
    +#[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
    +macro_rules! braced {
         ($content:ident in $cursor:expr) => {
             match $crate::__private::parse_braces(&$cursor) {
                 $crate::__private::Ok(braces) => {
    @@ -548,8 +566,8 @@
     /// # }
     /// ```
     #[macro_export]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    -macro_rules! bracketed {
    +#[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
    +macro_rules! bracketed {
         ($content:ident in $cursor:expr) => {
             match $crate::__private::parse_brackets(&$cursor) {
                 $crate::__private::Ok(brackets) => {
    diff --git a/src/syn/ident.rs.html b/src/syn/ident.rs.html
    index 6f7373a..98792fc 100644
    --- a/src/syn/ident.rs.html
    +++ b/src/syn/ident.rs.html
    @@ -1,4 +1,5 @@
    -ident.rs - source
    1
    +ident.rs - source

    syn/
    ident.rs

    +1
     2
     3
     4
    @@ -99,73 +100,27 @@
     99
     100
     101
    -
    #[cfg(feature = "parsing")]
    -use crate::buffer::Cursor;
    -#[cfg(feature = "parsing")]
    +102
    +103
    +104
    +105
    +106
    +107
    +108
    #[cfg(feature = "parsing")]
     use crate::lookahead;
    -#[cfg(feature = "parsing")]
    -use crate::parse::{Parse, ParseStream, Result};
    -#[cfg(feature = "parsing")]
    -use crate::token::Token;
     
     pub use proc_macro2::Ident;
     
    -#[cfg(feature = "parsing")]
    -#[doc(hidden)]
    -#[allow(non_snake_case)]
    -pub fn Ident(marker: lookahead::TokenMarker) -> Ident {
    -    match marker {}
    -}
    -
    -#[cfg(feature = "parsing")]
    -fn accept_as_ident(ident: &Ident) -> bool {
    -    match ident.to_string().as_str() {
    -        "_" |
    -        // Based on https://doc.rust-lang.org/grammar.html#keywords
    -        // and https://github.com/rust-lang/rfcs/blob/master/text/2421-unreservations-2018.md
    -        // and https://github.com/rust-lang/rfcs/blob/master/text/2420-unreserve-proc.md
    -        "abstract" | "as" | "become" | "box" | "break" | "const" | "continue" |
    -        "crate" | "do" | "else" | "enum" | "extern" | "false" | "final" | "fn" |
    -        "for" | "if" | "impl" | "in" | "let" | "loop" | "macro" | "match" |
    -        "mod" | "move" | "mut" | "override" | "priv" | "pub" | "ref" |
    -        "return" | "Self" | "self" | "static" | "struct" | "super" | "trait" |
    -        "true" | "type" | "typeof" | "unsafe" | "unsized" | "use" | "virtual" |
    -        "where" | "while" | "yield" => false,
    -        _ => true,
    +#[cfg(feature = "parsing")]
    +pub_if_not_doc! {
    +    #[doc(hidden)]
    +    #[allow(non_snake_case)]
    +    pub fn Ident(marker: lookahead::TokenMarker) -> Ident {
    +        match marker {}
         }
     }
     
    -#[cfg(feature = "parsing")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    -impl Parse for Ident {
    -    fn parse(input: ParseStream) -> Result<Self> {
    -        input.step(|cursor| {
    -            if let Some((ident, rest)) = cursor.ident() {
    -                if accept_as_ident(&ident) {
    -                    return Ok((ident, rest));
    -                }
    -            }
    -            Err(cursor.error("expected identifier"))
    -        })
    -    }
    -}
    -
    -#[cfg(feature = "parsing")]
    -impl Token for Ident {
    -    fn peek(cursor: Cursor) -> bool {
    -        if let Some((ident, _rest)) = cursor.ident() {
    -            accept_as_ident(&ident)
    -        } else {
    -            false
    -        }
    -    }
    -
    -    fn display() -> &'static str {
    -        "identifier"
    -    }
    -}
    -
    -macro_rules! ident_from_token {
    +macro_rules! ident_from_token {
         ($token:ident) => {
             impl From<Token![$token]> for Ident {
                 fn from(token: Token![$token]) -> Ident {
    @@ -183,14 +138,14 @@
     
     impl From<Token![_]> for Ident {
         fn from(token: Token![_]) -> Ident {
    -        Ident::new("_", token.span)
    +        Ident::new("_", token.span)
         }
     }
     
    -pub fn xid_ok(symbol: &str) -> bool {
    +pub(crate) fn xid_ok(symbol: &str) -> bool {
         let mut chars = symbol.chars();
         let first = chars.next().unwrap();
    -    if !(first == '_' || unicode_ident::is_xid_start(first)) {
    +    if !(first == '_' || unicode_ident::is_xid_start(first)) {
             return false;
         }
         for ch in chars {
    @@ -200,4 +155,63 @@
         }
         true
     }
    +
    +#[cfg(feature = "parsing")]
    +mod parsing {
    +    use crate::buffer::Cursor;
    +    use crate::error::Result;
    +    use crate::parse::{Parse, ParseStream};
    +    use crate::token::Token;
    +    use proc_macro2::Ident;
    +
    +    fn accept_as_ident(ident: &Ident) -> bool {
    +        match ident.to_string().as_str() {
    +            "_" |
    +            // Based on https://doc.rust-lang.org/1.65.0/reference/keywords.html
    +            "abstract" | "as" | "async" | "await" | "become" | "box" | "break" |
    +            "const" | "continue" | "crate" | "do" | "dyn" | "else" | "enum" |
    +            "extern" | "false" | "final" | "fn" | "for" | "if" | "impl" | "in" |
    +            "let" | "loop" | "macro" | "match" | "mod" | "move" | "mut" |
    +            "override" | "priv" | "pub" | "ref" | "return" | "Self" | "self" |
    +            "static" | "struct" | "super" | "trait" | "true" | "try" | "type" |
    +            "typeof" | "unsafe" | "unsized" | "use" | "virtual" | "where" |
    +            "while" | "yield" => false,
    +            _ => true,
    +        }
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
    +    impl Parse for Ident {
    +        fn parse(input: ParseStream) -> Result<Self> {
    +            input.step(|cursor| {
    +                if let Some((ident, rest)) = cursor.ident() {
    +                    if accept_as_ident(&ident) {
    +                        Ok((ident, rest))
    +                    } else {
    +                        Err(cursor.error(format_args!(
    +                            "expected identifier, found keyword `{}`",
    +                            ident,
    +                        )))
    +                    }
    +                } else {
    +                    Err(cursor.error("expected identifier"))
    +                }
    +            })
    +        }
    +    }
    +
    +    impl Token for Ident {
    +        fn peek(cursor: Cursor) -> bool {
    +            if let Some((ident, _rest)) = cursor.ident() {
    +                accept_as_ident(&ident)
    +            } else {
    +                false
    +            }
    +        }
    +
    +        fn display() -> &'static str {
    +            "identifier"
    +        }
    +    }
    +}
     
    \ No newline at end of file diff --git a/src/syn/lib.rs.html b/src/syn/lib.rs.html index 251c3e5..e763327 100644 --- a/src/syn/lib.rs.html +++ b/src/syn/lib.rs.html @@ -1,4 +1,5 @@ -lib.rs - source
    1
    +lib.rs - source

    syn/
    lib.rs

    +1
     2
     3
     4
    @@ -982,7 +983,31 @@
     982
     983
     984
    -
    //! [![github]](https://github.com/dtolnay/syn)&ensp;[![crates-io]](https://crates.io/crates/syn)&ensp;[![docs-rs]](crate)
    +985
    +986
    +987
    +988
    +989
    +990
    +991
    +992
    +993
    +994
    +995
    +996
    +997
    +998
    +999
    +1000
    +1001
    +1002
    +1003
    +1004
    +1005
    +1006
    +1007
    +1008
    +1009
    //! [![github]](https://github.com/dtolnay/syn)&ensp;[![crates-io]](https://crates.io/crates/syn)&ensp;[![docs-rs]](crate)
     //!
     //! [github]: https://img.shields.io/badge/github-8da0cb?style=for-the-badge&labelColor=555555&logo=github
     //! [crates-io]: https://img.shields.io/badge/crates.io-fc8d62?style=for-the-badge&labelColor=555555&logo=rust
    @@ -1016,7 +1041,7 @@
     //! - **Location information** — Every token parsed by Syn is associated with a
     //!   `Span` that tracks line and column information back to the source of that
     //!   token. These spans allow a procedural macro to display detailed error
    -//!   messages pointing to all the right places in the user's code. There is an
    +//!   messages pointing to all the right places in the user's code. There is an
     //!   example of this below.
     //!
     //! - **Feature flags** — Functionality is aggressively feature gated so your
    @@ -1036,18 +1061,18 @@
     //!
     //! The canonical derive macro using Syn looks like this. We write an ordinary
     //! Rust function tagged with a `proc_macro_derive` attribute and the name of
    -//! the trait we are deriving. Any time that derive appears in the user's code,
    +//! the trait we are deriving. Any time that derive appears in the user's code,
     //! the Rust compiler passes their data structure as tokens into our macro. We
     //! get to execute arbitrary Rust code to figure out what to do with those
     //! tokens, then hand some tokens back to the compiler to compile into the
    -//! user's crate.
    +//! user's crate.
     //!
     //! [`TokenStream`]: proc_macro::TokenStream
     //!
     //! ```toml
     //! [dependencies]
    -//! syn = "1.0"
    -//! quote = "1.0"
    +//! syn = "2.0"
    +//! quote = "1.0"
     //!
     //! [lib]
     //! proc-macro = true
    @@ -1078,9 +1103,8 @@
     //! ```
     //!
     //! The [`heapsize`] example directory shows a complete working implementation
    -//! of a derive macro. It works on any Rust compiler 1.31+. The example derives
    -//! a `HeapSize` trait which computes an estimate of the amount of heap memory
    -//! owned by a value.
    +//! of a derive macro. The example derives a `HeapSize` trait which computes an
    +//! estimate of the amount of heap memory owned by a value.
     //!
     //! [`heapsize`]: https://github.com/dtolnay/syn/tree/master/examples/heapsize
     //!
    @@ -1098,10 +1122,10 @@
     //! # const IGNORE_TOKENS: &str = stringify! {
     //! #[derive(HeapSize)]
     //! # };
    -//! struct Demo<'a, T: ?Sized> {
    +//! struct Demo<'a, T: ?Sized> {
     //!     a: Box<T>,
     //!     b: u8,
    -//!     c: &'a str,
    +//!     c: &'a str,
     //!     d: String,
     //! }
     //! ```
    @@ -1111,7 +1135,7 @@
     //! # Spans and error reporting
     //!
     //! The token-based procedural macro API provides great control over where the
    -//! compiler's error messages are displayed in user code. Consider the error the
    +//! compiler's error messages are displayed in user code. Consider the error the
     //! user sees if one of their field types does not implement `HeapSize`.
     //!
     //! ```
    @@ -1143,7 +1167,7 @@
     //!
     //! The [`lazy-static`] example directory shows the implementation of a
     //! `functionlike!(...)` procedural macro in which the input tokens are parsed
    -//! using Syn's parsing API.
    +//! using Syn's parsing API.
     //!
     //! [`lazy-static`]: https://github.com/dtolnay/syn/tree/master/examples/lazy-static
     //!
    @@ -1156,7 +1180,7 @@
     //! # }
     //! #
     //! lazy_static! {
    -//!     static ref USERNAME: Regex = Regex::new("^[a-z0-9_-]{3,16}$").unwrap();
    +//!     static ref USERNAME: Regex = Regex::new("^[a-z0-9_-]{3,16}$").unwrap();
     //! }
     //! ```
     //!
    @@ -1167,7 +1191,7 @@
     //! warning: come on, pick a more creative name
     //!   --> src/main.rs:10:16
     //!    |
    -//! 10 |     static ref FOO: String = "lazy_static".to_owned();
    +//! 10 |     static ref FOO: String = "lazy_static".to_owned();
     //!    |                ^^^
     //! ```
     //!
    @@ -1202,7 +1226,7 @@
     //! argument is the name of the test file without the `.rs` extension.
     //!
     //! This write-up by Brandon W Maister discusses debugging in more detail:
    -//! [Debugging Rust's new Custom Derive system][debugging].
    +//! [Debugging Rust's new Custom Derive system][debugging].
     //!
     //! [debugging]: https://quodlibetor.github.io/posts/debugging-rusts-new-custom-derive-system/
     //!
    @@ -1234,9 +1258,11 @@
     //!   dynamic library libproc_macro from rustc toolchain.
     
     // Syn types in rustdoc of other crates get linked to here.
    -#![doc(html_root_url = "https://docs.rs/syn/1.0.109")]
    -#![cfg_attr(doc_cfg, feature(doc_cfg))]
    +#![doc(html_root_url = "https://docs.rs/syn/2.0.90")]
    +#![cfg_attr(docsrs, feature(doc_cfg))]
    +#![deny(unsafe_op_in_unsafe_fn)]
     #![allow(non_camel_case_types)]
    +#![cfg_attr(not(check_cfg), allow(unexpected_cfgs))]
     #![allow(
         clippy::bool_to_int_with_if,
         clippy::cast_lossless,
    @@ -1244,14 +1270,22 @@
         clippy::cast_possible_wrap,
         clippy::cast_ptr_alignment,
         clippy::default_trait_access,
    +    clippy::derivable_impls,
    +    clippy::diverging_sub_expression,
         clippy::doc_markdown,
    +    clippy::enum_glob_use,
         clippy::expl_impl_clone_on_copy,
         clippy::explicit_auto_deref,
         clippy::if_not_else,
         clippy::inherent_to_string,
    +    clippy::into_iter_without_iter,
         clippy::items_after_statements,
         clippy::large_enum_variant,
    -    clippy::manual_assert,
    +    clippy::let_underscore_untyped, // https://github.com/rust-lang/rust-clippy/issues/10410
    +    clippy::manual_assert,
    +    clippy::manual_let_else,
    +    clippy::manual_map,
    +    clippy::match_like_matches_macro,
         clippy::match_on_vec_items,
         clippy::match_same_arms,
         clippy::match_wildcard_for_single_variants, // clippy bug: https://github.com/rust-lang/rust-clippy/issues/6984
    @@ -1260,407 +1294,271 @@
         clippy::module_name_repetitions,
         clippy::must_use_candidate,
         clippy::needless_doctest_main,
    +    clippy::needless_lifetimes,
         clippy::needless_pass_by_value,
    +    clippy::needless_update,
         clippy::never_loop,
    +    clippy::range_plus_one,
         clippy::redundant_else,
    +    clippy::ref_option,
         clippy::return_self_not_must_use,
         clippy::similar_names,
         clippy::single_match_else,
    +    clippy::struct_excessive_bools,
         clippy::too_many_arguments,
         clippy::too_many_lines,
         clippy::trivially_copy_pass_by_ref,
    +    clippy::unconditional_recursion, // https://github.com/rust-lang/rust-clippy/issues/12133
    +    clippy::uninhabited_references,
    +    clippy::uninlined_format_args,
    +    clippy::unnecessary_box_returns,
         clippy::unnecessary_unwrap,
         clippy::used_underscore_binding,
    -    clippy::wildcard_imports
    +    clippy::wildcard_imports,
     )]
     
    -#[cfg(all(
    -    not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
    -    feature = "proc-macro"
    -))]
    -extern crate proc_macro;
    -extern crate proc_macro2;
    +extern crate self as syn;
     
    -#[cfg(feature = "printing")]
    -extern crate quote;
    +#[cfg(feature = "proc-macro")]
    +extern crate proc_macro;
     
     #[macro_use]
     mod macros;
     
    -#[cfg(feature = "parsing")]
    +#[cfg(feature = "parsing")]
     #[macro_use]
     mod group;
     
     #[macro_use]
     pub mod token;
     
    -mod ident;
    -pub use crate::ident::Ident;
    -
    -#[cfg(any(feature = "full", feature = "derive"))]
    +#[cfg(any(feature = "full", feature = "derive"))]
     mod attr;
    -#[cfg(any(feature = "full", feature = "derive"))]
    -pub use crate::attr::{
    -    AttrStyle, Attribute, AttributeArgs, Meta, MetaList, MetaNameValue, NestedMeta,
    -};
    +#[cfg(any(feature = "full", feature = "derive"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
    +pub use crate::attr::{AttrStyle, Attribute, Meta, MetaList, MetaNameValue};
     
     mod bigint;
     
    -#[cfg(any(feature = "full", feature = "derive"))]
    +#[cfg(feature = "parsing")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
    +pub mod buffer;
    +
    +#[cfg(any(
    +    all(feature = "parsing", feature = "full"),
    +    all(feature = "printing", any(feature = "full", feature = "derive")),
    +))]
    +mod classify;
    +
    +mod custom_keyword;
    +
    +mod custom_punctuation;
    +
    +#[cfg(any(feature = "full", feature = "derive"))]
     mod data;
    -#[cfg(any(feature = "full", feature = "derive"))]
    -pub use crate::data::{
    -    Field, Fields, FieldsNamed, FieldsUnnamed, Variant, VisCrate, VisPublic, VisRestricted,
    -    Visibility,
    -};
    +#[cfg(any(feature = "full", feature = "derive"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
    +pub use crate::data::{Field, Fields, FieldsNamed, FieldsUnnamed, Variant};
     
    -#[cfg(any(feature = "full", feature = "derive"))]
    -mod expr;
    -#[cfg(feature = "full")]
    -pub use crate::expr::{
    -    Arm, FieldValue, GenericMethodArgument, Label, MethodTurbofish, RangeLimits,
    -};
    -#[cfg(any(feature = "full", feature = "derive"))]
    -pub use crate::expr::{
    -    Expr, ExprArray, ExprAssign, ExprAssignOp, ExprAsync, ExprAwait, ExprBinary, ExprBlock,
    -    ExprBox, ExprBreak, ExprCall, ExprCast, ExprClosure, ExprContinue, ExprField, ExprForLoop,
    -    ExprGroup, ExprIf, ExprIndex, ExprLet, ExprLit, ExprLoop, ExprMacro, ExprMatch, ExprMethodCall,
    -    ExprParen, ExprPath, ExprRange, ExprReference, ExprRepeat, ExprReturn, ExprStruct, ExprTry,
    -    ExprTryBlock, ExprTuple, ExprType, ExprUnary, ExprUnsafe, ExprWhile, ExprYield, Index, Member,
    -};
    -
    -#[cfg(any(feature = "full", feature = "derive"))]
    -mod generics;
    -#[cfg(any(feature = "full", feature = "derive"))]
    -pub use crate::generics::{
    -    BoundLifetimes, ConstParam, GenericParam, Generics, LifetimeDef, PredicateEq,
    -    PredicateLifetime, PredicateType, TraitBound, TraitBoundModifier, TypeParam, TypeParamBound,
    -    WhereClause, WherePredicate,
    -};
    -#[cfg(all(any(feature = "full", feature = "derive"), feature = "printing"))]
    -pub use crate::generics::{ImplGenerics, Turbofish, TypeGenerics};
    -
    -#[cfg(feature = "full")]
    -mod item;
    -#[cfg(feature = "full")]
    -pub use crate::item::{
    -    FnArg, ForeignItem, ForeignItemFn, ForeignItemMacro, ForeignItemStatic, ForeignItemType,
    -    ImplItem, ImplItemConst, ImplItemMacro, ImplItemMethod, ImplItemType, Item, ItemConst,
    -    ItemEnum, ItemExternCrate, ItemFn, ItemForeignMod, ItemImpl, ItemMacro, ItemMacro2, ItemMod,
    -    ItemStatic, ItemStruct, ItemTrait, ItemTraitAlias, ItemType, ItemUnion, ItemUse, Receiver,
    -    Signature, TraitItem, TraitItemConst, TraitItemMacro, TraitItemMethod, TraitItemType, UseGlob,
    -    UseGroup, UseName, UsePath, UseRename, UseTree,
    -};
    -
    -#[cfg(feature = "full")]
    -mod file;
    -#[cfg(feature = "full")]
    -pub use crate::file::File;
    -
    -mod lifetime;
    -pub use crate::lifetime::Lifetime;
    -
    -mod lit;
    -pub use crate::lit::{
    -    Lit, LitBool, LitByte, LitByteStr, LitChar, LitFloat, LitInt, LitStr, StrStyle,
    -};
    -
    -#[cfg(any(feature = "full", feature = "derive"))]
    -mod mac;
    -#[cfg(any(feature = "full", feature = "derive"))]
    -pub use crate::mac::{Macro, MacroDelimiter};
    -
    -#[cfg(any(feature = "full", feature = "derive"))]
    +#[cfg(any(feature = "full", feature = "derive"))]
     mod derive;
    -#[cfg(feature = "derive")]
    +#[cfg(feature = "derive")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
     pub use crate::derive::{Data, DataEnum, DataStruct, DataUnion, DeriveInput};
     
    -#[cfg(any(feature = "full", feature = "derive"))]
    +mod drops;
    +
    +mod error;
    +pub use crate::error::{Error, Result};
    +
    +#[cfg(any(feature = "full", feature = "derive"))]
    +mod expr;
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub use crate::expr::{Arm, Label, PointerMutability, RangeLimits};
    +#[cfg(any(feature = "full", feature = "derive"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
    +pub use crate::expr::{
    +    Expr, ExprBinary, ExprCall, ExprCast, ExprField, ExprIndex, ExprLit, ExprMacro, ExprMethodCall,
    +    ExprParen, ExprPath, ExprReference, ExprStruct, ExprUnary, FieldValue, Index, Member,
    +};
    +#[cfg(any(feature = "full", feature = "derive"))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub use crate::expr::{
    +    ExprArray, ExprAssign, ExprAsync, ExprAwait, ExprBlock, ExprBreak, ExprClosure, ExprConst,
    +    ExprContinue, ExprForLoop, ExprGroup, ExprIf, ExprInfer, ExprLet, ExprLoop, ExprMatch,
    +    ExprRange, ExprRawAddr, ExprRepeat, ExprReturn, ExprTry, ExprTryBlock, ExprTuple, ExprUnsafe,
    +    ExprWhile, ExprYield,
    +};
    +
    +#[cfg(feature = "parsing")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
    +pub mod ext;
    +
    +#[cfg(feature = "full")]
    +mod file;
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub use crate::file::File;
    +
    +#[cfg(all(any(feature = "full", feature = "derive"), feature = "printing"))]
    +mod fixup;
    +
    +#[cfg(any(feature = "full", feature = "derive"))]
    +mod generics;
    +#[cfg(any(feature = "full", feature = "derive"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
    +pub use crate::generics::{
    +    BoundLifetimes, ConstParam, GenericParam, Generics, LifetimeParam, PredicateLifetime,
    +    PredicateType, TraitBound, TraitBoundModifier, TypeParam, TypeParamBound, WhereClause,
    +    WherePredicate,
    +};
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub use crate::generics::{CapturedParam, PreciseCapture};
    +#[cfg(all(any(feature = "full", feature = "derive"), feature = "printing"))]
    +#[cfg_attr(
    +    docsrs,
    +    doc(cfg(all(any(feature = "full", feature = "derive"), feature = "printing")))
    +)]
    +pub use crate::generics::{ImplGenerics, Turbofish, TypeGenerics};
    +
    +mod ident;
    +#[doc(inline)]
    +pub use crate::ident::Ident;
    +
    +#[cfg(feature = "full")]
    +mod item;
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub use crate::item::{
    +    FnArg, ForeignItem, ForeignItemFn, ForeignItemMacro, ForeignItemStatic, ForeignItemType,
    +    ImplItem, ImplItemConst, ImplItemFn, ImplItemMacro, ImplItemType, ImplRestriction, Item,
    +    ItemConst, ItemEnum, ItemExternCrate, ItemFn, ItemForeignMod, ItemImpl, ItemMacro, ItemMod,
    +    ItemStatic, ItemStruct, ItemTrait, ItemTraitAlias, ItemType, ItemUnion, ItemUse, Receiver,
    +    Signature, StaticMutability, TraitItem, TraitItemConst, TraitItemFn, TraitItemMacro,
    +    TraitItemType, UseGlob, UseGroup, UseName, UsePath, UseRename, UseTree, Variadic,
    +};
    +
    +mod lifetime;
    +#[doc(inline)]
    +pub use crate::lifetime::Lifetime;
    +
    +mod lit;
    +#[doc(hidden)] // https://github.com/dtolnay/syn/issues/1566
    +pub use crate::lit::StrStyle;
    +#[doc(inline)]
    +pub use crate::lit::{
    +    Lit, LitBool, LitByte, LitByteStr, LitCStr, LitChar, LitFloat, LitInt, LitStr,
    +};
    +
    +#[cfg(feature = "parsing")]
    +mod lookahead;
    +
    +#[cfg(any(feature = "full", feature = "derive"))]
    +mod mac;
    +#[cfg(any(feature = "full", feature = "derive"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
    +pub use crate::mac::{Macro, MacroDelimiter};
    +
    +#[cfg(all(feature = "parsing", any(feature = "full", feature = "derive")))]
    +#[cfg_attr(
    +    docsrs,
    +    doc(cfg(all(feature = "parsing", any(feature = "full", feature = "derive"))))
    +)]
    +pub mod meta;
    +
    +#[cfg(any(feature = "full", feature = "derive"))]
     mod op;
    -#[cfg(any(feature = "full", feature = "derive"))]
    +#[cfg(any(feature = "full", feature = "derive"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
     pub use crate::op::{BinOp, UnOp};
     
    -#[cfg(feature = "full")]
    -mod stmt;
    -#[cfg(feature = "full")]
    -pub use crate::stmt::{Block, Local, Stmt};
    +#[cfg(feature = "parsing")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
    +pub mod parse;
     
    -#[cfg(any(feature = "full", feature = "derive"))]
    -mod ty;
    -#[cfg(any(feature = "full", feature = "derive"))]
    -pub use crate::ty::{
    -    Abi, BareFnArg, ReturnType, Type, TypeArray, TypeBareFn, TypeGroup, TypeImplTrait, TypeInfer,
    -    TypeMacro, TypeNever, TypeParen, TypePath, TypePtr, TypeReference, TypeSlice, TypeTraitObject,
    -    TypeTuple, Variadic,
    -};
    +#[cfg(all(feature = "parsing", feature = "proc-macro"))]
    +mod parse_macro_input;
     
    -#[cfg(feature = "full")]
    +#[cfg(all(feature = "parsing", feature = "printing"))]
    +mod parse_quote;
    +
    +#[cfg(feature = "full")]
     mod pat;
    -#[cfg(feature = "full")]
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
     pub use crate::pat::{
    -    FieldPat, Pat, PatBox, PatIdent, PatLit, PatMacro, PatOr, PatPath, PatRange, PatReference,
    -    PatRest, PatSlice, PatStruct, PatTuple, PatTupleStruct, PatType, PatWild,
    +    FieldPat, Pat, PatConst, PatIdent, PatLit, PatMacro, PatOr, PatParen, PatPath, PatRange,
    +    PatReference, PatRest, PatSlice, PatStruct, PatTuple, PatTupleStruct, PatType, PatWild,
     };
     
    -#[cfg(any(feature = "full", feature = "derive"))]
    +#[cfg(any(feature = "full", feature = "derive"))]
     mod path;
    -#[cfg(any(feature = "full", feature = "derive"))]
    +#[cfg(any(feature = "full", feature = "derive"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
     pub use crate::path::{
    -    AngleBracketedGenericArguments, Binding, Constraint, GenericArgument,
    +    AngleBracketedGenericArguments, AssocConst, AssocType, Constraint, GenericArgument,
         ParenthesizedGenericArguments, Path, PathArguments, PathSegment, QSelf,
     };
     
    -#[cfg(feature = "parsing")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    -pub mod buffer;
    -mod drops;
    -#[cfg(feature = "parsing")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    -pub mod ext;
    +#[cfg(all(
    +    any(feature = "full", feature = "derive"),
    +    any(feature = "parsing", feature = "printing")
    +))]
    +mod precedence;
    +
    +#[cfg(all(any(feature = "full", feature = "derive"), feature = "printing"))]
    +mod print;
    +
     pub mod punctuated;
    -#[cfg(all(any(feature = "full", feature = "derive"), feature = "extra-traits"))]
    -mod tt;
     
    -// Not public API except the `parse_quote!` macro.
    -#[cfg(feature = "parsing")]
    -#[doc(hidden)]
    -pub mod parse_quote;
    +#[cfg(any(feature = "full", feature = "derive"))]
    +mod restriction;
    +#[cfg(any(feature = "full", feature = "derive"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
    +pub use crate::restriction::{FieldMutability, VisRestricted, Visibility};
     
    -// Not public API except the `parse_macro_input!` macro.
    -#[cfg(all(
    -    not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
    -    feature = "parsing",
    -    feature = "proc-macro"
    -))]
    -#[doc(hidden)]
    -pub mod parse_macro_input;
    +mod sealed;
     
    -#[cfg(all(feature = "parsing", feature = "printing"))]
    -#[cfg_attr(doc_cfg, doc(cfg(all(feature = "parsing", feature = "printing"))))]
    +#[cfg(all(feature = "parsing", feature = "derive", not(feature = "full")))]
    +mod scan_expr;
    +
    +mod span;
    +
    +#[cfg(all(feature = "parsing", feature = "printing"))]
    +#[cfg_attr(docsrs, doc(cfg(all(feature = "parsing", feature = "printing"))))]
     pub mod spanned;
     
    -#[cfg(all(feature = "parsing", feature = "full"))]
    +#[cfg(feature = "full")]
    +mod stmt;
    +#[cfg(feature = "full")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
    +pub use crate::stmt::{Block, Local, LocalInit, Stmt, StmtMacro};
    +
    +mod thread;
    +
    +#[cfg(all(any(feature = "full", feature = "derive"), feature = "extra-traits"))]
    +mod tt;
    +
    +#[cfg(any(feature = "full", feature = "derive"))]
    +mod ty;
    +#[cfg(any(feature = "full", feature = "derive"))]
    +#[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
    +pub use crate::ty::{
    +    Abi, BareFnArg, BareVariadic, ReturnType, Type, TypeArray, TypeBareFn, TypeGroup,
    +    TypeImplTrait, TypeInfer, TypeMacro, TypeNever, TypeParen, TypePath, TypePtr, TypeReference,
    +    TypeSlice, TypeTraitObject, TypeTuple,
    +};
    +
    +#[cfg(all(any(feature = "full", feature = "derive"), feature = "parsing"))]
    +mod verbatim;
    +
    +#[cfg(all(feature = "parsing", feature = "full"))]
     mod whitespace;
     
    -mod gen {
    -    /// Syntax tree traversal to walk a shared borrow of a syntax tree.
    -    ///
    -    /// Each method of the [`Visit`] trait is a hook that can be overridden to
    -    /// customize the behavior when visiting the corresponding type of node. By
    -    /// default, every method recursively visits the substructure of the input
    -    /// by invoking the right visitor method of each of its fields.
    -    ///
    -    /// [`Visit`]: visit::Visit
    -    ///
    -    /// ```
    -    /// # use syn::{Attribute, BinOp, Expr, ExprBinary};
    -    /// #
    -    /// pub trait Visit<'ast> {
    -    ///     /* ... */
    -    ///
    -    ///     fn visit_expr_binary(&mut self, node: &'ast ExprBinary) {
    -    ///         visit_expr_binary(self, node);
    -    ///     }
    -    ///
    -    ///     /* ... */
    -    ///     # fn visit_attribute(&mut self, node: &'ast Attribute);
    -    ///     # fn visit_expr(&mut self, node: &'ast Expr);
    -    ///     # fn visit_bin_op(&mut self, node: &'ast BinOp);
    -    /// }
    -    ///
    -    /// pub fn visit_expr_binary<'ast, V>(v: &mut V, node: &'ast ExprBinary)
    -    /// where
    -    ///     V: Visit<'ast> + ?Sized,
    -    /// {
    -    ///     for attr in &node.attrs {
    -    ///         v.visit_attribute(attr);
    -    ///     }
    -    ///     v.visit_expr(&*node.left);
    -    ///     v.visit_bin_op(&node.op);
    -    ///     v.visit_expr(&*node.right);
    -    /// }
    -    ///
    -    /// /* ... */
    -    /// ```
    -    ///
    -    /// *This module is available only if Syn is built with the `"visit"` feature.*
    -    ///
    -    /// <br>
    -    ///
    -    /// # Example
    -    ///
    -    /// This visitor will print the name of every freestanding function in the
    -    /// syntax tree, including nested functions.
    -    ///
    -    /// ```
    -    /// // [dependencies]
    -    /// // quote = "1.0"
    -    /// // syn = { version = "1.0", features = ["full", "visit"] }
    -    ///
    -    /// use quote::quote;
    -    /// use syn::visit::{self, Visit};
    -    /// use syn::{File, ItemFn};
    -    ///
    -    /// struct FnVisitor;
    -    ///
    -    /// impl<'ast> Visit<'ast> for FnVisitor {
    -    ///     fn visit_item_fn(&mut self, node: &'ast ItemFn) {
    -    ///         println!("Function with name={}", node.sig.ident);
    -    ///
    -    ///         // Delegate to the default impl to visit any nested functions.
    -    ///         visit::visit_item_fn(self, node);
    -    ///     }
    -    /// }
    -    ///
    -    /// fn main() {
    -    ///     let code = quote! {
    -    ///         pub fn f() {
    -    ///             fn g() {}
    -    ///         }
    -    ///     };
    -    ///
    -    ///     let syntax_tree: File = syn::parse2(code).unwrap();
    -    ///     FnVisitor.visit_file(&syntax_tree);
    -    /// }
    -    /// ```
    -    ///
    -    /// The `'ast` lifetime on the input references means that the syntax tree
    -    /// outlives the complete recursive visit call, so the visitor is allowed to
    -    /// hold on to references into the syntax tree.
    -    ///
    -    /// ```
    -    /// use quote::quote;
    -    /// use syn::visit::{self, Visit};
    -    /// use syn::{File, ItemFn};
    -    ///
    -    /// struct FnVisitor<'ast> {
    -    ///     functions: Vec<&'ast ItemFn>,
    -    /// }
    -    ///
    -    /// impl<'ast> Visit<'ast> for FnVisitor<'ast> {
    -    ///     fn visit_item_fn(&mut self, node: &'ast ItemFn) {
    -    ///         self.functions.push(node);
    -    ///         visit::visit_item_fn(self, node);
    -    ///     }
    -    /// }
    -    ///
    -    /// fn main() {
    -    ///     let code = quote! {
    -    ///         pub fn f() {
    -    ///             fn g() {}
    -    ///         }
    -    ///     };
    -    ///
    -    ///     let syntax_tree: File = syn::parse2(code).unwrap();
    -    ///     let mut visitor = FnVisitor { functions: Vec::new() };
    -    ///     visitor.visit_file(&syntax_tree);
    -    ///     for f in visitor.functions {
    -    ///         println!("Function with name={}", f.sig.ident);
    -    ///     }
    -    /// }
    -    /// ```
    -    #[cfg(feature = "visit")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "visit")))]
    -    #[rustfmt::skip]
    -    pub mod visit;
    -
    -    /// Syntax tree traversal to mutate an exclusive borrow of a syntax tree in
    -    /// place.
    -    ///
    -    /// Each method of the [`VisitMut`] trait is a hook that can be overridden
    -    /// to customize the behavior when mutating the corresponding type of node.
    -    /// By default, every method recursively visits the substructure of the
    -    /// input by invoking the right visitor method of each of its fields.
    -    ///
    -    /// [`VisitMut`]: visit_mut::VisitMut
    -    ///
    -    /// ```
    -    /// # use syn::{Attribute, BinOp, Expr, ExprBinary};
    -    /// #
    -    /// pub trait VisitMut {
    -    ///     /* ... */
    -    ///
    -    ///     fn visit_expr_binary_mut(&mut self, node: &mut ExprBinary) {
    -    ///         visit_expr_binary_mut(self, node);
    -    ///     }
    -    ///
    -    ///     /* ... */
    -    ///     # fn visit_attribute_mut(&mut self, node: &mut Attribute);
    -    ///     # fn visit_expr_mut(&mut self, node: &mut Expr);
    -    ///     # fn visit_bin_op_mut(&mut self, node: &mut BinOp);
    -    /// }
    -    ///
    -    /// pub fn visit_expr_binary_mut<V>(v: &mut V, node: &mut ExprBinary)
    -    /// where
    -    ///     V: VisitMut + ?Sized,
    -    /// {
    -    ///     for attr in &mut node.attrs {
    -    ///         v.visit_attribute_mut(attr);
    -    ///     }
    -    ///     v.visit_expr_mut(&mut *node.left);
    -    ///     v.visit_bin_op_mut(&mut node.op);
    -    ///     v.visit_expr_mut(&mut *node.right);
    -    /// }
    -    ///
    -    /// /* ... */
    -    /// ```
    -    ///
    -    /// *This module is available only if Syn is built with the `"visit-mut"`
    -    /// feature.*
    -    ///
    -    /// <br>
    -    ///
    -    /// # Example
    -    ///
    -    /// This mut visitor replace occurrences of u256 suffixed integer literals
    -    /// like `999u256` with a macro invocation `bigint::u256!(999)`.
    -    ///
    -    /// ```
    -    /// // [dependencies]
    -    /// // quote = "1.0"
    -    /// // syn = { version = "1.0", features = ["full", "visit-mut"] }
    -    ///
    -    /// use quote::quote;
    -    /// use syn::visit_mut::{self, VisitMut};
    -    /// use syn::{parse_quote, Expr, File, Lit, LitInt};
    -    ///
    -    /// struct BigintReplace;
    -    ///
    -    /// impl VisitMut for BigintReplace {
    -    ///     fn visit_expr_mut(&mut self, node: &mut Expr) {
    -    ///         if let Expr::Lit(expr) = &node {
    -    ///             if let Lit::Int(int) = &expr.lit {
    -    ///                 if int.suffix() == "u256" {
    -    ///                     let digits = int.base10_digits();
    -    ///                     let unsuffixed: LitInt = syn::parse_str(digits).unwrap();
    -    ///                     *node = parse_quote!(bigint::u256!(#unsuffixed));
    -    ///                     return;
    -    ///                 }
    -    ///             }
    -    ///         }
    -    ///
    -    ///         // Delegate to the default impl to visit nested expressions.
    -    ///         visit_mut::visit_expr_mut(self, node);
    -    ///     }
    -    /// }
    -    ///
    -    /// fn main() {
    -    ///     let code = quote! {
    -    ///         fn main() {
    -    ///             let _ = 999u256;
    -    ///         }
    -    ///     };
    -    ///
    -    ///     let mut syntax_tree: File = syn::parse2(code).unwrap();
    -    ///     BigintReplace.visit_file_mut(&mut syntax_tree);
    -    ///     println!("{}", quote!(#syntax_tree));
    -    /// }
    -    /// ```
    -    #[cfg(feature = "visit-mut")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "visit-mut")))]
    -    #[rustfmt::skip]
    -    pub mod visit_mut;
    -
    +#[rustfmt::skip] // https://github.com/rust-lang/rustfmt/issues/6176
    +mod gen {
         /// Syntax tree traversal to transform the nodes of an owned syntax tree.
         ///
         /// Each method of the [`Fold`] trait is a hook that can be overridden to
    @@ -1705,8 +1603,6 @@
         /// /* ... */
         /// ```
         ///
    -    /// *This module is available only if Syn is built with the `"fold"` feature.*
    -    ///
         /// <br>
         ///
         /// # Example
    @@ -1715,8 +1611,8 @@
         ///
         /// ```
         /// // [dependencies]
    -    /// // quote = "1.0"
    -    /// // syn = { version = "1.0", features = ["fold", "full"] }
    +    /// // quote = "1.0"
    +    /// // syn = { version = "2.0", features = ["fold", "full"] }
         ///
         /// use quote::quote;
         /// use syn::fold::{fold_expr, Fold};
    @@ -1738,75 +1634,268 @@
         ///     let code = quote! { a() + b(1) * c.d };
         ///     let expr: Expr = syn::parse2(code).unwrap();
         ///     let parenthesized = ParenthesizeEveryExpr.fold_expr(expr);
    -    ///     println!("{}", quote!(#parenthesized));
    +    ///     println!("{}", quote!(#parenthesized));
         ///
         ///     // Output: (((a)()) + (((b)((1))) * ((c).d)))
         /// }
         /// ```
    -    #[cfg(feature = "fold")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "fold")))]
    +    #[cfg(feature = "fold")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "fold")))]
         #[rustfmt::skip]
         pub mod fold;
     
    -    #[cfg(feature = "clone-impls")]
    +    /// Syntax tree traversal to walk a shared borrow of a syntax tree.
    +    ///
    +    /// Each method of the [`Visit`] trait is a hook that can be overridden to
    +    /// customize the behavior when visiting the corresponding type of node. By
    +    /// default, every method recursively visits the substructure of the input
    +    /// by invoking the right visitor method of each of its fields.
    +    ///
    +    /// [`Visit`]: visit::Visit
    +    ///
    +    /// ```
    +    /// # use syn::{Attribute, BinOp, Expr, ExprBinary};
    +    /// #
    +    /// pub trait Visit<'ast> {
    +    ///     /* ... */
    +    ///
    +    ///     fn visit_expr_binary(&mut self, node: &'ast ExprBinary) {
    +    ///         visit_expr_binary(self, node);
    +    ///     }
    +    ///
    +    ///     /* ... */
    +    ///     # fn visit_attribute(&mut self, node: &'ast Attribute);
    +    ///     # fn visit_expr(&mut self, node: &'ast Expr);
    +    ///     # fn visit_bin_op(&mut self, node: &'ast BinOp);
    +    /// }
    +    ///
    +    /// pub fn visit_expr_binary<'ast, V>(v: &mut V, node: &'ast ExprBinary)
    +    /// where
    +    ///     V: Visit<'ast> + ?Sized,
    +    /// {
    +    ///     for attr in &node.attrs {
    +    ///         v.visit_attribute(attr);
    +    ///     }
    +    ///     v.visit_expr(&*node.left);
    +    ///     v.visit_bin_op(&node.op);
    +    ///     v.visit_expr(&*node.right);
    +    /// }
    +    ///
    +    /// /* ... */
    +    /// ```
    +    ///
    +    /// <br>
    +    ///
    +    /// # Example
    +    ///
    +    /// This visitor will print the name of every freestanding function in the
    +    /// syntax tree, including nested functions.
    +    ///
    +    /// ```
    +    /// // [dependencies]
    +    /// // quote = "1.0"
    +    /// // syn = { version = "2.0", features = ["full", "visit"] }
    +    ///
    +    /// use quote::quote;
    +    /// use syn::visit::{self, Visit};
    +    /// use syn::{File, ItemFn};
    +    ///
    +    /// struct FnVisitor;
    +    ///
    +    /// impl<'ast> Visit<'ast> for FnVisitor {
    +    ///     fn visit_item_fn(&mut self, node: &'ast ItemFn) {
    +    ///         println!("Function with name={}", node.sig.ident);
    +    ///
    +    ///         // Delegate to the default impl to visit any nested functions.
    +    ///         visit::visit_item_fn(self, node);
    +    ///     }
    +    /// }
    +    ///
    +    /// fn main() {
    +    ///     let code = quote! {
    +    ///         pub fn f() {
    +    ///             fn g() {}
    +    ///         }
    +    ///     };
    +    ///
    +    ///     let syntax_tree: File = syn::parse2(code).unwrap();
    +    ///     FnVisitor.visit_file(&syntax_tree);
    +    /// }
    +    /// ```
    +    ///
    +    /// The `'ast` lifetime on the input references means that the syntax tree
    +    /// outlives the complete recursive visit call, so the visitor is allowed to
    +    /// hold on to references into the syntax tree.
    +    ///
    +    /// ```
    +    /// use quote::quote;
    +    /// use syn::visit::{self, Visit};
    +    /// use syn::{File, ItemFn};
    +    ///
    +    /// struct FnVisitor<'ast> {
    +    ///     functions: Vec<&'ast ItemFn>,
    +    /// }
    +    ///
    +    /// impl<'ast> Visit<'ast> for FnVisitor<'ast> {
    +    ///     fn visit_item_fn(&mut self, node: &'ast ItemFn) {
    +    ///         self.functions.push(node);
    +    ///         visit::visit_item_fn(self, node);
    +    ///     }
    +    /// }
    +    ///
    +    /// fn main() {
    +    ///     let code = quote! {
    +    ///         pub fn f() {
    +    ///             fn g() {}
    +    ///         }
    +    ///     };
    +    ///
    +    ///     let syntax_tree: File = syn::parse2(code).unwrap();
    +    ///     let mut visitor = FnVisitor { functions: Vec::new() };
    +    ///     visitor.visit_file(&syntax_tree);
    +    ///     for f in visitor.functions {
    +    ///         println!("Function with name={}", f.sig.ident);
    +    ///     }
    +    /// }
    +    /// ```
    +    #[cfg(feature = "visit")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "visit")))]
    +    #[rustfmt::skip]
    +    pub mod visit;
    +
    +    /// Syntax tree traversal to mutate an exclusive borrow of a syntax tree in
    +    /// place.
    +    ///
    +    /// Each method of the [`VisitMut`] trait is a hook that can be overridden
    +    /// to customize the behavior when mutating the corresponding type of node.
    +    /// By default, every method recursively visits the substructure of the
    +    /// input by invoking the right visitor method of each of its fields.
    +    ///
    +    /// [`VisitMut`]: visit_mut::VisitMut
    +    ///
    +    /// ```
    +    /// # use syn::{Attribute, BinOp, Expr, ExprBinary};
    +    /// #
    +    /// pub trait VisitMut {
    +    ///     /* ... */
    +    ///
    +    ///     fn visit_expr_binary_mut(&mut self, node: &mut ExprBinary) {
    +    ///         visit_expr_binary_mut(self, node);
    +    ///     }
    +    ///
    +    ///     /* ... */
    +    ///     # fn visit_attribute_mut(&mut self, node: &mut Attribute);
    +    ///     # fn visit_expr_mut(&mut self, node: &mut Expr);
    +    ///     # fn visit_bin_op_mut(&mut self, node: &mut BinOp);
    +    /// }
    +    ///
    +    /// pub fn visit_expr_binary_mut<V>(v: &mut V, node: &mut ExprBinary)
    +    /// where
    +    ///     V: VisitMut + ?Sized,
    +    /// {
    +    ///     for attr in &mut node.attrs {
    +    ///         v.visit_attribute_mut(attr);
    +    ///     }
    +    ///     v.visit_expr_mut(&mut *node.left);
    +    ///     v.visit_bin_op_mut(&mut node.op);
    +    ///     v.visit_expr_mut(&mut *node.right);
    +    /// }
    +    ///
    +    /// /* ... */
    +    /// ```
    +    ///
    +    /// <br>
    +    ///
    +    /// # Example
    +    ///
    +    /// This mut visitor replace occurrences of u256 suffixed integer literals
    +    /// like `999u256` with a macro invocation `bigint::u256!(999)`.
    +    ///
    +    /// ```
    +    /// // [dependencies]
    +    /// // quote = "1.0"
    +    /// // syn = { version = "2.0", features = ["full", "visit-mut"] }
    +    ///
    +    /// use quote::quote;
    +    /// use syn::visit_mut::{self, VisitMut};
    +    /// use syn::{parse_quote, Expr, File, Lit, LitInt};
    +    ///
    +    /// struct BigintReplace;
    +    ///
    +    /// impl VisitMut for BigintReplace {
    +    ///     fn visit_expr_mut(&mut self, node: &mut Expr) {
    +    ///         if let Expr::Lit(expr) = &node {
    +    ///             if let Lit::Int(int) = &expr.lit {
    +    ///                 if int.suffix() == "u256" {
    +    ///                     let digits = int.base10_digits();
    +    ///                     let unsuffixed: LitInt = syn::parse_str(digits).unwrap();
    +    ///                     *node = parse_quote!(bigint::u256!(#unsuffixed));
    +    ///                     return;
    +    ///                 }
    +    ///             }
    +    ///         }
    +    ///
    +    ///         // Delegate to the default impl to visit nested expressions.
    +    ///         visit_mut::visit_expr_mut(self, node);
    +    ///     }
    +    /// }
    +    ///
    +    /// fn main() {
    +    ///     let code = quote! {
    +    ///         fn main() {
    +    ///             let _ = 999u256;
    +    ///         }
    +    ///     };
    +    ///
    +    ///     let mut syntax_tree: File = syn::parse2(code).unwrap();
    +    ///     BigintReplace.visit_file_mut(&mut syntax_tree);
    +    ///     println!("{}", quote!(#syntax_tree));
    +    /// }
    +    /// ```
    +    #[cfg(feature = "visit-mut")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "visit-mut")))]
    +    #[rustfmt::skip]
    +    pub mod visit_mut;
    +
    +    #[cfg(feature = "clone-impls")]
         #[rustfmt::skip]
         mod clone;
     
    -    #[cfg(feature = "extra-traits")]
    -    #[rustfmt::skip]
    -    mod eq;
    -
    -    #[cfg(feature = "extra-traits")]
    -    #[rustfmt::skip]
    -    mod hash;
    -
    -    #[cfg(feature = "extra-traits")]
    +    #[cfg(feature = "extra-traits")]
         #[rustfmt::skip]
         mod debug;
     
    -    #[cfg(any(feature = "full", feature = "derive"))]
    -    #[path = "../gen_helper.rs"]
    -    mod helper;
    +    #[cfg(feature = "extra-traits")]
    +    #[rustfmt::skip]
    +    mod eq;
    +
    +    #[cfg(feature = "extra-traits")]
    +    #[rustfmt::skip]
    +    mod hash;
     }
    -pub use crate::gen::*;
    +
    +#[cfg(feature = "fold")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "fold")))]
    +pub use crate::gen::fold;
    +
    +#[cfg(feature = "visit")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "visit")))]
    +pub use crate::gen::visit;
    +
    +#[cfg(feature = "visit-mut")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "visit-mut")))]
    +pub use crate::gen::visit_mut;
     
     // Not public API.
     #[doc(hidden)]
    -#[path = "export.rs"]
    +#[path = "export.rs"]
     pub mod __private;
     
    -mod custom_keyword;
    -mod custom_punctuation;
    -mod sealed;
    -mod span;
    -mod thread;
    -
    -#[cfg(feature = "parsing")]
    -mod lookahead;
    -
    -#[cfg(feature = "parsing")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    -pub mod parse;
    -
    -#[cfg(feature = "full")]
    -mod reserved;
    -
    -#[cfg(all(any(feature = "full", feature = "derive"), feature = "parsing"))]
    -mod verbatim;
    -
    -#[cfg(all(any(feature = "full", feature = "derive"), feature = "printing"))]
    -mod print;
    -
    -////////////////////////////////////////////////////////////////////////////////
    -
    -mod error;
    -pub use crate::error::{Error, Result};
    -
     /// Parse tokens of source code into the chosen syntax tree node.
     ///
     /// This is preferred over parsing a string because tokens are able to preserve
    -/// information about where in the user's code they were originally written (the
    -/// "span" of the token), possibly allowing the compiler to produce better error
    +/// information about where in the user's code they were originally written (the
    +/// "span" of the token), possibly allowing the compiler to produce better error
     /// messages.
     ///
     /// This function parses a `proc_macro::TokenStream` which is the type used for
    @@ -1815,49 +1904,16 @@
     ///
     /// [`syn::parse2`]: parse2
     ///
    -/// *This function is available only if Syn is built with both the `"parsing"` and
    -/// `"proc-macro"` features.*
    -///
    -/// # Examples
    -///
    -/// ```
    -/// # extern crate proc_macro;
    -/// #
    -/// use proc_macro::TokenStream;
    -/// use quote::quote;
    -/// use syn::DeriveInput;
    -///
    -/// # const IGNORE_TOKENS: &str = stringify! {
    -/// #[proc_macro_derive(MyMacro)]
    -/// # };
    -/// pub fn my_macro(input: TokenStream) -> TokenStream {
    -///     // Parse the tokens into a syntax tree
    -///     let ast: DeriveInput = syn::parse(input).unwrap();
    -///
    -///     // Build the output, possibly using quasi-quotation
    -///     let expanded = quote! {
    -///         /* ... */
    -///     };
    -///
    -///     // Convert into a token stream and return it
    -///     expanded.into()
    -/// }
    -/// ```
    -#[cfg(all(
    -    not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
    -    feature = "parsing",
    -    feature = "proc-macro"
    -))]
    -#[cfg_attr(doc_cfg, doc(cfg(all(feature = "parsing", feature = "proc-macro"))))]
    +/// This function enforces that the input is fully parsed. If there are any
    +/// unparsed tokens at the end of the stream, an error is returned.
    +#[cfg(all(feature = "parsing", feature = "proc-macro"))]
    +#[cfg_attr(docsrs, doc(cfg(all(feature = "parsing", feature = "proc-macro"))))]
     pub fn parse<T: parse::Parse>(tokens: proc_macro::TokenStream) -> Result<T> {
         parse::Parser::parse(T::parse, tokens)
     }
     
     /// Parse a proc-macro2 token stream into the chosen syntax tree node.
     ///
    -/// This function will check that the input is fully parsed. If there are
    -/// any unparsed tokens at the end of the stream, an error is returned.
    -///
     /// This function parses a `proc_macro2::TokenStream` which is commonly useful
     /// when the input comes from a node of the Syn syntax tree, for example the
     /// body tokens of a [`Macro`] node. When in a procedural macro parsing the
    @@ -1866,16 +1922,18 @@
     ///
     /// [`syn::parse`]: parse()
     ///
    -/// *This function is available only if Syn is built with the `"parsing"` feature.*
    -#[cfg(feature = "parsing")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +/// This function enforces that the input is fully parsed. If there are any
    +/// unparsed tokens at the end of the stream, an error is returned.
    +#[cfg(feature = "parsing")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
     pub fn parse2<T: parse::Parse>(tokens: proc_macro2::TokenStream) -> Result<T> {
         parse::Parser::parse2(T::parse, tokens)
     }
     
     /// Parse a string of Rust code into the chosen syntax tree node.
     ///
    -/// *This function is available only if Syn is built with the `"parsing"` feature.*
    +/// This function enforces that the input is fully parsed. If there are any
    +/// unparsed tokens at the end of the stream, an error is returned.
     ///
     /// # Hygiene
     ///
    @@ -1888,23 +1946,21 @@
     /// use syn::{Expr, Result};
     ///
     /// fn run() -> Result<()> {
    -///     let code = "assert_eq!(u8::max_value(), 255)";
    +///     let code = "assert_eq!(u8::max_value(), 255)";
     ///     let expr = syn::parse_str::<Expr>(code)?;
    -///     println!("{:#?}", expr);
    +///     println!("{:#?}", expr);
     ///     Ok(())
     /// }
     /// #
     /// # run().unwrap();
     /// ```
    -#[cfg(feature = "parsing")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +#[cfg(feature = "parsing")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
     pub fn parse_str<T: parse::Parse>(s: &str) -> Result<T> {
         parse::Parser::parse_str(T::parse, s)
     }
     
    -// FIXME the name parse_file makes it sound like you might pass in a path to a
    -// file, rather than the content.
    -/// Parse the content of a file of Rust code.
    +/// Parse the content of a file of Rust code.
     ///
     /// This is different from `syn::parse_str::<File>(content)` in two ways:
     ///
    @@ -1913,51 +1969,45 @@
     ///
     /// If present, either of these would be an error using `from_str`.
     ///
    -/// *This function is available only if Syn is built with the `"parsing"` and
    -/// `"full"` features.*
    -///
     /// # Examples
     ///
     /// ```no_run
     /// use std::error::Error;
    -/// use std::fs::File;
    +/// use std::fs;
     /// use std::io::Read;
     ///
    -/// fn run() -> Result<(), Box<Error>> {
    -///     let mut file = File::open("path/to/code.rs")?;
    -///     let mut content = String::new();
    -///     file.read_to_string(&mut content)?;
    -///
    +/// fn run() -> Result<(), Box<dyn Error>> {
    +///     let content = fs::read_to_string("path/to/code.rs")?;
     ///     let ast = syn::parse_file(&content)?;
     ///     if let Some(shebang) = ast.shebang {
    -///         println!("{}", shebang);
    +///         println!("{}", shebang);
     ///     }
    -///     println!("{} items", ast.items.len());
    +///     println!("{} items", ast.items.len());
     ///
     ///     Ok(())
     /// }
     /// #
     /// # run().unwrap();
     /// ```
    -#[cfg(all(feature = "parsing", feature = "full"))]
    -#[cfg_attr(doc_cfg, doc(cfg(all(feature = "parsing", feature = "full"))))]
    +#[cfg(all(feature = "parsing", feature = "full"))]
    +#[cfg_attr(docsrs, doc(cfg(all(feature = "parsing", feature = "full"))))]
     pub fn parse_file(mut content: &str) -> Result<File> {
         // Strip the BOM if it is present
    -    const BOM: &str = "\u{feff}";
    +    const BOM: &str = "\u{feff}";
         if content.starts_with(BOM) {
             content = &content[BOM.len()..];
         }
     
         let mut shebang = None;
    -    if content.starts_with("#!") {
    +    if content.starts_with("#!") {
             let rest = whitespace::skip(&content[2..]);
    -        if !rest.starts_with('[') {
    -            if let Some(idx) = content.find('\n') {
    +        if !rest.starts_with('[') {
    +            if let Some(idx) = content.find('\n') {
                     shebang = Some(content[..idx].to_string());
                     content = &content[idx..];
                 } else {
                     shebang = Some(content.to_string());
    -                content = "";
    +                content = "";
                 }
             }
         }
    diff --git a/src/syn/lifetime.rs.html b/src/syn/lifetime.rs.html
    index ffe682d..680a8e5 100644
    --- a/src/syn/lifetime.rs.html
    +++ b/src/syn/lifetime.rs.html
    @@ -1,4 +1,5 @@
    -lifetime.rs - source
    1
    +lifetime.rs - source

    syn/
    lifetime.rs

    +1
     2
     3
     4
    @@ -152,20 +153,20 @@
     152
     153
     154
    -
    use proc_macro2::{Ident, Span};
    +155
    +156
    #[cfg(feature = "parsing")]
    +use crate::lookahead;
    +use proc_macro2::{Ident, Span};
     use std::cmp::Ordering;
     use std::fmt::{self, Display};
     use std::hash::{Hash, Hasher};
     
    -#[cfg(feature = "parsing")]
    -use crate::lookahead;
    -
    -/// A Rust lifetime: `'a`.
    +/// A Rust lifetime: `'a`.
     ///
     /// Lifetime names must conform to the following rules:
     ///
     /// - Must start with an apostrophe.
    -/// - Must not consist of just an apostrophe: `'`.
    +/// - Must not consist of just an apostrophe: `'`.
     /// - Character after the apostrophe must be `_` or a Unicode code point with
     ///   the XID_Start property.
     /// - All following characters must be Unicode code points with the XID_Continue
    @@ -187,23 +188,23 @@
         /// # use syn::Lifetime;
         /// #
         /// # fn f() -> Lifetime {
    -    /// Lifetime::new("'a", Span::call_site())
    +    /// Lifetime::new("'a", Span::call_site())
         /// # }
         /// ```
         pub fn new(symbol: &str, span: Span) -> Self {
    -        if !symbol.starts_with('\'') {
    +        if !symbol.starts_with('\'') {
                 panic!(
    -                "lifetime name must start with apostrophe as in \"'a\", got {:?}",
    +                "lifetime name must start with apostrophe as in \"'a\", got {:?}",
                     symbol
                 );
             }
     
    -        if symbol == "'" {
    -            panic!("lifetime name must not be empty");
    +        if symbol == "'" {
    +            panic!("lifetime name must not be empty");
             }
     
             if !crate::ident::xid_ok(&symbol[1..]) {
    -            panic!("{:?} is not a valid lifetime name", symbol);
    +            panic!("{:?} is not a valid lifetime name", symbol);
             }
     
             Lifetime {
    @@ -226,7 +227,7 @@
     
     impl Display for Lifetime {
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    -        "'".fmt(formatter)?;
    +        "'".fmt(formatter)?;
             self.ident.fmt(formatter)
         }
     }
    @@ -266,40 +267,43 @@
         }
     }
     
    -#[cfg(feature = "parsing")]
    -#[doc(hidden)]
    -#[allow(non_snake_case)]
    -pub fn Lifetime(marker: lookahead::TokenMarker) -> Lifetime {
    -    match marker {}
    +#[cfg(feature = "parsing")]
    +pub_if_not_doc! {
    +    #[doc(hidden)]
    +    #[allow(non_snake_case)]
    +    pub fn Lifetime(marker: lookahead::TokenMarker) -> Lifetime {
    +        match marker {}
    +    }
     }
     
    -#[cfg(feature = "parsing")]
    -pub mod parsing {
    -    use super::*;
    -    use crate::parse::{Parse, ParseStream, Result};
    +#[cfg(feature = "parsing")]
    +pub(crate) mod parsing {
    +    use crate::error::Result;
    +    use crate::lifetime::Lifetime;
    +    use crate::parse::{Parse, ParseStream};
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for Lifetime {
             fn parse(input: ParseStream) -> Result<Self> {
                 input.step(|cursor| {
                     cursor
                         .lifetime()
    -                    .ok_or_else(|| cursor.error("expected lifetime"))
    +                    .ok_or_else(|| cursor.error("expected lifetime"))
                 })
             }
         }
     }
     
    -#[cfg(feature = "printing")]
    +#[cfg(feature = "printing")]
     mod printing {
    -    use super::*;
    +    use crate::lifetime::Lifetime;
         use proc_macro2::{Punct, Spacing, TokenStream};
         use quote::{ToTokens, TokenStreamExt};
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for Lifetime {
             fn to_tokens(&self, tokens: &mut TokenStream) {
    -            let mut apostrophe = Punct::new('\'', Spacing::Joint);
    +            let mut apostrophe = Punct::new('\'', Spacing::Joint);
                 apostrophe.set_span(self.apostrophe);
                 tokens.append(apostrophe);
                 self.ident.to_tokens(tokens);
    diff --git a/src/syn/lit.rs.html b/src/syn/lit.rs.html
    index a5c0900..5de3c7b 100644
    --- a/src/syn/lit.rs.html
    +++ b/src/syn/lit.rs.html
    @@ -1,4 +1,5 @@
    -lit.rs - source
    1
    +lit.rs - source

    syn/
    lit.rs

    +1
     2
     3
     4
    @@ -1597,38 +1598,312 @@
     1597
     1598
     1599
    -
    #[cfg(feature = "parsing")]
    +1600
    +1601
    +1602
    +1603
    +1604
    +1605
    +1606
    +1607
    +1608
    +1609
    +1610
    +1611
    +1612
    +1613
    +1614
    +1615
    +1616
    +1617
    +1618
    +1619
    +1620
    +1621
    +1622
    +1623
    +1624
    +1625
    +1626
    +1627
    +1628
    +1629
    +1630
    +1631
    +1632
    +1633
    +1634
    +1635
    +1636
    +1637
    +1638
    +1639
    +1640
    +1641
    +1642
    +1643
    +1644
    +1645
    +1646
    +1647
    +1648
    +1649
    +1650
    +1651
    +1652
    +1653
    +1654
    +1655
    +1656
    +1657
    +1658
    +1659
    +1660
    +1661
    +1662
    +1663
    +1664
    +1665
    +1666
    +1667
    +1668
    +1669
    +1670
    +1671
    +1672
    +1673
    +1674
    +1675
    +1676
    +1677
    +1678
    +1679
    +1680
    +1681
    +1682
    +1683
    +1684
    +1685
    +1686
    +1687
    +1688
    +1689
    +1690
    +1691
    +1692
    +1693
    +1694
    +1695
    +1696
    +1697
    +1698
    +1699
    +1700
    +1701
    +1702
    +1703
    +1704
    +1705
    +1706
    +1707
    +1708
    +1709
    +1710
    +1711
    +1712
    +1713
    +1714
    +1715
    +1716
    +1717
    +1718
    +1719
    +1720
    +1721
    +1722
    +1723
    +1724
    +1725
    +1726
    +1727
    +1728
    +1729
    +1730
    +1731
    +1732
    +1733
    +1734
    +1735
    +1736
    +1737
    +1738
    +1739
    +1740
    +1741
    +1742
    +1743
    +1744
    +1745
    +1746
    +1747
    +1748
    +1749
    +1750
    +1751
    +1752
    +1753
    +1754
    +1755
    +1756
    +1757
    +1758
    +1759
    +1760
    +1761
    +1762
    +1763
    +1764
    +1765
    +1766
    +1767
    +1768
    +1769
    +1770
    +1771
    +1772
    +1773
    +1774
    +1775
    +1776
    +1777
    +1778
    +1779
    +1780
    +1781
    +1782
    +1783
    +1784
    +1785
    +1786
    +1787
    +1788
    +1789
    +1790
    +1791
    +1792
    +1793
    +1794
    +1795
    +1796
    +1797
    +1798
    +1799
    +1800
    +1801
    +1802
    +1803
    +1804
    +1805
    +1806
    +1807
    +1808
    +1809
    +1810
    +1811
    +1812
    +1813
    +1814
    +1815
    +1816
    +1817
    +1818
    +1819
    +1820
    +1821
    +1822
    +1823
    +1824
    +1825
    +1826
    +1827
    +1828
    +1829
    +1830
    +1831
    +1832
    +1833
    +1834
    +1835
    +1836
    +1837
    +1838
    +1839
    +1840
    +1841
    +1842
    +1843
    +1844
    +1845
    +1846
    +1847
    +1848
    +1849
    +1850
    +1851
    +1852
    +1853
    +1854
    +1855
    +1856
    +1857
    +1858
    +1859
    +1860
    +1861
    +1862
    +1863
    +1864
    +1865
    +1866
    +1867
    +1868
    +1869
    #[cfg(feature = "parsing")]
     use crate::lookahead;
    -#[cfg(feature = "parsing")]
    +#[cfg(feature = "parsing")]
     use crate::parse::{Parse, Parser};
     use crate::{Error, Result};
     use proc_macro2::{Ident, Literal, Span};
    -#[cfg(feature = "parsing")]
    +#[cfg(feature = "parsing")]
     use proc_macro2::{TokenStream, TokenTree};
    +use std::ffi::{CStr, CString};
     use std::fmt::{self, Display};
    -#[cfg(feature = "extra-traits")]
    +#[cfg(feature = "extra-traits")]
     use std::hash::{Hash, Hasher};
     use std::str::{self, FromStr};
     
    -ast_enum_of_structs! {
    +ast_enum_of_structs! {
         /// A Rust literal such as a string or integer or boolean.
         ///
         /// # Syntax tree enum
         ///
         /// This type is a [syntax tree enum].
         ///
    -    /// [syntax tree enum]: crate::Expr#syntax-tree-enums
    +    /// [syntax tree enum]: crate::expr::Expr#syntax-tree-enums
    +    #[non_exhaustive]
         pub enum Lit {
    -        /// A UTF-8 string literal: `"foo"`.
    +        /// A UTF-8 string literal: `"foo"`.
             Str(LitStr),
     
    -        /// A byte string literal: `b"foo"`.
    +        /// A byte string literal: `b"foo"`.
             ByteStr(LitByteStr),
     
    -        /// A byte literal: `b'f'`.
    +        /// A nul-terminated C-string literal: `c"foo"`.
    +        CStr(LitCStr),
    +
    +        /// A byte literal: `b'f'`.
             Byte(LitByte),
     
    -        /// A character literal: `'a'`.
    +        /// A character literal: `'a'`.
             Char(LitChar),
     
             /// An integer literal: `1` or `1u16`.
    @@ -1647,29 +1922,36 @@
         }
     }
     
    -ast_struct! {
    -    /// A UTF-8 string literal: `"foo"`.
    +ast_struct! {
    +    /// A UTF-8 string literal: `"foo"`.
         pub struct LitStr {
             repr: Box<LitRepr>,
         }
     }
     
    -ast_struct! {
    -    /// A byte string literal: `b"foo"`.
    +ast_struct! {
    +    /// A byte string literal: `b"foo"`.
         pub struct LitByteStr {
             repr: Box<LitRepr>,
         }
     }
     
    -ast_struct! {
    -    /// A byte literal: `b'f'`.
    +ast_struct! {
    +    /// A nul-terminated C-string literal: `c"foo"`.
    +    pub struct LitCStr {
    +        repr: Box<LitRepr>,
    +    }
    +}
    +
    +ast_struct! {
    +    /// A byte literal: `b'f'`.
         pub struct LitByte {
             repr: Box<LitRepr>,
         }
     }
     
    -ast_struct! {
    -    /// A character literal: `'a'`.
    +ast_struct! {
    +    /// A character literal: `'a'`.
         pub struct LitChar {
             repr: Box<LitRepr>,
         }
    @@ -1680,7 +1962,7 @@
         suffix: Box<str>,
     }
     
    -ast_struct! {
    +ast_struct! {
         /// An integer literal: `1` or `1u16`.
         pub struct LitInt {
             repr: Box<LitIntRepr>,
    @@ -1693,7 +1975,7 @@
         suffix: Box<str>,
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A floating point literal: `1f64` or `1.0e10f64`.
         ///
         /// Must be finite. May not be infinite or NaN.
    @@ -1708,7 +1990,7 @@
         suffix: Box<str>,
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A boolean literal: `true` or `false`.
         pub struct LitBool {
             pub value: bool,
    @@ -1741,32 +2023,32 @@
         /// # Example
         ///
         /// ```
    -    /// use proc_macro2::Span;
    -    /// use syn::{Attribute, Error, Ident, Lit, Meta, MetaNameValue, Path, Result};
    +    /// use syn::{Attribute, Error, Expr, Lit, Meta, Path, Result};
         ///
         /// // Parses the path from an attribute that looks like:
         /// //
    -    /// //     #[path = "a::b::c"]
    +    /// //     #[path = "a::b::c"]
         /// //
         /// // or returns `None` if the input is some other attribute.
         /// fn get_path(attr: &Attribute) -> Result<Option<Path>> {
    -    ///     if !attr.path.is_ident("path") {
    +    ///     if !attr.path().is_ident("path") {
         ///         return Ok(None);
         ///     }
         ///
    -    ///     match attr.parse_meta()? {
    -    ///         Meta::NameValue(MetaNameValue { lit: Lit::Str(lit_str), .. }) => {
    -    ///             lit_str.parse().map(Some)
    -    ///         }
    -    ///         _ => {
    -    ///             let message = "expected #[path = \"...\"]";
    -    ///             Err(Error::new_spanned(attr, message))
    +    ///     if let Meta::NameValue(meta) = &attr.meta {
    +    ///         if let Expr::Lit(expr) = &meta.value {
    +    ///             if let Lit::Str(lit_str) = &expr.lit {
    +    ///                 return lit_str.parse().map(Some);
    +    ///             }
         ///         }
         ///     }
    +    ///
    +    ///     let message = "expected #[path = \"...\"]";
    +    ///     Err(Error::new_spanned(attr, message))
         /// }
         /// ```
    -    #[cfg(feature = "parsing")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "parsing")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         pub fn parse<T: Parse>(&self) -> Result<T> {
             self.parse_with(T::parse)
         }
    @@ -1782,21 +2064,21 @@
         /// # use syn::{LitStr, Result};
         /// #
         /// # fn main() -> Result<()> {
    -    /// #     let lit_str = LitStr::new("a::b::c", Span::call_site());
    +    /// #     let lit_str = LitStr::new("a::b::c", Span::call_site());
         /// #
         /// #     const IGNORE: &str = stringify! {
         /// let lit_str: LitStr = /* ... */;
         /// #     };
         ///
    -    /// // Parse a string literal like "a::b::c" into a Path, not allowing
    +    /// // Parse a string literal like "a::b::c" into a Path, not allowing
         /// // generic arguments on any of the path segments.
         /// let basic_path = lit_str.parse_with(syn::Path::parse_mod_style)?;
         /// #
         /// #     Ok(())
         /// # }
         /// ```
    -    #[cfg(feature = "parsing")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "parsing")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         pub fn parse_with<F: Parser>(&self, parser: F) -> Result<F::Output> {
             use proc_macro2::Group;
     
    @@ -1822,11 +2104,22 @@
             }
     
             // Parse string literal into a token stream with every span equal to the
    -        // original literal's span.
    -        let mut tokens = TokenStream::from_str(&self.value())?;
    -        tokens = respan_token_stream(tokens, self.span());
    +        // original literal's span.
    +        let span = self.span();
    +        let mut tokens = TokenStream::from_str(&self.value())?;
    +        tokens = respan_token_stream(tokens, span);
     
    -        parser.parse2(tokens)
    +        let result = crate::parse::parse_scoped(parser, span, tokens)?;
    +
    +        let suffix = self.suffix();
    +        if !suffix.is_empty() {
    +            return Err(Error::new(
    +                self.span(),
    +                format!("unexpected suffix `{}` on string literal", suffix),
    +            ));
    +        }
    +
    +        Ok(result)
         }
     
         pub fn span(&self) -> Span {
    @@ -1881,6 +2174,41 @@
         }
     }
     
    +impl LitCStr {
    +    pub fn new(value: &CStr, span: Span) -> Self {
    +        let mut token = Literal::c_string(value);
    +        token.set_span(span);
    +        LitCStr {
    +            repr: Box::new(LitRepr {
    +                token,
    +                suffix: Box::<str>::default(),
    +            }),
    +        }
    +    }
    +
    +    pub fn value(&self) -> CString {
    +        let repr = self.repr.token.to_string();
    +        let (value, _suffix) = value::parse_lit_c_str(&repr);
    +        value
    +    }
    +
    +    pub fn span(&self) -> Span {
    +        self.repr.token.span()
    +    }
    +
    +    pub fn set_span(&mut self, span: Span) {
    +        self.repr.token.set_span(span);
    +    }
    +
    +    pub fn suffix(&self) -> &str {
    +        &self.repr.suffix
    +    }
    +
    +    pub fn token(&self) -> Literal {
    +        self.repr.token.clone()
    +    }
    +}
    +
     impl LitByte {
         pub fn new(value: u8, span: Span) -> Self {
             let mut token = Literal::u8_suffixed(value);
    @@ -1955,14 +2283,10 @@
         pub fn new(repr: &str, span: Span) -> Self {
             let (digits, suffix) = match value::parse_lit_int(repr) {
                 Some(parse) => parse,
    -            None => panic!("Not an integer literal: `{}`", repr),
    -        };
    -
    -        let mut token = match value::to_literal(repr, &digits, &suffix) {
    -            Some(token) => token,
    -            None => panic!("Unsupported integer literal: `{}`", repr),
    +            None => panic!("not an integer literal: `{}`", repr),
             };
     
    +        let mut token: Literal = repr.parse().unwrap();
             token.set_span(span);
             LitInt {
                 repr: Box::new(LitIntRepr {
    @@ -2038,7 +2362,7 @@
                     }),
                 }
             } else {
    -            panic!("Not an integer literal: `{}`", repr);
    +            panic!("not an integer literal: `{}`", repr);
             }
         }
     }
    @@ -2053,14 +2377,10 @@
         pub fn new(repr: &str, span: Span) -> Self {
             let (digits, suffix) = match value::parse_lit_float(repr) {
                 Some(parse) => parse,
    -            None => panic!("Not a float literal: `{}`", repr),
    -        };
    -
    -        let mut token = match value::to_literal(repr, &digits, &suffix) {
    -            Some(token) => token,
    -            None => panic!("Unsupported float literal: `{}`", repr),
    +            None => panic!("not a float literal: `{}`", repr),
             };
     
    +        let mut token: Literal = repr.parse().unwrap();
             token.set_span(span);
             LitFloat {
                 repr: Box::new(LitFloatRepr {
    @@ -2114,7 +2434,7 @@
                     }),
                 }
             } else {
    -            panic!("Not a float literal: `{}`", repr);
    +            panic!("not a float literal: `{}`", repr);
             }
         }
     }
    @@ -2143,89 +2463,147 @@
         }
     
         pub fn token(&self) -> Ident {
    -        let s = if self.value { "true" } else { "false" };
    +        let s = if self.value { "true" } else { "false" };
             Ident::new(s, self.span)
         }
     }
     
    -#[cfg(feature = "extra-traits")]
    +#[cfg(feature = "extra-traits")]
     mod debug_impls {
    -    use super::*;
    +    use crate::lit::{LitBool, LitByte, LitByteStr, LitCStr, LitChar, LitFloat, LitInt, LitStr};
         use std::fmt::{self, Debug};
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
         impl Debug for LitStr {
             fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +            self.debug(formatter, "LitStr")
    +        }
    +    }
    +
    +    impl LitStr {
    +        pub(crate) fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
                 formatter
    -                .debug_struct("LitStr")
    -                .field("token", &format_args!("{}", self.repr.token))
    +                .debug_struct(name)
    +                .field("token", &format_args!("{}", self.repr.token))
                     .finish()
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
         impl Debug for LitByteStr {
             fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +            self.debug(formatter, "LitByteStr")
    +        }
    +    }
    +
    +    impl LitByteStr {
    +        pub(crate) fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
                 formatter
    -                .debug_struct("LitByteStr")
    -                .field("token", &format_args!("{}", self.repr.token))
    +                .debug_struct(name)
    +                .field("token", &format_args!("{}", self.repr.token))
                     .finish()
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +    impl Debug for LitCStr {
    +        fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +            self.debug(formatter, "LitCStr")
    +        }
    +    }
    +
    +    impl LitCStr {
    +        pub(crate) fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
    +            formatter
    +                .debug_struct(name)
    +                .field("token", &format_args!("{}", self.repr.token))
    +                .finish()
    +        }
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
         impl Debug for LitByte {
             fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +            self.debug(formatter, "LitByte")
    +        }
    +    }
    +
    +    impl LitByte {
    +        pub(crate) fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
                 formatter
    -                .debug_struct("LitByte")
    -                .field("token", &format_args!("{}", self.repr.token))
    +                .debug_struct(name)
    +                .field("token", &format_args!("{}", self.repr.token))
                     .finish()
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
         impl Debug for LitChar {
             fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +            self.debug(formatter, "LitChar")
    +        }
    +    }
    +
    +    impl LitChar {
    +        pub(crate) fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
                 formatter
    -                .debug_struct("LitChar")
    -                .field("token", &format_args!("{}", self.repr.token))
    +                .debug_struct(name)
    +                .field("token", &format_args!("{}", self.repr.token))
                     .finish()
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
         impl Debug for LitInt {
             fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +            self.debug(formatter, "LitInt")
    +        }
    +    }
    +
    +    impl LitInt {
    +        pub(crate) fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
                 formatter
    -                .debug_struct("LitInt")
    -                .field("token", &format_args!("{}", self.repr.token))
    +                .debug_struct(name)
    +                .field("token", &format_args!("{}", self.repr.token))
                     .finish()
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
         impl Debug for LitFloat {
             fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +            self.debug(formatter, "LitFloat")
    +        }
    +    }
    +
    +    impl LitFloat {
    +        pub(crate) fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
                 formatter
    -                .debug_struct("LitFloat")
    -                .field("token", &format_args!("{}", self.repr.token))
    +                .debug_struct(name)
    +                .field("token", &format_args!("{}", self.repr.token))
                     .finish()
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
         impl Debug for LitBool {
             fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    +            self.debug(formatter, "LitBool")
    +        }
    +    }
    +
    +    impl LitBool {
    +        pub(crate) fn debug(&self, formatter: &mut fmt::Formatter, name: &str) -> fmt::Result {
                 formatter
    -                .debug_struct("LitBool")
    -                .field("value", &self.value)
    +                .debug_struct(name)
    +                .field("value", &self.value)
                     .finish()
             }
         }
     }
     
    -#[cfg(feature = "clone-impls")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    +#[cfg(feature = "clone-impls")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
     impl Clone for LitRepr {
         fn clone(&self) -> Self {
             LitRepr {
    @@ -2235,8 +2613,8 @@
         }
     }
     
    -#[cfg(feature = "clone-impls")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    +#[cfg(feature = "clone-impls")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
     impl Clone for LitIntRepr {
         fn clone(&self) -> Self {
             LitIntRepr {
    @@ -2247,8 +2625,8 @@
         }
     }
     
    -#[cfg(feature = "clone-impls")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    +#[cfg(feature = "clone-impls")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
     impl Clone for LitFloatRepr {
         fn clone(&self) -> Self {
             LitFloatRepr {
    @@ -2259,10 +2637,10 @@
         }
     }
     
    -macro_rules! lit_extra_traits {
    +macro_rules! lit_extra_traits {
         ($ty:ident) => {
    -        #[cfg(feature = "clone-impls")]
    -        #[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    +        #[cfg(feature = "clone-impls")]
    +        #[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
             impl Clone for $ty {
                 fn clone(&self) -> Self {
                     $ty {
    @@ -2271,16 +2649,16 @@
                 }
             }
     
    -        #[cfg(feature = "extra-traits")]
    -        #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    +        #[cfg(feature = "extra-traits")]
    +        #[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
             impl PartialEq for $ty {
                 fn eq(&self, other: &Self) -> bool {
                     self.repr.token.to_string() == other.repr.token.to_string()
                 }
             }
     
    -        #[cfg(feature = "extra-traits")]
    -        #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    +        #[cfg(feature = "extra-traits")]
    +        #[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
             impl Hash for $ty {
                 fn hash<H>(&self, state: &mut H)
                 where
    @@ -2290,57 +2668,70 @@
                 }
             }
     
    -        #[cfg(feature = "parsing")]
    -        #[doc(hidden)]
    -        #[allow(non_snake_case)]
    -        pub fn $ty(marker: lookahead::TokenMarker) -> $ty {
    -            match marker {}
    +        #[cfg(feature = "parsing")]
    +        pub_if_not_doc! {
    +            #[doc(hidden)]
    +            #[allow(non_snake_case)]
    +            pub fn $ty(marker: lookahead::TokenMarker) -> $ty {
    +                match marker {}
    +            }
             }
         };
     }
     
     lit_extra_traits!(LitStr);
     lit_extra_traits!(LitByteStr);
    +lit_extra_traits!(LitCStr);
     lit_extra_traits!(LitByte);
     lit_extra_traits!(LitChar);
     lit_extra_traits!(LitInt);
     lit_extra_traits!(LitFloat);
     
    -#[cfg(feature = "parsing")]
    -#[doc(hidden)]
    -#[allow(non_snake_case)]
    -pub fn LitBool(marker: lookahead::TokenMarker) -> LitBool {
    -    match marker {}
    -}
    -
    -ast_enum! {
    -    /// The style of a string literal, either plain quoted or a raw string like
    -    /// `r##"data"##`.
    -    pub enum StrStyle #no_visit {
    -        /// An ordinary string like `"data"`.
    -        Cooked,
    -        /// A raw string like `r##"data"##`.
    -        ///
    -        /// The unsigned integer is the number of `#` symbols used.
    -        Raw(usize),
    +#[cfg(feature = "parsing")]
    +pub_if_not_doc! {
    +    #[doc(hidden)]
    +    #[allow(non_snake_case)]
    +    pub fn LitBool(marker: lookahead::TokenMarker) -> LitBool {
    +        match marker {}
         }
     }
     
    -#[cfg(feature = "parsing")]
    -#[doc(hidden)]
    -#[allow(non_snake_case)]
    -pub fn Lit(marker: lookahead::TokenMarker) -> Lit {
    -    match marker {}
    +/// The style of a string literal, either plain quoted or a raw string like
    +/// `r##"data"##`.
    +#[doc(hidden)] // https://github.com/dtolnay/syn/issues/1566
    +pub enum StrStyle {
    +    /// An ordinary string like `"data"`.
    +    Cooked,
    +    /// A raw string like `r##"data"##`.
    +    ///
    +    /// The unsigned integer is the number of `#` symbols used.
    +    Raw(usize),
     }
     
    -#[cfg(feature = "parsing")]
    -pub mod parsing {
    -    use super::*;
    -    use crate::buffer::Cursor;
    -    use crate::parse::{Parse, ParseStream, Result};
    -    use proc_macro2::Punct;
    +#[cfg(feature = "parsing")]
    +pub_if_not_doc! {
    +    #[doc(hidden)]
    +    #[allow(non_snake_case)]
    +    pub fn Lit(marker: lookahead::TokenMarker) -> Lit {
    +        match marker {}
    +    }
    +}
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +#[cfg(feature = "parsing")]
    +pub(crate) mod parsing {
    +    use crate::buffer::Cursor;
    +    use crate::error::Result;
    +    use crate::lit::{
    +        value, Lit, LitBool, LitByte, LitByteStr, LitCStr, LitChar, LitFloat, LitFloatRepr, LitInt,
    +        LitIntRepr, LitStr,
    +    };
    +    use crate::parse::{Parse, ParseStream, Unexpected};
    +    use crate::token::{self, Token};
    +    use proc_macro2::{Literal, Punct, Span};
    +    use std::cell::Cell;
    +    use std::rc::Rc;
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for Lit {
             fn parse(input: ParseStream) -> Result<Self> {
                 input.step(|cursor| {
    @@ -2349,8 +2740,8 @@
                     }
     
                     if let Some((ident, rest)) = cursor.ident() {
    -                    let value = ident == "true";
    -                    if value || ident == "false" {
    +                    let value = ident == "true";
    +                    if value || ident == "false" {
                             let lit_bool = LitBool {
                                 value,
                                 span: ident.span(),
    @@ -2360,14 +2751,14 @@
                     }
     
                     if let Some((punct, rest)) = cursor.punct() {
    -                    if punct.as_char() == '-' {
    +                    if punct.as_char() == '-' {
                             if let Some((lit, rest)) = parse_negative_lit(punct, rest) {
                                 return Ok((lit, rest));
                             }
                         }
                     }
     
    -                Err(cursor.error("expected literal"))
    +                Err(cursor.error("expected literal"))
                 })
             }
         }
    @@ -2379,26 +2770,25 @@
             span = span.join(lit.span()).unwrap_or(span);
     
             let mut repr = lit.to_string();
    -        repr.insert(0, '-');
    +        repr.insert(0, '-');
     
             if let Some((digits, suffix)) = value::parse_lit_int(&repr) {
    -            if let Some(mut token) = value::to_literal(&repr, &digits, &suffix) {
    -                token.set_span(span);
    -                return Some((
    -                    Lit::Int(LitInt {
    -                        repr: Box::new(LitIntRepr {
    -                            token,
    -                            digits,
    -                            suffix,
    -                        }),
    +            let mut token: Literal = repr.parse().unwrap();
    +            token.set_span(span);
    +            return Some((
    +                Lit::Int(LitInt {
    +                    repr: Box::new(LitIntRepr {
    +                        token,
    +                        digits,
    +                        suffix,
                         }),
    -                    rest,
    -                ));
    -            }
    +                }),
    +                rest,
    +            ));
             }
     
             let (digits, suffix) = value::parse_lit_float(&repr)?;
    -        let mut token = value::to_literal(&repr, &digits, &suffix)?;
    +        let mut token: Literal = repr.parse().unwrap();
             token.set_span(span);
             Some((
                 Lit::Float(LitFloat {
    @@ -2412,133 +2802,187 @@
             ))
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for LitStr {
             fn parse(input: ParseStream) -> Result<Self> {
                 let head = input.fork();
                 match input.parse() {
                     Ok(Lit::Str(lit)) => Ok(lit),
    -                _ => Err(head.error("expected string literal")),
    +                _ => Err(head.error("expected string literal")),
                 }
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for LitByteStr {
             fn parse(input: ParseStream) -> Result<Self> {
                 let head = input.fork();
                 match input.parse() {
                     Ok(Lit::ByteStr(lit)) => Ok(lit),
    -                _ => Err(head.error("expected byte string literal")),
    +                _ => Err(head.error("expected byte string literal")),
                 }
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
    +    impl Parse for LitCStr {
    +        fn parse(input: ParseStream) -> Result<Self> {
    +            let head = input.fork();
    +            match input.parse() {
    +                Ok(Lit::CStr(lit)) => Ok(lit),
    +                _ => Err(head.error("expected C string literal")),
    +            }
    +        }
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for LitByte {
             fn parse(input: ParseStream) -> Result<Self> {
                 let head = input.fork();
                 match input.parse() {
                     Ok(Lit::Byte(lit)) => Ok(lit),
    -                _ => Err(head.error("expected byte literal")),
    +                _ => Err(head.error("expected byte literal")),
                 }
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for LitChar {
             fn parse(input: ParseStream) -> Result<Self> {
                 let head = input.fork();
                 match input.parse() {
                     Ok(Lit::Char(lit)) => Ok(lit),
    -                _ => Err(head.error("expected character literal")),
    +                _ => Err(head.error("expected character literal")),
                 }
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for LitInt {
             fn parse(input: ParseStream) -> Result<Self> {
                 let head = input.fork();
                 match input.parse() {
                     Ok(Lit::Int(lit)) => Ok(lit),
    -                _ => Err(head.error("expected integer literal")),
    +                _ => Err(head.error("expected integer literal")),
                 }
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for LitFloat {
             fn parse(input: ParseStream) -> Result<Self> {
                 let head = input.fork();
                 match input.parse() {
                     Ok(Lit::Float(lit)) => Ok(lit),
    -                _ => Err(head.error("expected floating point literal")),
    +                _ => Err(head.error("expected floating point literal")),
                 }
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for LitBool {
             fn parse(input: ParseStream) -> Result<Self> {
                 let head = input.fork();
                 match input.parse() {
                     Ok(Lit::Bool(lit)) => Ok(lit),
    -                _ => Err(head.error("expected boolean literal")),
    +                _ => Err(head.error("expected boolean literal")),
                 }
             }
         }
    +
    +    fn peek_impl(cursor: Cursor, peek: fn(ParseStream) -> bool) -> bool {
    +        let scope = Span::call_site();
    +        let unexpected = Rc::new(Cell::new(Unexpected::None));
    +        let buffer = crate::parse::new_parse_buffer(scope, cursor, unexpected);
    +        peek(&buffer)
    +    }
    +
    +    macro_rules! impl_token {
    +        ($display:literal $name:ty) => {
    +            impl Token for $name {
    +                fn peek(cursor: Cursor) -> bool {
    +                    fn peek(input: ParseStream) -> bool {
    +                        <$name as Parse>::parse(input).is_ok()
    +                    }
    +                    peek_impl(cursor, peek)
    +                }
    +
    +                fn display() -> &'static str {
    +                    $display
    +                }
    +            }
    +
    +            impl token::private::Sealed for $name {}
    +        };
    +    }
    +
    +    impl_token!("literal" Lit);
    +    impl_token!("string literal" LitStr);
    +    impl_token!("byte string literal" LitByteStr);
    +    impl_token!("C-string literal" LitCStr);
    +    impl_token!("byte literal" LitByte);
    +    impl_token!("character literal" LitChar);
    +    impl_token!("integer literal" LitInt);
    +    impl_token!("floating point literal" LitFloat);
    +    impl_token!("boolean literal" LitBool);
     }
     
    -#[cfg(feature = "printing")]
    +#[cfg(feature = "printing")]
     mod printing {
    -    use super::*;
    +    use crate::lit::{LitBool, LitByte, LitByteStr, LitCStr, LitChar, LitFloat, LitInt, LitStr};
         use proc_macro2::TokenStream;
         use quote::{ToTokens, TokenStreamExt};
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for LitStr {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 self.repr.token.to_tokens(tokens);
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for LitByteStr {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 self.repr.token.to_tokens(tokens);
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for LitCStr {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            self.repr.token.to_tokens(tokens);
    +        }
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for LitByte {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 self.repr.token.to_tokens(tokens);
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for LitChar {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 self.repr.token.to_tokens(tokens);
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for LitInt {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 self.repr.token.to_tokens(tokens);
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for LitFloat {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 self.repr.token.to_tokens(tokens);
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for LitBool {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 tokens.append(self.token());
    @@ -2547,9 +2991,15 @@
     }
     
     mod value {
    -    use super::*;
         use crate::bigint::BigInt;
    +    use crate::lit::{
    +        Lit, LitBool, LitByte, LitByteStr, LitCStr, LitChar, LitFloat, LitFloatRepr, LitInt,
    +        LitIntRepr, LitRepr, LitStr,
    +    };
    +    use proc_macro2::{Literal, Span};
    +    use std::ascii;
         use std::char;
    +    use std::ffi::CString;
         use std::ops::{Index, RangeFrom};
     
         impl Lit {
    @@ -2558,20 +3008,23 @@
                 let repr = token.to_string();
     
                 match byte(&repr, 0) {
    -                b'"' | b'r' => {
    +                // "...", r"...", r#"..."#
    +                b'"' | b'r' => {
                         let (_, suffix) = parse_lit_str(&repr);
                         return Lit::Str(LitStr {
                             repr: Box::new(LitRepr { token, suffix }),
                         });
                     }
    -                b'b' => match byte(&repr, 1) {
    -                    b'"' | b'r' => {
    +                b'b' => match byte(&repr, 1) {
    +                    // b"...", br"...", br#"...#"
    +                    b'"' | b'r' => {
                             let (_, suffix) = parse_lit_byte_str(&repr);
                             return Lit::ByteStr(LitByteStr {
                                 repr: Box::new(LitRepr { token, suffix }),
                             });
                         }
    -                    b'\'' => {
    +                    // b'...'
    +                    b'\'' => {
                             let (_, suffix) = parse_lit_byte(&repr);
                             return Lit::Byte(LitByte {
                                 repr: Box::new(LitRepr { token, suffix }),
    @@ -2579,14 +3032,23 @@
                         }
                         _ => {}
                     },
    -                b'\'' => {
    +                // c"...", cr"...", cr#"..."#
    +                b'c' => {
    +                    let (_, suffix) = parse_lit_c_str(&repr);
    +                    return Lit::CStr(LitCStr {
    +                        repr: Box::new(LitRepr { token, suffix }),
    +                    });
    +                }
    +                // '...'
    +                b'\'' => {
                         let (_, suffix) = parse_lit_char(&repr);
                         return Lit::Char(LitChar {
                             repr: Box::new(LitRepr { token, suffix }),
                         });
                     }
    -                b'0'..=b'9' | b'-' => {
    -                    if let Some((digits, suffix)) = parse_lit_int(&repr) {
    +                b'0'..=b'9' | b'-' => {
    +                    // 0, 123, 0xFF, 0o77, 0b11
    +                    if let Some((digits, suffix)) = parse_lit_int(&repr) {
                             return Lit::Int(LitInt {
                                 repr: Box::new(LitIntRepr {
                                     token,
    @@ -2595,7 +3057,8 @@
                                 }),
                             });
                         }
    -                    if let Some((digits, suffix)) = parse_lit_float(&repr) {
    +                    // 1.0, 1e-1, 1e+1
    +                    if let Some((digits, suffix)) = parse_lit_float(&repr) {
                             return Lit::Float(LitFloat {
                                 repr: Box::new(LitFloatRepr {
                                     token,
    @@ -2605,29 +3068,32 @@
                             });
                         }
                     }
    -                b't' | b'f' => {
    -                    if repr == "true" || repr == "false" {
    +                // true, false
    +                b't' | b'f' => {
    +                    if repr == "true" || repr == "false" {
                             return Lit::Bool(LitBool {
    -                            value: repr == "true",
    +                            value: repr == "true",
                                 span: token.span(),
                             });
                         }
                     }
    +                b'(' if repr == "(/*ERROR*/)" => return Lit::Verbatim(token),
                     _ => {}
                 }
     
    -            panic!("Unrecognized literal: `{}`", repr);
    +            panic!("unrecognized literal: `{}`", repr);
             }
     
             pub fn suffix(&self) -> &str {
                 match self {
                     Lit::Str(lit) => lit.suffix(),
                     Lit::ByteStr(lit) => lit.suffix(),
    +                Lit::CStr(lit) => lit.suffix(),
                     Lit::Byte(lit) => lit.suffix(),
                     Lit::Char(lit) => lit.suffix(),
                     Lit::Int(lit) => lit.suffix(),
                     Lit::Float(lit) => lit.suffix(),
    -                Lit::Bool(_) | Lit::Verbatim(_) => "",
    +                Lit::Bool(_) | Lit::Verbatim(_) => "",
                 }
             }
     
    @@ -2635,6 +3101,7 @@
                 match self {
                     Lit::Str(lit) => lit.span(),
                     Lit::ByteStr(lit) => lit.span(),
    +                Lit::CStr(lit) => lit.span(),
                     Lit::Byte(lit) => lit.span(),
                     Lit::Char(lit) => lit.span(),
                     Lit::Int(lit) => lit.span(),
    @@ -2648,6 +3115,7 @@
                 match self {
                     Lit::Str(lit) => lit.set_span(span),
                     Lit::ByteStr(lit) => lit.set_span(span),
    +                Lit::CStr(lit) => lit.set_span(span),
                     Lit::Byte(lit) => lit.set_span(span),
                     Lit::Char(lit) => lit.set_span(span),
                     Lit::Int(lit) => lit.set_span(span),
    @@ -2658,9 +3126,9 @@
             }
         }
     
    -    /// Get the byte at offset idx, or a default of `b'\0'` if we're looking
    +    /// Get the byte at offset idx, or a default of `b'\0'` if we're looking
         /// past the end of the input buffer.
    -    pub fn byte<S: AsRef<[u8]> + ?Sized>(s: &S, idx: usize) -> u8 {
    +    pub(crate) fn byte<S: AsRef<[u8]> + ?Sized>(s: &S, idx: usize) -> u8 {
             let s = s.as_ref();
             if idx < s.len() {
                 s[idx]
    @@ -2670,14 +3138,14 @@
         }
     
         fn next_chr(s: &str) -> char {
    -        s.chars().next().unwrap_or('\0')
    +        s.chars().next().unwrap_or('\0')
         }
     
         // Returns (content, suffix).
    -    pub fn parse_lit_str(s: &str) -> (Box<str>, Box<str>) {
    +    pub(crate) fn parse_lit_str(s: &str) -> (Box<str>, Box<str>) {
             match byte(s, 0) {
    -            b'"' => parse_lit_str_cooked(s),
    -            b'r' => parse_lit_str_raw(s),
    +            b'"' => parse_lit_str_cooked(s),
    +            b'r' => parse_lit_str_raw(s),
                 _ => unreachable!(),
             }
         }
    @@ -2686,49 +3154,52 @@
         // https://github.com/rust-lang-nursery/rust-clippy/issues/2329
         #[allow(clippy::needless_continue)]
         fn parse_lit_str_cooked(mut s: &str) -> (Box<str>, Box<str>) {
    -        assert_eq!(byte(s, 0), b'"');
    +        assert_eq!(byte(s, 0), b'"');
             s = &s[1..];
     
             let mut content = String::new();
    -        'outer: loop {
    +        'outer: loop {
                 let ch = match byte(s, 0) {
    -                b'"' => break,
    -                b'\\' => {
    +                b'"' => break,
    +                b'\\' => {
                         let b = byte(s, 1);
                         s = &s[2..];
                         match b {
    -                        b'x' => {
    +                        b'x' => {
                                 let (byte, rest) = backslash_x(s);
                                 s = rest;
    -                            assert!(byte <= 0x80, "Invalid \\x byte in string literal");
    +                            assert!(byte <= 0x7F, "invalid \\x byte in string literal");
                                 char::from_u32(u32::from(byte)).unwrap()
                             }
    -                        b'u' => {
    -                            let (chr, rest) = backslash_u(s);
    +                        b'u' => {
    +                            let (ch, rest) = backslash_u(s);
                                 s = rest;
    -                            chr
    +                            ch
                             }
    -                        b'n' => '\n',
    -                        b'r' => '\r',
    -                        b't' => '\t',
    -                        b'\\' => '\\',
    -                        b'0' => '\0',
    -                        b'\'' => '\'',
    -                        b'"' => '"',
    -                        b'\r' | b'\n' => loop {
    +                        b'n' => '\n',
    +                        b'r' => '\r',
    +                        b't' => '\t',
    +                        b'\\' => '\\',
    +                        b'0' => '\0',
    +                        b'\'' => '\'',
    +                        b'"' => '"',
    +                        b'\r' | b'\n' => loop {
                                 let b = byte(s, 0);
                                 match b {
    -                                b' ' | b'\t' | b'\n' | b'\r' => s = &s[1..],
    -                                _ => continue 'outer,
    +                                b' ' | b'\t' | b'\n' | b'\r' => s = &s[1..],
    +                                _ => continue 'outer,
                                 }
                             },
    -                        b => panic!("unexpected byte {:?} after \\ character in byte literal", b),
    +                        b => panic!(
    +                            "unexpected byte '{}' after \\ character in string literal",
    +                            ascii::escape_default(b),
    +                        ),
                         }
                     }
    -                b'\r' => {
    -                    assert_eq!(byte(s, 1), b'\n', "Bare CR not allowed in string");
    +                b'\r' => {
    +                    assert_eq!(byte(s, 1), b'\n', "bare CR not allowed in string");
                         s = &s[2..];
    -                    '\n'
    +                    '\n'
                     }
                     _ => {
                         let ch = next_chr(s);
    @@ -2739,24 +3210,24 @@
                 content.push(ch);
             }
     
    -        assert!(s.starts_with('"'));
    +        assert!(s.starts_with('"'));
             let content = content.into_boxed_str();
             let suffix = s[1..].to_owned().into_boxed_str();
             (content, suffix)
         }
     
         fn parse_lit_str_raw(mut s: &str) -> (Box<str>, Box<str>) {
    -        assert_eq!(byte(s, 0), b'r');
    +        assert_eq!(byte(s, 0), b'r');
             s = &s[1..];
     
             let mut pounds = 0;
    -        while byte(s, pounds) == b'#' {
    +        while byte(s, pounds) == b'#' {
                 pounds += 1;
             }
    -        assert_eq!(byte(s, pounds), b'"');
    -        let close = s.rfind('"').unwrap();
    +        assert_eq!(byte(s, pounds), b'"');
    +        let close = s.rfind('"').unwrap();
             for end in s[close + 1..close + 1 + pounds].bytes() {
    -            assert_eq!(end, b'#');
    +            assert_eq!(end, b'#');
             }
     
             let content = s[pounds + 1..close].to_owned().into_boxed_str();
    @@ -2765,11 +3236,11 @@
         }
     
         // Returns (content, suffix).
    -    pub fn parse_lit_byte_str(s: &str) -> (Vec<u8>, Box<str>) {
    -        assert_eq!(byte(s, 0), b'b');
    +    pub(crate) fn parse_lit_byte_str(s: &str) -> (Vec<u8>, Box<str>) {
    +        assert_eq!(byte(s, 0), b'b');
             match byte(s, 1) {
    -            b'"' => parse_lit_byte_str_cooked(s),
    -            b'r' => parse_lit_byte_str_raw(s),
    +            b'"' => parse_lit_byte_str_cooked(s),
    +            b'r' => parse_lit_byte_str_raw(s),
                 _ => unreachable!(),
             }
         }
    @@ -2778,49 +3249,51 @@
         // https://github.com/rust-lang-nursery/rust-clippy/issues/2329
         #[allow(clippy::needless_continue)]
         fn parse_lit_byte_str_cooked(mut s: &str) -> (Vec<u8>, Box<str>) {
    -        assert_eq!(byte(s, 0), b'b');
    -        assert_eq!(byte(s, 1), b'"');
    +        assert_eq!(byte(s, 0), b'b');
    +        assert_eq!(byte(s, 1), b'"');
             s = &s[2..];
     
    -        // We're going to want to have slices which don't respect codepoint boundaries.
    +        // We're going to want to have slices which don't respect codepoint boundaries.
             let mut v = s.as_bytes();
     
             let mut out = Vec::new();
    -        'outer: loop {
    +        'outer: loop {
                 let byte = match byte(v, 0) {
    -                b'"' => break,
    -                b'\\' => {
    +                b'"' => break,
    +                b'\\' => {
                         let b = byte(v, 1);
                         v = &v[2..];
                         match b {
    -                        b'x' => {
    +                        b'x' => {
                                 let (b, rest) = backslash_x(v);
                                 v = rest;
                                 b
                             }
    -                        b'n' => b'\n',
    -                        b'r' => b'\r',
    -                        b't' => b'\t',
    -                        b'\\' => b'\\',
    -                        b'0' => b'\0',
    -                        b'\'' => b'\'',
    -                        b'"' => b'"',
    -                        b'\r' | b'\n' => loop {
    +                        b'n' => b'\n',
    +                        b'r' => b'\r',
    +                        b't' => b'\t',
    +                        b'\\' => b'\\',
    +                        b'0' => b'\0',
    +                        b'\'' => b'\'',
    +                        b'"' => b'"',
    +                        b'\r' | b'\n' => loop {
                                 let byte = byte(v, 0);
    -                            let ch = char::from_u32(u32::from(byte)).unwrap();
    -                            if ch.is_whitespace() {
    +                            if matches!(byte, b' ' | b'\t' | b'\n' | b'\r') {
                                     v = &v[1..];
                                 } else {
    -                                continue 'outer;
    +                                continue 'outer;
                                 }
                             },
    -                        b => panic!("unexpected byte {:?} after \\ character in byte literal", b),
    +                        b => panic!(
    +                            "unexpected byte '{}' after \\ character in byte-string literal",
    +                            ascii::escape_default(b),
    +                        ),
                         }
                     }
    -                b'\r' => {
    -                    assert_eq!(byte(v, 1), b'\n', "Bare CR not allowed in string");
    +                b'\r' => {
    +                    assert_eq!(byte(v, 1), b'\n', "bare CR not allowed in string");
                         v = &v[2..];
    -                    b'\n'
    +                    b'\n'
                     }
                     b => {
                         v = &v[1..];
    @@ -2830,43 +3303,132 @@
                 out.push(byte);
             }
     
    -        assert_eq!(byte(v, 0), b'"');
    +        assert_eq!(byte(v, 0), b'"');
             let suffix = s[s.len() - v.len() + 1..].to_owned().into_boxed_str();
             (out, suffix)
         }
     
         fn parse_lit_byte_str_raw(s: &str) -> (Vec<u8>, Box<str>) {
    -        assert_eq!(byte(s, 0), b'b');
    +        assert_eq!(byte(s, 0), b'b');
             let (value, suffix) = parse_lit_str_raw(&s[1..]);
             (String::from(value).into_bytes(), suffix)
         }
     
    -    // Returns (value, suffix).
    -    pub fn parse_lit_byte(s: &str) -> (u8, Box<str>) {
    -        assert_eq!(byte(s, 0), b'b');
    -        assert_eq!(byte(s, 1), b'\'');
    +    // Returns (content, suffix).
    +    pub(crate) fn parse_lit_c_str(s: &str) -> (CString, Box<str>) {
    +        assert_eq!(byte(s, 0), b'c');
    +        match byte(s, 1) {
    +            b'"' => parse_lit_c_str_cooked(s),
    +            b'r' => parse_lit_c_str_raw(s),
    +            _ => unreachable!(),
    +        }
    +    }
     
    -        // We're going to want to have slices which don't respect codepoint boundaries.
    +    // Clippy false positive
    +    // https://github.com/rust-lang-nursery/rust-clippy/issues/2329
    +    #[allow(clippy::needless_continue)]
    +    fn parse_lit_c_str_cooked(mut s: &str) -> (CString, Box<str>) {
    +        assert_eq!(byte(s, 0), b'c');
    +        assert_eq!(byte(s, 1), b'"');
    +        s = &s[2..];
    +
    +        // We're going to want to have slices which don't respect codepoint boundaries.
    +        let mut v = s.as_bytes();
    +
    +        let mut out = Vec::new();
    +        'outer: loop {
    +            let byte = match byte(v, 0) {
    +                b'"' => break,
    +                b'\\' => {
    +                    let b = byte(v, 1);
    +                    v = &v[2..];
    +                    match b {
    +                        b'x' => {
    +                            let (b, rest) = backslash_x(v);
    +                            assert!(b != 0, "\\x00 is not allowed in C-string literal");
    +                            v = rest;
    +                            b
    +                        }
    +                        b'u' => {
    +                            let (ch, rest) = backslash_u(v);
    +                            assert!(ch != '\0', "\\u{{0}} is not allowed in C-string literal");
    +                            v = rest;
    +                            out.extend_from_slice(ch.encode_utf8(&mut [0u8; 4]).as_bytes());
    +                            continue 'outer;
    +                        }
    +                        b'n' => b'\n',
    +                        b'r' => b'\r',
    +                        b't' => b'\t',
    +                        b'\\' => b'\\',
    +                        b'\'' => b'\'',
    +                        b'"' => b'"',
    +                        b'\r' | b'\n' => loop {
    +                            let byte = byte(v, 0);
    +                            if matches!(byte, b' ' | b'\t' | b'\n' | b'\r') {
    +                                v = &v[1..];
    +                            } else {
    +                                continue 'outer;
    +                            }
    +                        },
    +                        b => panic!(
    +                            "unexpected byte '{}' after \\ character in byte literal",
    +                            ascii::escape_default(b),
    +                        ),
    +                    }
    +                }
    +                b'\r' => {
    +                    assert_eq!(byte(v, 1), b'\n', "bare CR not allowed in string");
    +                    v = &v[2..];
    +                    b'\n'
    +                }
    +                b => {
    +                    v = &v[1..];
    +                    b
    +                }
    +            };
    +            out.push(byte);
    +        }
    +
    +        assert_eq!(byte(v, 0), b'"');
    +        let suffix = s[s.len() - v.len() + 1..].to_owned().into_boxed_str();
    +        (CString::new(out).unwrap(), suffix)
    +    }
    +
    +    fn parse_lit_c_str_raw(s: &str) -> (CString, Box<str>) {
    +        assert_eq!(byte(s, 0), b'c');
    +        let (value, suffix) = parse_lit_str_raw(&s[1..]);
    +        (CString::new(String::from(value)).unwrap(), suffix)
    +    }
    +
    +    // Returns (value, suffix).
    +    pub(crate) fn parse_lit_byte(s: &str) -> (u8, Box<str>) {
    +        assert_eq!(byte(s, 0), b'b');
    +        assert_eq!(byte(s, 1), b'\'');
    +
    +        // We're going to want to have slices which don't respect codepoint boundaries.
             let mut v = s[2..].as_bytes();
     
             let b = match byte(v, 0) {
    -            b'\\' => {
    +            b'\\' => {
                     let b = byte(v, 1);
                     v = &v[2..];
                     match b {
    -                    b'x' => {
    +                    b'x' => {
                             let (b, rest) = backslash_x(v);
                             v = rest;
                             b
                         }
    -                    b'n' => b'\n',
    -                    b'r' => b'\r',
    -                    b't' => b'\t',
    -                    b'\\' => b'\\',
    -                    b'0' => b'\0',
    -                    b'\'' => b'\'',
    -                    b'"' => b'"',
    -                    b => panic!("unexpected byte {:?} after \\ character in byte literal", b),
    +                    b'n' => b'\n',
    +                    b'r' => b'\r',
    +                    b't' => b'\t',
    +                    b'\\' => b'\\',
    +                    b'0' => b'\0',
    +                    b'\'' => b'\'',
    +                    b'"' => b'"',
    +                    b => panic!(
    +                        "unexpected byte '{}' after \\ character in byte literal",
    +                        ascii::escape_default(b),
    +                    ),
                     }
                 }
                 b => {
    @@ -2875,40 +3437,43 @@
                 }
             };
     
    -        assert_eq!(byte(v, 0), b'\'');
    +        assert_eq!(byte(v, 0), b'\'');
             let suffix = s[s.len() - v.len() + 1..].to_owned().into_boxed_str();
             (b, suffix)
         }
     
         // Returns (value, suffix).
    -    pub fn parse_lit_char(mut s: &str) -> (char, Box<str>) {
    -        assert_eq!(byte(s, 0), b'\'');
    +    pub(crate) fn parse_lit_char(mut s: &str) -> (char, Box<str>) {
    +        assert_eq!(byte(s, 0), b'\'');
             s = &s[1..];
     
             let ch = match byte(s, 0) {
    -            b'\\' => {
    +            b'\\' => {
                     let b = byte(s, 1);
                     s = &s[2..];
                     match b {
    -                    b'x' => {
    +                    b'x' => {
                             let (byte, rest) = backslash_x(s);
                             s = rest;
    -                        assert!(byte <= 0x80, "Invalid \\x byte in string literal");
    +                        assert!(byte <= 0x7F, "invalid \\x byte in character literal");
                             char::from_u32(u32::from(byte)).unwrap()
                         }
    -                    b'u' => {
    -                        let (chr, rest) = backslash_u(s);
    +                    b'u' => {
    +                        let (ch, rest) = backslash_u(s);
                             s = rest;
    -                        chr
    +                        ch
                         }
    -                    b'n' => '\n',
    -                    b'r' => '\r',
    -                    b't' => '\t',
    -                    b'\\' => '\\',
    -                    b'0' => '\0',
    -                    b'\'' => '\'',
    -                    b'"' => '"',
    -                    b => panic!("unexpected byte {:?} after \\ character in byte literal", b),
    +                    b'n' => '\n',
    +                    b'r' => '\r',
    +                    b't' => '\t',
    +                    b'\\' => '\\',
    +                    b'0' => '\0',
    +                    b'\'' => '\'',
    +                    b'"' => '"',
    +                    b => panic!(
    +                        "unexpected byte '{}' after \\ character in character literal",
    +                        ascii::escape_default(b),
    +                    ),
                     }
                 }
                 _ => {
    @@ -2917,7 +3482,7 @@
                     ch
                 }
             };
    -        assert_eq!(byte(s, 0), b'\'');
    +        assert_eq!(byte(s, 0), b'\'');
             let suffix = s[1..].to_owned().into_boxed_str();
             (ch, suffix)
         }
    @@ -2931,23 +3496,26 @@
             let b1 = byte(s, 1);
             ch += 0x10
                 * match b0 {
    -                b'0'..=b'9' => b0 - b'0',
    -                b'a'..=b'f' => 10 + (b0 - b'a'),
    -                b'A'..=b'F' => 10 + (b0 - b'A'),
    -                _ => panic!("unexpected non-hex character after \\x"),
    +                b'0'..=b'9' => b0 - b'0',
    +                b'a'..=b'f' => 10 + (b0 - b'a'),
    +                b'A'..=b'F' => 10 + (b0 - b'A'),
    +                _ => panic!("unexpected non-hex character after \\x"),
                 };
             ch += match b1 {
    -            b'0'..=b'9' => b1 - b'0',
    -            b'a'..=b'f' => 10 + (b1 - b'a'),
    -            b'A'..=b'F' => 10 + (b1 - b'A'),
    -            _ => panic!("unexpected non-hex character after \\x"),
    +            b'0'..=b'9' => b1 - b'0',
    +            b'a'..=b'f' => 10 + (b1 - b'a'),
    +            b'A'..=b'F' => 10 + (b1 - b'A'),
    +            _ => panic!("unexpected non-hex character after \\x"),
             };
             (ch, &s[2..])
         }
     
    -    fn backslash_u(mut s: &str) -> (char, &str) {
    -        if byte(s, 0) != b'{' {
    -            panic!("{}", "expected { after \\u");
    +    fn backslash_u<S>(mut s: &S) -> (char, &S)
    +    where
    +        S: Index<RangeFrom<usize>, Output = S> + AsRef<[u8]> + ?Sized,
    +    {
    +        if byte(s, 0) != b'{' {
    +            panic!("{}", "expected { after \\u");
             }
             s = &s[1..];
     
    @@ -2956,86 +3524,87 @@
             loop {
                 let b = byte(s, 0);
                 let digit = match b {
    -                b'0'..=b'9' => b - b'0',
    -                b'a'..=b'f' => 10 + b - b'a',
    -                b'A'..=b'F' => 10 + b - b'A',
    -                b'_' if digits > 0 => {
    +                b'0'..=b'9' => b - b'0',
    +                b'a'..=b'f' => 10 + b - b'a',
    +                b'A'..=b'F' => 10 + b - b'A',
    +                b'_' if digits > 0 => {
                         s = &s[1..];
                         continue;
                     }
    -                b'}' if digits == 0 => panic!("invalid empty unicode escape"),
    -                b'}' => break,
    -                _ => panic!("unexpected non-hex character after \\u"),
    +                b'}' if digits == 0 => panic!("invalid empty unicode escape"),
    +                b'}' => break,
    +                _ => panic!("unexpected non-hex character after \\u"),
                 };
                 if digits == 6 {
    -                panic!("overlong unicode escape (must have at most 6 hex digits)");
    +                panic!("overlong unicode escape (must have at most 6 hex digits)");
                 }
                 ch *= 0x10;
                 ch += u32::from(digit);
                 digits += 1;
                 s = &s[1..];
             }
    -        assert!(byte(s, 0) == b'}');
    +        assert!(byte(s, 0) == b'}');
             s = &s[1..];
     
             if let Some(ch) = char::from_u32(ch) {
                 (ch, s)
             } else {
    -            panic!("character code {:x} is not a valid unicode character", ch);
    +            panic!("character code {:x} is not a valid unicode character", ch);
             }
         }
     
         // Returns base 10 digits and suffix.
    -    pub fn parse_lit_int(mut s: &str) -> Option<(Box<str>, Box<str>)> {
    -        let negative = byte(s, 0) == b'-';
    +    pub(crate) fn parse_lit_int(mut s: &str) -> Option<(Box<str>, Box<str>)> {
    +        let negative = byte(s, 0) == b'-';
             if negative {
                 s = &s[1..];
             }
     
             let base = match (byte(s, 0), byte(s, 1)) {
    -            (b'0', b'x') => {
    +            (b'0', b'x') => {
                     s = &s[2..];
                     16
                 }
    -            (b'0', b'o') => {
    +            (b'0', b'o') => {
                     s = &s[2..];
                     8
                 }
    -            (b'0', b'b') => {
    +            (b'0', b'b') => {
                     s = &s[2..];
                     2
                 }
    -            (b'0'..=b'9', _) => 10,
    +            (b'0'..=b'9', _) => 10,
                 _ => return None,
             };
     
             let mut value = BigInt::new();
    -        'outer: loop {
    +        let mut has_digit = false;
    +        'outer: loop {
                 let b = byte(s, 0);
                 let digit = match b {
    -                b'0'..=b'9' => b - b'0',
    -                b'a'..=b'f' if base > 10 => b - b'a' + 10,
    -                b'A'..=b'F' if base > 10 => b - b'A' + 10,
    -                b'_' => {
    +                b'0'..=b'9' => b - b'0',
    +                b'a'..=b'f' if base > 10 => b - b'a' + 10,
    +                b'A'..=b'F' if base > 10 => b - b'A' + 10,
    +                b'_' => {
                         s = &s[1..];
                         continue;
                     }
    -                // If looking at a floating point literal, we don't want to
    +                // If looking at a floating point literal, we don't want to
                     // consider it an integer.
    -                b'.' if base == 10 => return None,
    -                b'e' | b'E' if base == 10 => {
    +                b'.' if base == 10 => return None,
    +                b'e' | b'E' if base == 10 => {
                         let mut has_exp = false;
                         for (i, b) in s[1..].bytes().enumerate() {
                             match b {
    -                            b'_' => {}
    -                            b'-' | b'+' => return None,
    -                            b'0'..=b'9' => has_exp = true,
    +                            b'_' => {}
    +                            b'-' | b'+' => return None,
    +                            b'0'..=b'9' => has_exp = true,
                                 _ => {
                                     let suffix = &s[1 + i..];
                                     if has_exp && crate::ident::xid_ok(suffix) {
                                         return None;
                                     } else {
    -                                    break 'outer;
    +                                    break 'outer;
                                     }
                                 }
                             }
    @@ -3053,16 +3622,21 @@
                     return None;
                 }
     
    +            has_digit = true;
                 value *= base;
                 value += digit;
                 s = &s[1..];
             }
     
    +        if !has_digit {
    +            return None;
    +        }
    +
             let suffix = s;
             if suffix.is_empty() || crate::ident::xid_ok(suffix) {
                 let mut repr = value.to_string();
                 if negative {
    -                repr.insert(0, '-');
    +                repr.insert(0, '-');
                 }
                 Some((repr.into_boxed_str(), suffix.to_owned().into_boxed_str()))
             } else {
    @@ -3071,16 +3645,16 @@
         }
     
         // Returns base 10 digits and suffix.
    -    pub fn parse_lit_float(input: &str) -> Option<(Box<str>, Box<str>)> {
    -        // Rust's floating point literals are very similar to the ones parsed by
    -        // the standard library, except that rust's literals can contain
    -        // ignorable underscores. Let's remove those underscores.
    +    pub(crate) fn parse_lit_float(input: &str) -> Option<(Box<str>, Box<str>)> {
    +        // Rust's floating point literals are very similar to the ones parsed by
    +        // the standard library, except that rust's literals can contain
    +        // ignorable underscores. Let's remove those underscores.
     
             let mut bytes = input.to_owned().into_bytes();
     
    -        let start = (*bytes.first()? == b'-') as usize;
    +        let start = (*bytes.first()? == b'-') as usize;
             match bytes.get(start)? {
    -            b'0'..=b'9' => {}
    +            b'0'..=b'9' => {}
                 _ => return None,
             }
     
    @@ -3092,31 +3666,31 @@
             let mut has_exponent = false;
             while read < bytes.len() {
                 match bytes[read] {
    -                b'_' => {
    -                    // Don't increase write
    +                b'_' => {
    +                    // Don't increase write
                         read += 1;
                         continue;
                     }
    -                b'0'..=b'9' => {
    +                b'0'..=b'9' => {
                         if has_e {
                             has_exponent = true;
                         }
                         bytes[write] = bytes[read];
                     }
    -                b'.' => {
    +                b'.' => {
                         if has_e || has_dot {
                             return None;
                         }
                         has_dot = true;
    -                    bytes[write] = b'.';
    +                    bytes[write] = b'.';
                     }
    -                b'e' | b'E' => {
    +                b'e' | b'E' => {
                         match bytes[read + 1..]
                             .iter()
    -                        .find(|b| **b != b'_')
    -                        .unwrap_or(&b'\0')
    +                        .find(|b| **b != b'_')
    +                        .unwrap_or(&b'\0')
                         {
    -                        b'-' | b'+' | b'0'..=b'9' => {}
    +                        b'-' | b'+' | b'0'..=b'9' => {}
                             _ => break,
                         }
                         if has_e {
    @@ -3127,17 +3701,17 @@
                             }
                         }
                         has_e = true;
    -                    bytes[write] = b'e';
    +                    bytes[write] = b'e';
                     }
    -                b'-' | b'+' => {
    +                b'-' | b'+' => {
                         if has_sign || has_exponent || !has_e {
                             return None;
                         }
                         has_sign = true;
    -                    if bytes[read] == b'-' {
    +                    if bytes[read] == b'-' {
                             bytes[write] = bytes[read];
                         } else {
    -                        // Omit '+'
    +                        // Omit '+'
                             read += 1;
                             continue;
                         }
    @@ -3161,39 +3735,5 @@
                 None
             }
         }
    -
    -    #[allow(clippy::unnecessary_wraps)]
    -    pub fn to_literal(repr: &str, digits: &str, suffix: &str) -> Option<Literal> {
    -        #[cfg(syn_no_negative_literal_parse)]
    -        {
    -            // Rustc older than https://github.com/rust-lang/rust/pull/87262.
    -            if repr.starts_with('-') {
    -                let f64_parse_finite = || digits.parse().ok().filter(|x: &f64| x.is_finite());
    -                let f32_parse_finite = || digits.parse().ok().filter(|x: &f32| x.is_finite());
    -                return if suffix == "f64" {
    -                    f64_parse_finite().map(Literal::f64_suffixed)
    -                } else if suffix == "f32" {
    -                    f32_parse_finite().map(Literal::f32_suffixed)
    -                } else if suffix == "i64" {
    -                    digits.parse().ok().map(Literal::i64_suffixed)
    -                } else if suffix == "i32" {
    -                    digits.parse().ok().map(Literal::i32_suffixed)
    -                } else if suffix == "i16" {
    -                    digits.parse().ok().map(Literal::i16_suffixed)
    -                } else if suffix == "i8" {
    -                    digits.parse().ok().map(Literal::i8_suffixed)
    -                } else if !suffix.is_empty() {
    -                    None
    -                } else if digits.contains('.') {
    -                    f64_parse_finite().map(Literal::f64_unsuffixed)
    -                } else {
    -                    digits.parse().ok().map(Literal::i64_unsuffixed)
    -                };
    -            }
    -        }
    -        let _ = digits;
    -        let _ = suffix;
    -        Some(repr.parse::<Literal>().unwrap())
    -    }
     }
     
    \ No newline at end of file diff --git a/src/syn/lookahead.rs.html b/src/syn/lookahead.rs.html index 5e8f5d7..7dc8805 100644 --- a/src/syn/lookahead.rs.html +++ b/src/syn/lookahead.rs.html @@ -1,4 +1,5 @@ -lookahead.rs - source
    1
    +lookahead.rs - source

    syn/
    lookahead.rs

    +1
     2
     3
     4
    @@ -167,11 +168,173 @@
     167
     168
     169
    -
    use crate::buffer::Cursor;
    +170
    +171
    +172
    +173
    +174
    +175
    +176
    +177
    +178
    +179
    +180
    +181
    +182
    +183
    +184
    +185
    +186
    +187
    +188
    +189
    +190
    +191
    +192
    +193
    +194
    +195
    +196
    +197
    +198
    +199
    +200
    +201
    +202
    +203
    +204
    +205
    +206
    +207
    +208
    +209
    +210
    +211
    +212
    +213
    +214
    +215
    +216
    +217
    +218
    +219
    +220
    +221
    +222
    +223
    +224
    +225
    +226
    +227
    +228
    +229
    +230
    +231
    +232
    +233
    +234
    +235
    +236
    +237
    +238
    +239
    +240
    +241
    +242
    +243
    +244
    +245
    +246
    +247
    +248
    +249
    +250
    +251
    +252
    +253
    +254
    +255
    +256
    +257
    +258
    +259
    +260
    +261
    +262
    +263
    +264
    +265
    +266
    +267
    +268
    +269
    +270
    +271
    +272
    +273
    +274
    +275
    +276
    +277
    +278
    +279
    +280
    +281
    +282
    +283
    +284
    +285
    +286
    +287
    +288
    +289
    +290
    +291
    +292
    +293
    +294
    +295
    +296
    +297
    +298
    +299
    +300
    +301
    +302
    +303
    +304
    +305
    +306
    +307
    +308
    +309
    +310
    +311
    +312
    +313
    +314
    +315
    +316
    +317
    +318
    +319
    +320
    +321
    +322
    +323
    +324
    +325
    +326
    +327
    +328
    +329
    +330
    +331
    +332
    use crate::buffer::Cursor;
     use crate::error::{self, Error};
     use crate::sealed::lookahead::Sealed;
     use crate::span::IntoSpans;
    -use crate::token::Token;
    +use crate::token::{CustomToken, Token};
     use proc_macro2::{Delimiter, Span};
     use std::cell::RefCell;
     
    @@ -193,13 +356,13 @@
     /// # Example
     ///
     /// ```
    -/// use syn::{ConstParam, Ident, Lifetime, LifetimeDef, Result, Token, TypeParam};
    +/// use syn::{ConstParam, Ident, Lifetime, LifetimeParam, Result, Token, TypeParam};
     /// use syn::parse::{Parse, ParseStream};
     ///
     /// // A generic parameter, a single one of the comma-separated elements inside
     /// // angle brackets in:
     /// //
    -/// //     fn f<T: Clone, 'a, 'b: 'a, const N: usize>() { ... }
    +/// //     fn f<T: Clone, 'a, 'b: 'a, const N: usize>() { ... }
     /// //
     /// // On invalid input, lookahead gives us a reasonable error message.
     /// //
    @@ -209,7 +372,7 @@
     /// //       |          ^
     /// enum GenericParam {
     ///     Type(TypeParam),
    -///     Lifetime(LifetimeDef),
    +///     Lifetime(LifetimeParam),
     ///     Const(ConstParam),
     /// }
     ///
    @@ -228,13 +391,13 @@
     ///     }
     /// }
     /// ```
    -pub struct Lookahead1<'a> {
    +pub struct Lookahead1<'a> {
         scope: Span,
    -    cursor: Cursor<'a>,
    -    comparisons: RefCell<Vec<&'static str>>,
    +    cursor: Cursor<'a>,
    +    comparisons: RefCell<Vec<&'static str>>,
     }
     
    -pub fn new(scope: Span, cursor: Cursor) -> Lookahead1 {
    +pub(crate) fn new(scope: Span, cursor: Cursor) -> Lookahead1 {
         Lookahead1 {
             scope,
             cursor,
    @@ -245,7 +408,7 @@
     fn peek_impl(
         lookahead: &Lookahead1,
         peek: fn(Cursor) -> bool,
    -    display: fn() -> &'static str,
    +    display: fn() -> &'static str,
     ) -> bool {
         if peek(lookahead.cursor) {
             return true;
    @@ -254,7 +417,7 @@
         false
     }
     
    -impl<'a> Lookahead1<'a> {
    +impl<'a> Lookahead1<'a> {
         /// Looks at the next token in the parse stream to determine whether it
         /// matches the requested type of token.
         ///
    @@ -279,26 +442,37 @@
         /// The error message will identify all of the expected token types that
         /// have been peeked against this lookahead instance.
         pub fn error(self) -> Error {
    -        let comparisons = self.comparisons.borrow();
    +        let mut comparisons = self.comparisons.into_inner();
    +        comparisons.retain_mut(|display| {
    +            if *display == "`)`" {
    +                *display = match self.cursor.scope_delimiter() {
    +                    Delimiter::Parenthesis => "`)`",
    +                    Delimiter::Brace => "`}`",
    +                    Delimiter::Bracket => "`]`",
    +                    Delimiter::None => return false,
    +                }
    +            }
    +            true
    +        });
             match comparisons.len() {
                 0 => {
                     if self.cursor.eof() {
    -                    Error::new(self.scope, "unexpected end of input")
    +                    Error::new(self.scope, "unexpected end of input")
                     } else {
    -                    Error::new(self.cursor.span(), "unexpected token")
    +                    Error::new(self.cursor.span(), "unexpected token")
                     }
                 }
                 1 => {
    -                let message = format!("expected {}", comparisons[0]);
    +                let message = format!("expected {}", comparisons[0]);
                     error::new_at(self.scope, self.cursor, message)
                 }
                 2 => {
    -                let message = format!("expected {} or {}", comparisons[0], comparisons[1]);
    +                let message = format!("expected {} or {}", comparisons[0], comparisons[1]);
                     error::new_at(self.scope, self.cursor, message)
                 }
                 _ => {
    -                let join = comparisons.join(", ");
    -                let message = format!("expected one of: {}", join);
    +                let join = comparisons.join(", ");
    +                let message = format!("expected one of: {}", join);
                     error::new_at(self.scope, self.cursor, message)
                 }
             }
    @@ -319,6 +493,160 @@
         type Token: Token;
     }
     
    +/// Pseudo-token used for peeking the end of a parse stream.
    +///
    +/// This type is only useful as an argument to one of the following functions:
    +///
    +/// - [`ParseStream::peek`][crate::parse::ParseBuffer::peek]
    +/// - [`ParseStream::peek2`][crate::parse::ParseBuffer::peek2]
    +/// - [`ParseStream::peek3`][crate::parse::ParseBuffer::peek3]
    +/// - [`Lookahead1::peek`]
    +///
    +/// The peek will return `true` if there are no remaining tokens after that
    +/// point in the parse stream.
    +///
    +/// # Example
    +///
    +/// Suppose we are parsing attributes containing core::fmt inspired formatting
    +/// arguments:
    +///
    +/// - `#[fmt("simple example")]`
    +/// - `#[fmt("interpolation e{}ample", self.x)]`
    +/// - `#[fmt("interpolation e{x}ample")]`
    +///
    +/// and we want to recognize the cases where no interpolation occurs so that
    +/// more efficient code can be generated.
    +///
    +/// The following implementation uses `input.peek(Token![,]) &&
    +/// input.peek2(End)` to recognize the case of a trailing comma without
    +/// consuming the comma from the parse stream, because if it isn't a trailing
    +/// comma, that same comma needs to be parsed as part of `args`.
    +///
    +/// ```
    +/// use proc_macro2::TokenStream;
    +/// use quote::quote;
    +/// use syn::parse::{End, Parse, ParseStream, Result};
    +/// use syn::{parse_quote, Attribute, LitStr, Token};
    +///
    +/// struct FormatArgs {
    +///     template: LitStr,  // "...{}..."
    +///     args: TokenStream, // , self.x
    +/// }
    +///
    +/// impl Parse for FormatArgs {
    +///     fn parse(input: ParseStream) -> Result<Self> {
    +///         let template: LitStr = input.parse()?;
    +///
    +///         let args = if input.is_empty()
    +///             || input.peek(Token![,]) && input.peek2(End)
    +///         {
    +///             input.parse::<Option<Token![,]>>()?;
    +///             TokenStream::new()
    +///         } else {
    +///             input.parse()?
    +///         };
    +///
    +///         Ok(FormatArgs {
    +///             template,
    +///             args,
    +///         })
    +///     }
    +/// }
    +///
    +/// fn main() -> Result<()> {
    +///     let attrs: Vec<Attribute> = parse_quote! {
    +///         #[fmt("simple example")]
    +///         #[fmt("interpolation e{}ample", self.x)]
    +///         #[fmt("interpolation e{x}ample")]
    +///     };
    +///
    +///     for attr in &attrs {
    +///         let FormatArgs { template, args } = attr.parse_args()?;
    +///         let requires_fmt_machinery =
    +///             !args.is_empty() || template.value().contains(['{', '}']);
    +///         let out = if requires_fmt_machinery {
    +///             quote! {
    +///                 ::core::write!(__formatter, #template #args)
    +///             }
    +///         } else {
    +///             quote! {
    +///                 __formatter.write_str(#template)
    +///             }
    +///         };
    +///         println!("{}", out);
    +///     }
    +///     Ok(())
    +/// }
    +/// ```
    +///
    +/// Implementing this parsing logic without `peek2(End)` is more clumsy because
    +/// we'd need a parse stream actually advanced past the comma before being able
    +/// to find out whether there is anything after it. It would look something
    +/// like:
    +///
    +/// ```
    +/// # use proc_macro2::TokenStream;
    +/// # use syn::parse::{ParseStream, Result};
    +/// # use syn::Token;
    +/// #
    +/// # fn parse(input: ParseStream) -> Result<()> {
    +/// use syn::parse::discouraged::Speculative as _;
    +///
    +/// let ahead = input.fork();
    +/// ahead.parse::<Option<Token![,]>>()?;
    +/// let args = if ahead.is_empty() {
    +///     input.advance_to(&ahead);
    +///     TokenStream::new()
    +/// } else {
    +///     input.parse()?
    +/// };
    +/// # Ok(())
    +/// # }
    +/// ```
    +///
    +/// or:
    +///
    +/// ```
    +/// # use proc_macro2::TokenStream;
    +/// # use syn::parse::{ParseStream, Result};
    +/// # use syn::Token;
    +/// #
    +/// # fn parse(input: ParseStream) -> Result<()> {
    +/// use quote::ToTokens as _;
    +///
    +/// let comma: Option<Token![,]> = input.parse()?;
    +/// let mut args = TokenStream::new();
    +/// if !input.is_empty() {
    +///     comma.to_tokens(&mut args);
    +///     input.parse::<TokenStream>()?.to_tokens(&mut args);
    +/// }
    +/// # Ok(())
    +/// # }
    +/// ```
    +pub struct End;
    +
    +impl Copy for End {}
    +
    +impl Clone for End {
    +    fn clone(&self) -> Self {
    +        *self
    +    }
    +}
    +
    +impl Peek for End {
    +    type Token = Self;
    +}
    +
    +impl CustomToken for End {
    +    fn peek(cursor: Cursor) -> bool {
    +        cursor.eof()
    +    }
    +
    +    fn display() -> &'static str {
    +        "`)`" // Lookahead1 error message will fill in the expected close delimiter
    +    }
    +}
    +
     impl<F: Copy + FnOnce(TokenMarker) -> T, T: Token> Peek for F {
         type Token = T;
     }
    @@ -331,9 +659,7 @@
         }
     }
     
    -pub fn is_delimiter(cursor: Cursor, delimiter: Delimiter) -> bool {
    -    cursor.group(delimiter).is_some()
    -}
    -
     impl<F: Copy + FnOnce(TokenMarker) -> T, T: Token> Sealed for F {}
    +
    +impl Sealed for End {}
     
    \ No newline at end of file diff --git a/src/syn/mac.rs.html b/src/syn/mac.rs.html index 9b6c4a5..070cc11 100644 --- a/src/syn/mac.rs.html +++ b/src/syn/mac.rs.html @@ -1,4 +1,5 @@ -mac.rs - source
    1
    +mac.rs - source

    syn/
    mac.rs

    +1
     2
     3
     4
    @@ -217,21 +218,27 @@
     217
     218
     219
    -
    use super::*;
    +220
    +221
    +222
    +223
    +224
    +225
    #[cfg(feature = "parsing")]
    +use crate::error::Result;
    +#[cfg(feature = "parsing")]
    +use crate::parse::{Parse, ParseStream, Parser};
    +use crate::path::Path;
     use crate::token::{Brace, Bracket, Paren};
    +use proc_macro2::extra::DelimSpan;
    +#[cfg(feature = "parsing")]
    +use proc_macro2::Delimiter;
     use proc_macro2::TokenStream;
    -#[cfg(feature = "parsing")]
    -use proc_macro2::{Delimiter, Group, Span, TokenTree};
    +#[cfg(feature = "parsing")]
    +use proc_macro2::TokenTree;
     
    -#[cfg(feature = "parsing")]
    -use crate::parse::{Parse, ParseStream, Parser, Result};
    -
    -ast_struct! {
    -    /// A macro invocation: `println!("{}", mac)`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +ast_struct! {
    +    /// A macro invocation: `println!("{}", mac)`.
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct Macro {
             pub path: Path,
             pub bang_token: Token![!],
    @@ -240,12 +247,9 @@
         }
     }
     
    -ast_enum! {
    +ast_enum! {
         /// A grouping token that surrounds a macro body: `m!(...)` or `m!{...}` or `m![...]`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub enum MacroDelimiter {
             Paren(Paren),
             Brace(Brace),
    @@ -253,24 +257,26 @@
         }
     }
     
    -#[cfg(feature = "parsing")]
    -fn delimiter_span_close(macro_delimiter: &MacroDelimiter) -> Span {
    -    let delimiter = match macro_delimiter {
    -        MacroDelimiter::Paren(_) => Delimiter::Parenthesis,
    -        MacroDelimiter::Brace(_) => Delimiter::Brace,
    -        MacroDelimiter::Bracket(_) => Delimiter::Bracket,
    -    };
    -    let mut group = Group::new(delimiter, TokenStream::new());
    -    group.set_span(match macro_delimiter {
    -        MacroDelimiter::Paren(token) => token.span,
    -        MacroDelimiter::Brace(token) => token.span,
    -        MacroDelimiter::Bracket(token) => token.span,
    -    });
    -    group.span_close()
    +impl MacroDelimiter {
    +    pub fn span(&self) -> &DelimSpan {
    +        match self {
    +            MacroDelimiter::Paren(token) => &token.span,
    +            MacroDelimiter::Brace(token) => &token.span,
    +            MacroDelimiter::Bracket(token) => &token.span,
    +        }
    +    }
    +
    +    #[cfg(all(feature = "full", any(feature = "parsing", feature = "printing")))]
    +    pub(crate) fn is_brace(&self) -> bool {
    +        match self {
    +            MacroDelimiter::Brace(_) => true,
    +            MacroDelimiter::Paren(_) | MacroDelimiter::Bracket(_) => false,
    +        }
    +    }
     }
     
     impl Macro {
    -    /// Parse the tokens within the macro invocation's delimiters into a syntax
    +    /// Parse the tokens within the macro invocation's delimiters into a syntax
         /// tree.
         ///
         /// This is equivalent to `syn::parse2::<T>(mac.tokens)` except that it
    @@ -284,10 +290,10 @@
         /// use syn::parse::{Error, Parse, ParseStream, Result};
         /// use syn::punctuated::Punctuated;
         ///
    -    /// // The arguments expected by libcore's format_args macro, and as a
    +    /// // The arguments expected by libcore's format_args macro, and as a
         /// // result most other formatting and printing macros like println.
         /// //
    -    /// //     println!("{} is {number:.prec$}", "x", prec=5, number=0.01)
    +    /// //     println!("{} is {number:.prec$}", "x", prec=5, number=0.01)
         /// struct FormatArgs {
         ///     format_string: Expr,
         ///     positional_args: Vec<Expr>,
    @@ -339,61 +345,63 @@
         ///         other => {
         ///             // First argument was not a string literal expression.
         ///             // Maybe something like: println!(concat!(...), ...)
    -    ///             Err(Error::new_spanned(other, "format string must be a string literal"))
    +    ///             Err(Error::new_spanned(other, "format string must be a string literal"))
         ///         }
         ///     }
         /// }
         ///
         /// fn main() {
         ///     let invocation = parse_quote! {
    -    ///         println!("{:?}", Instant::now())
    +    ///         println!("{:?}", Instant::now())
         ///     };
         ///     let lit = get_format_string(&invocation).unwrap();
    -    ///     assert_eq!(lit.value(), "{:?}");
    +    ///     assert_eq!(lit.value(), "{:?}");
         /// }
         /// ```
    -    #[cfg(feature = "parsing")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "parsing")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         pub fn parse_body<T: Parse>(&self) -> Result<T> {
             self.parse_body_with(T::parse)
         }
     
    -    /// Parse the tokens within the macro invocation's delimiters using the
    +    /// Parse the tokens within the macro invocation's delimiters using the
         /// given parser.
    -    #[cfg(feature = "parsing")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "parsing")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         pub fn parse_body_with<F: Parser>(&self, parser: F) -> Result<F::Output> {
    -        let scope = delimiter_span_close(&self.delimiter);
    +        let scope = self.delimiter.span().close();
             crate::parse::parse_scoped(parser, scope, self.tokens.clone())
         }
     }
     
    -#[cfg(feature = "parsing")]
    -pub fn parse_delimiter(input: ParseStream) -> Result<(MacroDelimiter, TokenStream)> {
    +#[cfg(feature = "parsing")]
    +pub(crate) fn parse_delimiter(input: ParseStream) -> Result<(MacroDelimiter, TokenStream)> {
         input.step(|cursor| {
             if let Some((TokenTree::Group(g), rest)) = cursor.token_tree() {
    -            let span = g.span();
    +            let span = g.delim_span();
                 let delimiter = match g.delimiter() {
                     Delimiter::Parenthesis => MacroDelimiter::Paren(Paren(span)),
                     Delimiter::Brace => MacroDelimiter::Brace(Brace(span)),
                     Delimiter::Bracket => MacroDelimiter::Bracket(Bracket(span)),
                     Delimiter::None => {
    -                    return Err(cursor.error("expected delimiter"));
    +                    return Err(cursor.error("expected delimiter"));
                     }
                 };
                 Ok(((delimiter, g.stream()), rest))
             } else {
    -            Err(cursor.error("expected delimiter"))
    +            Err(cursor.error("expected delimiter"))
             }
         })
     }
     
    -#[cfg(feature = "parsing")]
    -pub mod parsing {
    -    use super::*;
    -    use crate::parse::{Parse, ParseStream, Result};
    +#[cfg(feature = "parsing")]
    +pub(crate) mod parsing {
    +    use crate::error::Result;
    +    use crate::mac::{parse_delimiter, Macro};
    +    use crate::parse::{Parse, ParseStream};
    +    use crate::path::Path;
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for Macro {
             fn parse(input: ParseStream) -> Result<Self> {
                 let tokens;
    @@ -411,28 +419,32 @@
         }
     }
     
    -#[cfg(feature = "printing")]
    +#[cfg(feature = "printing")]
     mod printing {
    -    use super::*;
    -    use proc_macro2::TokenStream;
    +    use crate::mac::{Macro, MacroDelimiter};
    +    use crate::path;
    +    use crate::path::printing::PathStyle;
    +    use crate::token;
    +    use proc_macro2::{Delimiter, TokenStream};
         use quote::ToTokens;
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    impl MacroDelimiter {
    +        pub(crate) fn surround(&self, tokens: &mut TokenStream, inner: TokenStream) {
    +            let (delim, span) = match self {
    +                MacroDelimiter::Paren(paren) => (Delimiter::Parenthesis, paren.span),
    +                MacroDelimiter::Brace(brace) => (Delimiter::Brace, brace.span),
    +                MacroDelimiter::Bracket(bracket) => (Delimiter::Bracket, bracket.span),
    +            };
    +            token::printing::delim(delim, span.join(), tokens, inner);
    +        }
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for Macro {
             fn to_tokens(&self, tokens: &mut TokenStream) {
    -            self.path.to_tokens(tokens);
    +            path::printing::print_path(tokens, &self.path, PathStyle::Mod);
                 self.bang_token.to_tokens(tokens);
    -            match &self.delimiter {
    -                MacroDelimiter::Paren(paren) => {
    -                    paren.surround(tokens, |tokens| self.tokens.to_tokens(tokens));
    -                }
    -                MacroDelimiter::Brace(brace) => {
    -                    brace.surround(tokens, |tokens| self.tokens.to_tokens(tokens));
    -                }
    -                MacroDelimiter::Bracket(bracket) => {
    -                    bracket.surround(tokens, |tokens| self.tokens.to_tokens(tokens));
    -                }
    -            }
    +            self.delimiter.surround(tokens, self.tokens.clone());
             }
         }
     }
    diff --git a/src/syn/macros.rs.html b/src/syn/macros.rs.html
    index bb6e0e6..44a38a7 100644
    --- a/src/syn/macros.rs.html
    +++ b/src/syn/macros.rs.html
    @@ -1,4 +1,5 @@
    -macros.rs - source
    1
    +macros.rs - source

    syn/
    macros.rs

    +1
     2
     3
     4
    @@ -175,24 +176,31 @@
     175
     176
     177
    -
    #[cfg_attr(
    -    not(any(feature = "full", feature = "derive")),
    +178
    +179
    +180
    +181
    +182
    #[cfg_attr(
    +    not(any(feature = "full", feature = "derive")),
         allow(unknown_lints, unused_macro_rules)
     )]
    -macro_rules! ast_struct {
    +macro_rules! ast_struct {
         (
    -        [$($attrs_pub:tt)*]
    -        struct $name:ident #full $($rest:tt)*
    +        $(#[$attr:meta])*
    +        $pub:ident $struct:ident $name:ident #full $body:tt
         ) => {
    -        #[cfg(feature = "full")]
    -        $($attrs_pub)* struct $name $($rest)*
    +        check_keyword_matches!(pub $pub);
    +        check_keyword_matches!(struct $struct);
     
    -        #[cfg(not(feature = "full"))]
    -        $($attrs_pub)* struct $name {
    +        #[cfg(feature = "full")]
    +        $(#[$attr])* $pub $struct $name $body
    +
    +        #[cfg(not(feature = "full"))]
    +        $(#[$attr])* $pub $struct $name {
                 _noconstruct: ::std::marker::PhantomData<::proc_macro2::Span>,
             }
     
    -        #[cfg(all(not(feature = "full"), feature = "printing"))]
    +        #[cfg(all(not(feature = "full"), feature = "printing"))]
             impl ::quote::ToTokens for $name {
                 fn to_tokens(&self, _: &mut ::proc_macro2::TokenStream) {
                     unreachable!()
    @@ -201,85 +209,63 @@
         };
     
         (
    -        [$($attrs_pub:tt)*]
    -        struct $name:ident $($rest:tt)*
    +        $(#[$attr:meta])*
    +        $pub:ident $struct:ident $name:ident $body:tt
         ) => {
    -        $($attrs_pub)* struct $name $($rest)*
    -    };
    +        check_keyword_matches!(pub $pub);
    +        check_keyword_matches!(struct $struct);
     
    -    ($($t:tt)*) => {
    -        strip_attrs_pub!(ast_struct!($($t)*));
    -    };
    +        $(#[$attr])* $pub $struct $name $body
    +    };
     }
     
    -macro_rules! ast_enum {
    -    // Drop the `#no_visit` attribute, if present.
    -    (
    -        [$($attrs_pub:tt)*]
    -        enum $name:ident #no_visit $($rest:tt)*
    -    ) => (
    -        ast_enum!([$($attrs_pub)*] enum $name $($rest)*);
    -    );
    -
    -    (
    -        [$($attrs_pub:tt)*]
    -        enum $name:ident $($rest:tt)*
    -    ) => (
    -        $($attrs_pub)* enum $name $($rest)*
    -    );
    -
    -    ($($t:tt)*) => {
    -        strip_attrs_pub!(ast_enum!($($t)*));
    -    };
    -}
    -
    -macro_rules! ast_enum_of_structs {
    +#[cfg(any(feature = "full", feature = "derive"))]
    +macro_rules! ast_enum {
         (
             $(#[$enum_attr:meta])*
             $pub:ident $enum:ident $name:ident $body:tt
    -        $($remaining:tt)*
    -    ) => {
    -        ast_enum!($(#[$enum_attr])* $pub $enum $name $body);
    -        ast_enum_of_structs_impl!($pub $enum $name $body $($remaining)*);
    -    };
    -}
    -
    -macro_rules! ast_enum_of_structs_impl {
    -    (
    -        $pub:ident $enum:ident $name:ident {
    -            $(
    -                $(#[cfg $cfg_attr:tt])*
    -                $(#[doc $($doc_attr:tt)*])*
    -                $variant:ident $( ($($member:ident)::+) )*,
    -            )*
    -        }
    -
    -        $($remaining:tt)*
         ) => {
             check_keyword_matches!(pub $pub);
             check_keyword_matches!(enum $enum);
     
    -        $($(
    -            ast_enum_from_struct!($name::$variant, $($member)::+);
    -        )*)*
    +        $(#[$enum_attr])* $pub $enum $name $body
    +    };
    +}
     
    -        #[cfg(feature = "printing")]
    -        generate_to_tokens! {
    -            $($remaining)*
    -            ()
    -            tokens
    -            $name {
    -                $(
    -                    $(#[cfg $cfg_attr])*
    -                    $(#[doc $($doc_attr)*])*
    -                    $variant $($($member)::+)*,
    -                )*
    -            }
    -        }
    +macro_rules! ast_enum_of_structs {
    +    (
    +        $(#[$enum_attr:meta])*
    +        $pub:ident $enum:ident $name:ident $body:tt
    +    ) => {
    +        check_keyword_matches!(pub $pub);
    +        check_keyword_matches!(enum $enum);
    +
    +        $(#[$enum_attr])* $pub $enum $name $body
    +
    +        ast_enum_of_structs_impl!($name $body);
    +
    +        #[cfg(feature = "printing")]
    +        generate_to_tokens!(() tokens $name $body);
         };
     }
     
    -macro_rules! ast_enum_from_struct {
    +macro_rules! ast_enum_of_structs_impl {
    +    (
    +        $name:ident {
    +            $(
    +                $(#[cfg $cfg_attr:tt])*
    +                $(#[doc $($doc_attr:tt)*])*
    +                $variant:ident $( ($member:ident) )*,
    +            )*
    +        }
    +    ) => {
    +        $($(
    +            ast_enum_from_struct!($name::$variant, $member);
    +        )*)*
    +    };
    +}
    +
    +macro_rules! ast_enum_from_struct {
         // No From<TokenStream> for verbatim variants.
         ($name:ident::Verbatim, $member:ident) => {};
     
    @@ -292,14 +278,8 @@
         };
     }
     
    -#[cfg(feature = "printing")]
    -#[cfg_attr(
    -    not(any(feature = "full", feature = "derive")),
    -    allow(unknown_lints, unused_macro_rules)
    -)]
    -macro_rules! generate_to_tokens {
    -    (do_not_generate_to_tokens $($foo:tt)*) => ();
    -
    +#[cfg(feature = "printing")]
    +macro_rules! generate_to_tokens {
         (
             ($($arms:tt)*) $tokens:ident $name:ident {
                 $(#[cfg $cfg_attr:tt])*
    @@ -318,7 +298,7 @@
             ($($arms:tt)*) $tokens:ident $name:ident {
                 $(#[cfg $cfg_attr:tt])*
                 $(#[doc $($doc_attr:tt)*])*
    -            $variant:ident $member:ident,
    +            $variant:ident($member:ident),
                 $($next:tt)*
             }
         ) => {
    @@ -329,7 +309,7 @@
         };
     
         (($($arms:tt)*) $tokens:ident $name:ident {}) => {
    -        #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +        #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
             impl ::quote::ToTokens for $name {
                 fn to_tokens(&self, $tokens: &mut ::proc_macro2::TokenStream) {
                     match self {
    @@ -340,16 +320,46 @@
         };
     }
     
    -macro_rules! strip_attrs_pub {
    -    ($mac:ident!($(#[$m:meta])* $pub:ident $($t:tt)*)) => {
    +// Rustdoc bug: does not respect the doc(hidden) on some items.
    +#[cfg(all(doc, feature = "parsing"))]
    +macro_rules! pub_if_not_doc {
    +    ($(#[$m:meta])* $pub:ident $($item:tt)*) => {
             check_keyword_matches!(pub $pub);
     
    -        $mac!([$(#[$m])* $pub] $($t)*);
    +        $(#[$m])*
    +        $pub(crate) $($item)*
         };
     }
     
    -macro_rules! check_keyword_matches {
    +#[cfg(all(not(doc), feature = "parsing"))]
    +macro_rules! pub_if_not_doc {
    +    ($(#[$m:meta])* $pub:ident $($item:tt)*) => {
    +        check_keyword_matches!(pub $pub);
    +
    +        $(#[$m])*
    +        $pub $($item)*
    +    };
    +}
    +
    +macro_rules! check_keyword_matches {
         (enum enum) => {};
         (pub pub) => {};
    +    (struct struct) => {};
    +}
    +
    +#[cfg(any(feature = "full", feature = "derive"))]
    +macro_rules! return_impl_trait {
    +    (
    +        $(#[$attr:meta])*
    +        $vis:vis fn $name:ident $args:tt -> $impl_trait:ty [$concrete:ty] $body:block
    +    ) => {
    +        #[cfg(not(docsrs))]
    +        $(#[$attr])*
    +        $vis fn $name $args -> $concrete $body
    +
    +        #[cfg(docsrs)]
    +        $(#[$attr])*
    +        $vis fn $name $args -> $impl_trait $body
    +    };
     }
     
    \ No newline at end of file diff --git a/src/syn/meta.rs.html b/src/syn/meta.rs.html new file mode 100644 index 0000000..e19f633 --- /dev/null +++ b/src/syn/meta.rs.html @@ -0,0 +1,855 @@ +meta.rs - source

    syn/
    meta.rs

    +1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    +81
    +82
    +83
    +84
    +85
    +86
    +87
    +88
    +89
    +90
    +91
    +92
    +93
    +94
    +95
    +96
    +97
    +98
    +99
    +100
    +101
    +102
    +103
    +104
    +105
    +106
    +107
    +108
    +109
    +110
    +111
    +112
    +113
    +114
    +115
    +116
    +117
    +118
    +119
    +120
    +121
    +122
    +123
    +124
    +125
    +126
    +127
    +128
    +129
    +130
    +131
    +132
    +133
    +134
    +135
    +136
    +137
    +138
    +139
    +140
    +141
    +142
    +143
    +144
    +145
    +146
    +147
    +148
    +149
    +150
    +151
    +152
    +153
    +154
    +155
    +156
    +157
    +158
    +159
    +160
    +161
    +162
    +163
    +164
    +165
    +166
    +167
    +168
    +169
    +170
    +171
    +172
    +173
    +174
    +175
    +176
    +177
    +178
    +179
    +180
    +181
    +182
    +183
    +184
    +185
    +186
    +187
    +188
    +189
    +190
    +191
    +192
    +193
    +194
    +195
    +196
    +197
    +198
    +199
    +200
    +201
    +202
    +203
    +204
    +205
    +206
    +207
    +208
    +209
    +210
    +211
    +212
    +213
    +214
    +215
    +216
    +217
    +218
    +219
    +220
    +221
    +222
    +223
    +224
    +225
    +226
    +227
    +228
    +229
    +230
    +231
    +232
    +233
    +234
    +235
    +236
    +237
    +238
    +239
    +240
    +241
    +242
    +243
    +244
    +245
    +246
    +247
    +248
    +249
    +250
    +251
    +252
    +253
    +254
    +255
    +256
    +257
    +258
    +259
    +260
    +261
    +262
    +263
    +264
    +265
    +266
    +267
    +268
    +269
    +270
    +271
    +272
    +273
    +274
    +275
    +276
    +277
    +278
    +279
    +280
    +281
    +282
    +283
    +284
    +285
    +286
    +287
    +288
    +289
    +290
    +291
    +292
    +293
    +294
    +295
    +296
    +297
    +298
    +299
    +300
    +301
    +302
    +303
    +304
    +305
    +306
    +307
    +308
    +309
    +310
    +311
    +312
    +313
    +314
    +315
    +316
    +317
    +318
    +319
    +320
    +321
    +322
    +323
    +324
    +325
    +326
    +327
    +328
    +329
    +330
    +331
    +332
    +333
    +334
    +335
    +336
    +337
    +338
    +339
    +340
    +341
    +342
    +343
    +344
    +345
    +346
    +347
    +348
    +349
    +350
    +351
    +352
    +353
    +354
    +355
    +356
    +357
    +358
    +359
    +360
    +361
    +362
    +363
    +364
    +365
    +366
    +367
    +368
    +369
    +370
    +371
    +372
    +373
    +374
    +375
    +376
    +377
    +378
    +379
    +380
    +381
    +382
    +383
    +384
    +385
    +386
    +387
    +388
    +389
    +390
    +391
    +392
    +393
    +394
    +395
    +396
    +397
    +398
    +399
    +400
    +401
    +402
    +403
    +404
    +405
    +406
    +407
    +408
    +409
    +410
    +411
    +412
    +413
    +414
    +415
    +416
    +417
    +418
    +419
    +420
    +421
    +422
    +423
    +424
    +425
    +426
    +427
    //! Facility for interpreting structured content inside of an `Attribute`.
    +
    +use crate::error::{Error, Result};
    +use crate::ext::IdentExt as _;
    +use crate::lit::Lit;
    +use crate::parse::{ParseStream, Parser};
    +use crate::path::{Path, PathSegment};
    +use crate::punctuated::Punctuated;
    +use proc_macro2::Ident;
    +use std::fmt::Display;
    +
    +/// Make a parser that is usable with `parse_macro_input!` in a
    +/// `#[proc_macro_attribute]` macro.
    +///
    +/// *Warning:* When parsing attribute args **other than** the
    +/// `proc_macro::TokenStream` input of a `proc_macro_attribute`, you do **not**
    +/// need this function. In several cases your callers will get worse error
    +/// messages if you use this function, because the surrounding delimiter's span
    +/// is concealed from attribute macros by rustc. Use
    +/// [`Attribute::parse_nested_meta`] instead.
    +///
    +/// [`Attribute::parse_nested_meta`]: crate::Attribute::parse_nested_meta
    +///
    +/// # Example
    +///
    +/// This example implements an attribute macro whose invocations look like this:
    +///
    +/// ```
    +/// # const IGNORE: &str = stringify! {
    +/// #[tea(kind = "EarlGrey", hot)]
    +/// struct Picard {...}
    +/// # };
    +/// ```
    +///
    +/// The "parameters" supported by the attribute are:
    +///
    +/// - `kind = "..."`
    +/// - `hot`
    +/// - `with(sugar, milk, ...)`, a comma-separated list of ingredients
    +///
    +/// ```
    +/// # extern crate proc_macro;
    +/// #
    +/// use proc_macro::TokenStream;
    +/// use syn::{parse_macro_input, LitStr, Path};
    +///
    +/// # const IGNORE: &str = stringify! {
    +/// #[proc_macro_attribute]
    +/// # };
    +/// pub fn tea(args: TokenStream, input: TokenStream) -> TokenStream {
    +///     let mut kind: Option<LitStr> = None;
    +///     let mut hot: bool = false;
    +///     let mut with: Vec<Path> = Vec::new();
    +///     let tea_parser = syn::meta::parser(|meta| {
    +///         if meta.path.is_ident("kind") {
    +///             kind = Some(meta.value()?.parse()?);
    +///             Ok(())
    +///         } else if meta.path.is_ident("hot") {
    +///             hot = true;
    +///             Ok(())
    +///         } else if meta.path.is_ident("with") {
    +///             meta.parse_nested_meta(|meta| {
    +///                 with.push(meta.path);
    +///                 Ok(())
    +///             })
    +///         } else {
    +///             Err(meta.error("unsupported tea property"))
    +///         }
    +///     });
    +///
    +///     parse_macro_input!(args with tea_parser);
    +///     eprintln!("kind={kind:?} hot={hot} with={with:?}");
    +///
    +///     /* ... */
    +/// #   TokenStream::new()
    +/// }
    +/// ```
    +///
    +/// The `syn::meta` library will take care of dealing with the commas including
    +/// trailing commas, and producing sensible error messages on unexpected input.
    +///
    +/// ```console
    +/// error: expected `,`
    +///  --> src/main.rs:3:37
    +///   |
    +/// 3 | #[tea(kind = "EarlGrey", with(sugar = "lol", milk))]
    +///   |                                     ^
    +/// ```
    +///
    +/// # Example
    +///
    +/// Same as above but we factor out most of the logic into a separate function.
    +///
    +/// ```
    +/// # extern crate proc_macro;
    +/// #
    +/// use proc_macro::TokenStream;
    +/// use syn::meta::ParseNestedMeta;
    +/// use syn::parse::{Parser, Result};
    +/// use syn::{parse_macro_input, LitStr, Path};
    +///
    +/// # const IGNORE: &str = stringify! {
    +/// #[proc_macro_attribute]
    +/// # };
    +/// pub fn tea(args: TokenStream, input: TokenStream) -> TokenStream {
    +///     let mut attrs = TeaAttributes::default();
    +///     let tea_parser = syn::meta::parser(|meta| attrs.parse(meta));
    +///     parse_macro_input!(args with tea_parser);
    +///
    +///     /* ... */
    +/// #   TokenStream::new()
    +/// }
    +///
    +/// #[derive(Default)]
    +/// struct TeaAttributes {
    +///     kind: Option<LitStr>,
    +///     hot: bool,
    +///     with: Vec<Path>,
    +/// }
    +///
    +/// impl TeaAttributes {
    +///     fn parse(&mut self, meta: ParseNestedMeta) -> Result<()> {
    +///         if meta.path.is_ident("kind") {
    +///             self.kind = Some(meta.value()?.parse()?);
    +///             Ok(())
    +///         } else /* just like in last example */
    +/// #           { unimplemented!() }
    +///
    +///     }
    +/// }
    +/// ```
    +pub fn parser(logic: impl FnMut(ParseNestedMeta) -> Result<()>) -> impl Parser<Output = ()> {
    +    |input: ParseStream| {
    +        if input.is_empty() {
    +            Ok(())
    +        } else {
    +            parse_nested_meta(input, logic)
    +        }
    +    }
    +}
    +
    +/// Context for parsing a single property in the conventional syntax for
    +/// structured attributes.
    +///
    +/// # Examples
    +///
    +/// Refer to usage examples on the following two entry-points:
    +///
    +/// - [`Attribute::parse_nested_meta`] if you have an entire `Attribute` to
    +///   parse. Always use this if possible. Generally this is able to produce
    +///   better error messages because `Attribute` holds span information for all
    +///   of the delimiters therein.
    +///
    +/// - [`syn::meta::parser`] if you are implementing a `proc_macro_attribute`
    +///   macro and parsing the arguments to the attribute macro, i.e. the ones
    +///   written in the same attribute that dispatched the macro invocation. Rustc
    +///   does not pass span information for the surrounding delimiters into the
    +///   attribute macro invocation in this situation, so error messages might be
    +///   less precise.
    +///
    +/// [`Attribute::parse_nested_meta`]: crate::Attribute::parse_nested_meta
    +/// [`syn::meta::parser`]: crate::meta::parser
    +#[non_exhaustive]
    +pub struct ParseNestedMeta<'a> {
    +    pub path: Path,
    +    pub input: ParseStream<'a>,
    +}
    +
    +impl<'a> ParseNestedMeta<'a> {
    +    /// Used when parsing `key = "value"` syntax.
    +    ///
    +    /// All it does is advance `meta.input` past the `=` sign in the input. You
    +    /// could accomplish the same effect by writing
    +    /// `meta.parse::<Token![=]>()?`, so at most it is a minor convenience to
    +    /// use `meta.value()?`.
    +    ///
    +    /// # Example
    +    ///
    +    /// ```
    +    /// use syn::{parse_quote, Attribute, LitStr};
    +    ///
    +    /// let attr: Attribute = parse_quote! {
    +    ///     #[tea(kind = "EarlGrey")]
    +    /// };
    +    ///                                          // conceptually:
    +    /// if attr.path().is_ident("tea") {         // this parses the `tea`
    +    ///     attr.parse_nested_meta(|meta| {      // this parses the `(`
    +    ///         if meta.path.is_ident("kind") {  // this parses the `kind`
    +    ///             let value = meta.value()?;   // this parses the `=`
    +    ///             let s: LitStr = value.parse()?;  // this parses `"EarlGrey"`
    +    ///             if s.value() == "EarlGrey" {
    +    ///                 // ...
    +    ///             }
    +    ///             Ok(())
    +    ///         } else {
    +    ///             Err(meta.error("unsupported attribute"))
    +    ///         }
    +    ///     })?;
    +    /// }
    +    /// # anyhow::Ok(())
    +    /// ```
    +    pub fn value(&self) -> Result<ParseStream<'a>> {
    +        self.input.parse::<Token![=]>()?;
    +        Ok(self.input)
    +    }
    +
    +    /// Used when parsing `list(...)` syntax **if** the content inside the
    +    /// nested parentheses is also expected to conform to Rust's structured
    +    /// attribute convention.
    +    ///
    +    /// # Example
    +    ///
    +    /// ```
    +    /// use syn::{parse_quote, Attribute};
    +    ///
    +    /// let attr: Attribute = parse_quote! {
    +    ///     #[tea(with(sugar, milk))]
    +    /// };
    +    ///
    +    /// if attr.path().is_ident("tea") {
    +    ///     attr.parse_nested_meta(|meta| {
    +    ///         if meta.path.is_ident("with") {
    +    ///             meta.parse_nested_meta(|meta| {  // <---
    +    ///                 if meta.path.is_ident("sugar") {
    +    ///                     // Here we can go even deeper if needed.
    +    ///                     Ok(())
    +    ///                 } else if meta.path.is_ident("milk") {
    +    ///                     Ok(())
    +    ///                 } else {
    +    ///                     Err(meta.error("unsupported ingredient"))
    +    ///                 }
    +    ///             })
    +    ///         } else {
    +    ///             Err(meta.error("unsupported tea property"))
    +    ///         }
    +    ///     })?;
    +    /// }
    +    /// # anyhow::Ok(())
    +    /// ```
    +    ///
    +    /// # Counterexample
    +    ///
    +    /// If you don't need `parse_nested_meta`'s help in parsing the content
    +    /// written within the nested parentheses, keep in mind that you can always
    +    /// just parse it yourself from the exposed ParseStream. Rust syntax permits
    +    /// arbitrary tokens within those parentheses so for the crazier stuff,
    +    /// `parse_nested_meta` is not what you want.
    +    ///
    +    /// ```
    +    /// use syn::{parenthesized, parse_quote, Attribute, LitInt};
    +    ///
    +    /// let attr: Attribute = parse_quote! {
    +    ///     #[repr(align(32))]
    +    /// };
    +    ///
    +    /// let mut align: Option<LitInt> = None;
    +    /// if attr.path().is_ident("repr") {
    +    ///     attr.parse_nested_meta(|meta| {
    +    ///         if meta.path.is_ident("align") {
    +    ///             let content;
    +    ///             parenthesized!(content in meta.input);
    +    ///             align = Some(content.parse()?);
    +    ///             Ok(())
    +    ///         } else {
    +    ///             Err(meta.error("unsupported repr"))
    +    ///         }
    +    ///     })?;
    +    /// }
    +    /// # anyhow::Ok(())
    +    /// ```
    +    pub fn parse_nested_meta(
    +        &self,
    +        logic: impl FnMut(ParseNestedMeta) -> Result<()>,
    +    ) -> Result<()> {
    +        let content;
    +        parenthesized!(content in self.input);
    +        parse_nested_meta(&content, logic)
    +    }
    +
    +    /// Report that the attribute's content did not conform to expectations.
    +    ///
    +    /// The span of the resulting error will cover `meta.path` *and* everything
    +    /// that has been parsed so far since it.
    +    ///
    +    /// There are 2 ways you might call this. First, if `meta.path` is not
    +    /// something you recognize:
    +    ///
    +    /// ```
    +    /// # use syn::Attribute;
    +    /// #
    +    /// # fn example(attr: &Attribute) -> syn::Result<()> {
    +    /// attr.parse_nested_meta(|meta| {
    +    ///     if meta.path.is_ident("kind") {
    +    ///         // ...
    +    ///         Ok(())
    +    ///     } else {
    +    ///         Err(meta.error("unsupported tea property"))
    +    ///     }
    +    /// })?;
    +    /// # Ok(())
    +    /// # }
    +    /// ```
    +    ///
    +    /// In this case, it behaves exactly like
    +    /// `syn::Error::new_spanned(&meta.path, "message...")`.
    +    ///
    +    /// ```console
    +    /// error: unsupported tea property
    +    ///  --> src/main.rs:3:26
    +    ///   |
    +    /// 3 | #[tea(kind = "EarlGrey", wat = "foo")]
    +    ///   |                          ^^^
    +    /// ```
    +    ///
    +    /// More usefully, the second place is if you've already parsed a value but
    +    /// have decided not to accept the value:
    +    ///
    +    /// ```
    +    /// # use syn::Attribute;
    +    /// #
    +    /// # fn example(attr: &Attribute) -> syn::Result<()> {
    +    /// use syn::Expr;
    +    ///
    +    /// attr.parse_nested_meta(|meta| {
    +    ///     if meta.path.is_ident("kind") {
    +    ///         let expr: Expr = meta.value()?.parse()?;
    +    ///         match expr {
    +    ///             Expr::Lit(expr) => /* ... */
    +    /// #               unimplemented!(),
    +    ///             Expr::Path(expr) => /* ... */
    +    /// #               unimplemented!(),
    +    ///             Expr::Macro(expr) => /* ... */
    +    /// #               unimplemented!(),
    +    ///             _ => Err(meta.error("tea kind must be a string literal, path, or macro")),
    +    ///         }
    +    ///     } else /* as above */
    +    /// #       { unimplemented!() }
    +    ///
    +    /// })?;
    +    /// # Ok(())
    +    /// # }
    +    /// ```
    +    ///
    +    /// ```console
    +    /// error: tea kind must be a string literal, path, or macro
    +    ///  --> src/main.rs:3:7
    +    ///   |
    +    /// 3 | #[tea(kind = async { replicator.await })]
    +    ///   |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    +    /// ```
    +    ///
    +    /// Often you may want to use `syn::Error::new_spanned` even in this
    +    /// situation. In the above code, that would be:
    +    ///
    +    /// ```
    +    /// # use syn::{Error, Expr};
    +    /// #
    +    /// # fn example(expr: Expr) -> syn::Result<()> {
    +    ///     match expr {
    +    ///         Expr::Lit(expr) => /* ... */
    +    /// #           unimplemented!(),
    +    ///         Expr::Path(expr) => /* ... */
    +    /// #           unimplemented!(),
    +    ///         Expr::Macro(expr) => /* ... */
    +    /// #           unimplemented!(),
    +    ///         _ => Err(Error::new_spanned(expr, "unsupported expression type for `kind`")),
    +    ///     }
    +    /// # }
    +    /// ```
    +    ///
    +    /// ```console
    +    /// error: unsupported expression type for `kind`
    +    ///  --> src/main.rs:3:14
    +    ///   |
    +    /// 3 | #[tea(kind = async { replicator.await })]
    +    ///   |              ^^^^^^^^^^^^^^^^^^^^^^^^^^
    +    /// ```
    +    pub fn error(&self, msg: impl Display) -> Error {
    +        let start_span = self.path.segments[0].ident.span();
    +        let end_span = self.input.cursor().prev_span();
    +        crate::error::new2(start_span, end_span, msg)
    +    }
    +}
    +
    +pub(crate) fn parse_nested_meta(
    +    input: ParseStream,
    +    mut logic: impl FnMut(ParseNestedMeta) -> Result<()>,
    +) -> Result<()> {
    +    loop {
    +        let path = input.call(parse_meta_path)?;
    +        logic(ParseNestedMeta { path, input })?;
    +        if input.is_empty() {
    +            return Ok(());
    +        }
    +        input.parse::<Token![,]>()?;
    +        if input.is_empty() {
    +            return Ok(());
    +        }
    +    }
    +}
    +
    +// Like Path::parse_mod_style, but accepts keywords in the path.
    +fn parse_meta_path(input: ParseStream) -> Result<Path> {
    +    Ok(Path {
    +        leading_colon: input.parse()?,
    +        segments: {
    +            let mut segments = Punctuated::new();
    +            if input.peek(Ident::peek_any) {
    +                let ident = Ident::parse_any(input)?;
    +                segments.push_value(PathSegment::from(ident));
    +            } else if input.is_empty() {
    +                return Err(input.error("expected nested attribute"));
    +            } else if input.peek(Lit) {
    +                return Err(input.error("unexpected literal in nested attribute, expected ident"));
    +            } else {
    +                return Err(input.error("unexpected token in nested attribute, expected ident"));
    +            }
    +            while input.peek(Token![::]) {
    +                let punct = input.parse()?;
    +                segments.push_punct(punct);
    +                let ident = Ident::parse_any(input)?;
    +                segments.push_value(PathSegment::from(ident));
    +            }
    +            segments
    +        },
    +    })
    +}
    +
    \ No newline at end of file diff --git a/src/syn/op.rs.html b/src/syn/op.rs.html index 6a9f909..98f9ccd 100644 --- a/src/syn/op.rs.html +++ b/src/syn/op.rs.html @@ -1,4 +1,5 @@ -op.rs - source
    1
    +op.rs - source

    syn/
    op.rs

    +1
     2
     3
     4
    @@ -216,28 +217,10 @@
     216
     217
     218
    -219
    -220
    -221
    -222
    -223
    -224
    -225
    -226
    -227
    -228
    -229
    -230
    -231
    -232
    -233
    -234
    -
    ast_enum! {
    +219
    ast_enum! {
         /// A binary operator: `+`, `+=`, `&`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[non_exhaustive]
         pub enum BinOp {
             /// The `+` operator (addition)
             Add(Token![+]),
    @@ -276,34 +259,32 @@
             /// The `>` operator (greater than)
             Gt(Token![>]),
             /// The `+=` operator
    -        AddEq(Token![+=]),
    +        AddAssign(Token![+=]),
             /// The `-=` operator
    -        SubEq(Token![-=]),
    +        SubAssign(Token![-=]),
             /// The `*=` operator
    -        MulEq(Token![*=]),
    +        MulAssign(Token![*=]),
             /// The `/=` operator
    -        DivEq(Token![/=]),
    +        DivAssign(Token![/=]),
             /// The `%=` operator
    -        RemEq(Token![%=]),
    +        RemAssign(Token![%=]),
             /// The `^=` operator
    -        BitXorEq(Token![^=]),
    +        BitXorAssign(Token![^=]),
             /// The `&=` operator
    -        BitAndEq(Token![&=]),
    +        BitAndAssign(Token![&=]),
             /// The `|=` operator
    -        BitOrEq(Token![|=]),
    +        BitOrAssign(Token![|=]),
             /// The `<<=` operator
    -        ShlEq(Token![<<=]),
    +        ShlAssign(Token![<<=]),
             /// The `>>=` operator
    -        ShrEq(Token![>>=]),
    +        ShrAssign(Token![>>=]),
         }
     }
     
    -ast_enum! {
    +ast_enum! {
         /// A unary operator: `*`, `!`, `-`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[non_exhaustive]
         pub enum UnOp {
             /// The `*` operator for dereferencing
             Deref(Token![*]),
    @@ -314,89 +295,78 @@
         }
     }
     
    -#[cfg(feature = "parsing")]
    -pub mod parsing {
    -    use super::*;
    -    use crate::parse::{Parse, ParseStream, Result};
    +#[cfg(feature = "parsing")]
    +pub(crate) mod parsing {
    +    use crate::error::Result;
    +    use crate::op::{BinOp, UnOp};
    +    use crate::parse::{Parse, ParseStream};
     
    -    fn parse_binop(input: ParseStream) -> Result<BinOp> {
    -        if input.peek(Token![&&]) {
    -            input.parse().map(BinOp::And)
    -        } else if input.peek(Token![||]) {
    -            input.parse().map(BinOp::Or)
    -        } else if input.peek(Token![<<]) {
    -            input.parse().map(BinOp::Shl)
    -        } else if input.peek(Token![>>]) {
    -            input.parse().map(BinOp::Shr)
    -        } else if input.peek(Token![==]) {
    -            input.parse().map(BinOp::Eq)
    -        } else if input.peek(Token![<=]) {
    -            input.parse().map(BinOp::Le)
    -        } else if input.peek(Token![!=]) {
    -            input.parse().map(BinOp::Ne)
    -        } else if input.peek(Token![>=]) {
    -            input.parse().map(BinOp::Ge)
    -        } else if input.peek(Token![+]) {
    -            input.parse().map(BinOp::Add)
    -        } else if input.peek(Token![-]) {
    -            input.parse().map(BinOp::Sub)
    -        } else if input.peek(Token![*]) {
    -            input.parse().map(BinOp::Mul)
    -        } else if input.peek(Token![/]) {
    -            input.parse().map(BinOp::Div)
    -        } else if input.peek(Token![%]) {
    -            input.parse().map(BinOp::Rem)
    -        } else if input.peek(Token![^]) {
    -            input.parse().map(BinOp::BitXor)
    -        } else if input.peek(Token![&]) {
    -            input.parse().map(BinOp::BitAnd)
    -        } else if input.peek(Token![|]) {
    -            input.parse().map(BinOp::BitOr)
    -        } else if input.peek(Token![<]) {
    -            input.parse().map(BinOp::Lt)
    -        } else if input.peek(Token![>]) {
    -            input.parse().map(BinOp::Gt)
    -        } else {
    -            Err(input.error("expected binary operator"))
    -        }
    -    }
    -
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for BinOp {
    -        #[cfg(not(feature = "full"))]
    -        fn parse(input: ParseStream) -> Result<Self> {
    -            parse_binop(input)
    -        }
    -
    -        #[cfg(feature = "full")]
    -        fn parse(input: ParseStream) -> Result<Self> {
    +        fn parse(input: ParseStream) -> Result<Self> {
                 if input.peek(Token![+=]) {
    -                input.parse().map(BinOp::AddEq)
    +                input.parse().map(BinOp::AddAssign)
                 } else if input.peek(Token![-=]) {
    -                input.parse().map(BinOp::SubEq)
    +                input.parse().map(BinOp::SubAssign)
                 } else if input.peek(Token![*=]) {
    -                input.parse().map(BinOp::MulEq)
    +                input.parse().map(BinOp::MulAssign)
                 } else if input.peek(Token![/=]) {
    -                input.parse().map(BinOp::DivEq)
    +                input.parse().map(BinOp::DivAssign)
                 } else if input.peek(Token![%=]) {
    -                input.parse().map(BinOp::RemEq)
    +                input.parse().map(BinOp::RemAssign)
                 } else if input.peek(Token![^=]) {
    -                input.parse().map(BinOp::BitXorEq)
    +                input.parse().map(BinOp::BitXorAssign)
                 } else if input.peek(Token![&=]) {
    -                input.parse().map(BinOp::BitAndEq)
    +                input.parse().map(BinOp::BitAndAssign)
                 } else if input.peek(Token![|=]) {
    -                input.parse().map(BinOp::BitOrEq)
    +                input.parse().map(BinOp::BitOrAssign)
                 } else if input.peek(Token![<<=]) {
    -                input.parse().map(BinOp::ShlEq)
    +                input.parse().map(BinOp::ShlAssign)
                 } else if input.peek(Token![>>=]) {
    -                input.parse().map(BinOp::ShrEq)
    +                input.parse().map(BinOp::ShrAssign)
    +            } else if input.peek(Token![&&]) {
    +                input.parse().map(BinOp::And)
    +            } else if input.peek(Token![||]) {
    +                input.parse().map(BinOp::Or)
    +            } else if input.peek(Token![<<]) {
    +                input.parse().map(BinOp::Shl)
    +            } else if input.peek(Token![>>]) {
    +                input.parse().map(BinOp::Shr)
    +            } else if input.peek(Token![==]) {
    +                input.parse().map(BinOp::Eq)
    +            } else if input.peek(Token![<=]) {
    +                input.parse().map(BinOp::Le)
    +            } else if input.peek(Token![!=]) {
    +                input.parse().map(BinOp::Ne)
    +            } else if input.peek(Token![>=]) {
    +                input.parse().map(BinOp::Ge)
    +            } else if input.peek(Token![+]) {
    +                input.parse().map(BinOp::Add)
    +            } else if input.peek(Token![-]) {
    +                input.parse().map(BinOp::Sub)
    +            } else if input.peek(Token![*]) {
    +                input.parse().map(BinOp::Mul)
    +            } else if input.peek(Token![/]) {
    +                input.parse().map(BinOp::Div)
    +            } else if input.peek(Token![%]) {
    +                input.parse().map(BinOp::Rem)
    +            } else if input.peek(Token![^]) {
    +                input.parse().map(BinOp::BitXor)
    +            } else if input.peek(Token![&]) {
    +                input.parse().map(BinOp::BitAnd)
    +            } else if input.peek(Token![|]) {
    +                input.parse().map(BinOp::BitOr)
    +            } else if input.peek(Token![<]) {
    +                input.parse().map(BinOp::Lt)
    +            } else if input.peek(Token![>]) {
    +                input.parse().map(BinOp::Gt)
                 } else {
    -                parse_binop(input)
    +                Err(input.error("expected binary operator"))
                 }
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for UnOp {
             fn parse(input: ParseStream) -> Result<Self> {
                 let lookahead = input.lookahead1();
    @@ -413,13 +383,13 @@
         }
     }
     
    -#[cfg(feature = "printing")]
    +#[cfg(feature = "printing")]
     mod printing {
    -    use super::*;
    +    use crate::op::{BinOp, UnOp};
         use proc_macro2::TokenStream;
         use quote::ToTokens;
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for BinOp {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 match self {
    @@ -441,21 +411,21 @@
                     BinOp::Ne(t) => t.to_tokens(tokens),
                     BinOp::Ge(t) => t.to_tokens(tokens),
                     BinOp::Gt(t) => t.to_tokens(tokens),
    -                BinOp::AddEq(t) => t.to_tokens(tokens),
    -                BinOp::SubEq(t) => t.to_tokens(tokens),
    -                BinOp::MulEq(t) => t.to_tokens(tokens),
    -                BinOp::DivEq(t) => t.to_tokens(tokens),
    -                BinOp::RemEq(t) => t.to_tokens(tokens),
    -                BinOp::BitXorEq(t) => t.to_tokens(tokens),
    -                BinOp::BitAndEq(t) => t.to_tokens(tokens),
    -                BinOp::BitOrEq(t) => t.to_tokens(tokens),
    -                BinOp::ShlEq(t) => t.to_tokens(tokens),
    -                BinOp::ShrEq(t) => t.to_tokens(tokens),
    +                BinOp::AddAssign(t) => t.to_tokens(tokens),
    +                BinOp::SubAssign(t) => t.to_tokens(tokens),
    +                BinOp::MulAssign(t) => t.to_tokens(tokens),
    +                BinOp::DivAssign(t) => t.to_tokens(tokens),
    +                BinOp::RemAssign(t) => t.to_tokens(tokens),
    +                BinOp::BitXorAssign(t) => t.to_tokens(tokens),
    +                BinOp::BitAndAssign(t) => t.to_tokens(tokens),
    +                BinOp::BitOrAssign(t) => t.to_tokens(tokens),
    +                BinOp::ShlAssign(t) => t.to_tokens(tokens),
    +                BinOp::ShrAssign(t) => t.to_tokens(tokens),
                 }
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for UnOp {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 match self {
    diff --git a/src/syn/parse.rs.html b/src/syn/parse.rs.html
    index 5231e76..3d29a34 100644
    --- a/src/syn/parse.rs.html
    +++ b/src/syn/parse.rs.html
    @@ -1,4 +1,5 @@
    -parse.rs - source
    1
    +parse.rs - source

    syn/
    parse.rs

    +1
     2
     3
     4
    @@ -1312,7 +1313,111 @@
     1312
     1313
     1314
    -
    //! Parsing interface for parsing a token stream into a syntax tree node.
    +1315
    +1316
    +1317
    +1318
    +1319
    +1320
    +1321
    +1322
    +1323
    +1324
    +1325
    +1326
    +1327
    +1328
    +1329
    +1330
    +1331
    +1332
    +1333
    +1334
    +1335
    +1336
    +1337
    +1338
    +1339
    +1340
    +1341
    +1342
    +1343
    +1344
    +1345
    +1346
    +1347
    +1348
    +1349
    +1350
    +1351
    +1352
    +1353
    +1354
    +1355
    +1356
    +1357
    +1358
    +1359
    +1360
    +1361
    +1362
    +1363
    +1364
    +1365
    +1366
    +1367
    +1368
    +1369
    +1370
    +1371
    +1372
    +1373
    +1374
    +1375
    +1376
    +1377
    +1378
    +1379
    +1380
    +1381
    +1382
    +1383
    +1384
    +1385
    +1386
    +1387
    +1388
    +1389
    +1390
    +1391
    +1392
    +1393
    +1394
    +1395
    +1396
    +1397
    +1398
    +1399
    +1400
    +1401
    +1402
    +1403
    +1404
    +1405
    +1406
    +1407
    +1408
    +1409
    +1410
    +1411
    +1412
    +1413
    +1414
    +1415
    +1416
    +1417
    +1418
    +1419
    //! Parsing interface for parsing a token stream into a syntax tree node.
     //!
     //! Parsing in Syn is built on parser functions that take in a [`ParseStream`]
     //! and produce a [`Result<T>`] where `T` is some syntax tree node. Underlying
    @@ -1380,7 +1485,7 @@
     //!             struct_token: input.parse()?,
     //!             ident: input.parse()?,
     //!             brace_token: braced!(content in input),
    -//!             fields: content.parse_terminated(Field::parse_named)?,
    +//!             fields: content.parse_terminated(Field::parse_named, Token![,])?,
     //!         })
     //!     }
     //! }
    @@ -1398,7 +1503,7 @@
     //!     let input = parse_macro_input!(tokens as Item);
     //!
     //!     /* ... */
    -//! #   "".parse().unwrap()
    +//! #   TokenStream::new()
     //! }
     //! ```
     //!
    @@ -1417,7 +1522,7 @@
     //! use syn::Type;
     //!
     //! # fn run_parser() -> syn::Result<()> {
    -//! let t: Type = syn::parse_str("std::collections::HashMap<String, Value>")?;
    +//! let t: Type = syn::parse_str("std::collections::HashMap<String, Value>")?;
     //! #     Ok(())
     //! # }
     //! #
    @@ -1431,7 +1536,7 @@
     //! # The `Parser` trait
     //!
     //! Some types can be parsed in several ways depending on context. For example
    -//! an [`Attribute`] can be either "outer" like `#[...]` or "inner" like
    +//! an [`Attribute`] can be either "outer" like `#[...]` or "inner" like
     //! `#![...]` and parsing the wrong one would be a bug. Similarly [`Punctuated`]
     //! may or may not allow trailing punctuation, and parsing it the wrong way
     //! would either reject valid input or accept invalid input.
    @@ -1450,7 +1555,7 @@
     //! #
     //! # fn f(tokens: proc_macro::TokenStream) -> Result<()> {
     //! #
    -//! // Can't parse `Punctuated` without knowing whether trailing punctuation
    +//! // Can't parse `Punctuated` without knowing whether trailing punctuation
     //! // should be allowed in this context.
     //! let path: Punctuated<PathSegment, Token![::]> = syn::parse(tokens)?;
     //! #
    @@ -1492,37 +1597,31 @@
     //!     Ok(())
     //! }
     //! ```
    -//!
    -//! ---
    -//!
    -//! *This module is available only if Syn is built with the `"parsing"` feature.*
     
    -#[path = "discouraged.rs"]
    +#[path = "discouraged.rs"]
     pub mod discouraged;
     
     use crate::buffer::{Cursor, TokenBuffer};
     use crate::error;
     use crate::lookahead;
    -#[cfg(all(
    -    not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
    -    feature = "proc-macro"
    -))]
    -use crate::proc_macro;
     use crate::punctuated::Punctuated;
     use crate::token::Token;
    -use proc_macro2::{self, Delimiter, Group, Literal, Punct, Span, TokenStream, TokenTree};
    +use proc_macro2::{Delimiter, Group, Literal, Punct, Span, TokenStream, TokenTree};
    +#[cfg(feature = "printing")]
    +use quote::ToTokens;
     use std::cell::Cell;
     use std::fmt::{self, Debug, Display};
    -#[cfg(feature = "extra-traits")]
    +#[cfg(feature = "extra-traits")]
     use std::hash::{Hash, Hasher};
     use std::marker::PhantomData;
     use std::mem;
     use std::ops::Deref;
    +use std::panic::{RefUnwindSafe, UnwindSafe};
     use std::rc::Rc;
     use std::str::FromStr;
     
     pub use crate::error::{Error, Result};
    -pub use crate::lookahead::{Lookahead1, Peek};
    +pub use crate::lookahead::{End, Lookahead1, Peek};
     
     /// Parsing interface implemented by all types that can be parsed in a default
     /// way from a token stream.
    @@ -1541,7 +1640,7 @@
     /// an overview of parsing in Syn, refer to the [module documentation].
     ///
     /// [module documentation]: self
    -pub type ParseStream<'a> = &'a ParseBuffer<'a>;
    +pub type ParseStream<'a> = &'a ParseBuffer<'a>;
     
     /// Cursor position within a buffered token stream.
     ///
    @@ -1563,47 +1662,51 @@
     ///
     /// [`parse_macro_input!`]: crate::parse_macro_input!
     /// [syn-parse]: self#the-synparse-functions
    -pub struct ParseBuffer<'a> {
    +pub struct ParseBuffer<'a> {
         scope: Span,
    -    // Instead of Cell<Cursor<'a>> so that ParseBuffer<'a> is covariant in 'a.
    +    // Instead of Cell<Cursor<'a>> so that ParseBuffer<'a> is covariant in 'a.
         // The rest of the code in this module needs to be careful that only a
         // cursor derived from this `cell` is ever assigned to this `cell`.
         //
    -    // Cell<Cursor<'a>> cannot be covariant in 'a because then we could take a
    -    // ParseBuffer<'a>, upcast to ParseBuffer<'short> for some lifetime shorter
    -    // than 'a, and then assign a Cursor<'short> into the Cell.
    +    // Cell<Cursor<'a>> cannot be covariant in 'a because then we could take a
    +    // ParseBuffer<'a>, upcast to ParseBuffer<'short> for some lifetime shorter
    +    // than 'a, and then assign a Cursor<'short> into the Cell.
         //
         // By extension, it would not be safe to expose an API that accepts a
    -    // Cursor<'a> and trusts that it lives as long as the cursor currently in
    +    // Cursor<'a> and trusts that it lives as long as the cursor currently in
         // the cell.
    -    cell: Cell<Cursor<'static>>,
    -    marker: PhantomData<Cursor<'a>>,
    +    cell: Cell<Cursor<'static>>,
    +    marker: PhantomData<Cursor<'a>>,
         unexpected: Cell<Option<Rc<Cell<Unexpected>>>>,
     }
     
    -impl<'a> Drop for ParseBuffer<'a> {
    +impl<'a> Drop for ParseBuffer<'a> {
         fn drop(&mut self) {
    -        if let Some(unexpected_span) = span_of_unexpected_ignoring_nones(self.cursor()) {
    +        if let Some((unexpected_span, delimiter)) = span_of_unexpected_ignoring_nones(self.cursor())
    +        {
                 let (inner, old_span) = inner_unexpected(self);
                 if old_span.is_none() {
    -                inner.set(Unexpected::Some(unexpected_span));
    +                inner.set(Unexpected::Some(unexpected_span, delimiter));
                 }
             }
         }
     }
     
    -impl<'a> Display for ParseBuffer<'a> {
    +impl<'a> Display for ParseBuffer<'a> {
         fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
             Display::fmt(&self.cursor().token_stream(), f)
         }
     }
     
    -impl<'a> Debug for ParseBuffer<'a> {
    +impl<'a> Debug for ParseBuffer<'a> {
         fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
             Debug::fmt(&self.cursor().token_stream(), f)
         }
     }
     
    +impl<'a> UnwindSafe for ParseBuffer<'a> {}
    +impl<'a> RefUnwindSafe for ParseBuffer<'a> {}
    +
     /// Cursor state associated with speculative parsing.
     ///
     /// This type is the input of the closure provided to [`ParseStream::step`].
    @@ -1625,13 +1728,13 @@
     ///         let mut rest = *cursor;
     ///         while let Some((tt, next)) = rest.token_tree() {
     ///             match &tt {
    -///                 TokenTree::Punct(punct) if punct.as_char() == '@' => {
    +///                 TokenTree::Punct(punct) if punct.as_char() == '@' => {
     ///                     return Ok(((), next));
     ///                 }
     ///                 _ => rest = next,
     ///             }
     ///         }
    -///         Err(cursor.error("no `@` was found after this point"))
    +///         Err(cursor.error("no `@` was found after this point"))
     ///     })
     /// }
     /// #
    @@ -1644,42 +1747,42 @@
     /// #
     /// # use syn::parse::Parser;
     /// # let remainder = remainder_after_skipping_past_next_at
    -/// #     .parse_str("a @ b c")
    +/// #     .parse_str("a @ b c")
     /// #     .unwrap();
    -/// # assert_eq!(remainder.to_string(), "b c");
    +/// # assert_eq!(remainder.to_string(), "b c");
     /// ```
    -pub struct StepCursor<'c, 'a> {
    +pub struct StepCursor<'c, 'a> {
         scope: Span,
    -    // This field is covariant in 'c.
    -    cursor: Cursor<'c>,
    -    // This field is contravariant in 'c. Together these make StepCursor
    -    // invariant in 'c. Also covariant in 'a. The user cannot cast 'c to a
    +    // This field is covariant in 'c.
    +    cursor: Cursor<'c>,
    +    // This field is contravariant in 'c. Together these make StepCursor
    +    // invariant in 'c. Also covariant in 'a. The user cannot cast 'c to a
         // different lifetime but can upcast into a StepCursor with a shorter
    -    // lifetime 'a.
    +    // lifetime 'a.
         //
    -    // As long as we only ever construct a StepCursor for which 'c outlives 'a,
    -    // this means if ever a StepCursor<'c, 'a> exists we are guaranteed that 'c
    -    // outlives 'a.
    -    marker: PhantomData<fn(Cursor<'c>) -> Cursor<'a>>,
    +    // As long as we only ever construct a StepCursor for which 'c outlives 'a,
    +    // this means if ever a StepCursor<'c, 'a> exists we are guaranteed that 'c
    +    // outlives 'a.
    +    marker: PhantomData<fn(Cursor<'c>) -> Cursor<'a>>,
     }
     
    -impl<'c, 'a> Deref for StepCursor<'c, 'a> {
    -    type Target = Cursor<'c>;
    +impl<'c, 'a> Deref for StepCursor<'c, 'a> {
    +    type Target = Cursor<'c>;
     
         fn deref(&self) -> &Self::Target {
             &self.cursor
         }
     }
     
    -impl<'c, 'a> Copy for StepCursor<'c, 'a> {}
    +impl<'c, 'a> Copy for StepCursor<'c, 'a> {}
     
    -impl<'c, 'a> Clone for StepCursor<'c, 'a> {
    +impl<'c, 'a> Clone for StepCursor<'c, 'a> {
         fn clone(&self) -> Self {
             *self
         }
     }
     
    -impl<'c, 'a> StepCursor<'c, 'a> {
    +impl<'c, 'a> StepCursor<'c, 'a> {
         /// Triggers an error at the current position of the parse stream.
         ///
         /// The `ParseStream::step` invocation will return this same error without
    @@ -1689,13 +1792,13 @@
         }
     }
     
    -pub(crate) fn advance_step_cursor<'c, 'a>(proof: StepCursor<'c, 'a>, to: Cursor<'c>) -> Cursor<'a> {
    +pub(crate) fn advance_step_cursor<'c, 'a>(proof: StepCursor<'c, 'a>, to: Cursor<'c>) -> Cursor<'a> {
         // Refer to the comments within the StepCursor definition. We use the
    -    // fact that a StepCursor<'c, 'a> exists as proof that 'c outlives 'a.
    +    // fact that a StepCursor<'c, 'a> exists as proof that 'c outlives 'a.
         // Cursor is covariant in its lifetime parameter so we can cast a
    -    // Cursor<'c> to one with the shorter lifetime Cursor<'a>.
    +    // Cursor<'c> to one with the shorter lifetime Cursor<'a>.
         let _ = proof;
    -    unsafe { mem::transmute::<Cursor<'c>, Cursor<'a>>(to) }
    +    unsafe { mem::transmute::<Cursor<'c>, Cursor<'a>>(to) }
     }
     
     pub(crate) fn new_parse_buffer(
    @@ -1706,7 +1809,7 @@
         ParseBuffer {
             scope,
             // See comment on `cell` in the struct definition.
    -        cell: Cell::new(unsafe { mem::transmute::<Cursor, Cursor<'static>>(cursor) }),
    +        cell: Cell::new(unsafe { mem::transmute::<Cursor, Cursor<'static>>(cursor) }),
             marker: PhantomData,
             unexpected: Cell::new(Some(unexpected)),
         }
    @@ -1714,7 +1817,7 @@
     
     pub(crate) enum Unexpected {
         None,
    -    Some(Span),
    +    Some(Span, Delimiter),
         Chain(Rc<Cell<Unexpected>>),
     }
     
    @@ -1728,7 +1831,7 @@
         fn clone(&self) -> Self {
             match self {
                 Unexpected::None => Unexpected::None,
    -            Unexpected::Some(span) => Unexpected::Some(*span),
    +            Unexpected::Some(span, delimiter) => Unexpected::Some(*span, *delimiter),
                 Unexpected::Chain(next) => Unexpected::Chain(next.clone()),
             }
         }
    @@ -1743,12 +1846,12 @@
         ret
     }
     
    -fn inner_unexpected(buffer: &ParseBuffer) -> (Rc<Cell<Unexpected>>, Option<Span>) {
    +fn inner_unexpected(buffer: &ParseBuffer) -> (Rc<Cell<Unexpected>>, Option<(Span, Delimiter)>) {
         let mut unexpected = get_unexpected(buffer);
         loop {
             match cell_clone(&unexpected) {
                 Unexpected::None => return (unexpected, None),
    -            Unexpected::Some(span) => return (unexpected, Some(span)),
    +            Unexpected::Some(span, delimiter) => return (unexpected, Some((span, delimiter))),
                 Unexpected::Chain(next) => unexpected = next,
             }
         }
    @@ -1758,7 +1861,7 @@
         cell_clone(&buffer.unexpected).unwrap()
     }
     
    -fn span_of_unexpected_ignoring_nones(mut cursor: Cursor) -> Option<Span> {
    +fn span_of_unexpected_ignoring_nones(mut cursor: Cursor) -> Option<(Span, Delimiter)> {
         if cursor.eof() {
             return None;
         }
    @@ -1771,11 +1874,11 @@
         if cursor.eof() {
             None
         } else {
    -        Some(cursor.span())
    +        Some((cursor.span(), cursor.scope_delimiter()))
         }
     }
     
    -impl<'a> ParseBuffer<'a> {
    +impl<'a> ParseBuffer<'a> {
         /// Parses a syntax tree node of type `T`, advancing the position of our
         /// parse stream past it.
         pub fn parse<T: Parse>(&self) -> Result<T> {
    @@ -1798,7 +1901,7 @@
         ///
         /// // Parses a unit struct with attributes.
         /// //
    -    /// //     #[path = "s.tmpl"]
    +    /// //     #[path = "s.tmpl"]
         /// //     struct S;
         /// struct UnitStruct {
         ///     attrs: Vec<Attribute>,
    @@ -1834,8 +1937,8 @@
         ///
         /// - `input.peek(Token![struct])`
         /// - `input.peek(Token![==])`
    -    /// - `input.peek(Ident)`&emsp;*(does not accept keywords)*
    -    /// - `input.peek(Ident::peek_any)`
    +    /// - `input.peek(syn::Ident)`&emsp;*(does not accept keywords)*
    +    /// - `input.peek(syn::Ident::peek_any)`
         /// - `input.peek(Lifetime)`
         /// - `input.peek(token::Brace)`
         ///
    @@ -1851,7 +1954,7 @@
         ///
         /// // Parses a trait definition containing no associated items.
         /// //
    -    /// //     trait Marker<'de, T>: A + B<'de> where Box<T>: Clone {}
    +    /// //     trait Marker<'de, T>: A + B<'de> where Box<T>: Clone {}
         /// struct MarkerTrait {
         ///     trait_token: Token![trait],
         ///     ident: Ident,
    @@ -1906,7 +2009,7 @@
         /// # Example
         ///
         /// This example needs to use `peek2` because the symbol `union` is not a
    -    /// keyword in Rust. We can't use just `peek` and decide to parse a union if
    +    /// keyword in Rust. We can't use just `peek` and decide to parse a union if
         /// the very next token is `union`, because someone is free to write a `mod
         /// union` and a macro invocation that looks like `union::some_macro! { ...
         /// }`. In other words `union` is a contextual keyword.
    @@ -1935,11 +2038,6 @@
         /// ```
         pub fn peek2<T: Peek>(&self, token: T) -> bool {
             fn peek2(buffer: &ParseBuffer, peek: fn(Cursor) -> bool) -> bool {
    -            if let Some(group) = buffer.cursor().group(Delimiter::None) {
    -                if group.0.skip().map_or(false, peek) {
    -                    return true;
    -                }
    -            }
                 buffer.cursor().skip().map_or(false, peek)
             }
     
    @@ -1950,11 +2048,6 @@
         /// Looks at the third-next token in the parse stream.
         pub fn peek3<T: Peek>(&self, token: T) -> bool {
             fn peek3(buffer: &ParseBuffer, peek: fn(Cursor) -> bool) -> bool {
    -            if let Some(group) = buffer.cursor().group(Delimiter::None) {
    -                if group.0.skip().and_then(Cursor::skip).map_or(false, peek) {
    -                    return true;
    -                }
    -            }
                 buffer
                     .cursor()
                     .skip()
    @@ -1999,7 +2092,7 @@
         ///             struct_token: input.parse()?,
         ///             ident: input.parse()?,
         ///             paren_token: parenthesized!(content in input),
    -    ///             fields: content.parse_terminated(Type::parse)?,
    +    ///             fields: content.parse_terminated(Type::parse, Token![,])?,
         ///             semi_token: input.parse()?,
         ///         })
         ///     }
    @@ -2010,17 +2103,77 @@
         /// # };
         /// # syn::parse2::<TupleStruct>(input).unwrap();
         /// ```
    -    pub fn parse_terminated<T, P: Parse>(
    +    ///
    +    /// # See also
    +    ///
    +    /// If your separator is anything more complicated than an invocation of the
    +    /// `Token!` macro, this method won't be applicable and you can instead
    +    /// directly use `Punctuated`'s parser functions: [`parse_terminated`],
    +    /// [`parse_separated_nonempty`] etc.
    +    ///
    +    /// [`parse_terminated`]: Punctuated::parse_terminated
    +    /// [`parse_separated_nonempty`]: Punctuated::parse_separated_nonempty
    +    ///
    +    /// ```
    +    /// use syn::{custom_keyword, Expr, Result, Token};
    +    /// use syn::parse::{Parse, ParseStream};
    +    /// use syn::punctuated::Punctuated;
    +    ///
    +    /// mod kw {
    +    ///     syn::custom_keyword!(fin);
    +    /// }
    +    ///
    +    /// struct Fin(kw::fin, Token![;]);
    +    ///
    +    /// impl Parse for Fin {
    +    ///     fn parse(input: ParseStream) -> Result<Self> {
    +    ///         Ok(Self(input.parse()?, input.parse()?))
    +    ///     }
    +    /// }
    +    ///
    +    /// struct Thing {
    +    ///     steps: Punctuated<Expr, Fin>,
    +    /// }
    +    ///
    +    /// impl Parse for Thing {
    +    ///     fn parse(input: ParseStream) -> Result<Self> {
    +    /// # if true {
    +    ///         Ok(Thing {
    +    ///             steps: Punctuated::parse_terminated(input)?,
    +    ///         })
    +    /// # } else {
    +    ///         // or equivalently, this means the same thing:
    +    /// #       Ok(Thing {
    +    ///             steps: input.call(Punctuated::parse_terminated)?,
    +    /// #       })
    +    /// # }
    +    ///     }
    +    /// }
    +    /// ```
    +    pub fn parse_terminated<T, P>(
             &self,
             parser: fn(ParseStream) -> Result<T>,
    -    ) -> Result<Punctuated<T, P>> {
    +        separator: P,
    +    ) -> Result<Punctuated<T, P::Token>>
    +    where
    +        P: Peek,
    +        P::Token: Parse,
    +    {
    +        let _ = separator;
             Punctuated::parse_terminated_with(self, parser)
         }
     
    -    /// Returns whether there are tokens remaining in this stream.
    +    /// Returns whether there are no more tokens remaining to be parsed from
    +    /// this stream.
         ///
    -    /// This method returns true at the end of the content of a set of
    -    /// delimiters, as well as at the very end of the complete macro input.
    +    /// This method returns true upon reaching the end of the content within a
    +    /// set of delimiters, as well as at the end of the tokens provided to the
    +    /// outermost parsing entry point.
    +    ///
    +    /// This is equivalent to
    +    /// <code>.<a href="#method.peek">peek</a>(<a href="struct.End.html">syn::parse::End</a>)</code>.
    +    /// Use `.peek2(End)` or `.peek3(End)` to look for the end of a parse stream
    +    /// further ahead than the current position.
         ///
         /// # Example
         ///
    @@ -2064,13 +2217,13 @@
         /// # Example
         ///
         /// ```
    -    /// use syn::{ConstParam, Ident, Lifetime, LifetimeDef, Result, Token, TypeParam};
    +    /// use syn::{ConstParam, Ident, Lifetime, LifetimeParam, Result, Token, TypeParam};
         /// use syn::parse::{Parse, ParseStream};
         ///
         /// // A generic parameter, a single one of the comma-separated elements inside
         /// // angle brackets in:
         /// //
    -    /// //     fn f<T: Clone, 'a, 'b: 'a, const N: usize>() { ... }
    +    /// //     fn f<T: Clone, 'a, 'b: 'a, const N: usize>() { ... }
         /// //
         /// // On invalid input, lookahead gives us a reasonable error message.
         /// //
    @@ -2080,7 +2233,7 @@
         /// //       |          ^
         /// enum GenericParam {
         ///     Type(TypeParam),
    -    ///     Lifetime(LifetimeDef),
    +    ///     Lifetime(LifetimeParam),
         ///     Const(ConstParam),
         /// }
         ///
    @@ -2099,7 +2252,7 @@
         ///     }
         /// }
         /// ```
    -    pub fn lookahead1(&self) -> Lookahead1<'a> {
    +    pub fn lookahead1(&self) -> Lookahead1<'a> {
             lookahead::new(self.scope, self.cursor())
         }
     
    @@ -2132,7 +2285,7 @@
         ///
         /// When complex speculative parsing against the forked stream is
         /// unavoidable, use [`parse::discouraged::Speculative`] to advance the
    -    /// original stream once the fork's parse is determined to have been
    +    /// original stream once the fork's parse is determined to have been
         /// successful.
         ///
         /// For a lower level way to perform speculative parsing at the token level,
    @@ -2234,7 +2387,7 @@
                 scope: self.scope,
                 cell: self.cell.clone(),
                 marker: PhantomData,
    -            // Not the parent's unexpected. Nothing cares whether the clone
    +            // Not the parent's unexpected. Nothing cares whether the clone
                 // parses all the way unless we `advance_to`.
                 unexpected: Cell::new(Some(Rc::new(Cell::new(Unexpected::None)))),
             }
    @@ -2263,7 +2416,7 @@
         ///                 expr: input.parse()?,
         ///             })
         ///         } else {
    -    ///             Err(input.error("expected some kind of loop"))
    +    ///             Err(input.error("expected some kind of loop"))
         ///         }
         ///     }
         /// }
    @@ -2294,13 +2447,13 @@
         ///         let mut rest = *cursor;
         ///         while let Some((tt, next)) = rest.token_tree() {
         ///             match &tt {
    -    ///                 TokenTree::Punct(punct) if punct.as_char() == '@' => {
    +    ///                 TokenTree::Punct(punct) if punct.as_char() == '@' => {
         ///                     return Ok(((), next));
         ///                 }
         ///                 _ => rest = next,
         ///             }
         ///         }
    -    ///         Err(cursor.error("no `@` was found after this point"))
    +    ///         Err(cursor.error("no `@` was found after this point"))
         ///     })
         /// }
         /// #
    @@ -2313,30 +2466,30 @@
         /// #
         /// # use syn::parse::Parser;
         /// # let remainder = remainder_after_skipping_past_next_at
    -    /// #     .parse_str("a @ b c")
    +    /// #     .parse_str("a @ b c")
         /// #     .unwrap();
    -    /// # assert_eq!(remainder.to_string(), "b c");
    +    /// # assert_eq!(remainder.to_string(), "b c");
         /// ```
         pub fn step<F, R>(&self, function: F) -> Result<R>
         where
    -        F: for<'c> FnOnce(StepCursor<'c, 'a>) -> Result<(R, Cursor<'c>)>,
    +        F: for<'c> FnOnce(StepCursor<'c, 'a>) -> Result<(R, Cursor<'c>)>,
         {
    -        // Since the user's function is required to work for any 'c, we know
    -        // that the Cursor<'c> they return is either derived from the input
    -        // StepCursor<'c, 'a> or from a Cursor<'static>.
    +        // Since the user's function is required to work for any 'c, we know
    +        // that the Cursor<'c> they return is either derived from the input
    +        // StepCursor<'c, 'a> or from a Cursor<'static>.
             //
             // It would not be legal to write this function without the invariant
    -        // lifetime 'c in StepCursor<'c, 'a>. If this function were written only
    -        // in terms of 'a, the user could take our ParseBuffer<'a>, upcast it to
    -        // a ParseBuffer<'short> which some shorter lifetime than 'a, invoke
    -        // `step` on their ParseBuffer<'short> with a closure that returns
    -        // Cursor<'short>, and we would wrongly write that Cursor<'short> into
    -        // the Cell intended to hold Cursor<'a>.
    +        // lifetime 'c in StepCursor<'c, 'a>. If this function were written only
    +        // in terms of 'a, the user could take our ParseBuffer<'a>, upcast it to
    +        // a ParseBuffer<'short> which some shorter lifetime than 'a, invoke
    +        // `step` on their ParseBuffer<'short> with a closure that returns
    +        // Cursor<'short>, and we would wrongly write that Cursor<'short> into
    +        // the Cell intended to hold Cursor<'a>.
             //
    -        // In some cases it may be necessary for R to contain a Cursor<'a>.
    +        // In some cases it may be necessary for R to contain a Cursor<'a>.
             // Within Syn we solve this using `advance_step_cursor` which uses the
    -        // existence of a StepCursor<'c, 'a> as proof that it is safe to cast
    -        // from Cursor<'c> to Cursor<'a>. If needed outside of Syn, it would be
    +        // existence of a StepCursor<'c, 'a> as proof that it is safe to cast
    +        // from Cursor<'c> to Cursor<'a>. If needed outside of Syn, it would be
             // safe to expose that API as a method on StepCursor.
             let (node, rest) = function(StepCursor {
                 scope: self.scope,
    @@ -2364,26 +2517,78 @@
         ///
         /// Cursors are immutable so no operations you perform against the cursor
         /// will affect the state of this parse stream.
    -    pub fn cursor(&self) -> Cursor<'a> {
    +    ///
    +    /// # Example
    +    ///
    +    /// ```
    +    /// use proc_macro2::TokenStream;
    +    /// use syn::buffer::Cursor;
    +    /// use syn::parse::{ParseStream, Result};
    +    ///
    +    /// // Run a parser that returns T, but get its output as TokenStream instead of T.
    +    /// // This works without T needing to implement ToTokens.
    +    /// fn recognize_token_stream<T>(
    +    ///     recognizer: fn(ParseStream) -> Result<T>,
    +    /// ) -> impl Fn(ParseStream) -> Result<TokenStream> {
    +    ///     move |input| {
    +    ///         let begin = input.cursor();
    +    ///         recognizer(input)?;
    +    ///         let end = input.cursor();
    +    ///         Ok(tokens_between(begin, end))
    +    ///     }
    +    /// }
    +    ///
    +    /// // Collect tokens between two cursors as a TokenStream.
    +    /// fn tokens_between(begin: Cursor, end: Cursor) -> TokenStream {
    +    ///     assert!(begin <= end);
    +    ///
    +    ///     let mut cursor = begin;
    +    ///     let mut tokens = TokenStream::new();
    +    ///     while cursor < end {
    +    ///         let (token, next) = cursor.token_tree().unwrap();
    +    ///         tokens.extend(std::iter::once(token));
    +    ///         cursor = next;
    +    ///     }
    +    ///     tokens
    +    /// }
    +    ///
    +    /// fn main() {
    +    ///     use quote::quote;
    +    ///     use syn::parse::{Parse, Parser};
    +    ///     use syn::Token;
    +    ///
    +    ///     // Parse syn::Type as a TokenStream, surrounded by angle brackets.
    +    ///     fn example(input: ParseStream) -> Result<TokenStream> {
    +    ///         let _langle: Token![<] = input.parse()?;
    +    ///         let ty = recognize_token_stream(syn::Type::parse)(input)?;
    +    ///         let _rangle: Token![>] = input.parse()?;
    +    ///         Ok(ty)
    +    ///     }
    +    ///
    +    ///     let tokens = quote! { <fn() -> u8> };
    +    ///     println!("{}", example.parse2(tokens).unwrap());
    +    /// }
    +    /// ```
    +    pub fn cursor(&self) -> Cursor<'a> {
             self.cell.get()
         }
     
         fn check_unexpected(&self) -> Result<()> {
             match inner_unexpected(self).1 {
    -            Some(span) => Err(Error::new(span, "unexpected token")),
    +            Some((span, delimiter)) => Err(err_unexpected_token(span, delimiter)),
                 None => Ok(()),
             }
         }
     }
     
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
     impl<T: Parse> Parse for Box<T> {
         fn parse(input: ParseStream) -> Result<Self> {
             input.parse().map(Box::new)
         }
     }
     
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
     impl<T: Parse + Token> Parse for Option<T> {
         fn parse(input: ParseStream) -> Result<Self> {
             if T::peek(input.cursor()) {
    @@ -2394,55 +2599,53 @@
         }
     }
     
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
     impl Parse for TokenStream {
         fn parse(input: ParseStream) -> Result<Self> {
             input.step(|cursor| Ok((cursor.token_stream(), Cursor::empty())))
         }
     }
     
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
     impl Parse for TokenTree {
         fn parse(input: ParseStream) -> Result<Self> {
             input.step(|cursor| match cursor.token_tree() {
                 Some((tt, rest)) => Ok((tt, rest)),
    -            None => Err(cursor.error("expected token tree")),
    +            None => Err(cursor.error("expected token tree")),
             })
         }
     }
     
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
     impl Parse for Group {
         fn parse(input: ParseStream) -> Result<Self> {
             input.step(|cursor| {
    -            for delim in &[Delimiter::Parenthesis, Delimiter::Brace, Delimiter::Bracket] {
    -                if let Some((inside, span, rest)) = cursor.group(*delim) {
    -                    let mut group = Group::new(*delim, inside.token_stream());
    -                    group.set_span(span);
    +            if let Some((group, rest)) = cursor.any_group_token() {
    +                if group.delimiter() != Delimiter::None {
                         return Ok((group, rest));
                     }
                 }
    -            Err(cursor.error("expected group token"))
    +            Err(cursor.error("expected group token"))
             })
         }
     }
     
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
     impl Parse for Punct {
         fn parse(input: ParseStream) -> Result<Self> {
             input.step(|cursor| match cursor.punct() {
                 Some((punct, rest)) => Ok((punct, rest)),
    -            None => Err(cursor.error("expected punctuation token")),
    +            None => Err(cursor.error("expected punctuation token")),
             })
         }
     }
     
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +#[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
     impl Parse for Literal {
         fn parse(input: ParseStream) -> Result<Self> {
             input.step(|cursor| match cursor.literal() {
                 Some((literal, rest)) => Ok((literal, rest)),
    -            None => Err(cursor.error("expected literal token")),
    +            None => Err(cursor.error("expected literal token")),
             })
         }
     }
    @@ -2452,36 +2655,29 @@
     /// Refer to the [module documentation] for details about parsing in Syn.
     ///
     /// [module documentation]: self
    -///
    -/// *This trait is available only if Syn is built with the `"parsing"` feature.*
     pub trait Parser: Sized {
         type Output;
     
         /// Parse a proc-macro2 token stream into the chosen syntax tree node.
         ///
    -    /// This function will check that the input is fully parsed. If there are
    -    /// any unparsed tokens at the end of the stream, an error is returned.
    +    /// This function enforces that the input is fully parsed. If there are any
    +    /// unparsed tokens at the end of the stream, an error is returned.
         fn parse2(self, tokens: TokenStream) -> Result<Self::Output>;
     
         /// Parse tokens of source code into the chosen syntax tree node.
         ///
    -    /// This function will check that the input is fully parsed. If there are
    -    /// any unparsed tokens at the end of the stream, an error is returned.
    -    ///
    -    /// *This method is available only if Syn is built with both the `"parsing"` and
    -    /// `"proc-macro"` features.*
    -    #[cfg(all(
    -        not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
    -        feature = "proc-macro"
    -    ))]
    +    /// This function enforces that the input is fully parsed. If there are any
    +    /// unparsed tokens at the end of the stream, an error is returned.
    +    #[cfg(feature = "proc-macro")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "proc-macro")))]
         fn parse(self, tokens: proc_macro::TokenStream) -> Result<Self::Output> {
             self.parse2(proc_macro2::TokenStream::from(tokens))
         }
     
         /// Parse a string of Rust code into the chosen syntax tree node.
         ///
    -    /// This function will check that the input is fully parsed. If there are
    -    /// any unparsed tokens at the end of the string, an error is returned.
    +    /// This function enforces that the input is fully parsed. If there are any
    +    /// unparsed tokens at the end of the string, an error is returned.
         ///
         /// # Hygiene
         ///
    @@ -2493,18 +2689,10 @@
     
         // Not public API.
         #[doc(hidden)]
    -    #[cfg(any(feature = "full", feature = "derive"))]
         fn __parse_scoped(self, scope: Span, tokens: TokenStream) -> Result<Self::Output> {
             let _ = scope;
             self.parse2(tokens)
         }
    -
    -    // Not public API.
    -    #[doc(hidden)]
    -    #[cfg(any(feature = "full", feature = "derive"))]
    -    fn __parse_stream(self, input: ParseStream) -> Result<Self::Output> {
    -        input.parse().and_then(|tokens| self.parse2(tokens))
    -    }
     }
     
     fn tokens_to_parse_buffer(tokens: &TokenBuffer) -> ParseBuffer {
    @@ -2525,42 +2713,44 @@
             let state = tokens_to_parse_buffer(&buf);
             let node = self(&state)?;
             state.check_unexpected()?;
    -        if let Some(unexpected_span) = span_of_unexpected_ignoring_nones(state.cursor()) {
    -            Err(Error::new(unexpected_span, "unexpected token"))
    +        if let Some((unexpected_span, delimiter)) =
    +            span_of_unexpected_ignoring_nones(state.cursor())
    +        {
    +            Err(err_unexpected_token(unexpected_span, delimiter))
             } else {
                 Ok(node)
             }
         }
     
    -    #[cfg(any(feature = "full", feature = "derive"))]
    -    fn __parse_scoped(self, scope: Span, tokens: TokenStream) -> Result<Self::Output> {
    +    fn __parse_scoped(self, scope: Span, tokens: TokenStream) -> Result<Self::Output> {
             let buf = TokenBuffer::new2(tokens);
             let cursor = buf.begin();
             let unexpected = Rc::new(Cell::new(Unexpected::None));
             let state = new_parse_buffer(scope, cursor, unexpected);
             let node = self(&state)?;
             state.check_unexpected()?;
    -        if let Some(unexpected_span) = span_of_unexpected_ignoring_nones(state.cursor()) {
    -            Err(Error::new(unexpected_span, "unexpected token"))
    +        if let Some((unexpected_span, delimiter)) =
    +            span_of_unexpected_ignoring_nones(state.cursor())
    +        {
    +            Err(err_unexpected_token(unexpected_span, delimiter))
             } else {
                 Ok(node)
             }
         }
    -
    -    #[cfg(any(feature = "full", feature = "derive"))]
    -    fn __parse_stream(self, input: ParseStream) -> Result<Self::Output> {
    -        self(input)
    -    }
     }
     
    -#[cfg(any(feature = "full", feature = "derive"))]
    -pub(crate) fn parse_scoped<F: Parser>(f: F, scope: Span, tokens: TokenStream) -> Result<F::Output> {
    +pub(crate) fn parse_scoped<F: Parser>(f: F, scope: Span, tokens: TokenStream) -> Result<F::Output> {
         f.__parse_scoped(scope, tokens)
     }
     
    -#[cfg(any(feature = "full", feature = "derive"))]
    -pub(crate) fn parse_stream<F: Parser>(f: F, input: ParseStream) -> Result<F::Output> {
    -    f.__parse_stream(input)
    +fn err_unexpected_token(span: Span, delimiter: Delimiter) -> Error {
    +    let msg = match delimiter {
    +        Delimiter::Parenthesis => "unexpected token, expected `)`",
    +        Delimiter::Brace => "unexpected token, expected `}`",
    +        Delimiter::Bracket => "unexpected token, expected `]`",
    +        Delimiter::None => "unexpected token",
    +    };
    +    Error::new(span, msg)
     }
     
     /// An empty syntax tree node that consumes no tokens when parsed.
    @@ -2582,7 +2772,7 @@
     ///     parse_macro_input!(args as Nothing);
     ///
     ///     /* ... */
    -/// #   "".parse().unwrap()
    +/// #   TokenStream::new()
     /// }
     /// ```
     ///
    @@ -2601,28 +2791,48 @@
         }
     }
     
    -#[cfg(feature = "extra-traits")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    -impl Debug for Nothing {
    -    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
    -        f.write_str("Nothing")
    +#[cfg(feature = "printing")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +impl ToTokens for Nothing {
    +    fn to_tokens(&self, tokens: &mut TokenStream) {
    +        let _ = tokens;
         }
     }
     
    -#[cfg(feature = "extra-traits")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    +#[cfg(feature = "clone-impls")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for Nothing {
    +    fn clone(&self) -> Self {
    +        *self
    +    }
    +}
    +
    +#[cfg(feature = "clone-impls")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Copy for Nothing {}
    +
    +#[cfg(feature = "extra-traits")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for Nothing {
    +    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
    +        f.write_str("Nothing")
    +    }
    +}
    +
    +#[cfg(feature = "extra-traits")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
     impl Eq for Nothing {}
     
    -#[cfg(feature = "extra-traits")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    +#[cfg(feature = "extra-traits")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
     impl PartialEq for Nothing {
         fn eq(&self, _other: &Self) -> bool {
             true
         }
     }
     
    -#[cfg(feature = "extra-traits")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    +#[cfg(feature = "extra-traits")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
     impl Hash for Nothing {
         fn hash<H: Hasher>(&self, _state: &mut H) {}
     }
    diff --git a/src/syn/parse_macro_input.rs.html b/src/syn/parse_macro_input.rs.html
    index 4e00ac4..222d11f 100644
    --- a/src/syn/parse_macro_input.rs.html
    +++ b/src/syn/parse_macro_input.rs.html
    @@ -1,4 +1,5 @@
    -parse_macro_input.rs - source
    1
    +parse_macro_input.rs - source

    syn/
    parse_macro_input.rs

    +1
     2
     3
     4
    @@ -125,59 +126,7 @@
     125
     126
     127
    -128
    -129
    -130
    -131
    -132
    -133
    -134
    -135
    -136
    -137
    -138
    -139
    -140
    -141
    -142
    -143
    -144
    -145
    -146
    -147
    -148
    -149
    -150
    -151
    -152
    -153
    -154
    -155
    -156
    -157
    -158
    -159
    -160
    -161
    -162
    -163
    -164
    -165
    -166
    -167
    -168
    -169
    -170
    -171
    -172
    -173
    -174
    -175
    -176
    -177
    -178
    -179
    -
    /// Parse the input TokenStream of a macro, triggering a compile error if the
    +128
    /// Parse the input TokenStream of a macro, triggering a compile error if the
     /// tokens fail to parse.
     ///
     /// Refer to the [`parse` module] documentation for more details about parsing
    @@ -219,7 +168,7 @@
     ///     let input = parse_macro_input!(tokens as MyMacroInput);
     ///
     ///     /* ... */
    -/// #   "".parse().unwrap()
    +/// #   TokenStream::new()
     /// }
     /// ```
     ///
    @@ -255,7 +204,7 @@
     ///     let input = parse_macro_input!(tokens with MyMacroInput::parse_alternate);
     ///
     ///     /* ... */
    -/// #   "".parse().unwrap()
    +/// #   TokenStream::new()
     /// }
     /// ```
     ///
    @@ -283,10 +232,10 @@
     /// # }
     /// ```
     #[macro_export]
    -#[cfg_attr(doc_cfg, doc(cfg(all(feature = "parsing", feature = "proc-macro"))))]
    -macro_rules! parse_macro_input {
    +#[cfg_attr(docsrs, doc(cfg(all(feature = "parsing", feature = "proc-macro"))))]
    +macro_rules! parse_macro_input {
         ($tokenstream:ident as $ty:ty) => {
    -        match $crate::parse_macro_input::parse::<$ty>($tokenstream) {
    +        match $crate::parse::<$ty>($tokenstream) {
                 $crate::__private::Ok(data) => data,
                 $crate::__private::Err(err) => {
                     return $crate::__private::TokenStream::from(err.to_compile_error());
    @@ -305,55 +254,4 @@
             $crate::parse_macro_input!($tokenstream as _)
         };
     }
    -
    -////////////////////////////////////////////////////////////////////////////////
    -// Can parse any type that implements Parse.
    -
    -use crate::parse::{Parse, ParseStream, Parser, Result};
    -use proc_macro::TokenStream;
    -
    -// Not public API.
    -#[doc(hidden)]
    -pub fn parse<T: ParseMacroInput>(token_stream: TokenStream) -> Result<T> {
    -    T::parse.parse(token_stream)
    -}
    -
    -// Not public API.
    -#[doc(hidden)]
    -pub trait ParseMacroInput: Sized {
    -    fn parse(input: ParseStream) -> Result<Self>;
    -}
    -
    -impl<T: Parse> ParseMacroInput for T {
    -    fn parse(input: ParseStream) -> Result<Self> {
    -        <T as Parse>::parse(input)
    -    }
    -}
    -
    -////////////////////////////////////////////////////////////////////////////////
    -// Any other types that we want `parse_macro_input!` to be able to parse.
    -
    -#[cfg(any(feature = "full", feature = "derive"))]
    -use crate::AttributeArgs;
    -
    -#[cfg(any(feature = "full", feature = "derive"))]
    -impl ParseMacroInput for AttributeArgs {
    -    fn parse(input: ParseStream) -> Result<Self> {
    -        let mut metas = Vec::new();
    -
    -        loop {
    -            if input.is_empty() {
    -                break;
    -            }
    -            let value = input.parse()?;
    -            metas.push(value);
    -            if input.is_empty() {
    -                break;
    -            }
    -            input.parse::<Token![,]>()?;
    -        }
    -
    -        Ok(metas)
    -    }
    -}
     
    \ No newline at end of file diff --git a/src/syn/parse_quote.rs.html b/src/syn/parse_quote.rs.html index 7186e76..e624d69 100644 --- a/src/syn/parse_quote.rs.html +++ b/src/syn/parse_quote.rs.html @@ -1,4 +1,5 @@ -parse_quote.rs - source
    1
    +parse_quote.rs - source

    syn/
    parse_quote.rs

    +1
     2
     3
     4
    @@ -165,7 +166,61 @@
     165
     166
     167
    -
    /// Quasi-quotation macro that accepts input like the [`quote!`] macro but uses
    +168
    +169
    +170
    +171
    +172
    +173
    +174
    +175
    +176
    +177
    +178
    +179
    +180
    +181
    +182
    +183
    +184
    +185
    +186
    +187
    +188
    +189
    +190
    +191
    +192
    +193
    +194
    +195
    +196
    +197
    +198
    +199
    +200
    +201
    +202
    +203
    +204
    +205
    +206
    +207
    +208
    +209
    +210
    +211
    +212
    +213
    +214
    +215
    +216
    +217
    +218
    +219
    +220
    +221
    +222
    /// Quasi-quotation macro that accepts input like the [`quote!`] macro but uses
     /// type inference to figure out a return type for those tokens.
     ///
     /// [`quote!`]: https://docs.rs/quote/1.0/quote/index.html
    @@ -187,13 +242,12 @@
     ///         let #name: #ty = Default::default();
     ///     };
     ///
    -///     println!("{:#?}", stmt);
    +///     println!("{:#?}", stmt);
     /// }
     /// ```
     ///
    -/// *This macro is available only if Syn is built with the `"parsing"` feature,
    -/// although interpolation of syntax tree nodes into the quoted tokens is only
    -/// supported if Syn is built with the `"printing"` feature as well.*
    +/// *This macro is available only if Syn is built with both the `"parsing"` and
    +/// `"printing"` features.*
     ///
     /// # Example
     ///
    @@ -232,11 +286,11 @@
     /// Panics if the tokens fail to parse as the expected syntax tree type. The
     /// caller is responsible for ensuring that the input tokens are syntactically
     /// valid.
    -#[cfg_attr(doc_cfg, doc(cfg(all(feature = "parsing", feature = "printing"))))]
    +#[cfg_attr(docsrs, doc(cfg(all(feature = "parsing", feature = "printing"))))]
     #[macro_export]
    -macro_rules! parse_quote {
    +macro_rules! parse_quote {
         ($($tt:tt)*) => {
    -        $crate::parse_quote::parse($crate::__private::quote::quote!($($tt)*))
    +        $crate::__private::parse_quote($crate::__private::quote::quote!($($tt)*))
         };
     }
     
    @@ -264,32 +318,33 @@
     ///     };
     /// }
     /// ```
    -#[cfg_attr(doc_cfg, doc(cfg(all(feature = "parsing", feature = "printing"))))]
    +#[cfg_attr(docsrs, doc(cfg(all(feature = "parsing", feature = "printing"))))]
     #[macro_export]
    -macro_rules! parse_quote_spanned {
    +macro_rules! parse_quote_spanned {
         ($span:expr=> $($tt:tt)*) => {
    -        $crate::parse_quote::parse($crate::__private::quote::quote_spanned!($span=> $($tt)*))
    +        $crate::__private::parse_quote($crate::__private::quote::quote_spanned!($span=> $($tt)*))
         };
     }
     
     ////////////////////////////////////////////////////////////////////////////////
     // Can parse any type that implements Parse.
     
    -use crate::parse::{Parse, ParseStream, Parser, Result};
    +use crate::error::Result;
    +use crate::parse::{Parse, ParseStream, Parser};
     use proc_macro2::TokenStream;
     
     // Not public API.
     #[doc(hidden)]
    +#[track_caller]
     pub fn parse<T: ParseQuote>(token_stream: TokenStream) -> T {
         let parser = T::parse;
         match parser.parse2(token_stream) {
             Ok(t) => t,
    -        Err(err) => panic!("{}", err),
    +        Err(err) => panic!("{}", err),
         }
     }
     
    -// Not public API.
    -#[doc(hidden)]
    +#[doc(hidden)]
     pub trait ParseQuote: Sized {
         fn parse(input: ParseStream) -> Result<Self>;
     }
    @@ -304,12 +359,12 @@
     // Any other types that we want `parse_quote!` to be able to parse.
     
     use crate::punctuated::Punctuated;
    -#[cfg(any(feature = "full", feature = "derive"))]
    -use crate::{attr, Attribute};
    -#[cfg(feature = "full")]
    -use crate::{Block, Stmt};
    +#[cfg(any(feature = "full", feature = "derive"))]
    +use crate::{attr, Attribute, Field, FieldMutability, Ident, Type, Visibility};
    +#[cfg(feature = "full")]
    +use crate::{Block, Pat, Stmt};
     
    -#[cfg(any(feature = "full", feature = "derive"))]
    +#[cfg(any(feature = "full", feature = "derive"))]
     impl ParseQuote for Attribute {
         fn parse(input: ParseStream) -> Result<Self> {
             if input.peek(Token![#]) && input.peek2(Token![!]) {
    @@ -320,13 +375,68 @@
         }
     }
     
    +#[cfg(any(feature = "full", feature = "derive"))]
    +impl ParseQuote for Vec<Attribute> {
    +    fn parse(input: ParseStream) -> Result<Self> {
    +        let mut attrs = Vec::new();
    +        while !input.is_empty() {
    +            attrs.push(ParseQuote::parse(input)?);
    +        }
    +        Ok(attrs)
    +    }
    +}
    +
    +#[cfg(any(feature = "full", feature = "derive"))]
    +impl ParseQuote for Field {
    +    fn parse(input: ParseStream) -> Result<Self> {
    +        let attrs = input.call(Attribute::parse_outer)?;
    +        let vis: Visibility = input.parse()?;
    +
    +        let ident: Option<Ident>;
    +        let colon_token: Option<Token![:]>;
    +        let is_named = input.peek(Ident) && input.peek2(Token![:]) && !input.peek2(Token![::]);
    +        if is_named {
    +            ident = Some(input.parse()?);
    +            colon_token = Some(input.parse()?);
    +        } else {
    +            ident = None;
    +            colon_token = None;
    +        }
    +
    +        let ty: Type = input.parse()?;
    +
    +        Ok(Field {
    +            attrs,
    +            vis,
    +            mutability: FieldMutability::None,
    +            ident,
    +            colon_token,
    +            ty,
    +        })
    +    }
    +}
    +
    +#[cfg(feature = "full")]
    +impl ParseQuote for Pat {
    +    fn parse(input: ParseStream) -> Result<Self> {
    +        Pat::parse_multi_with_leading_vert(input)
    +    }
    +}
    +
    +#[cfg(feature = "full")]
    +impl ParseQuote for Box<Pat> {
    +    fn parse(input: ParseStream) -> Result<Self> {
    +        <Pat as ParseQuote>::parse(input).map(Box::new)
    +    }
    +}
    +
     impl<T: Parse, P: Parse> ParseQuote for Punctuated<T, P> {
         fn parse(input: ParseStream) -> Result<Self> {
             Self::parse_terminated(input)
         }
     }
     
    -#[cfg(feature = "full")]
    +#[cfg(feature = "full")]
     impl ParseQuote for Vec<Stmt> {
         fn parse(input: ParseStream) -> Result<Self> {
             Block::parse_within(input)
    diff --git a/src/syn/path.rs.html b/src/syn/path.rs.html
    index 8a917dd..39ec425 100644
    --- a/src/syn/path.rs.html
    +++ b/src/syn/path.rs.html
    @@ -1,4 +1,5 @@
    -path.rs - source
    1
    +path.rs - source

    syn/
    path.rs

    +1
     2
     3
     4
    @@ -852,15 +853,127 @@
     852
     853
     854
    -
    use super::*;
    +855
    +856
    +857
    +858
    +859
    +860
    +861
    +862
    +863
    +864
    +865
    +866
    +867
    +868
    +869
    +870
    +871
    +872
    +873
    +874
    +875
    +876
    +877
    +878
    +879
    +880
    +881
    +882
    +883
    +884
    +885
    +886
    +887
    +888
    +889
    +890
    +891
    +892
    +893
    +894
    +895
    +896
    +897
    +898
    +899
    +900
    +901
    +902
    +903
    +904
    +905
    +906
    +907
    +908
    +909
    +910
    +911
    +912
    +913
    +914
    +915
    +916
    +917
    +918
    +919
    +920
    +921
    +922
    +923
    +924
    +925
    +926
    +927
    +928
    +929
    +930
    +931
    +932
    +933
    +934
    +935
    +936
    +937
    +938
    +939
    +940
    +941
    +942
    +943
    +944
    +945
    +946
    +947
    +948
    +949
    +950
    +951
    +952
    +953
    +954
    +955
    +956
    +957
    +958
    +959
    +960
    +961
    +962
    +963
    #[cfg(feature = "parsing")]
    +use crate::error::Result;
    +use crate::expr::Expr;
    +use crate::generics::TypeParamBound;
    +use crate::ident::Ident;
    +use crate::lifetime::Lifetime;
     use crate::punctuated::Punctuated;
    +use crate::token;
    +use crate::ty::{ReturnType, Type};
     
    -ast_struct! {
    +ast_struct! {
         /// A path at which a named item is exported (e.g. `std::collections::HashMap`).
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct Path {
             pub leading_colon: Option<Token![::]>,
             pub segments: Punctuated<PathSegment, Token![::]>,
    @@ -881,12 +994,82 @@
         }
     }
     
    -ast_struct! {
    -    /// A segment of a path together with any path arguments on that segment.
    +impl Path {
    +    /// Determines whether this is a path of length 1 equal to the given
    +    /// ident.
         ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    /// For them to compare equal, it must be the case that:
    +    ///
    +    /// - the path has no leading colon,
    +    /// - the number of path segments is 1,
    +    /// - the first path segment has no angle bracketed or parenthesized
    +    ///   path arguments, and
    +    /// - the ident of the first path segment is equal to the given one.
    +    ///
    +    /// # Example
    +    ///
    +    /// ```
    +    /// use proc_macro2::TokenStream;
    +    /// use syn::{Attribute, Error, Meta, Result};
    +    ///
    +    /// fn get_serde_meta_item(attr: &Attribute) -> Result<Option<&TokenStream>> {
    +    ///     if attr.path().is_ident("serde") {
    +    ///         match &attr.meta {
    +    ///             Meta::List(meta) => Ok(Some(&meta.tokens)),
    +    ///             bad => Err(Error::new_spanned(bad, "unrecognized attribute")),
    +    ///         }
    +    ///     } else {
    +    ///         Ok(None)
    +    ///     }
    +    /// }
    +    /// ```
    +    pub fn is_ident<I>(&self, ident: &I) -> bool
    +    where
    +        I: ?Sized,
    +        Ident: PartialEq<I>,
    +    {
    +        match self.get_ident() {
    +            Some(id) => id == ident,
    +            None => false,
    +        }
    +    }
    +
    +    /// If this path consists of a single ident, returns the ident.
    +    ///
    +    /// A path is considered an ident if:
    +    ///
    +    /// - the path has no leading colon,
    +    /// - the number of path segments is 1, and
    +    /// - the first path segment has no angle bracketed or parenthesized
    +    ///   path arguments.
    +    pub fn get_ident(&self) -> Option<&Ident> {
    +        if self.leading_colon.is_none()
    +            && self.segments.len() == 1
    +            && self.segments[0].arguments.is_none()
    +        {
    +            Some(&self.segments[0].ident)
    +        } else {
    +            None
    +        }
    +    }
    +
    +    /// An error if this path is not a single ident, as defined in `get_ident`.
    +    #[cfg(feature = "parsing")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
    +    pub fn require_ident(&self) -> Result<&Ident> {
    +        self.get_ident().ok_or_else(|| {
    +            crate::error::new2(
    +                self.segments.first().unwrap().ident.span(),
    +                self.segments.last().unwrap().ident.span(),
    +                "expected this path to be an identifier",
    +            )
    +        })
    +    }
    +}
    +
    +ast_struct! {
    +    /// A segment of a path together with any path arguments on that segment.
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct PathSegment {
             pub ident: Ident,
             pub arguments: PathArguments,
    @@ -905,23 +1088,20 @@
         }
     }
     
    -ast_enum! {
    +ast_enum! {
         /// Angle bracketed or parenthesized arguments of a path segment.
         ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    ///
         /// ## Angle bracketed
         ///
    -    /// The `<'a, T>` in `std::slice::iter<'a, T>`.
    +    /// The `<'a, T>` in `std::slice::iter<'a, T>`.
         ///
         /// ## Parenthesized
         ///
         /// The `(A, B) -> C` in `Fn(A, B) -> C`.
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub enum PathArguments {
             None,
    -        /// The `<'a, T>` in `std::slice::iter<'a, T>`.
    +        /// The `<'a, T>` in `std::slice::iter<'a, T>`.
             AngleBracketed(AngleBracketedGenericArguments),
             /// The `(A, B) -> C` in `Fn(A, B) -> C`.
             Parenthesized(ParenthesizedGenericArguments),
    @@ -951,12 +1131,10 @@
         }
     }
     
    -ast_enum! {
    -    /// An individual generic argument, like `'a`, `T`, or `Item = T`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +ast_enum! {
    +    /// An individual generic argument, like `'a`, `T`, or `Item = T`.
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[non_exhaustive]
         pub enum GenericArgument {
             /// A lifetime argument.
             Lifetime(Lifetime),
    @@ -969,19 +1147,19 @@
             Const(Expr),
             /// A binding (equality constraint) on an associated type: the `Item =
             /// u8` in `Iterator<Item = u8>`.
    -        Binding(Binding),
    +        AssocType(AssocType),
    +        /// An equality constraint on an associated constant: the `PANIC =
    +        /// false` in `Trait<PANIC = false>`.
    +        AssocConst(AssocConst),
             /// An associated type bound: `Iterator<Item: Display>`.
             Constraint(Constraint),
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// Angle bracketed arguments of a path segment: the `<K, V>` in `HashMap<K,
         /// V>`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct AngleBracketedGenericArguments {
             pub colon2_token: Option<Token![::]>,
             pub lt_token: Token![<],
    @@ -990,39 +1168,45 @@
         }
     }
     
    -ast_struct! {
    -    /// A binding (equality constraint) on an associated type: `Item = u8`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    -    pub struct Binding {
    +ast_struct! {
    +    /// A binding (equality constraint) on an associated type: the `Item = u8`
    +    /// in `Iterator<Item = u8>`.
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    pub struct AssocType {
             pub ident: Ident,
    +        pub generics: Option<AngleBracketedGenericArguments>,
             pub eq_token: Token![=],
             pub ty: Type,
         }
     }
     
    -ast_struct! {
    +ast_struct! {
    +    /// An equality constraint on an associated constant: the `PANIC = false` in
    +    /// `Trait<PANIC = false>`.
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    pub struct AssocConst {
    +        pub ident: Ident,
    +        pub generics: Option<AngleBracketedGenericArguments>,
    +        pub eq_token: Token![=],
    +        pub value: Expr,
    +    }
    +}
    +
    +ast_struct! {
         /// An associated type bound: `Iterator<Item: Display>`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct Constraint {
             pub ident: Ident,
    +        pub generics: Option<AngleBracketedGenericArguments>,
             pub colon_token: Token![:],
             pub bounds: Punctuated<TypeParamBound, Token![+]>,
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// Arguments of a function path segment: the `(A, B) -> C` in `Fn(A,B) ->
         /// C`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct ParenthesizedGenericArguments {
             pub paren_token: token::Paren,
             /// `(A, B)`
    @@ -1032,7 +1216,7 @@
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// The explicit Self type in a qualified path: the `T` in `<T as
         /// Display>::fmt`.
         ///
    @@ -1049,10 +1233,7 @@
         ///  ^~~~~~   ^
         ///  ty       position = 0
         /// ```
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct QSelf {
             pub lt_token: Token![<],
             pub ty: Box<Type>,
    @@ -1062,113 +1243,133 @@
         }
     }
     
    -#[cfg(feature = "parsing")]
    -pub mod parsing {
    -    use super::*;
    +#[cfg(feature = "parsing")]
    +pub(crate) mod parsing {
    +    use crate::error::Result;
    +    #[cfg(feature = "full")]
    +    use crate::expr::ExprBlock;
    +    use crate::expr::{Expr, ExprPath};
    +    use crate::ext::IdentExt as _;
    +    #[cfg(feature = "full")]
    +    use crate::generics::TypeParamBound;
    +    use crate::ident::Ident;
    +    use crate::lifetime::Lifetime;
    +    use crate::lit::Lit;
    +    use crate::parse::{Parse, ParseStream};
    +    #[cfg(feature = "full")]
    +    use crate::path::Constraint;
    +    use crate::path::{
    +        AngleBracketedGenericArguments, AssocConst, AssocType, GenericArgument,
    +        ParenthesizedGenericArguments, Path, PathArguments, PathSegment, QSelf,
    +    };
    +    use crate::punctuated::Punctuated;
    +    use crate::token;
    +    use crate::ty::{ReturnType, Type};
    +    #[cfg(not(feature = "full"))]
    +    use crate::verbatim;
     
    -    use crate::ext::IdentExt;
    -    use crate::parse::{Parse, ParseStream, Result};
    -
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for Path {
             fn parse(input: ParseStream) -> Result<Self> {
                 Self::parse_helper(input, false)
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for GenericArgument {
             fn parse(input: ParseStream) -> Result<Self> {
                 if input.peek(Lifetime) && !input.peek2(Token![+]) {
                     return Ok(GenericArgument::Lifetime(input.parse()?));
                 }
     
    -            if input.peek(Ident) && input.peek2(Token![=]) {
    -                let ident: Ident = input.parse()?;
    -                let eq_token: Token![=] = input.parse()?;
    -
    -                let ty = if input.peek(Lit) {
    -                    let begin = input.fork();
    -                    input.parse::<Lit>()?;
    -                    Type::Verbatim(verbatim::between(begin, input))
    -                } else if input.peek(token::Brace) {
    -                    let begin = input.fork();
    -
    -                    #[cfg(feature = "full")]
    -                    {
    -                        input.parse::<ExprBlock>()?;
    -                    }
    -
    -                    #[cfg(not(feature = "full"))]
    -                    {
    -                        let content;
    -                        braced!(content in input);
    -                        content.parse::<Expr>()?;
    -                    }
    -
    -                    Type::Verbatim(verbatim::between(begin, input))
    -                } else {
    -                    input.parse()?
    -                };
    -
    -                return Ok(GenericArgument::Binding(Binding {
    -                    ident,
    -                    eq_token,
    -                    ty,
    -                }));
    -            }
    -
    -            #[cfg(feature = "full")]
    -            {
    -                if input.peek(Ident) && input.peek2(Token![:]) && !input.peek2(Token![::]) {
    -                    return Ok(GenericArgument::Constraint(input.parse()?));
    -                }
    -            }
    -
                 if input.peek(Lit) || input.peek(token::Brace) {
                     return const_argument(input).map(GenericArgument::Const);
                 }
     
    -            #[cfg(feature = "full")]
    -            let begin = input.fork();
    +            let mut argument: Type = input.parse()?;
     
    -            let argument: Type = input.parse()?;
    -
    -            #[cfg(feature = "full")]
    -            {
    -                if match &argument {
    -                    Type::Path(argument)
    -                        if argument.qself.is_none()
    -                            && argument.path.leading_colon.is_none()
    -                            && argument.path.segments.len() == 1 =>
    -                    {
    -                        match argument.path.segments[0].arguments {
    -                            PathArguments::AngleBracketed(_) => true,
    -                            _ => false,
    -                        }
    +            match argument {
    +                Type::Path(mut ty)
    +                    if ty.qself.is_none()
    +                        && ty.path.leading_colon.is_none()
    +                        && ty.path.segments.len() == 1
    +                        && match &ty.path.segments[0].arguments {
    +                            PathArguments::None | PathArguments::AngleBracketed(_) => true,
    +                            PathArguments::Parenthesized(_) => false,
    +                        } =>
    +                {
    +                    if let Some(eq_token) = input.parse::<Option<Token![=]>>()? {
    +                        let segment = ty.path.segments.pop().unwrap().into_value();
    +                        let ident = segment.ident;
    +                        let generics = match segment.arguments {
    +                            PathArguments::None => None,
    +                            PathArguments::AngleBracketed(arguments) => Some(arguments),
    +                            PathArguments::Parenthesized(_) => unreachable!(),
    +                        };
    +                        return if input.peek(Lit) || input.peek(token::Brace) {
    +                            Ok(GenericArgument::AssocConst(AssocConst {
    +                                ident,
    +                                generics,
    +                                eq_token,
    +                                value: const_argument(input)?,
    +                            }))
    +                        } else {
    +                            Ok(GenericArgument::AssocType(AssocType {
    +                                ident,
    +                                generics,
    +                                eq_token,
    +                                ty: input.parse()?,
    +                            }))
    +                        };
                         }
    -                    _ => false,
    -                } && if input.peek(Token![=]) {
    -                    input.parse::<Token![=]>()?;
    -                    input.parse::<Type>()?;
    -                    true
    -                } else if input.peek(Token![:]) {
    -                    input.parse::<Token![:]>()?;
    -                    input.call(constraint_bounds)?;
    -                    true
    -                } else {
    -                    false
    -                } {
    -                    let verbatim = verbatim::between(begin, input);
    -                    return Ok(GenericArgument::Type(Type::Verbatim(verbatim)));
    +
    +                    #[cfg(feature = "full")]
    +                    if let Some(colon_token) = input.parse::<Option<Token![:]>>()? {
    +                        let segment = ty.path.segments.pop().unwrap().into_value();
    +                        return Ok(GenericArgument::Constraint(Constraint {
    +                            ident: segment.ident,
    +                            generics: match segment.arguments {
    +                                PathArguments::None => None,
    +                                PathArguments::AngleBracketed(arguments) => Some(arguments),
    +                                PathArguments::Parenthesized(_) => unreachable!(),
    +                            },
    +                            colon_token,
    +                            bounds: {
    +                                let mut bounds = Punctuated::new();
    +                                loop {
    +                                    if input.peek(Token![,]) || input.peek(Token![>]) {
    +                                        break;
    +                                    }
    +                                    bounds.push_value({
    +                                        let allow_precise_capture = false;
    +                                        let allow_tilde_const = true;
    +                                        TypeParamBound::parse_single(
    +                                            input,
    +                                            allow_precise_capture,
    +                                            allow_tilde_const,
    +                                        )?
    +                                    });
    +                                    if !input.peek(Token![+]) {
    +                                        break;
    +                                    }
    +                                    let punct: Token![+] = input.parse()?;
    +                                    bounds.push_punct(punct);
    +                                }
    +                                bounds
    +                            },
    +                        }));
    +                    }
    +
    +                    argument = Type::Path(ty);
                     }
    +                _ => {}
                 }
     
                 Ok(GenericArgument::Type(argument))
             }
         }
     
    -    pub fn const_argument(input: ParseStream) -> Result<Expr> {
    +    pub(crate) fn const_argument(input: ParseStream) -> Result<Expr> {
             let lookahead = input.lookahead1();
     
             if input.peek(Lit) {
    @@ -1176,32 +1377,29 @@
                 return Ok(Expr::Lit(lit));
             }
     
    -        #[cfg(feature = "full")]
    -        {
    -            if input.peek(Ident) {
    -                let ident: Ident = input.parse()?;
    -                return Ok(Expr::Path(ExprPath {
    -                    attrs: Vec::new(),
    -                    qself: None,
    -                    path: Path::from(ident),
    -                }));
    -            }
    +        if input.peek(Ident) {
    +            let ident: Ident = input.parse()?;
    +            return Ok(Expr::Path(ExprPath {
    +                attrs: Vec::new(),
    +                qself: None,
    +                path: Path::from(ident),
    +            }));
             }
     
             if input.peek(token::Brace) {
    -            #[cfg(feature = "full")]
    +            #[cfg(feature = "full")]
                 {
                     let block: ExprBlock = input.parse()?;
                     return Ok(Expr::Block(block));
                 }
     
    -            #[cfg(not(feature = "full"))]
    +            #[cfg(not(feature = "full"))]
                 {
                     let begin = input.fork();
                     let content;
                     braced!(content in input);
                     content.parse::<Expr>()?;
    -                let verbatim = verbatim::between(begin, input);
    +                let verbatim = verbatim::between(&begin, input);
                     return Ok(Expr::Verbatim(verbatim));
                 }
             }
    @@ -1209,11 +1407,24 @@
             Err(lookahead.error())
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    -    impl Parse for AngleBracketedGenericArguments {
    -        fn parse(input: ParseStream) -> Result<Self> {
    +    impl AngleBracketedGenericArguments {
    +        /// Parse `::<…>` with mandatory leading `::`.
    +        ///
    +        /// The ordinary [`Parse`] impl for `AngleBracketedGenericArguments`
    +        /// parses optional leading `::`.
    +        #[cfg(feature = "full")]
    +        #[cfg_attr(docsrs, doc(cfg(all(feature = "parsing", feature = "full"))))]
    +        pub fn parse_turbofish(input: ParseStream) -> Result<Self> {
    +            let colon2_token: Token![::] = input.parse()?;
    +            Self::do_parse(Some(colon2_token), input)
    +        }
    +
    +        pub(crate) fn do_parse(
    +            colon2_token: Option<Token![::]>,
    +            input: ParseStream,
    +        ) -> Result<Self> {
                 Ok(AngleBracketedGenericArguments {
    -                colon2_token: input.parse()?,
    +                colon2_token,
                     lt_token: input.parse()?,
                     args: {
                         let mut args = Punctuated::new();
    @@ -1221,12 +1432,12 @@
                             if input.peek(Token![>]) {
                                 break;
                             }
    -                        let value = input.parse()?;
    +                        let value: GenericArgument = input.parse()?;
                             args.push_value(value);
                             if input.peek(Token![>]) {
                                 break;
                             }
    -                        let punct = input.parse()?;
    +                        let punct: Token![,] = input.parse()?;
                             args.push_punct(punct);
                         }
                         args
    @@ -1236,19 +1447,27 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
    +    impl Parse for AngleBracketedGenericArguments {
    +        fn parse(input: ParseStream) -> Result<Self> {
    +            let colon2_token: Option<Token![::]> = input.parse()?;
    +            Self::do_parse(colon2_token, input)
    +        }
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for ParenthesizedGenericArguments {
             fn parse(input: ParseStream) -> Result<Self> {
                 let content;
                 Ok(ParenthesizedGenericArguments {
                     paren_token: parenthesized!(content in input),
    -                inputs: content.parse_terminated(Type::parse)?,
    +                inputs: content.parse_terminated(Type::parse, Token![,])?,
                     output: input.call(ReturnType::without_plus)?,
                 })
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for PathSegment {
             fn parse(input: ParseStream) -> Result<Self> {
                 Self::parse_helper(input, false)
    @@ -1257,7 +1476,11 @@
     
         impl PathSegment {
             fn parse_helper(input: ParseStream, expr_style: bool) -> Result<Self> {
    -            if input.peek(Token![super]) || input.peek(Token![self]) || input.peek(Token![crate]) {
    +            if input.peek(Token![super])
    +                || input.peek(Token![self])
    +                || input.peek(Token![crate])
    +                || cfg!(feature = "full") && input.peek(Token![try])
    +            {
                     let ident = input.call(Ident::parse_any)?;
                     return Ok(PathSegment::from(ident));
                 }
    @@ -1281,53 +1504,9 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    -    impl Parse for Binding {
    -        fn parse(input: ParseStream) -> Result<Self> {
    -            Ok(Binding {
    -                ident: input.parse()?,
    -                eq_token: input.parse()?,
    -                ty: input.parse()?,
    -            })
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    -    impl Parse for Constraint {
    -        fn parse(input: ParseStream) -> Result<Self> {
    -            Ok(Constraint {
    -                ident: input.parse()?,
    -                colon_token: input.parse()?,
    -                bounds: constraint_bounds(input)?,
    -            })
    -        }
    -    }
    -
    -    #[cfg(feature = "full")]
    -    fn constraint_bounds(input: ParseStream) -> Result<Punctuated<TypeParamBound, Token![+]>> {
    -        let mut bounds = Punctuated::new();
    -        loop {
    -            if input.peek(Token![,]) || input.peek(Token![>]) {
    -                break;
    -            }
    -            let value = input.parse()?;
    -            bounds.push_value(value);
    -            if !input.peek(Token![+]) {
    -                break;
    -            }
    -            let punct = input.parse()?;
    -            bounds.push_punct(punct);
    -        }
    -        Ok(bounds)
    -    }
    -
         impl Path {
             /// Parse a `Path` containing no path arguments on any of its segments.
             ///
    -        /// *This function is available only if Syn is built with the `"parsing"`
    -        /// feature.*
    -        ///
             /// # Example
             ///
             /// ```
    @@ -1356,7 +1535,7 @@
             ///     }
             /// }
             /// ```
    -        #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +        #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
             pub fn parse_mod_style(input: ParseStream) -> Result<Self> {
                 Ok(Path {
                     leading_colon: input.parse()?,
    @@ -1380,80 +1559,15 @@
                             segments.push_punct(punct);
                         }
                         if segments.is_empty() {
    -                        return Err(input.error("expected path"));
    +                        return Err(input.parse::<Ident>().unwrap_err());
                         } else if segments.trailing_punct() {
    -                        return Err(input.error("expected path segment"));
    +                        return Err(input.error("expected path segment after `::`"));
                         }
                         segments
                     },
                 })
             }
     
    -        /// Determines whether this is a path of length 1 equal to the given
    -        /// ident.
    -        ///
    -        /// For them to compare equal, it must be the case that:
    -        ///
    -        /// - the path has no leading colon,
    -        /// - the number of path segments is 1,
    -        /// - the first path segment has no angle bracketed or parenthesized
    -        ///   path arguments, and
    -        /// - the ident of the first path segment is equal to the given one.
    -        ///
    -        /// *This function is available only if Syn is built with the `"parsing"`
    -        /// feature.*
    -        ///
    -        /// # Example
    -        ///
    -        /// ```
    -        /// use syn::{Attribute, Error, Meta, NestedMeta, Result};
    -        /// # use std::iter::FromIterator;
    -        ///
    -        /// fn get_serde_meta_items(attr: &Attribute) -> Result<Vec<NestedMeta>> {
    -        ///     if attr.path.is_ident("serde") {
    -        ///         match attr.parse_meta()? {
    -        ///             Meta::List(meta) => Ok(Vec::from_iter(meta.nested)),
    -        ///             bad => Err(Error::new_spanned(bad, "unrecognized attribute")),
    -        ///         }
    -        ///     } else {
    -        ///         Ok(Vec::new())
    -        ///     }
    -        /// }
    -        /// ```
    -        #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    -        pub fn is_ident<I: ?Sized>(&self, ident: &I) -> bool
    -        where
    -            Ident: PartialEq<I>,
    -        {
    -            match self.get_ident() {
    -                Some(id) => id == ident,
    -                None => false,
    -            }
    -        }
    -
    -        /// If this path consists of a single ident, returns the ident.
    -        ///
    -        /// A path is considered an ident if:
    -        ///
    -        /// - the path has no leading colon,
    -        /// - the number of path segments is 1, and
    -        /// - the first path segment has no angle bracketed or parenthesized
    -        ///   path arguments.
    -        ///
    -        /// *This function is available only if Syn is built with the `"parsing"`
    -        /// feature.*
    -        #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    -        pub fn get_ident(&self) -> Option<&Ident> {
    -            if self.leading_colon.is_none()
    -                && self.segments.len() == 1
    -                && self.segments[0].arguments.is_none()
    -            {
    -                Some(&self.segments[0].ident)
    -            } else {
    -                None
    -            }
    -        }
    -
             pub(crate) fn parse_helper(input: ParseStream, expr_style: bool) -> Result<Self> {
                 let mut path = Path {
                     leading_colon: input.parse()?,
    @@ -1481,9 +1595,15 @@
                 }
                 Ok(())
             }
    +
    +        pub(crate) fn is_mod_style(&self) -> bool {
    +            self.segments
    +                .iter()
    +                .all(|segment| segment.arguments.is_none())
    +        }
         }
     
    -    pub fn qpath(input: ParseStream, expr_style: bool) -> Result<(Option<QSelf>, Path)> {
    +    pub(crate) fn qpath(input: ParseStream, expr_style: bool) -> Result<(Option<QSelf>, Path)> {
             if input.peek(Token![<]) {
                 let lt_token: Token![<] = input.parse()?;
                 let this: Type = input.parse()?;
    @@ -1536,147 +1656,217 @@
         }
     }
     
    -#[cfg(feature = "printing")]
    +#[cfg(feature = "printing")]
     pub(crate) mod printing {
    -    use super::*;
    +    use crate::generics;
    +    use crate::path::{
    +        AngleBracketedGenericArguments, AssocConst, AssocType, Constraint, GenericArgument,
    +        ParenthesizedGenericArguments, Path, PathArguments, PathSegment, QSelf,
    +    };
         use crate::print::TokensOrDefault;
    +    #[cfg(feature = "parsing")]
    +    use crate::spanned::Spanned;
    +    #[cfg(feature = "parsing")]
    +    use proc_macro2::Span;
         use proc_macro2::TokenStream;
         use quote::ToTokens;
         use std::cmp;
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    pub(crate) enum PathStyle {
    +        Expr,
    +        Mod,
    +        AsWritten,
    +    }
    +
    +    impl Copy for PathStyle {}
    +
    +    impl Clone for PathStyle {
    +        fn clone(&self) -> Self {
    +            *self
    +        }
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for Path {
             fn to_tokens(&self, tokens: &mut TokenStream) {
    -            self.leading_colon.to_tokens(tokens);
    -            self.segments.to_tokens(tokens);
    +            print_path(tokens, self, PathStyle::AsWritten);
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    pub(crate) fn print_path(tokens: &mut TokenStream, path: &Path, style: PathStyle) {
    +        path.leading_colon.to_tokens(tokens);
    +        for segment in path.segments.pairs() {
    +            print_path_segment(tokens, segment.value(), style);
    +            segment.punct().to_tokens(tokens);
    +        }
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for PathSegment {
             fn to_tokens(&self, tokens: &mut TokenStream) {
    -            self.ident.to_tokens(tokens);
    -            self.arguments.to_tokens(tokens);
    +            print_path_segment(tokens, self, PathStyle::AsWritten);
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    fn print_path_segment(tokens: &mut TokenStream, segment: &PathSegment, style: PathStyle) {
    +        segment.ident.to_tokens(tokens);
    +        print_path_arguments(tokens, &segment.arguments, style);
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for PathArguments {
             fn to_tokens(&self, tokens: &mut TokenStream) {
    -            match self {
    -                PathArguments::None => {}
    -                PathArguments::AngleBracketed(arguments) => {
    -                    arguments.to_tokens(tokens);
    -                }
    -                PathArguments::Parenthesized(arguments) => {
    -                    arguments.to_tokens(tokens);
    -                }
    +            print_path_arguments(tokens, self, PathStyle::AsWritten);
    +        }
    +    }
    +
    +    fn print_path_arguments(tokens: &mut TokenStream, arguments: &PathArguments, style: PathStyle) {
    +        match arguments {
    +            PathArguments::None => {}
    +            PathArguments::AngleBracketed(arguments) => {
    +                print_angle_bracketed_generic_arguments(tokens, arguments, style);
    +            }
    +            PathArguments::Parenthesized(arguments) => {
    +                print_parenthesized_generic_arguments(tokens, arguments, style);
                 }
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for GenericArgument {
             #[allow(clippy::match_same_arms)]
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 match self {
                     GenericArgument::Lifetime(lt) => lt.to_tokens(tokens),
                     GenericArgument::Type(ty) => ty.to_tokens(tokens),
    -                GenericArgument::Const(e) => match *e {
    -                    Expr::Lit(_) => e.to_tokens(tokens),
    -
    -                    // NOTE: We should probably support parsing blocks with only
    -                    // expressions in them without the full feature for const
    -                    // generics.
    -                    #[cfg(feature = "full")]
    -                    Expr::Block(_) => e.to_tokens(tokens),
    -
    -                    // ERROR CORRECTION: Add braces to make sure that the
    -                    // generated code is valid.
    -                    _ => token::Brace::default().surround(tokens, |tokens| {
    -                        e.to_tokens(tokens);
    -                    }),
    -                },
    -                GenericArgument::Binding(tb) => tb.to_tokens(tokens),
    -                GenericArgument::Constraint(tc) => tc.to_tokens(tokens),
    +                GenericArgument::Const(expr) => {
    +                    generics::printing::print_const_argument(expr, tokens);
    +                }
    +                GenericArgument::AssocType(assoc) => assoc.to_tokens(tokens),
    +                GenericArgument::AssocConst(assoc) => assoc.to_tokens(tokens),
    +                GenericArgument::Constraint(constraint) => constraint.to_tokens(tokens),
                 }
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for AngleBracketedGenericArguments {
             fn to_tokens(&self, tokens: &mut TokenStream) {
    -            self.colon2_token.to_tokens(tokens);
    -            self.lt_token.to_tokens(tokens);
    -
    -            // Print lifetimes before types/consts/bindings, regardless of their
    -            // order in self.args.
    -            let mut trailing_or_empty = true;
    -            for param in self.args.pairs() {
    -                match **param.value() {
    -                    GenericArgument::Lifetime(_) => {
    -                        param.to_tokens(tokens);
    -                        trailing_or_empty = param.punct().is_some();
    -                    }
    -                    GenericArgument::Type(_)
    -                    | GenericArgument::Const(_)
    -                    | GenericArgument::Binding(_)
    -                    | GenericArgument::Constraint(_) => {}
    -                }
    -            }
    -            for param in self.args.pairs() {
    -                match **param.value() {
    -                    GenericArgument::Type(_)
    -                    | GenericArgument::Const(_)
    -                    | GenericArgument::Binding(_)
    -                    | GenericArgument::Constraint(_) => {
    -                        if !trailing_or_empty {
    -                            <Token![,]>::default().to_tokens(tokens);
    -                        }
    -                        param.to_tokens(tokens);
    -                        trailing_or_empty = param.punct().is_some();
    -                    }
    -                    GenericArgument::Lifetime(_) => {}
    -                }
    -            }
    -
    -            self.gt_token.to_tokens(tokens);
    +            print_angle_bracketed_generic_arguments(tokens, self, PathStyle::AsWritten);
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for Binding {
    +    pub(crate) fn print_angle_bracketed_generic_arguments(
    +        tokens: &mut TokenStream,
    +        arguments: &AngleBracketedGenericArguments,
    +        style: PathStyle,
    +    ) {
    +        if let PathStyle::Mod = style {
    +            return;
    +        }
    +
    +        conditionally_print_turbofish(tokens, &arguments.colon2_token, style);
    +        arguments.lt_token.to_tokens(tokens);
    +
    +        // Print lifetimes before types/consts/bindings, regardless of their
    +        // order in args.
    +        let mut trailing_or_empty = true;
    +        for param in arguments.args.pairs() {
    +            match param.value() {
    +                GenericArgument::Lifetime(_) => {
    +                    param.to_tokens(tokens);
    +                    trailing_or_empty = param.punct().is_some();
    +                }
    +                GenericArgument::Type(_)
    +                | GenericArgument::Const(_)
    +                | GenericArgument::AssocType(_)
    +                | GenericArgument::AssocConst(_)
    +                | GenericArgument::Constraint(_) => {}
    +            }
    +        }
    +        for param in arguments.args.pairs() {
    +            match param.value() {
    +                GenericArgument::Type(_)
    +                | GenericArgument::Const(_)
    +                | GenericArgument::AssocType(_)
    +                | GenericArgument::AssocConst(_)
    +                | GenericArgument::Constraint(_) => {
    +                    if !trailing_or_empty {
    +                        <Token![,]>::default().to_tokens(tokens);
    +                    }
    +                    param.to_tokens(tokens);
    +                    trailing_or_empty = param.punct().is_some();
    +                }
    +                GenericArgument::Lifetime(_) => {}
    +            }
    +        }
    +
    +        arguments.gt_token.to_tokens(tokens);
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for AssocType {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 self.ident.to_tokens(tokens);
    +            self.generics.to_tokens(tokens);
                 self.eq_token.to_tokens(tokens);
                 self.ty.to_tokens(tokens);
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for AssocConst {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            self.ident.to_tokens(tokens);
    +            self.generics.to_tokens(tokens);
    +            self.eq_token.to_tokens(tokens);
    +            generics::printing::print_const_argument(&self.value, tokens);
    +        }
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for Constraint {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 self.ident.to_tokens(tokens);
    +            self.generics.to_tokens(tokens);
                 self.colon_token.to_tokens(tokens);
                 self.bounds.to_tokens(tokens);
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for ParenthesizedGenericArguments {
             fn to_tokens(&self, tokens: &mut TokenStream) {
    -            self.paren_token.surround(tokens, |tokens| {
    -                self.inputs.to_tokens(tokens);
    -            });
    -            self.output.to_tokens(tokens);
    +            print_parenthesized_generic_arguments(tokens, self, PathStyle::AsWritten);
             }
         }
     
    -    pub(crate) fn print_path(tokens: &mut TokenStream, qself: &Option<QSelf>, path: &Path) {
    +    fn print_parenthesized_generic_arguments(
    +        tokens: &mut TokenStream,
    +        arguments: &ParenthesizedGenericArguments,
    +        style: PathStyle,
    +    ) {
    +        if let PathStyle::Mod = style {
    +            return;
    +        }
    +
    +        conditionally_print_turbofish(tokens, &None, style);
    +        arguments.paren_token.surround(tokens, |tokens| {
    +            arguments.inputs.to_tokens(tokens);
    +        });
    +        arguments.output.to_tokens(tokens);
    +    }
    +
    +    pub(crate) fn print_qpath(
    +        tokens: &mut TokenStream,
    +        qself: &Option<QSelf>,
    +        path: &Path,
    +        style: PathStyle,
    +    ) {
             let qself = match qself {
                 Some(qself) => qself,
                 None => {
    -                path.to_tokens(tokens);
    +                print_path(tokens, path, style);
                     return;
                 }
             };
    @@ -1689,20 +1879,48 @@
                 TokensOrDefault(&qself.as_token).to_tokens(tokens);
                 path.leading_colon.to_tokens(tokens);
                 for (i, segment) in segments.by_ref().take(pos).enumerate() {
    +                print_path_segment(tokens, segment.value(), PathStyle::AsWritten);
                     if i + 1 == pos {
    -                    segment.value().to_tokens(tokens);
                         qself.gt_token.to_tokens(tokens);
    -                    segment.punct().to_tokens(tokens);
    -                } else {
    -                    segment.to_tokens(tokens);
                     }
    +                segment.punct().to_tokens(tokens);
                 }
             } else {
                 qself.gt_token.to_tokens(tokens);
                 path.leading_colon.to_tokens(tokens);
             }
             for segment in segments {
    -            segment.to_tokens(tokens);
    +            print_path_segment(tokens, segment.value(), style);
    +            segment.punct().to_tokens(tokens);
    +        }
    +    }
    +
    +    fn conditionally_print_turbofish(
    +        tokens: &mut TokenStream,
    +        colon2_token: &Option<Token![::]>,
    +        style: PathStyle,
    +    ) {
    +        match style {
    +            PathStyle::Expr => TokensOrDefault(colon2_token).to_tokens(tokens),
    +            PathStyle::Mod => unreachable!(),
    +            PathStyle::AsWritten => colon2_token.to_tokens(tokens),
    +        }
    +    }
    +
    +    #[cfg(feature = "parsing")]
    +    #[cfg_attr(docsrs, doc(cfg(all(feature = "parsing", feature = "printing"))))]
    +    impl Spanned for QSelf {
    +        fn span(&self) -> Span {
    +            struct QSelfDelimiters<'a>(&'a QSelf);
    +
    +            impl<'a> ToTokens for QSelfDelimiters<'a> {
    +                fn to_tokens(&self, tokens: &mut TokenStream) {
    +                    self.0.lt_token.to_tokens(tokens);
    +                    self.0.gt_token.to_tokens(tokens);
    +                }
    +            }
    +
    +            QSelfDelimiters(self).span()
             }
         }
     }
    diff --git a/src/syn/precedence.rs.html b/src/syn/precedence.rs.html
    new file mode 100644
    index 0000000..031b3a8
    --- /dev/null
    +++ b/src/syn/precedence.rs.html
    @@ -0,0 +1,421 @@
    +precedence.rs - source

    syn/
    precedence.rs

    +1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    +81
    +82
    +83
    +84
    +85
    +86
    +87
    +88
    +89
    +90
    +91
    +92
    +93
    +94
    +95
    +96
    +97
    +98
    +99
    +100
    +101
    +102
    +103
    +104
    +105
    +106
    +107
    +108
    +109
    +110
    +111
    +112
    +113
    +114
    +115
    +116
    +117
    +118
    +119
    +120
    +121
    +122
    +123
    +124
    +125
    +126
    +127
    +128
    +129
    +130
    +131
    +132
    +133
    +134
    +135
    +136
    +137
    +138
    +139
    +140
    +141
    +142
    +143
    +144
    +145
    +146
    +147
    +148
    +149
    +150
    +151
    +152
    +153
    +154
    +155
    +156
    +157
    +158
    +159
    +160
    +161
    +162
    +163
    +164
    +165
    +166
    +167
    +168
    +169
    +170
    +171
    +172
    +173
    +174
    +175
    +176
    +177
    +178
    +179
    +180
    +181
    +182
    +183
    +184
    +185
    +186
    +187
    +188
    +189
    +190
    +191
    +192
    +193
    +194
    +195
    +196
    +197
    +198
    +199
    +200
    +201
    +202
    +203
    +204
    +205
    +206
    +207
    +208
    +209
    +210
    #[cfg(all(feature = "printing", feature = "full"))]
    +use crate::attr::{AttrStyle, Attribute};
    +#[cfg(feature = "printing")]
    +use crate::expr::Expr;
    +#[cfg(all(feature = "printing", feature = "full"))]
    +use crate::expr::{
    +    ExprArray, ExprAsync, ExprAwait, ExprBlock, ExprBreak, ExprCall, ExprConst, ExprContinue,
    +    ExprField, ExprForLoop, ExprGroup, ExprIf, ExprIndex, ExprInfer, ExprLit, ExprLoop, ExprMacro,
    +    ExprMatch, ExprMethodCall, ExprParen, ExprPath, ExprRepeat, ExprReturn, ExprStruct, ExprTry,
    +    ExprTryBlock, ExprTuple, ExprUnsafe, ExprWhile, ExprYield,
    +};
    +use crate::op::BinOp;
    +#[cfg(all(feature = "printing", feature = "full"))]
    +use crate::ty::ReturnType;
    +use std::cmp::Ordering;
    +
    +// Reference: https://doc.rust-lang.org/reference/expressions.html#expression-precedence
    +pub(crate) enum Precedence {
    +    // return, break, closures
    +    Jump,
    +    // = += -= *= /= %= &= |= ^= <<= >>=
    +    Assign,
    +    // .. ..=
    +    Range,
    +    // ||
    +    Or,
    +    // &&
    +    And,
    +    // let
    +    #[cfg(feature = "printing")]
    +    Let,
    +    // == != < > <= >=
    +    Compare,
    +    // |
    +    BitOr,
    +    // ^
    +    BitXor,
    +    // &
    +    BitAnd,
    +    // << >>
    +    Shift,
    +    // + -
    +    Sum,
    +    // * / %
    +    Product,
    +    // as
    +    Cast,
    +    // unary - * ! & &mut
    +    #[cfg(feature = "printing")]
    +    Prefix,
    +    // paths, loops, function calls, array indexing, field expressions, method calls
    +    #[cfg(feature = "printing")]
    +    Unambiguous,
    +}
    +
    +impl Precedence {
    +    pub(crate) const MIN: Self = Precedence::Jump;
    +
    +    pub(crate) fn of_binop(op: &BinOp) -> Self {
    +        match op {
    +            BinOp::Add(_) | BinOp::Sub(_) => Precedence::Sum,
    +            BinOp::Mul(_) | BinOp::Div(_) | BinOp::Rem(_) => Precedence::Product,
    +            BinOp::And(_) => Precedence::And,
    +            BinOp::Or(_) => Precedence::Or,
    +            BinOp::BitXor(_) => Precedence::BitXor,
    +            BinOp::BitAnd(_) => Precedence::BitAnd,
    +            BinOp::BitOr(_) => Precedence::BitOr,
    +            BinOp::Shl(_) | BinOp::Shr(_) => Precedence::Shift,
    +
    +            BinOp::Eq(_)
    +            | BinOp::Lt(_)
    +            | BinOp::Le(_)
    +            | BinOp::Ne(_)
    +            | BinOp::Ge(_)
    +            | BinOp::Gt(_) => Precedence::Compare,
    +
    +            BinOp::AddAssign(_)
    +            | BinOp::SubAssign(_)
    +            | BinOp::MulAssign(_)
    +            | BinOp::DivAssign(_)
    +            | BinOp::RemAssign(_)
    +            | BinOp::BitXorAssign(_)
    +            | BinOp::BitAndAssign(_)
    +            | BinOp::BitOrAssign(_)
    +            | BinOp::ShlAssign(_)
    +            | BinOp::ShrAssign(_) => Precedence::Assign,
    +        }
    +    }
    +
    +    #[cfg(feature = "printing")]
    +    pub(crate) fn of(e: &Expr) -> Self {
    +        #[cfg(feature = "full")]
    +        fn prefix_attrs(attrs: &[Attribute]) -> Precedence {
    +            for attr in attrs {
    +                if let AttrStyle::Outer = attr.style {
    +                    return Precedence::Prefix;
    +                }
    +            }
    +            Precedence::Unambiguous
    +        }
    +
    +        match e {
    +            #[cfg(feature = "full")]
    +            Expr::Closure(e) => match e.output {
    +                ReturnType::Default => Precedence::Jump,
    +                ReturnType::Type(..) => prefix_attrs(&e.attrs),
    +            },
    +
    +            #[cfg(feature = "full")]
    +            Expr::Break(ExprBreak { expr, .. })
    +            | Expr::Return(ExprReturn { expr, .. })
    +            | Expr::Yield(ExprYield { expr, .. }) => match expr {
    +                Some(_) => Precedence::Jump,
    +                None => Precedence::Unambiguous,
    +            },
    +
    +            Expr::Assign(_) => Precedence::Assign,
    +            Expr::Range(_) => Precedence::Range,
    +            Expr::Binary(e) => Precedence::of_binop(&e.op),
    +            Expr::Let(_) => Precedence::Let,
    +            Expr::Cast(_) => Precedence::Cast,
    +            Expr::RawAddr(_) | Expr::Reference(_) | Expr::Unary(_) => Precedence::Prefix,
    +
    +            #[cfg(feature = "full")]
    +            Expr::Array(ExprArray { attrs, .. })
    +            | Expr::Async(ExprAsync { attrs, .. })
    +            | Expr::Await(ExprAwait { attrs, .. })
    +            | Expr::Block(ExprBlock { attrs, .. })
    +            | Expr::Call(ExprCall { attrs, .. })
    +            | Expr::Const(ExprConst { attrs, .. })
    +            | Expr::Continue(ExprContinue { attrs, .. })
    +            | Expr::Field(ExprField { attrs, .. })
    +            | Expr::ForLoop(ExprForLoop { attrs, .. })
    +            | Expr::Group(ExprGroup { attrs, .. })
    +            | Expr::If(ExprIf { attrs, .. })
    +            | Expr::Index(ExprIndex { attrs, .. })
    +            | Expr::Infer(ExprInfer { attrs, .. })
    +            | Expr::Lit(ExprLit { attrs, .. })
    +            | Expr::Loop(ExprLoop { attrs, .. })
    +            | Expr::Macro(ExprMacro { attrs, .. })
    +            | Expr::Match(ExprMatch { attrs, .. })
    +            | Expr::MethodCall(ExprMethodCall { attrs, .. })
    +            | Expr::Paren(ExprParen { attrs, .. })
    +            | Expr::Path(ExprPath { attrs, .. })
    +            | Expr::Repeat(ExprRepeat { attrs, .. })
    +            | Expr::Struct(ExprStruct { attrs, .. })
    +            | Expr::Try(ExprTry { attrs, .. })
    +            | Expr::TryBlock(ExprTryBlock { attrs, .. })
    +            | Expr::Tuple(ExprTuple { attrs, .. })
    +            | Expr::Unsafe(ExprUnsafe { attrs, .. })
    +            | Expr::While(ExprWhile { attrs, .. }) => prefix_attrs(attrs),
    +
    +            #[cfg(not(feature = "full"))]
    +            Expr::Array(_)
    +            | Expr::Async(_)
    +            | Expr::Await(_)
    +            | Expr::Block(_)
    +            | Expr::Call(_)
    +            | Expr::Const(_)
    +            | Expr::Continue(_)
    +            | Expr::Field(_)
    +            | Expr::ForLoop(_)
    +            | Expr::Group(_)
    +            | Expr::If(_)
    +            | Expr::Index(_)
    +            | Expr::Infer(_)
    +            | Expr::Lit(_)
    +            | Expr::Loop(_)
    +            | Expr::Macro(_)
    +            | Expr::Match(_)
    +            | Expr::MethodCall(_)
    +            | Expr::Paren(_)
    +            | Expr::Path(_)
    +            | Expr::Repeat(_)
    +            | Expr::Struct(_)
    +            | Expr::Try(_)
    +            | Expr::TryBlock(_)
    +            | Expr::Tuple(_)
    +            | Expr::Unsafe(_)
    +            | Expr::While(_) => Precedence::Unambiguous,
    +
    +            Expr::Verbatim(_) => Precedence::Unambiguous,
    +
    +            #[cfg(not(feature = "full"))]
    +            Expr::Break(_) | Expr::Closure(_) | Expr::Return(_) | Expr::Yield(_) => unreachable!(),
    +        }
    +    }
    +}
    +
    +impl Copy for Precedence {}
    +
    +impl Clone for Precedence {
    +    fn clone(&self) -> Self {
    +        *self
    +    }
    +}
    +
    +impl PartialEq for Precedence {
    +    fn eq(&self, other: &Self) -> bool {
    +        *self as u8 == *other as u8
    +    }
    +}
    +
    +impl PartialOrd for Precedence {
    +    fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
    +        let this = *self as u8;
    +        let other = *other as u8;
    +        Some(this.cmp(&other))
    +    }
    +}
    +
    \ No newline at end of file diff --git a/src/syn/print.rs.html b/src/syn/print.rs.html index fc18f49..ecd8637 100644 --- a/src/syn/print.rs.html +++ b/src/syn/print.rs.html @@ -1,4 +1,5 @@ -print.rs - source
    1
    +print.rs - source

    syn/
    print.rs

    +1
     2
     3
     4
    @@ -13,13 +14,12 @@
     13
     14
     15
    -16
    -
    use proc_macro2::TokenStream;
    +16
    use proc_macro2::TokenStream;
     use quote::ToTokens;
     
    -pub struct TokensOrDefault<'a, T: 'a>(pub &'a Option<T>);
    +pub(crate) struct TokensOrDefault<'a, T: 'a>(pub &'a Option<T>);
     
    -impl<'a, T> ToTokens for TokensOrDefault<'a, T>
    +impl<'a, T> ToTokens for TokensOrDefault<'a, T>
     where
         T: ToTokens + Default,
     {
    diff --git a/src/syn/punctuated.rs.html b/src/syn/punctuated.rs.html
    index aa0229e..1eeb9e8 100644
    --- a/src/syn/punctuated.rs.html
    +++ b/src/syn/punctuated.rs.html
    @@ -1,4 +1,5 @@
    -punctuated.rs - source
    1
    +punctuated.rs - source

    syn/
    punctuated.rs

    +1
     2
     3
     4
    @@ -1085,7 +1086,74 @@
     1085
     1086
     1087
    -
    //! A punctuated sequence of syntax tree nodes separated by punctuation.
    +1088
    +1089
    +1090
    +1091
    +1092
    +1093
    +1094
    +1095
    +1096
    +1097
    +1098
    +1099
    +1100
    +1101
    +1102
    +1103
    +1104
    +1105
    +1106
    +1107
    +1108
    +1109
    +1110
    +1111
    +1112
    +1113
    +1114
    +1115
    +1116
    +1117
    +1118
    +1119
    +1120
    +1121
    +1122
    +1123
    +1124
    +1125
    +1126
    +1127
    +1128
    +1129
    +1130
    +1131
    +1132
    +1133
    +1134
    +1135
    +1136
    +1137
    +1138
    +1139
    +1140
    +1141
    +1142
    +1143
    +1144
    +1145
    +1146
    +1147
    +1148
    +1149
    +1150
    +1151
    +1152
    +1153
    +1154
    +1155
    //! A punctuated sequence of syntax tree nodes separated by punctuation.
     //!
     //! Lots of things in Rust are punctuated sequences.
     //!
    @@ -1107,26 +1175,26 @@
     //!                 ~~~~^ ~~~~^ ~~~~
     //! ```
     
    -#[cfg(feature = "extra-traits")]
    +use crate::drops::{NoDrop, TrivialDrop};
    +#[cfg(feature = "parsing")]
    +use crate::error::Result;
    +#[cfg(feature = "parsing")]
    +use crate::parse::{Parse, ParseStream};
    +#[cfg(feature = "parsing")]
    +use crate::token::Token;
    +#[cfg(feature = "extra-traits")]
     use std::fmt::{self, Debug};
    -#[cfg(feature = "extra-traits")]
    +#[cfg(feature = "extra-traits")]
     use std::hash::{Hash, Hasher};
    -#[cfg(any(feature = "full", feature = "derive"))]
    +#[cfg(any(feature = "full", feature = "derive"))]
     use std::iter;
    -use std::iter::FromIterator;
     use std::ops::{Index, IndexMut};
     use std::option;
     use std::slice;
     use std::vec;
     
    -use crate::drops::{NoDrop, TrivialDrop};
    -#[cfg(feature = "parsing")]
    -use crate::parse::{Parse, ParseStream, Result};
    -#[cfg(feature = "parsing")]
    -use crate::token::Token;
    -
    -/// A punctuated sequence of syntax tree nodes of type `T` separated by
    -/// punctuation of type `P`.
    +/// **A punctuated sequence of syntax tree nodes of type `T` separated by
    +/// punctuation of type `P`.**
     ///
     /// Refer to the [module documentation] for details about punctuated sequences.
     ///
    @@ -1138,7 +1206,6 @@
     
     impl<T, P> Punctuated<T, P> {
         /// Creates an empty punctuated sequence.
    -    #[cfg(not(syn_no_const_vec_new))]
         pub const fn new() -> Self {
             Punctuated {
                 inner: Vec::new(),
    @@ -1146,15 +1213,6 @@
             }
         }
     
    -    /// Creates an empty punctuated sequence.
    -    #[cfg(syn_no_const_vec_new)]
    -    pub fn new() -> Self {
    -        Punctuated {
    -            inner: Vec::new(),
    -            last: None,
    -        }
    -    }
    -
         /// Determines whether this punctuated sequence is empty, meaning it
         /// contains no syntax tree nodes or punctuation.
         pub fn is_empty(&self) -> bool {
    @@ -1189,6 +1247,29 @@
             self.iter_mut().next_back()
         }
     
    +    /// Borrows the element at the given index.
    +    pub fn get(&self, index: usize) -> Option<&T> {
    +        if let Some((value, _punct)) = self.inner.get(index) {
    +            Some(value)
    +        } else if index == self.inner.len() {
    +            self.last.as_deref()
    +        } else {
    +            None
    +        }
    +    }
    +
    +    /// Mutably borrows the element at the given index.
    +    pub fn get_mut(&mut self, index: usize) -> Option<&mut T> {
    +        let inner_len = self.inner.len();
    +        if let Some((value, _punct)) = self.inner.get_mut(index) {
    +            Some(value)
    +        } else if index == inner_len {
    +            self.last.as_deref_mut()
    +        } else {
    +            None
    +        }
    +    }
    +
         /// Returns an iterator over borrowed syntax tree nodes of type `&T`.
         pub fn iter(&self) -> Iter<T> {
             Iter {
    @@ -1238,7 +1319,7 @@
         }
     
         /// Appends a syntax tree node onto the end of this punctuated sequence. The
    -    /// sequence must previously have a trailing punctuation.
    +    /// sequence must already have a trailing punctuation, or be empty.
         ///
         /// Use [`push`] instead if the punctuated sequence may or may not already
         /// have trailing punctuation.
    @@ -1247,12 +1328,12 @@
         ///
         /// # Panics
         ///
    -    /// Panics if the sequence does not already have a trailing punctuation when
    -    /// this method is called.
    +    /// Panics if the sequence is nonempty and does not already have a trailing
    +    /// punctuation.
         pub fn push_value(&mut self, value: T) {
             assert!(
                 self.empty_or_trailing(),
    -            "Punctuated::push_value: cannot push value if Punctuated is missing trailing punctuation",
    +            "Punctuated::push_value: cannot push value if Punctuated is missing trailing punctuation",
             );
     
             self.last = Some(Box::new(value));
    @@ -1268,7 +1349,7 @@
         pub fn push_punct(&mut self, punctuation: P) {
             assert!(
                 self.last.is_some(),
    -            "Punctuated::push_punct: cannot push punctuation if Punctuated is empty or already has trailing punctuation",
    +            "Punctuated::push_punct: cannot push punctuation if Punctuated is empty or already has trailing punctuation",
             );
     
             let last = self.last.take().unwrap();
    @@ -1285,6 +1366,18 @@
             }
         }
     
    +    /// Removes the trailing punctuation from this punctuated sequence, or
    +    /// `None` if there isn't any.
    +    pub fn pop_punct(&mut self) -> Option<P> {
    +        if self.last.is_some() {
    +            None
    +        } else {
    +            let (t, p) = self.inner.pop()?;
    +            self.last = Some(Box::new(t));
    +            Some(p)
    +        }
    +    }
    +
         /// Determines whether this punctuated sequence ends with a trailing
         /// punctuation.
         pub fn trailing_punct(&self) -> bool {
    @@ -1326,7 +1419,7 @@
         {
             assert!(
                 index <= self.len(),
    -            "Punctuated::insert: index out of range",
    +            "Punctuated::insert: index out of range",
             );
     
             if index == self.len() {
    @@ -1347,11 +1440,8 @@
         ///
         /// Parsing continues until the end of this parse stream. The entire content
         /// of this parse stream must consist of `T` and `P`.
    -    ///
    -    /// *This function is available only if Syn is built with the `"parsing"`
    -    /// feature.*
    -    #[cfg(feature = "parsing")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "parsing")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         pub fn parse_terminated(input: ParseStream) -> Result<Self>
         where
             T: Parse,
    @@ -1368,11 +1458,8 @@
         /// to be parsed.
         ///
         /// [`parse_terminated`]: Punctuated::parse_terminated
    -    ///
    -    /// *This function is available only if Syn is built with the `"parsing"`
    -    /// feature.*
    -    #[cfg(feature = "parsing")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "parsing")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         pub fn parse_terminated_with(
             input: ParseStream,
             parser: fn(ParseStream) -> Result<T>,
    @@ -1405,11 +1492,8 @@
         /// the stream. This method returns upon parsing a `T` and observing that it
         /// is not followed by a `P`, even if there are remaining tokens in the
         /// stream.
    -    ///
    -    /// *This function is available only if Syn is built with the `"parsing"`
    -    /// feature.*
    -    #[cfg(feature = "parsing")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "parsing")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         pub fn parse_separated_nonempty(input: ParseStream) -> Result<Self>
         where
             T: Parse,
    @@ -1426,11 +1510,8 @@
         /// the entire content of this stream.
         ///
         /// [`parse_separated_nonempty`]: Punctuated::parse_separated_nonempty
    -    ///
    -    /// *This function is available only if Syn is built with the `"parsing"`
    -    /// feature.*
    -    #[cfg(feature = "parsing")]
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg(feature = "parsing")]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         pub fn parse_separated_nonempty_with(
             input: ParseStream,
             parser: fn(ParseStream) -> Result<T>,
    @@ -1454,8 +1535,8 @@
         }
     }
     
    -#[cfg(feature = "clone-impls")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    +#[cfg(feature = "clone-impls")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
     impl<T, P> Clone for Punctuated<T, P>
     where
         T: Clone,
    @@ -1467,10 +1548,15 @@
                 last: self.last.clone(),
             }
         }
    +
    +    fn clone_from(&mut self, other: &Self) {
    +        self.inner.clone_from(&other.inner);
    +        self.last.clone_from(&other.last);
    +    }
     }
     
    -#[cfg(feature = "extra-traits")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    +#[cfg(feature = "extra-traits")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
     impl<T, P> Eq for Punctuated<T, P>
     where
         T: Eq,
    @@ -1478,8 +1564,8 @@
     {
     }
     
    -#[cfg(feature = "extra-traits")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    +#[cfg(feature = "extra-traits")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
     impl<T, P> PartialEq for Punctuated<T, P>
     where
         T: PartialEq,
    @@ -1491,8 +1577,8 @@
         }
     }
     
    -#[cfg(feature = "extra-traits")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    +#[cfg(feature = "extra-traits")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
     impl<T, P> Hash for Punctuated<T, P>
     where
         T: Hash,
    @@ -1505,8 +1591,8 @@
         }
     }
     
    -#[cfg(feature = "extra-traits")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    +#[cfg(feature = "extra-traits")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
     impl<T: Debug, P: Debug> Debug for Punctuated<T, P> {
         fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
             let mut list = f.debug_list();
    @@ -1546,29 +1632,37 @@
     impl<T, P> FromIterator<Pair<T, P>> for Punctuated<T, P> {
         fn from_iter<I: IntoIterator<Item = Pair<T, P>>>(i: I) -> Self {
             let mut ret = Punctuated::new();
    -        ret.extend(i);
    +        do_extend(&mut ret, i.into_iter());
             ret
         }
     }
     
    -impl<T, P> Extend<Pair<T, P>> for Punctuated<T, P> {
    +impl<T, P> Extend<Pair<T, P>> for Punctuated<T, P>
    +where
    +    P: Default,
    +{
         fn extend<I: IntoIterator<Item = Pair<T, P>>>(&mut self, i: I) {
    -        assert!(
    -            self.empty_or_trailing(),
    -            "Punctuated::extend: Punctuated is not empty or does not have a trailing punctuation",
    -        );
    +        if !self.empty_or_trailing() {
    +            self.push_punct(P::default());
    +        }
    +        do_extend(self, i.into_iter());
    +    }
    +}
     
    -        let mut nomore = false;
    -        for pair in i {
    -            if nomore {
    -                panic!("Punctuated extended with items after a Pair::End");
    -            }
    -            match pair {
    -                Pair::Punctuated(a, b) => self.inner.push((a, b)),
    -                Pair::End(a) => {
    -                    self.last = Some(Box::new(a));
    -                    nomore = true;
    -                }
    +fn do_extend<T, P, I>(punctuated: &mut Punctuated<T, P>, i: I)
    +where
    +    I: Iterator<Item = Pair<T, P>>,
    +{
    +    let mut nomore = false;
    +    for pair in i {
    +        if nomore {
    +            panic!("punctuated extended with items after a Pair::End");
    +        }
    +        match pair {
    +            Pair::Punctuated(a, b) => punctuated.inner.push((a, b)),
    +            Pair::End(a) => {
    +                punctuated.last = Some(Box::new(a));
    +                nomore = true;
                 }
             }
         }
    @@ -1589,18 +1683,18 @@
         }
     }
     
    -impl<'a, T, P> IntoIterator for &'a Punctuated<T, P> {
    -    type Item = &'a T;
    -    type IntoIter = Iter<'a, T>;
    +impl<'a, T, P> IntoIterator for &'a Punctuated<T, P> {
    +    type Item = &'a T;
    +    type IntoIter = Iter<'a, T>;
     
         fn into_iter(self) -> Self::IntoIter {
             Punctuated::iter(self)
         }
     }
     
    -impl<'a, T, P> IntoIterator for &'a mut Punctuated<T, P> {
    -    type Item = &'a mut T;
    -    type IntoIter = IterMut<'a, T>;
    +impl<'a, T, P> IntoIterator for &'a mut Punctuated<T, P> {
    +    type Item = &'a mut T;
    +    type IntoIter = IterMut<'a, T>;
     
         fn into_iter(self) -> Self::IntoIter {
             Punctuated::iter_mut(self)
    @@ -1618,13 +1712,13 @@
     /// Refer to the [module documentation] for details about punctuated sequences.
     ///
     /// [module documentation]: self
    -pub struct Pairs<'a, T: 'a, P: 'a> {
    -    inner: slice::Iter<'a, (T, P)>,
    -    last: option::IntoIter<&'a T>,
    +pub struct Pairs<'a, T: 'a, P: 'a> {
    +    inner: slice::Iter<'a, (T, P)>,
    +    last: option::IntoIter<&'a T>,
     }
     
    -impl<'a, T, P> Iterator for Pairs<'a, T, P> {
    -    type Item = Pair<&'a T, &'a P>;
    +impl<'a, T, P> Iterator for Pairs<'a, T, P> {
    +    type Item = Pair<&'a T, &'a P>;
     
         fn next(&mut self) -> Option<Self::Item> {
             self.inner
    @@ -1638,7 +1732,7 @@
         }
     }
     
    -impl<'a, T, P> DoubleEndedIterator for Pairs<'a, T, P> {
    +impl<'a, T, P> DoubleEndedIterator for Pairs<'a, T, P> {
         fn next_back(&mut self) -> Option<Self::Item> {
             self.last
                 .next()
    @@ -1647,14 +1741,14 @@
         }
     }
     
    -impl<'a, T, P> ExactSizeIterator for Pairs<'a, T, P> {
    +impl<'a, T, P> ExactSizeIterator for Pairs<'a, T, P> {
         fn len(&self) -> usize {
             self.inner.len() + self.last.len()
         }
     }
     
     // No Clone bound on T or P.
    -impl<'a, T, P> Clone for Pairs<'a, T, P> {
    +impl<'a, T, P> Clone for Pairs<'a, T, P> {
         fn clone(&self) -> Self {
             Pairs {
                 inner: self.inner.clone(),
    @@ -1668,13 +1762,13 @@
     /// Refer to the [module documentation] for details about punctuated sequences.
     ///
     /// [module documentation]: self
    -pub struct PairsMut<'a, T: 'a, P: 'a> {
    -    inner: slice::IterMut<'a, (T, P)>,
    -    last: option::IntoIter<&'a mut T>,
    +pub struct PairsMut<'a, T: 'a, P: 'a> {
    +    inner: slice::IterMut<'a, (T, P)>,
    +    last: option::IntoIter<&'a mut T>,
     }
     
    -impl<'a, T, P> Iterator for PairsMut<'a, T, P> {
    -    type Item = Pair<&'a mut T, &'a mut P>;
    +impl<'a, T, P> Iterator for PairsMut<'a, T, P> {
    +    type Item = Pair<&'a mut T, &'a mut P>;
     
         fn next(&mut self) -> Option<Self::Item> {
             self.inner
    @@ -1688,7 +1782,7 @@
         }
     }
     
    -impl<'a, T, P> DoubleEndedIterator for PairsMut<'a, T, P> {
    +impl<'a, T, P> DoubleEndedIterator for PairsMut<'a, T, P> {
         fn next_back(&mut self) -> Option<Self::Item> {
             self.last
                 .next()
    @@ -1697,7 +1791,7 @@
         }
     }
     
    -impl<'a, T, P> ExactSizeIterator for PairsMut<'a, T, P> {
    +impl<'a, T, P> ExactSizeIterator for PairsMut<'a, T, P> {
         fn len(&self) -> usize {
             self.inner.len() + self.last.len()
         }
    @@ -1805,40 +1899,35 @@
     /// Refer to the [module documentation] for details about punctuated sequences.
     ///
     /// [module documentation]: self
    -pub struct Iter<'a, T: 'a> {
    -    // The `Item = &'a T` needs to be specified to support rustc 1.31 and older.
    -    // On modern compilers we would be able to write just IterTrait<'a, T> where
    -    // Item can be inferred unambiguously from the supertrait.
    -    inner: Box<NoDrop<dyn IterTrait<'a, T, Item = &'a T> + 'a>>,
    +pub struct Iter<'a, T: 'a> {
    +    inner: Box<NoDrop<dyn IterTrait<'a, T> + 'a>>,
     }
     
    -trait IterTrait<'a, T: 'a>:
    -    DoubleEndedIterator<Item = &'a T> + ExactSizeIterator<Item = &'a T>
    -{
    -    fn clone_box(&self) -> Box<NoDrop<dyn IterTrait<'a, T, Item = &'a T> + 'a>>;
    +trait IterTrait<'a, T: 'a>: Iterator<Item = &'a T> + DoubleEndedIterator + ExactSizeIterator {
    +    fn clone_box(&self) -> Box<NoDrop<dyn IterTrait<'a, T> + 'a>>;
     }
     
    -struct PrivateIter<'a, T: 'a, P: 'a> {
    -    inner: slice::Iter<'a, (T, P)>,
    -    last: option::IntoIter<&'a T>,
    +struct PrivateIter<'a, T: 'a, P: 'a> {
    +    inner: slice::Iter<'a, (T, P)>,
    +    last: option::IntoIter<&'a T>,
     }
     
    -impl<'a, T, P> TrivialDrop for PrivateIter<'a, T, P>
    +impl<'a, T, P> TrivialDrop for PrivateIter<'a, T, P>
     where
    -    slice::Iter<'a, (T, P)>: TrivialDrop,
    -    option::IntoIter<&'a T>: TrivialDrop,
    +    slice::Iter<'a, (T, P)>: TrivialDrop,
    +    option::IntoIter<&'a T>: TrivialDrop,
     {
     }
     
    -#[cfg(any(feature = "full", feature = "derive"))]
    -pub(crate) fn empty_punctuated_iter<'a, T>() -> Iter<'a, T> {
    +#[cfg(any(feature = "full", feature = "derive"))]
    +pub(crate) fn empty_punctuated_iter<'a, T>() -> Iter<'a, T> {
         Iter {
             inner: Box::new(NoDrop::new(iter::empty())),
         }
     }
     
     // No Clone bound on T.
    -impl<'a, T> Clone for Iter<'a, T> {
    +impl<'a, T> Clone for Iter<'a, T> {
         fn clone(&self) -> Self {
             Iter {
                 inner: self.inner.clone_box(),
    @@ -1846,8 +1935,8 @@
         }
     }
     
    -impl<'a, T> Iterator for Iter<'a, T> {
    -    type Item = &'a T;
    +impl<'a, T> Iterator for Iter<'a, T> {
    +    type Item = &'a T;
     
         fn next(&mut self) -> Option<Self::Item> {
             self.inner.next()
    @@ -1858,20 +1947,20 @@
         }
     }
     
    -impl<'a, T> DoubleEndedIterator for Iter<'a, T> {
    +impl<'a, T> DoubleEndedIterator for Iter<'a, T> {
         fn next_back(&mut self) -> Option<Self::Item> {
             self.inner.next_back()
         }
     }
     
    -impl<'a, T> ExactSizeIterator for Iter<'a, T> {
    +impl<'a, T> ExactSizeIterator for Iter<'a, T> {
         fn len(&self) -> usize {
             self.inner.len()
         }
     }
     
    -impl<'a, T, P> Iterator for PrivateIter<'a, T, P> {
    -    type Item = &'a T;
    +impl<'a, T, P> Iterator for PrivateIter<'a, T, P> {
    +    type Item = &'a T;
     
         fn next(&mut self) -> Option<Self::Item> {
             self.inner
    @@ -1881,7 +1970,7 @@
         }
     }
     
    -impl<'a, T, P> DoubleEndedIterator for PrivateIter<'a, T, P> {
    +impl<'a, T, P> DoubleEndedIterator for PrivateIter<'a, T, P> {
         fn next_back(&mut self) -> Option<Self::Item> {
             self.last
                 .next()
    @@ -1889,14 +1978,14 @@
         }
     }
     
    -impl<'a, T, P> ExactSizeIterator for PrivateIter<'a, T, P> {
    +impl<'a, T, P> ExactSizeIterator for PrivateIter<'a, T, P> {
         fn len(&self) -> usize {
             self.inner.len() + self.last.len()
         }
     }
     
     // No Clone bound on T or P.
    -impl<'a, T, P> Clone for PrivateIter<'a, T, P> {
    +impl<'a, T, P> Clone for PrivateIter<'a, T, P> {
         fn clone(&self) -> Self {
             PrivateIter {
                 inner: self.inner.clone(),
    @@ -1905,16 +1994,16 @@
         }
     }
     
    -impl<'a, T, I> IterTrait<'a, T> for I
    +impl<'a, T, I> IterTrait<'a, T> for I
     where
    -    T: 'a,
    -    I: DoubleEndedIterator<Item = &'a T>
    -        + ExactSizeIterator<Item = &'a T>
    +    T: 'a,
    +    I: DoubleEndedIterator<Item = &'a T>
    +        + ExactSizeIterator<Item = &'a T>
             + Clone
             + TrivialDrop
    -        + 'a,
    +        + 'a,
     {
    -    fn clone_box(&self) -> Box<NoDrop<dyn IterTrait<'a, T, Item = &'a T> + 'a>> {
    +    fn clone_box(&self) -> Box<NoDrop<dyn IterTrait<'a, T> + 'a>> {
             Box::new(NoDrop::new(self.clone()))
         }
     }
    @@ -1924,36 +2013,36 @@
     /// Refer to the [module documentation] for details about punctuated sequences.
     ///
     /// [module documentation]: self
    -pub struct IterMut<'a, T: 'a> {
    -    inner: Box<NoDrop<dyn IterMutTrait<'a, T, Item = &'a mut T> + 'a>>,
    +pub struct IterMut<'a, T: 'a> {
    +    inner: Box<NoDrop<dyn IterMutTrait<'a, T, Item = &'a mut T> + 'a>>,
     }
     
    -trait IterMutTrait<'a, T: 'a>:
    -    DoubleEndedIterator<Item = &'a mut T> + ExactSizeIterator<Item = &'a mut T>
    +trait IterMutTrait<'a, T: 'a>:
    +    DoubleEndedIterator<Item = &'a mut T> + ExactSizeIterator<Item = &'a mut T>
     {
     }
     
    -struct PrivateIterMut<'a, T: 'a, P: 'a> {
    -    inner: slice::IterMut<'a, (T, P)>,
    -    last: option::IntoIter<&'a mut T>,
    +struct PrivateIterMut<'a, T: 'a, P: 'a> {
    +    inner: slice::IterMut<'a, (T, P)>,
    +    last: option::IntoIter<&'a mut T>,
     }
     
    -impl<'a, T, P> TrivialDrop for PrivateIterMut<'a, T, P>
    +impl<'a, T, P> TrivialDrop for PrivateIterMut<'a, T, P>
     where
    -    slice::IterMut<'a, (T, P)>: TrivialDrop,
    -    option::IntoIter<&'a mut T>: TrivialDrop,
    +    slice::IterMut<'a, (T, P)>: TrivialDrop,
    +    option::IntoIter<&'a mut T>: TrivialDrop,
     {
     }
     
    -#[cfg(any(feature = "full", feature = "derive"))]
    -pub(crate) fn empty_punctuated_iter_mut<'a, T>() -> IterMut<'a, T> {
    +#[cfg(any(feature = "full", feature = "derive"))]
    +pub(crate) fn empty_punctuated_iter_mut<'a, T>() -> IterMut<'a, T> {
         IterMut {
             inner: Box::new(NoDrop::new(iter::empty())),
         }
     }
     
    -impl<'a, T> Iterator for IterMut<'a, T> {
    -    type Item = &'a mut T;
    +impl<'a, T> Iterator for IterMut<'a, T> {
    +    type Item = &'a mut T;
     
         fn next(&mut self) -> Option<Self::Item> {
             self.inner.next()
    @@ -1964,20 +2053,20 @@
         }
     }
     
    -impl<'a, T> DoubleEndedIterator for IterMut<'a, T> {
    +impl<'a, T> DoubleEndedIterator for IterMut<'a, T> {
         fn next_back(&mut self) -> Option<Self::Item> {
             self.inner.next_back()
         }
     }
     
    -impl<'a, T> ExactSizeIterator for IterMut<'a, T> {
    +impl<'a, T> ExactSizeIterator for IterMut<'a, T> {
         fn len(&self) -> usize {
             self.inner.len()
         }
     }
     
    -impl<'a, T, P> Iterator for PrivateIterMut<'a, T, P> {
    -    type Item = &'a mut T;
    +impl<'a, T, P> Iterator for PrivateIterMut<'a, T, P> {
    +    type Item = &'a mut T;
     
         fn next(&mut self) -> Option<Self::Item> {
             self.inner
    @@ -1987,7 +2076,7 @@
         }
     }
     
    -impl<'a, T, P> DoubleEndedIterator for PrivateIterMut<'a, T, P> {
    +impl<'a, T, P> DoubleEndedIterator for PrivateIterMut<'a, T, P> {
         fn next_back(&mut self) -> Option<Self::Item> {
             self.last
                 .next()
    @@ -1995,16 +2084,16 @@
         }
     }
     
    -impl<'a, T, P> ExactSizeIterator for PrivateIterMut<'a, T, P> {
    +impl<'a, T, P> ExactSizeIterator for PrivateIterMut<'a, T, P> {
         fn len(&self) -> usize {
             self.inner.len() + self.last.len()
         }
     }
     
    -impl<'a, T, I> IterMutTrait<'a, T> for I
    +impl<'a, T, I> IterMutTrait<'a, T> for I
     where
    -    T: 'a,
    -    I: DoubleEndedIterator<Item = &'a mut T> + ExactSizeIterator<Item = &'a mut T> + 'a,
    +    T: 'a,
    +    I: DoubleEndedIterator<Item = &'a mut T> + ExactSizeIterator<Item = &'a mut T> + 'a,
     {
     }
     
    @@ -2064,7 +2153,7 @@
         /// # let mut punctuated = Punctuated::<TypeParamBound, Token![+]>::new();
         /// # let span = Span::call_site();
         /// #
    -    /// punctuated.insert(0, parse_quote!('lifetime));
    +    /// punctuated.insert(0, parse_quote!('lifetime));
         /// if let Some(punct) = punctuated.pairs_mut().next().unwrap().punct_mut() {
         ///     punct.span = span;
         /// }
    @@ -2095,8 +2184,23 @@
         }
     }
     
    -#[cfg(feature = "clone-impls")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    +#[cfg(feature = "clone-impls")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl<T, P> Pair<&T, &P> {
    +    pub fn cloned(self) -> Pair<T, P>
    +    where
    +        T: Clone,
    +        P: Clone,
    +    {
    +        match self {
    +            Pair::Punctuated(t, p) => Pair::Punctuated(t.clone(), p.clone()),
    +            Pair::End(t) => Pair::End(t.clone()),
    +        }
    +    }
    +}
    +
    +#[cfg(feature = "clone-impls")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
     impl<T, P> Clone for Pair<T, P>
     where
         T: Clone,
    @@ -2110,6 +2214,15 @@
         }
     }
     
    +#[cfg(feature = "clone-impls")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl<T, P> Copy for Pair<T, P>
    +where
    +    T: Copy,
    +    P: Copy,
    +{
    +}
    +
     impl<T, P> Index<usize> for Punctuated<T, P> {
         type Output = T;
     
    @@ -2138,13 +2251,36 @@
         }
     }
     
    -#[cfg(feature = "printing")]
    +#[cfg(all(feature = "fold", any(feature = "full", feature = "derive")))]
    +pub(crate) fn fold<T, P, V, F>(
    +    punctuated: Punctuated<T, P>,
    +    fold: &mut V,
    +    mut f: F,
    +) -> Punctuated<T, P>
    +where
    +    V: ?Sized,
    +    F: FnMut(&mut V, T) -> T,
    +{
    +    Punctuated {
    +        inner: punctuated
    +            .inner
    +            .into_iter()
    +            .map(|(t, p)| (f(fold, t), p))
    +            .collect(),
    +        last: match punctuated.last {
    +            Some(t) => Some(Box::new(f(fold, *t))),
    +            None => None,
    +        },
    +    }
    +}
    +
    +#[cfg(feature = "printing")]
     mod printing {
    -    use super::*;
    +    use crate::punctuated::{Pair, Punctuated};
         use proc_macro2::TokenStream;
         use quote::{ToTokens, TokenStreamExt};
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl<T, P> ToTokens for Punctuated<T, P>
         where
             T: ToTokens,
    @@ -2155,7 +2291,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl<T, P> ToTokens for Pair<T, P>
         where
             T: ToTokens,
    diff --git a/src/syn/restriction.rs.html b/src/syn/restriction.rs.html
    new file mode 100644
    index 0000000..4efa5f6
    --- /dev/null
    +++ b/src/syn/restriction.rs.html
    @@ -0,0 +1,357 @@
    +restriction.rs - source

    syn/
    restriction.rs

    +1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    +81
    +82
    +83
    +84
    +85
    +86
    +87
    +88
    +89
    +90
    +91
    +92
    +93
    +94
    +95
    +96
    +97
    +98
    +99
    +100
    +101
    +102
    +103
    +104
    +105
    +106
    +107
    +108
    +109
    +110
    +111
    +112
    +113
    +114
    +115
    +116
    +117
    +118
    +119
    +120
    +121
    +122
    +123
    +124
    +125
    +126
    +127
    +128
    +129
    +130
    +131
    +132
    +133
    +134
    +135
    +136
    +137
    +138
    +139
    +140
    +141
    +142
    +143
    +144
    +145
    +146
    +147
    +148
    +149
    +150
    +151
    +152
    +153
    +154
    +155
    +156
    +157
    +158
    +159
    +160
    +161
    +162
    +163
    +164
    +165
    +166
    +167
    +168
    +169
    +170
    +171
    +172
    +173
    +174
    +175
    +176
    +177
    +178
    use crate::path::Path;
    +use crate::token;
    +
    +ast_enum! {
    +    /// The visibility level of an item: inherited or `pub` or
    +    /// `pub(restricted)`.
    +    ///
    +    /// # Syntax tree enum
    +    ///
    +    /// This type is a [syntax tree enum].
    +    ///
    +    /// [syntax tree enum]: crate::expr::Expr#syntax-tree-enums
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    pub enum Visibility {
    +        /// A public visibility level: `pub`.
    +        Public(Token![pub]),
    +
    +        /// A visibility level restricted to some path: `pub(self)` or
    +        /// `pub(super)` or `pub(crate)` or `pub(in some::module)`.
    +        Restricted(VisRestricted),
    +
    +        /// An inherited visibility, which usually means private.
    +        Inherited,
    +    }
    +}
    +
    +ast_struct! {
    +    /// A visibility level restricted to some path: `pub(self)` or
    +    /// `pub(super)` or `pub(crate)` or `pub(in some::module)`.
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    pub struct VisRestricted {
    +        pub pub_token: Token![pub],
    +        pub paren_token: token::Paren,
    +        pub in_token: Option<Token![in]>,
    +        pub path: Box<Path>,
    +    }
    +}
    +
    +ast_enum! {
    +    /// Unused, but reserved for RFC 3323 restrictions.
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[non_exhaustive]
    +    pub enum FieldMutability {
    +        None,
    +
    +        // TODO: https://rust-lang.github.io/rfcs/3323-restrictions.html
    +        //
    +        // FieldMutability::Restricted(MutRestricted)
    +        //
    +        // pub struct MutRestricted {
    +        //     pub mut_token: Token![mut],
    +        //     pub paren_token: token::Paren,
    +        //     pub in_token: Option<Token![in]>,
    +        //     pub path: Box<Path>,
    +        // }
    +    }
    +}
    +
    +#[cfg(feature = "parsing")]
    +pub(crate) mod parsing {
    +    use crate::error::Result;
    +    use crate::ext::IdentExt as _;
    +    use crate::ident::Ident;
    +    use crate::parse::discouraged::Speculative as _;
    +    use crate::parse::{Parse, ParseStream};
    +    use crate::path::Path;
    +    use crate::restriction::{VisRestricted, Visibility};
    +    use crate::token;
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
    +    impl Parse for Visibility {
    +        fn parse(input: ParseStream) -> Result<Self> {
    +            // Recognize an empty None-delimited group, as produced by a $:vis
    +            // matcher that matched no tokens.
    +            if input.peek(token::Group) {
    +                let ahead = input.fork();
    +                let group = crate::group::parse_group(&ahead)?;
    +                if group.content.is_empty() {
    +                    input.advance_to(&ahead);
    +                    return Ok(Visibility::Inherited);
    +                }
    +            }
    +
    +            if input.peek(Token![pub]) {
    +                Self::parse_pub(input)
    +            } else {
    +                Ok(Visibility::Inherited)
    +            }
    +        }
    +    }
    +
    +    impl Visibility {
    +        fn parse_pub(input: ParseStream) -> Result<Self> {
    +            let pub_token = input.parse::<Token![pub]>()?;
    +
    +            if input.peek(token::Paren) {
    +                let ahead = input.fork();
    +
    +                let content;
    +                let paren_token = parenthesized!(content in ahead);
    +                if content.peek(Token![crate])
    +                    || content.peek(Token![self])
    +                    || content.peek(Token![super])
    +                {
    +                    let path = content.call(Ident::parse_any)?;
    +
    +                    // Ensure there are no additional tokens within `content`.
    +                    // Without explicitly checking, we may misinterpret a tuple
    +                    // field as a restricted visibility, causing a parse error.
    +                    // e.g. `pub (crate::A, crate::B)` (Issue #720).
    +                    if content.is_empty() {
    +                        input.advance_to(&ahead);
    +                        return Ok(Visibility::Restricted(VisRestricted {
    +                            pub_token,
    +                            paren_token,
    +                            in_token: None,
    +                            path: Box::new(Path::from(path)),
    +                        }));
    +                    }
    +                } else if content.peek(Token![in]) {
    +                    let in_token: Token![in] = content.parse()?;
    +                    let path = content.call(Path::parse_mod_style)?;
    +
    +                    input.advance_to(&ahead);
    +                    return Ok(Visibility::Restricted(VisRestricted {
    +                        pub_token,
    +                        paren_token,
    +                        in_token: Some(in_token),
    +                        path: Box::new(path),
    +                    }));
    +                }
    +            }
    +
    +            Ok(Visibility::Public(pub_token))
    +        }
    +
    +        #[cfg(feature = "full")]
    +        pub(crate) fn is_some(&self) -> bool {
    +            match self {
    +                Visibility::Inherited => false,
    +                _ => true,
    +            }
    +        }
    +    }
    +}
    +
    +#[cfg(feature = "printing")]
    +mod printing {
    +    use crate::path;
    +    use crate::path::printing::PathStyle;
    +    use crate::restriction::{VisRestricted, Visibility};
    +    use proc_macro2::TokenStream;
    +    use quote::ToTokens;
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for Visibility {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            match self {
    +                Visibility::Public(pub_token) => pub_token.to_tokens(tokens),
    +                Visibility::Restricted(vis_restricted) => vis_restricted.to_tokens(tokens),
    +                Visibility::Inherited => {}
    +            }
    +        }
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for VisRestricted {
    +        fn to_tokens(&self, tokens: &mut TokenStream) {
    +            self.pub_token.to_tokens(tokens);
    +            self.paren_token.surround(tokens, |tokens| {
    +                // TODO: If we have a path which is not "self" or "super" or
    +                // "crate", automatically add the "in" token.
    +                self.in_token.to_tokens(tokens);
    +                path::printing::print_path(tokens, &self.path, PathStyle::Mod);
    +            });
    +        }
    +    }
    +}
    +
    \ No newline at end of file diff --git a/src/syn/scan_expr.rs.html b/src/syn/scan_expr.rs.html new file mode 100644 index 0000000..b28b075 --- /dev/null +++ b/src/syn/scan_expr.rs.html @@ -0,0 +1,529 @@ +scan_expr.rs - source

    syn/
    scan_expr.rs

    +1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    +81
    +82
    +83
    +84
    +85
    +86
    +87
    +88
    +89
    +90
    +91
    +92
    +93
    +94
    +95
    +96
    +97
    +98
    +99
    +100
    +101
    +102
    +103
    +104
    +105
    +106
    +107
    +108
    +109
    +110
    +111
    +112
    +113
    +114
    +115
    +116
    +117
    +118
    +119
    +120
    +121
    +122
    +123
    +124
    +125
    +126
    +127
    +128
    +129
    +130
    +131
    +132
    +133
    +134
    +135
    +136
    +137
    +138
    +139
    +140
    +141
    +142
    +143
    +144
    +145
    +146
    +147
    +148
    +149
    +150
    +151
    +152
    +153
    +154
    +155
    +156
    +157
    +158
    +159
    +160
    +161
    +162
    +163
    +164
    +165
    +166
    +167
    +168
    +169
    +170
    +171
    +172
    +173
    +174
    +175
    +176
    +177
    +178
    +179
    +180
    +181
    +182
    +183
    +184
    +185
    +186
    +187
    +188
    +189
    +190
    +191
    +192
    +193
    +194
    +195
    +196
    +197
    +198
    +199
    +200
    +201
    +202
    +203
    +204
    +205
    +206
    +207
    +208
    +209
    +210
    +211
    +212
    +213
    +214
    +215
    +216
    +217
    +218
    +219
    +220
    +221
    +222
    +223
    +224
    +225
    +226
    +227
    +228
    +229
    +230
    +231
    +232
    +233
    +234
    +235
    +236
    +237
    +238
    +239
    +240
    +241
    +242
    +243
    +244
    +245
    +246
    +247
    +248
    +249
    +250
    +251
    +252
    +253
    +254
    +255
    +256
    +257
    +258
    +259
    +260
    +261
    +262
    +263
    +264
    use self::{Action::*, Input::*};
    +use proc_macro2::{Delimiter, Ident, Spacing, TokenTree};
    +use syn::parse::{ParseStream, Result};
    +use syn::{AngleBracketedGenericArguments, BinOp, Expr, ExprPath, Lifetime, Lit, Token, Type};
    +
    +enum Input {
    +    Keyword(&'static str),
    +    Punct(&'static str),
    +    ConsumeAny,
    +    ConsumeBinOp,
    +    ConsumeBrace,
    +    ConsumeDelimiter,
    +    ConsumeIdent,
    +    ConsumeLifetime,
    +    ConsumeLiteral,
    +    ConsumeNestedBrace,
    +    ExpectPath,
    +    ExpectTurbofish,
    +    ExpectType,
    +    CanBeginExpr,
    +    Otherwise,
    +    Empty,
    +}
    +
    +enum Action {
    +    SetState(&'static [(Input, Action)]),
    +    IncDepth,
    +    DecDepth,
    +    Finish,
    +}
    +
    +static INIT: [(Input, Action); 28] = [
    +    (ConsumeDelimiter, SetState(&POSTFIX)),
    +    (Keyword("async"), SetState(&ASYNC)),
    +    (Keyword("break"), SetState(&BREAK_LABEL)),
    +    (Keyword("const"), SetState(&CONST)),
    +    (Keyword("continue"), SetState(&CONTINUE)),
    +    (Keyword("for"), SetState(&FOR)),
    +    (Keyword("if"), IncDepth),
    +    (Keyword("let"), SetState(&PATTERN)),
    +    (Keyword("loop"), SetState(&BLOCK)),
    +    (Keyword("match"), IncDepth),
    +    (Keyword("move"), SetState(&CLOSURE)),
    +    (Keyword("return"), SetState(&RETURN)),
    +    (Keyword("static"), SetState(&CLOSURE)),
    +    (Keyword("unsafe"), SetState(&BLOCK)),
    +    (Keyword("while"), IncDepth),
    +    (Keyword("yield"), SetState(&RETURN)),
    +    (Keyword("_"), SetState(&POSTFIX)),
    +    (Punct("!"), SetState(&INIT)),
    +    (Punct("#"), SetState(&[(ConsumeDelimiter, SetState(&INIT))])),
    +    (Punct("&"), SetState(&REFERENCE)),
    +    (Punct("*"), SetState(&INIT)),
    +    (Punct("-"), SetState(&INIT)),
    +    (Punct("..="), SetState(&INIT)),
    +    (Punct(".."), SetState(&RANGE)),
    +    (Punct("|"), SetState(&CLOSURE_ARGS)),
    +    (ConsumeLifetime, SetState(&[(Punct(":"), SetState(&INIT))])),
    +    (ConsumeLiteral, SetState(&POSTFIX)),
    +    (ExpectPath, SetState(&PATH)),
    +];
    +
    +static POSTFIX: [(Input, Action); 10] = [
    +    (Keyword("as"), SetState(&[(ExpectType, SetState(&POSTFIX))])),
    +    (Punct("..="), SetState(&INIT)),
    +    (Punct(".."), SetState(&RANGE)),
    +    (Punct("."), SetState(&DOT)),
    +    (Punct("?"), SetState(&POSTFIX)),
    +    (ConsumeBinOp, SetState(&INIT)),
    +    (Punct("="), SetState(&INIT)),
    +    (ConsumeNestedBrace, SetState(&IF_THEN)),
    +    (ConsumeDelimiter, SetState(&POSTFIX)),
    +    (Empty, Finish),
    +];
    +
    +static ASYNC: [(Input, Action); 3] = [
    +    (Keyword("move"), SetState(&ASYNC)),
    +    (Punct("|"), SetState(&CLOSURE_ARGS)),
    +    (ConsumeBrace, SetState(&POSTFIX)),
    +];
    +
    +static BLOCK: [(Input, Action); 1] = [(ConsumeBrace, SetState(&POSTFIX))];
    +
    +static BREAK_LABEL: [(Input, Action); 2] = [
    +    (ConsumeLifetime, SetState(&BREAK_VALUE)),
    +    (Otherwise, SetState(&BREAK_VALUE)),
    +];
    +
    +static BREAK_VALUE: [(Input, Action); 3] = [
    +    (ConsumeNestedBrace, SetState(&IF_THEN)),
    +    (CanBeginExpr, SetState(&INIT)),
    +    (Otherwise, SetState(&POSTFIX)),
    +];
    +
    +static CLOSURE: [(Input, Action); 6] = [
    +    (Keyword("async"), SetState(&CLOSURE)),
    +    (Keyword("move"), SetState(&CLOSURE)),
    +    (Punct(","), SetState(&CLOSURE)),
    +    (Punct(">"), SetState(&CLOSURE)),
    +    (Punct("|"), SetState(&CLOSURE_ARGS)),
    +    (ConsumeLifetime, SetState(&CLOSURE)),
    +];
    +
    +static CLOSURE_ARGS: [(Input, Action); 2] = [
    +    (Punct("|"), SetState(&CLOSURE_RET)),
    +    (ConsumeAny, SetState(&CLOSURE_ARGS)),
    +];
    +
    +static CLOSURE_RET: [(Input, Action); 2] = [
    +    (Punct("->"), SetState(&[(ExpectType, SetState(&BLOCK))])),
    +    (Otherwise, SetState(&INIT)),
    +];
    +
    +static CONST: [(Input, Action); 2] = [
    +    (Punct("|"), SetState(&CLOSURE_ARGS)),
    +    (ConsumeBrace, SetState(&POSTFIX)),
    +];
    +
    +static CONTINUE: [(Input, Action); 2] = [
    +    (ConsumeLifetime, SetState(&POSTFIX)),
    +    (Otherwise, SetState(&POSTFIX)),
    +];
    +
    +static DOT: [(Input, Action); 3] = [
    +    (Keyword("await"), SetState(&POSTFIX)),
    +    (ConsumeIdent, SetState(&METHOD)),
    +    (ConsumeLiteral, SetState(&POSTFIX)),
    +];
    +
    +static FOR: [(Input, Action); 2] = [
    +    (Punct("<"), SetState(&CLOSURE)),
    +    (Otherwise, SetState(&PATTERN)),
    +];
    +
    +static IF_ELSE: [(Input, Action); 2] = [(Keyword("if"), SetState(&INIT)), (ConsumeBrace, DecDepth)];
    +static IF_THEN: [(Input, Action); 2] =
    +    [(Keyword("else"), SetState(&IF_ELSE)), (Otherwise, DecDepth)];
    +
    +static METHOD: [(Input, Action); 1] = [(ExpectTurbofish, SetState(&POSTFIX))];
    +
    +static PATH: [(Input, Action); 4] = [
    +    (Punct("!="), SetState(&INIT)),
    +    (Punct("!"), SetState(&INIT)),
    +    (ConsumeNestedBrace, SetState(&IF_THEN)),
    +    (Otherwise, SetState(&POSTFIX)),
    +];
    +
    +static PATTERN: [(Input, Action); 15] = [
    +    (ConsumeDelimiter, SetState(&PATTERN)),
    +    (Keyword("box"), SetState(&PATTERN)),
    +    (Keyword("in"), IncDepth),
    +    (Keyword("mut"), SetState(&PATTERN)),
    +    (Keyword("ref"), SetState(&PATTERN)),
    +    (Keyword("_"), SetState(&PATTERN)),
    +    (Punct("!"), SetState(&PATTERN)),
    +    (Punct("&"), SetState(&PATTERN)),
    +    (Punct("..="), SetState(&PATTERN)),
    +    (Punct(".."), SetState(&PATTERN)),
    +    (Punct("="), SetState(&INIT)),
    +    (Punct("@"), SetState(&PATTERN)),
    +    (Punct("|"), SetState(&PATTERN)),
    +    (ConsumeLiteral, SetState(&PATTERN)),
    +    (ExpectPath, SetState(&PATTERN)),
    +];
    +
    +static RANGE: [(Input, Action); 6] = [
    +    (Punct("..="), SetState(&INIT)),
    +    (Punct(".."), SetState(&RANGE)),
    +    (Punct("."), SetState(&DOT)),
    +    (ConsumeNestedBrace, SetState(&IF_THEN)),
    +    (Empty, Finish),
    +    (Otherwise, SetState(&INIT)),
    +];
    +
    +static RAW: [(Input, Action); 3] = [
    +    (Keyword("const"), SetState(&INIT)),
    +    (Keyword("mut"), SetState(&INIT)),
    +    (Otherwise, SetState(&POSTFIX)),
    +];
    +
    +static REFERENCE: [(Input, Action); 3] = [
    +    (Keyword("mut"), SetState(&INIT)),
    +    (Keyword("raw"), SetState(&RAW)),
    +    (Otherwise, SetState(&INIT)),
    +];
    +
    +static RETURN: [(Input, Action); 2] = [
    +    (CanBeginExpr, SetState(&INIT)),
    +    (Otherwise, SetState(&POSTFIX)),
    +];
    +
    +pub(crate) fn scan_expr(input: ParseStream) -> Result<()> {
    +    let mut state = INIT.as_slice();
    +    let mut depth = 0usize;
    +    'table: loop {
    +        for rule in state {
    +            if match rule.0 {
    +                Input::Keyword(expected) => input.step(|cursor| match cursor.ident() {
    +                    Some((ident, rest)) if ident == expected => Ok((true, rest)),
    +                    _ => Ok((false, *cursor)),
    +                })?,
    +                Input::Punct(expected) => input.step(|cursor| {
    +                    let begin = *cursor;
    +                    let mut cursor = begin;
    +                    for (i, ch) in expected.chars().enumerate() {
    +                        match cursor.punct() {
    +                            Some((punct, _)) if punct.as_char() != ch => break,
    +                            Some((_, rest)) if i == expected.len() - 1 => {
    +                                return Ok((true, rest));
    +                            }
    +                            Some((punct, rest)) if punct.spacing() == Spacing::Joint => {
    +                                cursor = rest;
    +                            }
    +                            _ => break,
    +                        }
    +                    }
    +                    Ok((false, begin))
    +                })?,
    +                Input::ConsumeAny => input.parse::<Option<TokenTree>>()?.is_some(),
    +                Input::ConsumeBinOp => input.parse::<BinOp>().is_ok(),
    +                Input::ConsumeBrace | Input::ConsumeNestedBrace => {
    +                    (matches!(rule.0, Input::ConsumeBrace) || depth > 0)
    +                        && input.step(|cursor| match cursor.group(Delimiter::Brace) {
    +                            Some((_inside, _span, rest)) => Ok((true, rest)),
    +                            None => Ok((false, *cursor)),
    +                        })?
    +                }
    +                Input::ConsumeDelimiter => input.step(|cursor| match cursor.any_group() {
    +                    Some((_inside, _delimiter, _span, rest)) => Ok((true, rest)),
    +                    None => Ok((false, *cursor)),
    +                })?,
    +                Input::ConsumeIdent => input.parse::<Option<Ident>>()?.is_some(),
    +                Input::ConsumeLifetime => input.parse::<Option<Lifetime>>()?.is_some(),
    +                Input::ConsumeLiteral => input.parse::<Option<Lit>>()?.is_some(),
    +                Input::ExpectPath => {
    +                    input.parse::<ExprPath>()?;
    +                    true
    +                }
    +                Input::ExpectTurbofish => {
    +                    if input.peek(Token![::]) {
    +                        input.parse::<AngleBracketedGenericArguments>()?;
    +                    }
    +                    true
    +                }
    +                Input::ExpectType => {
    +                    Type::without_plus(input)?;
    +                    true
    +                }
    +                Input::CanBeginExpr => Expr::peek(input),
    +                Input::Otherwise => true,
    +                Input::Empty => input.is_empty() || input.peek(Token![,]),
    +            } {
    +                state = match rule.1 {
    +                    Action::SetState(next) => next,
    +                    Action::IncDepth => (depth += 1, &INIT).1,
    +                    Action::DecDepth => (depth -= 1, &POSTFIX).1,
    +                    Action::Finish => return if depth == 0 { Ok(()) } else { break },
    +                };
    +                continue 'table;
    +            }
    +        }
    +        return Err(input.error("unsupported expression"));
    +    }
    +}
    +
    \ No newline at end of file diff --git a/src/syn/sealed.rs.html b/src/syn/sealed.rs.html index 5970316..4cdd487 100644 --- a/src/syn/sealed.rs.html +++ b/src/syn/sealed.rs.html @@ -1,9 +1,9 @@ -sealed.rs - source
    1
    +sealed.rs - source

    syn/
    sealed.rs

    +1
     2
     3
    -4
    -
    #[cfg(feature = "parsing")]
    -pub mod lookahead {
    +4
    #[cfg(feature = "parsing")]
    +pub(crate) mod lookahead {
         pub trait Sealed: Copy {}
     }
     
    \ No newline at end of file diff --git a/src/syn/span.rs.html b/src/syn/span.rs.html index 2061ee4..f7eb2cc 100644 --- a/src/syn/span.rs.html +++ b/src/syn/span.rs.html @@ -1,4 +1,5 @@ -span.rs - source
    1
    +span.rs - source

    syn/
    span.rs

    +1
     2
     3
     4
    @@ -60,17 +61,20 @@
     60
     61
     62
    -63
    -64
    -65
    -66
    -67
    -
    use proc_macro2::Span;
    +63
    use proc_macro2::extra::DelimSpan;
    +use proc_macro2::{Delimiter, Group, Span, TokenStream};
     
    -pub trait IntoSpans<S> {
    +#[doc(hidden)]
    +pub trait IntoSpans<S> {
         fn into_spans(self) -> S;
     }
     
    +impl IntoSpans<Span> for Span {
    +    fn into_spans(self) -> Span {
    +        self
    +    }
    +}
    +
     impl IntoSpans<[Span; 1]> for Span {
         fn into_spans(self) -> [Span; 1] {
             [self]
    @@ -107,29 +111,17 @@
         }
     }
     
    -#[cfg(feature = "parsing")]
    -pub trait FromSpans: Sized {
    -    fn from_spans(spans: &[Span]) -> Self;
    -}
    -
    -#[cfg(feature = "parsing")]
    -impl FromSpans for [Span; 1] {
    -    fn from_spans(spans: &[Span]) -> Self {
    -        [spans[0]]
    +impl IntoSpans<DelimSpan> for Span {
    +    fn into_spans(self) -> DelimSpan {
    +        let mut group = Group::new(Delimiter::None, TokenStream::new());
    +        group.set_span(self);
    +        group.delim_span()
         }
     }
     
    -#[cfg(feature = "parsing")]
    -impl FromSpans for [Span; 2] {
    -    fn from_spans(spans: &[Span]) -> Self {
    -        [spans[0], spans[1]]
    -    }
    -}
    -
    -#[cfg(feature = "parsing")]
    -impl FromSpans for [Span; 3] {
    -    fn from_spans(spans: &[Span]) -> Self {
    -        [spans[0], spans[1], spans[2]]
    -    }
    +impl IntoSpans<DelimSpan> for DelimSpan {
    +    fn into_spans(self) -> DelimSpan {
    +        self
    +    }
     }
     
    \ No newline at end of file diff --git a/src/syn/spanned.rs.html b/src/syn/spanned.rs.html index add31bf..3d7e54b 100644 --- a/src/syn/spanned.rs.html +++ b/src/syn/spanned.rs.html @@ -1,4 +1,5 @@ -spanned.rs - source
    1
    +spanned.rs - source

    syn/
    spanned.rs

    +1
     2
     3
     4
    @@ -112,12 +113,12 @@
     112
     113
     114
    -
    //! A trait that can provide the `Span` of the complete contents of a syntax
    +115
    +116
    +117
    +118
    //! A trait that can provide the `Span` of the complete contents of a syntax
     //! tree node.
     //!
    -//! *This module is available only if Syn is built with both the `"parsing"` and
    -//! `"printing"` features.*
    -//!
     //! <br>
     //!
     //! # Example
    @@ -166,7 +167,7 @@
     //! ```
     //!
     //! By inserting this `assert_sync` fragment into the output code generated by
    -//! our macro, the user's code will fail to compile if `ty` does not implement
    +//! our macro, the user's code will fail to compile if `ty` does not implement
     //! `Sync`. The errors they would see look like the following.
     //!
     //! ```text
    @@ -177,7 +178,7 @@
     //!    |                ^^^^^^^^^^ `*const i32` cannot be shared between threads safely
     //! ```
     //!
    -//! In this technique, using the `Type`'s span for the error message makes the
    +//! In this technique, using the `Type`'s span for the error message makes the
     //! error appear in the correct place underlining the right type.
     //!
     //! <br>
    @@ -210,10 +211,7 @@
     /// See the [module documentation] for an example.
     ///
     /// [module documentation]: self
    -///
    -/// *This trait is available only if Syn is built with both the `"parsing"` and
    -/// `"printing"` features.*
    -pub trait Spanned {
    +pub trait Spanned: private::Sealed {
         /// Returns a `Span` covering the complete contents of this syntax tree
         /// node, or [`Span::call_site()`] if this node is empty.
         ///
    @@ -226,4 +224,14 @@
             self.__span()
         }
     }
    +
    +mod private {
    +    use crate::spanned::ToTokens;
    +
    +    pub trait Sealed {}
    +    impl<T: ?Sized + ToTokens> Sealed for T {}
    +
    +    #[cfg(any(feature = "full", feature = "derive"))]
    +    impl Sealed for crate::QSelf {}
    +}
     
    \ No newline at end of file diff --git a/src/syn/thread.rs.html b/src/syn/thread.rs.html index d9bdabb..e05fe32 100644 --- a/src/syn/thread.rs.html +++ b/src/syn/thread.rs.html @@ -1,4 +1,5 @@ -thread.rs - source
    1
    +thread.rs - source

    syn/
    thread.rs

    +1
     2
     3
     4
    @@ -39,13 +40,31 @@
     39
     40
     41
    -
    use std::fmt::{self, Debug};
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    use std::fmt::{self, Debug};
     use std::thread::{self, ThreadId};
     
     /// ThreadBound is a Sync-maker and Send-maker that allows accessing a value
     /// of type T only from the original thread on which the ThreadBound was
     /// constructed.
    -pub struct ThreadBound<T> {
    +pub(crate) struct ThreadBound<T> {
         value: T,
         thread_id: ThreadId,
     }
    @@ -53,17 +72,20 @@
     unsafe impl<T> Sync for ThreadBound<T> {}
     
     // Send bound requires Copy, as otherwise Drop could run in the wrong place.
    +//
    +// Today Copy and Drop are mutually exclusive so `T: Copy` implies `T: !Drop`.
    +// This impl needs to be revisited if that restriction is relaxed in the future.
     unsafe impl<T: Copy> Send for ThreadBound<T> {}
     
     impl<T> ThreadBound<T> {
    -    pub fn new(value: T) -> Self {
    +    pub(crate) fn new(value: T) -> Self {
             ThreadBound {
                 value,
                 thread_id: thread::current().id(),
             }
         }
     
    -    pub fn get(&self) -> Option<&T> {
    +    pub(crate) fn get(&self) -> Option<&T> {
             if thread::current().id() == self.thread_id {
                 Some(&self.value)
             } else {
    @@ -76,8 +98,24 @@
         fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
             match self.get() {
                 Some(value) => Debug::fmt(value, formatter),
    -            None => formatter.write_str("unknown"),
    +            None => formatter.write_str("unknown"),
             }
         }
     }
    +
    +// Copy the bytes of T, even if the currently running thread is the "wrong"
    +// thread. This is fine as long as the original thread is not simultaneously
    +// mutating this value via interior mutability, which would be a data race.
    +//
    +// Currently `T: Copy` is sufficient to guarantee that T contains no interior
    +// mutability, because _all_ interior mutability in Rust is built on
    +// std::cell::UnsafeCell, which has no Copy impl. This impl needs to be
    +// revisited if that restriction is relaxed in the future.
    +impl<T: Copy> Copy for ThreadBound<T> {}
    +
    +impl<T: Copy> Clone for ThreadBound<T> {
    +    fn clone(&self) -> Self {
    +        *self
    +    }
    +}
     
    \ No newline at end of file diff --git a/src/syn/token.rs.html b/src/syn/token.rs.html index e4faf4f..55d73f8 100644 --- a/src/syn/token.rs.html +++ b/src/syn/token.rs.html @@ -1,4 +1,5 @@ -token.rs - source
    1
    +token.rs - source

    syn/
    token.rs

    +1
     2
     3
     4
    @@ -1011,7 +1012,87 @@
     1011
     1012
     1013
    -
    //! Tokens representing Rust punctuation, keywords, and delimiters.
    +1014
    +1015
    +1016
    +1017
    +1018
    +1019
    +1020
    +1021
    +1022
    +1023
    +1024
    +1025
    +1026
    +1027
    +1028
    +1029
    +1030
    +1031
    +1032
    +1033
    +1034
    +1035
    +1036
    +1037
    +1038
    +1039
    +1040
    +1041
    +1042
    +1043
    +1044
    +1045
    +1046
    +1047
    +1048
    +1049
    +1050
    +1051
    +1052
    +1053
    +1054
    +1055
    +1056
    +1057
    +1058
    +1059
    +1060
    +1061
    +1062
    +1063
    +1064
    +1065
    +1066
    +1067
    +1068
    +1069
    +1070
    +1071
    +1072
    +1073
    +1074
    +1075
    +1076
    +1077
    +1078
    +1079
    +1080
    +1081
    +1082
    +1083
    +1084
    +1085
    +1086
    +1087
    +1088
    +1089
    +1090
    +1091
    +1092
    +1093
    +1094
    //! Tokens representing Rust punctuation, keywords, and delimiters.
     //!
     //! The type names in this module can be difficult to keep straight, so we
     //! prefer to use the [`Token!`] macro instead. This is a type-macro that
    @@ -1101,41 +1182,40 @@
     //! [Printing]: https://docs.rs/quote/1.0/quote/trait.ToTokens.html
     //! [`Span`]: https://docs.rs/proc-macro2/1.0/proc_macro2/struct.Span.html
     
    -use self::private::WithSpan;
    -#[cfg(feature = "parsing")]
    +#[cfg(feature = "parsing")]
    +pub(crate) use self::private::CustomToken;
    +use self::private::WithSpan;
    +#[cfg(feature = "parsing")]
     use crate::buffer::Cursor;
    -#[cfg(feature = "parsing")]
    +#[cfg(feature = "parsing")]
     use crate::error::Result;
    -#[cfg(feature = "parsing")]
    +#[cfg(feature = "parsing")]
     use crate::lifetime::Lifetime;
    -#[cfg(feature = "parsing")]
    -use crate::lit::{Lit, LitBool, LitByte, LitByteStr, LitChar, LitFloat, LitInt, LitStr};
    -#[cfg(feature = "parsing")]
    -use crate::lookahead;
    -#[cfg(feature = "parsing")]
    +#[cfg(feature = "parsing")]
     use crate::parse::{Parse, ParseStream};
     use crate::span::IntoSpans;
    -#[cfg(any(feature = "parsing", feature = "printing"))]
    -use proc_macro2::Ident;
    +use proc_macro2::extra::DelimSpan;
     use proc_macro2::Span;
    -#[cfg(feature = "printing")]
    +#[cfg(feature = "printing")]
     use proc_macro2::TokenStream;
    -#[cfg(feature = "parsing")]
    -use proc_macro2::{Delimiter, Literal, Punct, TokenTree};
    -#[cfg(feature = "printing")]
    +#[cfg(any(feature = "parsing", feature = "printing"))]
    +use proc_macro2::{Delimiter, Ident};
    +#[cfg(feature = "parsing")]
    +use proc_macro2::{Literal, Punct, TokenTree};
    +#[cfg(feature = "printing")]
     use quote::{ToTokens, TokenStreamExt};
    -#[cfg(feature = "extra-traits")]
    +#[cfg(feature = "extra-traits")]
     use std::cmp;
    -#[cfg(feature = "extra-traits")]
    +#[cfg(feature = "extra-traits")]
     use std::fmt::{self, Debug};
    -#[cfg(feature = "extra-traits")]
    +#[cfg(feature = "extra-traits")]
     use std::hash::{Hash, Hasher};
     use std::ops::{Deref, DerefMut};
     
     /// Marker trait for types that represent single tokens.
     ///
     /// This trait is sealed and cannot be implemented for types outside of Syn.
    -#[cfg(feature = "parsing")]
    +#[cfg(feature = "parsing")]
     pub trait Token: private::Sealed {
         // Not public API.
         #[doc(hidden)]
    @@ -1143,120 +1223,81 @@
     
         // Not public API.
         #[doc(hidden)]
    -    fn display() -> &'static str;
    +    fn display() -> &'static str;
     }
     
    -mod private {
    +pub(crate) mod private {
    +    #[cfg(feature = "parsing")]
    +    use crate::buffer::Cursor;
         use proc_macro2::Span;
     
    -    #[cfg(feature = "parsing")]
    +    #[cfg(feature = "parsing")]
         pub trait Sealed {}
     
         /// Support writing `token.span` rather than `token.spans[0]` on tokens that
         /// hold a single span.
    -    #[repr(C)]
    +    #[repr(transparent)]
    +    #[allow(unknown_lints, repr_transparent_external_private_fields)] // False positive: https://github.com/rust-lang/rust/issues/78586#issuecomment-1722680482
         pub struct WithSpan {
             pub span: Span,
         }
    +
    +    // Not public API.
    +    #[doc(hidden)]
    +    #[cfg(feature = "parsing")]
    +    pub trait CustomToken {
    +        fn peek(cursor: Cursor) -> bool;
    +        fn display() -> &'static str;
    +    }
     }
     
    -#[cfg(feature = "parsing")]
    +#[cfg(feature = "parsing")]
     impl private::Sealed for Ident {}
     
    -#[cfg(feature = "parsing")]
    -fn peek_impl(cursor: Cursor, peek: fn(ParseStream) -> bool) -> bool {
    -    use crate::parse::Unexpected;
    -    use std::cell::Cell;
    -    use std::rc::Rc;
    -
    -    let scope = Span::call_site();
    -    let unexpected = Rc::new(Cell::new(Unexpected::None));
    -    let buffer = crate::parse::new_parse_buffer(scope, cursor, unexpected);
    -    peek(&buffer)
    -}
    -
    -macro_rules! impl_token {
    -    ($display:tt $name:ty) => {
    -        #[cfg(feature = "parsing")]
    -        impl Token for $name {
    -            fn peek(cursor: Cursor) -> bool {
    -                fn peek(input: ParseStream) -> bool {
    -                    <$name as Parse>::parse(input).is_ok()
    -                }
    -                peek_impl(cursor, peek)
    -            }
    -
    -            fn display() -> &'static str {
    -                $display
    -            }
    -        }
    -
    -        #[cfg(feature = "parsing")]
    -        impl private::Sealed for $name {}
    -    };
    -}
    -
    -impl_token!("lifetime" Lifetime);
    -impl_token!("literal" Lit);
    -impl_token!("string literal" LitStr);
    -impl_token!("byte string literal" LitByteStr);
    -impl_token!("byte literal" LitByte);
    -impl_token!("character literal" LitChar);
    -impl_token!("integer literal" LitInt);
    -impl_token!("floating point literal" LitFloat);
    -impl_token!("boolean literal" LitBool);
    -impl_token!("group token" proc_macro2::Group);
    -
    -macro_rules! impl_low_level_token {
    -    ($display:tt $ty:ident $get:ident) => {
    -        #[cfg(feature = "parsing")]
    -        impl Token for $ty {
    +macro_rules! impl_low_level_token {
    +    ($display:literal $($path:ident)::+ $get:ident) => {
    +        #[cfg(feature = "parsing")]
    +        impl Token for $($path)::+ {
                 fn peek(cursor: Cursor) -> bool {
                     cursor.$get().is_some()
                 }
     
    -            fn display() -> &'static str {
    +            fn display() -> &'static str {
                     $display
                 }
             }
     
    -        #[cfg(feature = "parsing")]
    -        impl private::Sealed for $ty {}
    +        #[cfg(feature = "parsing")]
    +        impl private::Sealed for $($path)::+ {}
         };
     }
     
    -impl_low_level_token!("punctuation token" Punct punct);
    -impl_low_level_token!("literal" Literal literal);
    -impl_low_level_token!("token" TokenTree token_tree);
    +impl_low_level_token!("punctuation token" Punct punct);
    +impl_low_level_token!("literal" Literal literal);
    +impl_low_level_token!("token" TokenTree token_tree);
    +impl_low_level_token!("group token" proc_macro2::Group any_group);
    +impl_low_level_token!("lifetime" Lifetime lifetime);
     
    -// Not public API.
    -#[doc(hidden)]
    -#[cfg(feature = "parsing")]
    -pub trait CustomToken {
    -    fn peek(cursor: Cursor) -> bool;
    -    fn display() -> &'static str;
    -}
    -
    -#[cfg(feature = "parsing")]
    +#[cfg(feature = "parsing")]
     impl<T: CustomToken> private::Sealed for T {}
     
    -#[cfg(feature = "parsing")]
    +#[cfg(feature = "parsing")]
     impl<T: CustomToken> Token for T {
         fn peek(cursor: Cursor) -> bool {
             <Self as CustomToken>::peek(cursor)
         }
     
    -    fn display() -> &'static str {
    +    fn display() -> &'static str {
             <Self as CustomToken>::display()
         }
     }
     
    -macro_rules! define_keywords {
    -    ($($token:tt pub struct $name:ident #[$doc:meta])*) => {
    +macro_rules! define_keywords {
    +    ($($token:literal pub struct $name:ident)*) => {
             $(
    -            #[$doc]
    +            #[doc = concat!('`', $token, '`')]
                 ///
    -            /// Don't try to remember the name of this type &mdash; use the
    +            /// Don't try to remember the name of this type &mdash; use the
                 /// [`Token!`] macro instead.
                 ///
                 /// [`Token!`]: crate::token
    @@ -1266,9 +1307,9 @@
     
                 #[doc(hidden)]
                 #[allow(non_snake_case)]
    -            pub fn $name<S: IntoSpans<[Span; 1]>>(span: S) -> $name {
    +            pub fn $name<S: IntoSpans<Span>>(span: S) -> $name {
                     $name {
    -                    span: span.into_spans()[0],
    +                    span: span.into_spans(),
                     }
                 }
     
    @@ -1280,54 +1321,54 @@
                     }
                 }
     
    -            #[cfg(feature = "clone-impls")]
    -            #[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    +            #[cfg(feature = "clone-impls")]
    +            #[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
                 impl Copy for $name {}
     
    -            #[cfg(feature = "clone-impls")]
    -            #[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    +            #[cfg(feature = "clone-impls")]
    +            #[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
                 impl Clone for $name {
                     fn clone(&self) -> Self {
                         *self
                     }
                 }
     
    -            #[cfg(feature = "extra-traits")]
    -            #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    +            #[cfg(feature = "extra-traits")]
    +            #[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
                 impl Debug for $name {
                     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
                         f.write_str(stringify!($name))
                     }
                 }
     
    -            #[cfg(feature = "extra-traits")]
    -            #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    +            #[cfg(feature = "extra-traits")]
    +            #[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
                 impl cmp::Eq for $name {}
     
    -            #[cfg(feature = "extra-traits")]
    -            #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    +            #[cfg(feature = "extra-traits")]
    +            #[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
                 impl PartialEq for $name {
                     fn eq(&self, _other: &$name) -> bool {
                         true
                     }
                 }
     
    -            #[cfg(feature = "extra-traits")]
    -            #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    +            #[cfg(feature = "extra-traits")]
    +            #[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
                 impl Hash for $name {
                     fn hash<H: Hasher>(&self, _state: &mut H) {}
                 }
     
    -            #[cfg(feature = "printing")]
    -            #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +            #[cfg(feature = "printing")]
    +            #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
                 impl ToTokens for $name {
                     fn to_tokens(&self, tokens: &mut TokenStream) {
                         printing::keyword($token, self.span, tokens);
                     }
                 }
     
    -            #[cfg(feature = "parsing")]
    -            #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +            #[cfg(feature = "parsing")]
    +            #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
                 impl Parse for $name {
                     fn parse(input: ParseStream) -> Result<Self> {
                         Ok($name {
    @@ -1336,50 +1377,54 @@
                     }
                 }
     
    -            #[cfg(feature = "parsing")]
    +            #[cfg(feature = "parsing")]
                 impl Token for $name {
                     fn peek(cursor: Cursor) -> bool {
                         parsing::peek_keyword(cursor, $token)
                     }
     
    -                fn display() -> &'static str {
    -                    concat!("`", $token, "`")
    +                fn display() -> &'static str {
    +                    concat!("`", $token, "`")
                     }
                 }
     
    -            #[cfg(feature = "parsing")]
    +            #[cfg(feature = "parsing")]
                 impl private::Sealed for $name {}
             )*
         };
     }
     
    -macro_rules! impl_deref_if_len_is_1 {
    +macro_rules! impl_deref_if_len_is_1 {
         ($name:ident/1) => {
             impl Deref for $name {
                 type Target = WithSpan;
     
                 fn deref(&self) -> &Self::Target {
    -                unsafe { &*(self as *const Self as *const WithSpan) }
    +                unsafe { &*(self as *const Self).cast::<WithSpan>() }
                 }
             }
     
             impl DerefMut for $name {
                 fn deref_mut(&mut self) -> &mut Self::Target {
    -                unsafe { &mut *(self as *mut Self as *mut WithSpan) }
    +                unsafe { &mut *(self as *mut Self).cast::<WithSpan>() }
                 }
             }
         };
     
    -    ($name:ident/$len:tt) => {};
    +    ($name:ident/$len:literal) => {};
     }
     
    -macro_rules! define_punctuation_structs {
    -    ($($token:tt pub struct $name:ident/$len:tt #[$doc:meta])*) => {
    +macro_rules! define_punctuation_structs {
    +    ($($token:literal pub struct $name:ident/$len:tt #[doc = $usage:literal])*) => {
             $(
    -            #[repr(C)]
    -            #[$doc]
    +            #[cfg_attr(not(doc), repr(transparent))]
    +            #[allow(unknown_lints, repr_transparent_external_private_fields)] // False positive: https://github.com/rust-lang/rust/issues/78586#issuecomment-1722680482
    +            #[doc = concat!('`', $token, '`')]
                 ///
    -            /// Don't try to remember the name of this type &mdash; use the
    +            /// Usage:
    +            #[doc = concat!($usage, '.')]
    +            ///
    +            /// Don't try to remember the name of this type &mdash; use the
                 /// [`Token!`] macro instead.
                 ///
                 /// [`Token!`]: crate::token
    @@ -1403,40 +1448,40 @@
                     }
                 }
     
    -            #[cfg(feature = "clone-impls")]
    -            #[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    +            #[cfg(feature = "clone-impls")]
    +            #[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
                 impl Copy for $name {}
     
    -            #[cfg(feature = "clone-impls")]
    -            #[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    +            #[cfg(feature = "clone-impls")]
    +            #[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
                 impl Clone for $name {
                     fn clone(&self) -> Self {
                         *self
                     }
                 }
     
    -            #[cfg(feature = "extra-traits")]
    -            #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    +            #[cfg(feature = "extra-traits")]
    +            #[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
                 impl Debug for $name {
                     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
                         f.write_str(stringify!($name))
                     }
                 }
     
    -            #[cfg(feature = "extra-traits")]
    -            #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    +            #[cfg(feature = "extra-traits")]
    +            #[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
                 impl cmp::Eq for $name {}
     
    -            #[cfg(feature = "extra-traits")]
    -            #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    +            #[cfg(feature = "extra-traits")]
    +            #[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
                 impl PartialEq for $name {
                     fn eq(&self, _other: &$name) -> bool {
                         true
                     }
                 }
     
    -            #[cfg(feature = "extra-traits")]
    -            #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    +            #[cfg(feature = "extra-traits")]
    +            #[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
                 impl Hash for $name {
                     fn hash<H: Hasher>(&self, _state: &mut H) {}
                 }
    @@ -1446,23 +1491,23 @@
         };
     }
     
    -macro_rules! define_punctuation {
    -    ($($token:tt pub struct $name:ident/$len:tt #[$doc:meta])*) => {
    +macro_rules! define_punctuation {
    +    ($($token:literal pub struct $name:ident/$len:tt #[doc = $usage:literal])*) => {
             $(
    -            define_punctuation_structs! {
    -                $token pub struct $name/$len #[$doc]
    +            define_punctuation_structs! {
    +                $token pub struct $name/$len #[doc = $usage]
                 }
     
    -            #[cfg(feature = "printing")]
    -            #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +            #[cfg(feature = "printing")]
    +            #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
                 impl ToTokens for $name {
                     fn to_tokens(&self, tokens: &mut TokenStream) {
                         printing::punct($token, &self.spans, tokens);
                     }
                 }
     
    -            #[cfg(feature = "parsing")]
    -            #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +            #[cfg(feature = "parsing")]
    +            #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
                 impl Parse for $name {
                     fn parse(input: ParseStream) -> Result<Self> {
                         Ok($name {
    @@ -1471,453 +1516,574 @@
                     }
                 }
     
    -            #[cfg(feature = "parsing")]
    +            #[cfg(feature = "parsing")]
                 impl Token for $name {
                     fn peek(cursor: Cursor) -> bool {
                         parsing::peek_punct(cursor, $token)
                     }
     
    -                fn display() -> &'static str {
    -                    concat!("`", $token, "`")
    +                fn display() -> &'static str {
    +                    concat!("`", $token, "`")
                     }
                 }
     
    -            #[cfg(feature = "parsing")]
    +            #[cfg(feature = "parsing")]
                 impl private::Sealed for $name {}
             )*
         };
     }
     
    -macro_rules! define_delimiters {
    -    ($($token:tt pub struct $name:ident #[$doc:meta])*) => {
    +macro_rules! define_delimiters {
    +    ($($delim:ident pub struct $name:ident #[$doc:meta])*) => {
             $(
                 #[$doc]
                 pub struct $name {
    -                pub span: Span,
    +                pub span: DelimSpan,
                 }
     
                 #[doc(hidden)]
                 #[allow(non_snake_case)]
    -            pub fn $name<S: IntoSpans<[Span; 1]>>(span: S) -> $name {
    +            pub fn $name<S: IntoSpans<DelimSpan>>(span: S) -> $name {
                     $name {
    -                    span: span.into_spans()[0],
    +                    span: span.into_spans(),
                     }
                 }
     
                 impl std::default::Default for $name {
                     fn default() -> Self {
    -                    $name {
    -                        span: Span::call_site(),
    -                    }
    +                    $name(Span::call_site())
                     }
                 }
     
    -            #[cfg(feature = "clone-impls")]
    -            #[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    +            #[cfg(feature = "clone-impls")]
    +            #[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
                 impl Copy for $name {}
     
    -            #[cfg(feature = "clone-impls")]
    -            #[cfg_attr(doc_cfg, doc(cfg(feature = "clone-impls")))]
    +            #[cfg(feature = "clone-impls")]
    +            #[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
                 impl Clone for $name {
                     fn clone(&self) -> Self {
                         *self
                     }
                 }
     
    -            #[cfg(feature = "extra-traits")]
    -            #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    +            #[cfg(feature = "extra-traits")]
    +            #[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
                 impl Debug for $name {
                     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
                         f.write_str(stringify!($name))
                     }
                 }
     
    -            #[cfg(feature = "extra-traits")]
    -            #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    +            #[cfg(feature = "extra-traits")]
    +            #[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
                 impl cmp::Eq for $name {}
     
    -            #[cfg(feature = "extra-traits")]
    -            #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    +            #[cfg(feature = "extra-traits")]
    +            #[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
                 impl PartialEq for $name {
                     fn eq(&self, _other: &$name) -> bool {
                         true
                     }
                 }
     
    -            #[cfg(feature = "extra-traits")]
    -            #[cfg_attr(doc_cfg, doc(cfg(feature = "extra-traits")))]
    +            #[cfg(feature = "extra-traits")]
    +            #[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
                 impl Hash for $name {
                     fn hash<H: Hasher>(&self, _state: &mut H) {}
                 }
     
                 impl $name {
    -                #[cfg(feature = "printing")]
    +                #[cfg(feature = "printing")]
                     pub fn surround<F>(&self, tokens: &mut TokenStream, f: F)
                     where
                         F: FnOnce(&mut TokenStream),
                     {
    -                    printing::delim($token, self.span, tokens, f);
    +                    let mut inner = TokenStream::new();
    +                    f(&mut inner);
    +                    printing::delim(Delimiter::$delim, self.span.join(), tokens, inner);
                     }
                 }
     
    -            #[cfg(feature = "parsing")]
    +            #[cfg(feature = "parsing")]
                 impl private::Sealed for $name {}
             )*
         };
     }
     
    -define_punctuation_structs! {
    -    "_" pub struct Underscore/1 /// `_`
    +define_punctuation_structs! {
    +    "_" pub struct Underscore/1 /// wildcard patterns, inferred types, unnamed items in constants, extern crates, use declarations, and destructuring assignment
     }
     
    -#[cfg(feature = "printing")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +#[cfg(feature = "printing")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
     impl ToTokens for Underscore {
         fn to_tokens(&self, tokens: &mut TokenStream) {
    -        tokens.append(Ident::new("_", self.span));
    +        tokens.append(Ident::new("_", self.span));
         }
     }
     
    -#[cfg(feature = "parsing")]
    -#[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +#[cfg(feature = "parsing")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
     impl Parse for Underscore {
         fn parse(input: ParseStream) -> Result<Self> {
             input.step(|cursor| {
                 if let Some((ident, rest)) = cursor.ident() {
    -                if ident == "_" {
    +                if ident == "_" {
                         return Ok((Underscore(ident.span()), rest));
                     }
                 }
                 if let Some((punct, rest)) = cursor.punct() {
    -                if punct.as_char() == '_' {
    +                if punct.as_char() == '_' {
                         return Ok((Underscore(punct.span()), rest));
                     }
                 }
    -            Err(cursor.error("expected `_`"))
    +            Err(cursor.error("expected `_`"))
             })
         }
     }
     
    -#[cfg(feature = "parsing")]
    +#[cfg(feature = "parsing")]
     impl Token for Underscore {
         fn peek(cursor: Cursor) -> bool {
             if let Some((ident, _rest)) = cursor.ident() {
    -            return ident == "_";
    +            return ident == "_";
             }
             if let Some((punct, _rest)) = cursor.punct() {
    -            return punct.as_char() == '_';
    +            return punct.as_char() == '_';
             }
             false
         }
     
    -    fn display() -> &'static str {
    -        "`_`"
    +    fn display() -> &'static str {
    +        "`_`"
         }
     }
     
    -#[cfg(feature = "parsing")]
    +#[cfg(feature = "parsing")]
     impl private::Sealed for Underscore {}
     
    -#[cfg(feature = "parsing")]
    +/// None-delimited group
    +pub struct Group {
    +    pub span: Span,
    +}
    +
    +#[doc(hidden)]
    +#[allow(non_snake_case)]
    +pub fn Group<S: IntoSpans<Span>>(span: S) -> Group {
    +    Group {
    +        span: span.into_spans(),
    +    }
    +}
    +
    +impl std::default::Default for Group {
    +    fn default() -> Self {
    +        Group {
    +            span: Span::call_site(),
    +        }
    +    }
    +}
    +
    +#[cfg(feature = "clone-impls")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Copy for Group {}
    +
    +#[cfg(feature = "clone-impls")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "clone-impls")))]
    +impl Clone for Group {
    +    fn clone(&self) -> Self {
    +        *self
    +    }
    +}
    +
    +#[cfg(feature = "extra-traits")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Debug for Group {
    +    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
    +        f.write_str("Group")
    +    }
    +}
    +
    +#[cfg(feature = "extra-traits")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl cmp::Eq for Group {}
    +
    +#[cfg(feature = "extra-traits")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl PartialEq for Group {
    +    fn eq(&self, _other: &Group) -> bool {
    +        true
    +    }
    +}
    +
    +#[cfg(feature = "extra-traits")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "extra-traits")))]
    +impl Hash for Group {
    +    fn hash<H: Hasher>(&self, _state: &mut H) {}
    +}
    +
    +impl Group {
    +    #[cfg(feature = "printing")]
    +    pub fn surround<F>(&self, tokens: &mut TokenStream, f: F)
    +    where
    +        F: FnOnce(&mut TokenStream),
    +    {
    +        let mut inner = TokenStream::new();
    +        f(&mut inner);
    +        printing::delim(Delimiter::None, self.span, tokens, inner);
    +    }
    +}
    +
    +#[cfg(feature = "parsing")]
    +impl private::Sealed for Group {}
    +
    +#[cfg(feature = "parsing")]
     impl Token for Paren {
         fn peek(cursor: Cursor) -> bool {
    -        lookahead::is_delimiter(cursor, Delimiter::Parenthesis)
    +        cursor.group(Delimiter::Parenthesis).is_some()
         }
     
    -    fn display() -> &'static str {
    -        "parentheses"
    +    fn display() -> &'static str {
    +        "parentheses"
         }
     }
     
    -#[cfg(feature = "parsing")]
    +#[cfg(feature = "parsing")]
     impl Token for Brace {
         fn peek(cursor: Cursor) -> bool {
    -        lookahead::is_delimiter(cursor, Delimiter::Brace)
    +        cursor.group(Delimiter::Brace).is_some()
         }
     
    -    fn display() -> &'static str {
    -        "curly braces"
    +    fn display() -> &'static str {
    +        "curly braces"
         }
     }
     
    -#[cfg(feature = "parsing")]
    +#[cfg(feature = "parsing")]
     impl Token for Bracket {
         fn peek(cursor: Cursor) -> bool {
    -        lookahead::is_delimiter(cursor, Delimiter::Bracket)
    +        cursor.group(Delimiter::Bracket).is_some()
         }
     
    -    fn display() -> &'static str {
    -        "square brackets"
    +    fn display() -> &'static str {
    +        "square brackets"
         }
     }
     
    -#[cfg(feature = "parsing")]
    +#[cfg(feature = "parsing")]
     impl Token for Group {
         fn peek(cursor: Cursor) -> bool {
    -        lookahead::is_delimiter(cursor, Delimiter::None)
    +        cursor.group(Delimiter::None).is_some()
         }
     
    -    fn display() -> &'static str {
    -        "invisible group"
    +    fn display() -> &'static str {
    +        "invisible group"
         }
     }
     
    -define_keywords! {
    -    "abstract"    pub struct Abstract     /// `abstract`
    -    "as"          pub struct As           /// `as`
    -    "async"       pub struct Async        /// `async`
    -    "auto"        pub struct Auto         /// `auto`
    -    "await"       pub struct Await        /// `await`
    -    "become"      pub struct Become       /// `become`
    -    "box"         pub struct Box          /// `box`
    -    "break"       pub struct Break        /// `break`
    -    "const"       pub struct Const        /// `const`
    -    "continue"    pub struct Continue     /// `continue`
    -    "crate"       pub struct Crate        /// `crate`
    -    "default"     pub struct Default      /// `default`
    -    "do"          pub struct Do           /// `do`
    -    "dyn"         pub struct Dyn          /// `dyn`
    -    "else"        pub struct Else         /// `else`
    -    "enum"        pub struct Enum         /// `enum`
    -    "extern"      pub struct Extern       /// `extern`
    -    "final"       pub struct Final        /// `final`
    -    "fn"          pub struct Fn           /// `fn`
    -    "for"         pub struct For          /// `for`
    -    "if"          pub struct If           /// `if`
    -    "impl"        pub struct Impl         /// `impl`
    -    "in"          pub struct In           /// `in`
    -    "let"         pub struct Let          /// `let`
    -    "loop"        pub struct Loop         /// `loop`
    -    "macro"       pub struct Macro        /// `macro`
    -    "match"       pub struct Match        /// `match`
    -    "mod"         pub struct Mod          /// `mod`
    -    "move"        pub struct Move         /// `move`
    -    "mut"         pub struct Mut          /// `mut`
    -    "override"    pub struct Override     /// `override`
    -    "priv"        pub struct Priv         /// `priv`
    -    "pub"         pub struct Pub          /// `pub`
    -    "ref"         pub struct Ref          /// `ref`
    -    "return"      pub struct Return       /// `return`
    -    "Self"        pub struct SelfType     /// `Self`
    -    "self"        pub struct SelfValue    /// `self`
    -    "static"      pub struct Static       /// `static`
    -    "struct"      pub struct Struct       /// `struct`
    -    "super"       pub struct Super        /// `super`
    -    "trait"       pub struct Trait        /// `trait`
    -    "try"         pub struct Try          /// `try`
    -    "type"        pub struct Type         /// `type`
    -    "typeof"      pub struct Typeof       /// `typeof`
    -    "union"       pub struct Union        /// `union`
    -    "unsafe"      pub struct Unsafe       /// `unsafe`
    -    "unsized"     pub struct Unsized      /// `unsized`
    -    "use"         pub struct Use          /// `use`
    -    "virtual"     pub struct Virtual      /// `virtual`
    -    "where"       pub struct Where        /// `where`
    -    "while"       pub struct While        /// `while`
    -    "yield"       pub struct Yield        /// `yield`
    -}
    -
    -define_punctuation! {
    -    "+"           pub struct Add/1        /// `+`
    -    "+="          pub struct AddEq/2      /// `+=`
    -    "&"           pub struct And/1        /// `&`
    -    "&&"          pub struct AndAnd/2     /// `&&`
    -    "&="          pub struct AndEq/2      /// `&=`
    -    "@"           pub struct At/1         /// `@`
    -    "!"           pub struct Bang/1       /// `!`
    -    "^"           pub struct Caret/1      /// `^`
    -    "^="          pub struct CaretEq/2    /// `^=`
    -    ":"           pub struct Colon/1      /// `:`
    -    "::"          pub struct Colon2/2     /// `::`
    -    ","           pub struct Comma/1      /// `,`
    -    "/"           pub struct Div/1        /// `/`
    -    "/="          pub struct DivEq/2      /// `/=`
    -    "$"           pub struct Dollar/1     /// `$`
    -    "."           pub struct Dot/1        /// `.`
    -    ".."          pub struct Dot2/2       /// `..`
    -    "..."         pub struct Dot3/3       /// `...`
    -    "..="         pub struct DotDotEq/3   /// `..=`
    -    "="           pub struct Eq/1         /// `=`
    -    "=="          pub struct EqEq/2       /// `==`
    -    ">="          pub struct Ge/2         /// `>=`
    -    ">"           pub struct Gt/1         /// `>`
    -    "<="          pub struct Le/2         /// `<=`
    -    "<"           pub struct Lt/1         /// `<`
    -    "*="          pub struct MulEq/2      /// `*=`
    -    "!="          pub struct Ne/2         /// `!=`
    -    "|"           pub struct Or/1         /// `|`
    -    "|="          pub struct OrEq/2       /// `|=`
    -    "||"          pub struct OrOr/2       /// `||`
    -    "#"           pub struct Pound/1      /// `#`
    -    "?"           pub struct Question/1   /// `?`
    -    "->"          pub struct RArrow/2     /// `->`
    -    "<-"          pub struct LArrow/2     /// `<-`
    -    "%"           pub struct Rem/1        /// `%`
    -    "%="          pub struct RemEq/2      /// `%=`
    -    "=>"          pub struct FatArrow/2   /// `=>`
    -    ";"           pub struct Semi/1       /// `;`
    -    "<<"          pub struct Shl/2        /// `<<`
    -    "<<="         pub struct ShlEq/3      /// `<<=`
    -    ">>"          pub struct Shr/2        /// `>>`
    -    ">>="         pub struct ShrEq/3      /// `>>=`
    -    "*"           pub struct Star/1       /// `*`
    -    "-"           pub struct Sub/1        /// `-`
    -    "-="          pub struct SubEq/2      /// `-=`
    -    "~"           pub struct Tilde/1      /// `~`
    -}
    -
    -define_delimiters! {
    -    "{"           pub struct Brace        /// `{...}`
    -    "["           pub struct Bracket      /// `[...]`
    -    "("           pub struct Paren        /// `(...)`
    -    " "           pub struct Group        /// None-delimited group
    -}
    -
    -macro_rules! export_token_macro {
    -    ($($await_rule:tt)*) => {
    -        /// A type-macro that expands to the name of the Rust type representation of a
    -        /// given token.
    -        ///
    -        /// See the [token module] documentation for details and examples.
    -        ///
    -        /// [token module]: crate::token
    -        // Unfortunate duplication due to a rustdoc bug.
    -        // https://github.com/rust-lang/rust/issues/45939
    -        #[macro_export]
    -        macro_rules! Token {
    -            [abstract]    => { $crate::token::Abstract };
    -            [as]          => { $crate::token::As };
    -            [async]       => { $crate::token::Async };
    -            [auto]        => { $crate::token::Auto };
    -            $($await_rule => { $crate::token::Await };)*
    -            [become]      => { $crate::token::Become };
    -            [box]         => { $crate::token::Box };
    -            [break]       => { $crate::token::Break };
    -            [const]       => { $crate::token::Const };
    -            [continue]    => { $crate::token::Continue };
    -            [crate]       => { $crate::token::Crate };
    -            [default]     => { $crate::token::Default };
    -            [do]          => { $crate::token::Do };
    -            [dyn]         => { $crate::token::Dyn };
    -            [else]        => { $crate::token::Else };
    -            [enum]        => { $crate::token::Enum };
    -            [extern]      => { $crate::token::Extern };
    -            [final]       => { $crate::token::Final };
    -            [fn]          => { $crate::token::Fn };
    -            [for]         => { $crate::token::For };
    -            [if]          => { $crate::token::If };
    -            [impl]        => { $crate::token::Impl };
    -            [in]          => { $crate::token::In };
    -            [let]         => { $crate::token::Let };
    -            [loop]        => { $crate::token::Loop };
    -            [macro]       => { $crate::token::Macro };
    -            [match]       => { $crate::token::Match };
    -            [mod]         => { $crate::token::Mod };
    -            [move]        => { $crate::token::Move };
    -            [mut]         => { $crate::token::Mut };
    -            [override]    => { $crate::token::Override };
    -            [priv]        => { $crate::token::Priv };
    -            [pub]         => { $crate::token::Pub };
    -            [ref]         => { $crate::token::Ref };
    -            [return]      => { $crate::token::Return };
    -            [Self]        => { $crate::token::SelfType };
    -            [self]        => { $crate::token::SelfValue };
    -            [static]      => { $crate::token::Static };
    -            [struct]      => { $crate::token::Struct };
    -            [super]       => { $crate::token::Super };
    -            [trait]       => { $crate::token::Trait };
    -            [try]         => { $crate::token::Try };
    -            [type]        => { $crate::token::Type };
    -            [typeof]      => { $crate::token::Typeof };
    -            [union]       => { $crate::token::Union };
    -            [unsafe]      => { $crate::token::Unsafe };
    -            [unsized]     => { $crate::token::Unsized };
    -            [use]         => { $crate::token::Use };
    -            [virtual]     => { $crate::token::Virtual };
    -            [where]       => { $crate::token::Where };
    -            [while]       => { $crate::token::While };
    -            [yield]       => { $crate::token::Yield };
    -            [+]           => { $crate::token::Add };
    -            [+=]          => { $crate::token::AddEq };
    -            [&]           => { $crate::token::And };
    -            [&&]          => { $crate::token::AndAnd };
    -            [&=]          => { $crate::token::AndEq };
    -            [@]           => { $crate::token::At };
    -            [!]           => { $crate::token::Bang };
    -            [^]           => { $crate::token::Caret };
    -            [^=]          => { $crate::token::CaretEq };
    -            [:]           => { $crate::token::Colon };
    -            [::]          => { $crate::token::Colon2 };
    -            [,]           => { $crate::token::Comma };
    -            [/]           => { $crate::token::Div };
    -            [/=]          => { $crate::token::DivEq };
    -            [$]           => { $crate::token::Dollar };
    -            [.]           => { $crate::token::Dot };
    -            [..]          => { $crate::token::Dot2 };
    -            [...]         => { $crate::token::Dot3 };
    -            [..=]         => { $crate::token::DotDotEq };
    -            [=]           => { $crate::token::Eq };
    -            [==]          => { $crate::token::EqEq };
    -            [>=]          => { $crate::token::Ge };
    -            [>]           => { $crate::token::Gt };
    -            [<=]          => { $crate::token::Le };
    -            [<]           => { $crate::token::Lt };
    -            [*=]          => { $crate::token::MulEq };
    -            [!=]          => { $crate::token::Ne };
    -            [|]           => { $crate::token::Or };
    -            [|=]          => { $crate::token::OrEq };
    -            [||]          => { $crate::token::OrOr };
    -            [#]           => { $crate::token::Pound };
    -            [?]           => { $crate::token::Question };
    -            [->]          => { $crate::token::RArrow };
    -            [<-]          => { $crate::token::LArrow };
    -            [%]           => { $crate::token::Rem };
    -            [%=]          => { $crate::token::RemEq };
    -            [=>]          => { $crate::token::FatArrow };
    -            [;]           => { $crate::token::Semi };
    -            [<<]          => { $crate::token::Shl };
    -            [<<=]         => { $crate::token::ShlEq };
    -            [>>]          => { $crate::token::Shr };
    -            [>>=]         => { $crate::token::ShrEq };
    -            [*]           => { $crate::token::Star };
    -            [-]           => { $crate::token::Sub };
    -            [-=]          => { $crate::token::SubEq };
    -            [~]           => { $crate::token::Tilde };
    -            [_]           => { $crate::token::Underscore };
    -        }
    -    };
    +define_keywords! {
    +    "abstract"    pub struct Abstract
    +    "as"          pub struct As
    +    "async"       pub struct Async
    +    "auto"        pub struct Auto
    +    "await"       pub struct Await
    +    "become"      pub struct Become
    +    "box"         pub struct Box
    +    "break"       pub struct Break
    +    "const"       pub struct Const
    +    "continue"    pub struct Continue
    +    "crate"       pub struct Crate
    +    "default"     pub struct Default
    +    "do"          pub struct Do
    +    "dyn"         pub struct Dyn
    +    "else"        pub struct Else
    +    "enum"        pub struct Enum
    +    "extern"      pub struct Extern
    +    "final"       pub struct Final
    +    "fn"          pub struct Fn
    +    "for"         pub struct For
    +    "if"          pub struct If
    +    "impl"        pub struct Impl
    +    "in"          pub struct In
    +    "let"         pub struct Let
    +    "loop"        pub struct Loop
    +    "macro"       pub struct Macro
    +    "match"       pub struct Match
    +    "mod"         pub struct Mod
    +    "move"        pub struct Move
    +    "mut"         pub struct Mut
    +    "override"    pub struct Override
    +    "priv"        pub struct Priv
    +    "pub"         pub struct Pub
    +    "raw"         pub struct Raw
    +    "ref"         pub struct Ref
    +    "return"      pub struct Return
    +    "Self"        pub struct SelfType
    +    "self"        pub struct SelfValue
    +    "static"      pub struct Static
    +    "struct"      pub struct Struct
    +    "super"       pub struct Super
    +    "trait"       pub struct Trait
    +    "try"         pub struct Try
    +    "type"        pub struct Type
    +    "typeof"      pub struct Typeof
    +    "union"       pub struct Union
    +    "unsafe"      pub struct Unsafe
    +    "unsized"     pub struct Unsized
    +    "use"         pub struct Use
    +    "virtual"     pub struct Virtual
    +    "where"       pub struct Where
    +    "while"       pub struct While
    +    "yield"       pub struct Yield
     }
     
    -// Old rustc does not permit `await` appearing anywhere in the source file.
    -// https://github.com/rust-lang/rust/issues/57919
    -// We put the Token![await] rule in a place that is not lexed by old rustc.
    -#[cfg(not(syn_omit_await_from_token_macro))]
    -include!("await.rs"); // export_token_macro! {[await]}
    -#[cfg(syn_omit_await_from_token_macro)]
    -export_token_macro! {}
    +define_punctuation! {
    +    "&"           pub struct And/1        /// bitwise and logical AND, borrow, references, reference patterns
    +    "&&"          pub struct AndAnd/2     /// lazy AND, borrow, references, reference patterns
    +    "&="          pub struct AndEq/2      /// bitwise AND assignment
    +    "@"           pub struct At/1         /// subpattern binding
    +    "^"           pub struct Caret/1      /// bitwise and logical XOR
    +    "^="          pub struct CaretEq/2    /// bitwise XOR assignment
    +    ":"           pub struct Colon/1      /// various separators
    +    ","           pub struct Comma/1      /// various separators
    +    "$"           pub struct Dollar/1     /// macros
    +    "."           pub struct Dot/1        /// field access, tuple index
    +    ".."          pub struct DotDot/2     /// range, struct expressions, patterns, range patterns
    +    "..."         pub struct DotDotDot/3  /// variadic functions, range patterns
    +    "..="         pub struct DotDotEq/3   /// inclusive range, range patterns
    +    "="           pub struct Eq/1         /// assignment, attributes, various type definitions
    +    "=="          pub struct EqEq/2       /// equal
    +    "=>"          pub struct FatArrow/2   /// match arms, macros
    +    ">="          pub struct Ge/2         /// greater than or equal to, generics
    +    ">"           pub struct Gt/1         /// greater than, generics, paths
    +    "<-"          pub struct LArrow/2     /// unused
    +    "<="          pub struct Le/2         /// less than or equal to
    +    "<"           pub struct Lt/1         /// less than, generics, paths
    +    "-"           pub struct Minus/1      /// subtraction, negation
    +    "-="          pub struct MinusEq/2    /// subtraction assignment
    +    "!="          pub struct Ne/2         /// not equal
    +    "!"           pub struct Not/1        /// bitwise and logical NOT, macro calls, inner attributes, never type, negative impls
    +    "|"           pub struct Or/1         /// bitwise and logical OR, closures, patterns in match, if let, and while let
    +    "|="          pub struct OrEq/2       /// bitwise OR assignment
    +    "||"          pub struct OrOr/2       /// lazy OR, closures
    +    "::"          pub struct PathSep/2    /// path separator
    +    "%"           pub struct Percent/1    /// remainder
    +    "%="          pub struct PercentEq/2  /// remainder assignment
    +    "+"           pub struct Plus/1       /// addition, trait bounds, macro Kleene matcher
    +    "+="          pub struct PlusEq/2     /// addition assignment
    +    "#"           pub struct Pound/1      /// attributes
    +    "?"           pub struct Question/1   /// question mark operator, questionably sized, macro Kleene matcher
    +    "->"          pub struct RArrow/2     /// function return type, closure return type, function pointer type
    +    ";"           pub struct Semi/1       /// terminator for various items and statements, array types
    +    "<<"          pub struct Shl/2        /// shift left, nested generics
    +    "<<="         pub struct ShlEq/3      /// shift left assignment
    +    ">>"          pub struct Shr/2        /// shift right, nested generics
    +    ">>="         pub struct ShrEq/3      /// shift right assignment, nested generics
    +    "/"           pub struct Slash/1      /// division
    +    "/="          pub struct SlashEq/2    /// division assignment
    +    "*"           pub struct Star/1       /// multiplication, dereference, raw pointers, macro Kleene matcher, use wildcards
    +    "*="          pub struct StarEq/2     /// multiplication assignment
    +    "~"           pub struct Tilde/1      /// unused since before Rust 1.0
    +}
    +
    +define_delimiters! {
    +    Brace         pub struct Brace        /// `{`&hellip;`}`
    +    Bracket       pub struct Bracket      /// `[`&hellip;`]`
    +    Parenthesis   pub struct Paren        /// `(`&hellip;`)`
    +}
    +
    +/// A type-macro that expands to the name of the Rust type representation of a
    +/// given token.
    +///
    +/// As a type, `Token!` is commonly used in the type of struct fields, the type
    +/// of a `let` statement, or in turbofish for a `parse` function.
    +///
    +/// ```
    +/// use syn::{Ident, Token};
    +/// use syn::parse::{Parse, ParseStream, Result};
    +///
    +/// // `struct Foo;`
    +/// pub struct UnitStruct {
    +///     struct_token: Token![struct],
    +///     ident: Ident,
    +///     semi_token: Token![;],
    +/// }
    +///
    +/// impl Parse for UnitStruct {
    +///     fn parse(input: ParseStream) -> Result<Self> {
    +///         let struct_token: Token![struct] = input.parse()?;
    +///         let ident: Ident = input.parse()?;
    +///         let semi_token = input.parse::<Token![;]>()?;
    +///         Ok(UnitStruct { struct_token, ident, semi_token })
    +///     }
    +/// }
    +/// ```
    +///
    +/// As an expression, `Token!` is used for peeking tokens or instantiating
    +/// tokens from a span.
    +///
    +/// ```
    +/// # use syn::{Ident, Token};
    +/// # use syn::parse::{Parse, ParseStream, Result};
    +/// #
    +/// # struct UnitStruct {
    +/// #     struct_token: Token![struct],
    +/// #     ident: Ident,
    +/// #     semi_token: Token![;],
    +/// # }
    +/// #
    +/// # impl Parse for UnitStruct {
    +/// #     fn parse(input: ParseStream) -> Result<Self> {
    +/// #         unimplemented!()
    +/// #     }
    +/// # }
    +/// #
    +/// fn make_unit_struct(name: Ident) -> UnitStruct {
    +///     let span = name.span();
    +///     UnitStruct {
    +///         struct_token: Token![struct](span),
    +///         ident: name,
    +///         semi_token: Token![;](span),
    +///     }
    +/// }
    +///
    +/// # fn parse(input: ParseStream) -> Result<()> {
    +/// if input.peek(Token![struct]) {
    +///     let unit_struct: UnitStruct = input.parse()?;
    +///     /* ... */
    +/// }
    +/// # Ok(())
    +/// # }
    +/// ```
    +///
    +/// See the [token module] documentation for details and examples.
    +///
    +/// [token module]: crate::token
    +#[macro_export]
    +macro_rules! Token {
    +    [abstract]    => { $crate::token::Abstract };
    +    [as]          => { $crate::token::As };
    +    [async]       => { $crate::token::Async };
    +    [auto]        => { $crate::token::Auto };
    +    [await]       => { $crate::token::Await };
    +    [become]      => { $crate::token::Become };
    +    [box]         => { $crate::token::Box };
    +    [break]       => { $crate::token::Break };
    +    [const]       => { $crate::token::Const };
    +    [continue]    => { $crate::token::Continue };
    +    [crate]       => { $crate::token::Crate };
    +    [default]     => { $crate::token::Default };
    +    [do]          => { $crate::token::Do };
    +    [dyn]         => { $crate::token::Dyn };
    +    [else]        => { $crate::token::Else };
    +    [enum]        => { $crate::token::Enum };
    +    [extern]      => { $crate::token::Extern };
    +    [final]       => { $crate::token::Final };
    +    [fn]          => { $crate::token::Fn };
    +    [for]         => { $crate::token::For };
    +    [if]          => { $crate::token::If };
    +    [impl]        => { $crate::token::Impl };
    +    [in]          => { $crate::token::In };
    +    [let]         => { $crate::token::Let };
    +    [loop]        => { $crate::token::Loop };
    +    [macro]       => { $crate::token::Macro };
    +    [match]       => { $crate::token::Match };
    +    [mod]         => { $crate::token::Mod };
    +    [move]        => { $crate::token::Move };
    +    [mut]         => { $crate::token::Mut };
    +    [override]    => { $crate::token::Override };
    +    [priv]        => { $crate::token::Priv };
    +    [pub]         => { $crate::token::Pub };
    +    [raw]         => { $crate::token::Raw };
    +    [ref]         => { $crate::token::Ref };
    +    [return]      => { $crate::token::Return };
    +    [Self]        => { $crate::token::SelfType };
    +    [self]        => { $crate::token::SelfValue };
    +    [static]      => { $crate::token::Static };
    +    [struct]      => { $crate::token::Struct };
    +    [super]       => { $crate::token::Super };
    +    [trait]       => { $crate::token::Trait };
    +    [try]         => { $crate::token::Try };
    +    [type]        => { $crate::token::Type };
    +    [typeof]      => { $crate::token::Typeof };
    +    [union]       => { $crate::token::Union };
    +    [unsafe]      => { $crate::token::Unsafe };
    +    [unsized]     => { $crate::token::Unsized };
    +    [use]         => { $crate::token::Use };
    +    [virtual]     => { $crate::token::Virtual };
    +    [where]       => { $crate::token::Where };
    +    [while]       => { $crate::token::While };
    +    [yield]       => { $crate::token::Yield };
    +    [&]           => { $crate::token::And };
    +    [&&]          => { $crate::token::AndAnd };
    +    [&=]          => { $crate::token::AndEq };
    +    [@]           => { $crate::token::At };
    +    [^]           => { $crate::token::Caret };
    +    [^=]          => { $crate::token::CaretEq };
    +    [:]           => { $crate::token::Colon };
    +    [,]           => { $crate::token::Comma };
    +    [$]           => { $crate::token::Dollar };
    +    [.]           => { $crate::token::Dot };
    +    [..]          => { $crate::token::DotDot };
    +    [...]         => { $crate::token::DotDotDot };
    +    [..=]         => { $crate::token::DotDotEq };
    +    [=]           => { $crate::token::Eq };
    +    [==]          => { $crate::token::EqEq };
    +    [=>]          => { $crate::token::FatArrow };
    +    [>=]          => { $crate::token::Ge };
    +    [>]           => { $crate::token::Gt };
    +    [<-]          => { $crate::token::LArrow };
    +    [<=]          => { $crate::token::Le };
    +    [<]           => { $crate::token::Lt };
    +    [-]           => { $crate::token::Minus };
    +    [-=]          => { $crate::token::MinusEq };
    +    [!=]          => { $crate::token::Ne };
    +    [!]           => { $crate::token::Not };
    +    [|]           => { $crate::token::Or };
    +    [|=]          => { $crate::token::OrEq };
    +    [||]          => { $crate::token::OrOr };
    +    [::]          => { $crate::token::PathSep };
    +    [%]           => { $crate::token::Percent };
    +    [%=]          => { $crate::token::PercentEq };
    +    [+]           => { $crate::token::Plus };
    +    [+=]          => { $crate::token::PlusEq };
    +    [#]           => { $crate::token::Pound };
    +    [?]           => { $crate::token::Question };
    +    [->]          => { $crate::token::RArrow };
    +    [;]           => { $crate::token::Semi };
    +    [<<]          => { $crate::token::Shl };
    +    [<<=]         => { $crate::token::ShlEq };
    +    [>>]          => { $crate::token::Shr };
    +    [>>=]         => { $crate::token::ShrEq };
    +    [/]           => { $crate::token::Slash };
    +    [/=]          => { $crate::token::SlashEq };
    +    [*]           => { $crate::token::Star };
    +    [*=]          => { $crate::token::StarEq };
    +    [~]           => { $crate::token::Tilde };
    +    [_]           => { $crate::token::Underscore };
    +}
     
     // Not public API.
     #[doc(hidden)]
    -#[cfg(feature = "parsing")]
    -pub mod parsing {
    +#[cfg(feature = "parsing")]
    +pub(crate) mod parsing {
         use crate::buffer::Cursor;
         use crate::error::{Error, Result};
         use crate::parse::ParseStream;
    -    use crate::span::FromSpans;
         use proc_macro2::{Spacing, Span};
     
    -    pub fn keyword(input: ParseStream, token: &str) -> Result<Span> {
    +    pub(crate) fn keyword(input: ParseStream, token: &str) -> Result<Span> {
             input.step(|cursor| {
                 if let Some((ident, rest)) = cursor.ident() {
                     if ident == token {
                         return Ok((ident.span(), rest));
                     }
                 }
    -            Err(cursor.error(format!("expected `{}`", token)))
    +            Err(cursor.error(format!("expected `{}`", token)))
             })
         }
     
    -    pub fn peek_keyword(cursor: Cursor, token: &str) -> bool {
    +    pub(crate) fn peek_keyword(cursor: Cursor, token: &str) -> bool {
             if let Some((ident, _rest)) = cursor.ident() {
                 ident == token
             } else {
    @@ -1925,16 +2091,17 @@
             }
         }
     
    -    pub fn punct<S: FromSpans>(input: ParseStream, token: &str) -> Result<S> {
    -        let mut spans = [input.span(); 3];
    +    #[doc(hidden)]
    +    pub fn punct<const N: usize>(input: ParseStream, token: &str) -> Result<[Span; N]> {
    +        let mut spans = [input.span(); N];
             punct_helper(input, token, &mut spans)?;
    -        Ok(S::from_spans(&spans))
    +        Ok(spans)
         }
     
    -    fn punct_helper(input: ParseStream, token: &str, spans: &mut [Span; 3]) -> Result<()> {
    +    fn punct_helper(input: ParseStream, token: &str, spans: &mut [Span]) -> Result<()> {
             input.step(|cursor| {
                 let mut cursor = *cursor;
    -            assert!(token.len() <= spans.len());
    +            assert_eq!(token.len(), spans.len());
     
                 for (i, ch) in token.chars().enumerate() {
                     match cursor.punct() {
    @@ -1953,11 +2120,12 @@
                     }
                 }
     
    -            Err(Error::new(spans[0], format!("expected `{}`", token)))
    +            Err(Error::new(spans[0], format!("expected `{}`", token)))
             })
         }
     
    -    pub fn peek_punct(mut cursor: Cursor, token: &str) -> bool {
    +    #[doc(hidden)]
    +    pub fn peek_punct(mut cursor: Cursor, token: &str) -> bool {
             for (i, ch) in token.chars().enumerate() {
                 match cursor.punct() {
                     Some((punct, rest)) => {
    @@ -1979,12 +2147,13 @@
     
     // Not public API.
     #[doc(hidden)]
    -#[cfg(feature = "printing")]
    -pub mod printing {
    +#[cfg(feature = "printing")]
    +pub(crate) mod printing {
         use proc_macro2::{Delimiter, Group, Ident, Punct, Spacing, Span, TokenStream};
         use quote::TokenStreamExt;
     
    -    pub fn punct(s: &str, spans: &[Span], tokens: &mut TokenStream) {
    +    #[doc(hidden)]
    +    pub fn punct(s: &str, spans: &[Span], tokens: &mut TokenStream) {
             assert_eq!(s.len(), spans.len());
     
             let mut chars = s.chars();
    @@ -2002,23 +2171,16 @@
             tokens.append(op);
         }
     
    -    pub fn keyword(s: &str, span: Span, tokens: &mut TokenStream) {
    +    pub(crate) fn keyword(s: &str, span: Span, tokens: &mut TokenStream) {
             tokens.append(Ident::new(s, span));
         }
     
    -    pub fn delim<F>(s: &str, span: Span, tokens: &mut TokenStream, f: F)
    -    where
    -        F: FnOnce(&mut TokenStream),
    -    {
    -        let delim = match s {
    -            "(" => Delimiter::Parenthesis,
    -            "[" => Delimiter::Bracket,
    -            "{" => Delimiter::Brace,
    -            " " => Delimiter::None,
    -            _ => panic!("unknown delimiter: {}", s),
    -        };
    -        let mut inner = TokenStream::new();
    -        f(&mut inner);
    +    pub(crate) fn delim(
    +        delim: Delimiter,
    +        span: Span,
    +        tokens: &mut TokenStream,
    +        inner: TokenStream,
    +    ) {
             let mut g = Group::new(delim, inner);
             g.set_span(span);
             tokens.append(g);
    diff --git a/src/syn/tt.rs.html b/src/syn/tt.rs.html
    index aa3c9d5..0c331e0 100644
    --- a/src/syn/tt.rs.html
    +++ b/src/syn/tt.rs.html
    @@ -1,4 +1,5 @@
    -tt.rs - source
    1
    +tt.rs - source

    syn/
    tt.rs

    +1
     2
     3
     4
    @@ -104,13 +105,12 @@
     104
     105
     106
    -107
    -
    use proc_macro2::{Delimiter, TokenStream, TokenTree};
    +107
    use proc_macro2::{Delimiter, TokenStream, TokenTree};
     use std::hash::{Hash, Hasher};
     
    -pub struct TokenTreeHelper<'a>(pub &'a TokenTree);
    +pub(crate) struct TokenTreeHelper<'a>(pub &'a TokenTree);
     
    -impl<'a> PartialEq for TokenTreeHelper<'a> {
    +impl<'a> PartialEq for TokenTreeHelper<'a> {
         fn eq(&self, other: &Self) -> bool {
             use proc_macro2::Spacing;
     
    @@ -152,7 +152,7 @@
         }
     }
     
    -impl<'a> Hash for TokenTreeHelper<'a> {
    +impl<'a> Hash for TokenTreeHelper<'a> {
         fn hash<H: Hasher>(&self, h: &mut H) {
             use proc_macro2::Spacing;
     
    @@ -169,7 +169,7 @@
                     for item in g.stream() {
                         TokenTreeHelper(&item).hash(h);
                     }
    -                0xffu8.hash(h); // terminator w/ a variant we don't normally hash
    +                0xFFu8.hash(h); // terminator w/ a variant we don't normally hash
                 }
                 TokenTree::Punct(op) => {
                     1u8.hash(h);
    @@ -185,9 +185,9 @@
         }
     }
     
    -pub struct TokenStreamHelper<'a>(pub &'a TokenStream);
    +pub(crate) struct TokenStreamHelper<'a>(pub &'a TokenStream);
     
    -impl<'a> PartialEq for TokenStreamHelper<'a> {
    +impl<'a> PartialEq for TokenStreamHelper<'a> {
         fn eq(&self, other: &Self) -> bool {
             let left = self.0.clone().into_iter().collect::<Vec<_>>();
             let right = other.0.clone().into_iter().collect::<Vec<_>>();
    @@ -203,7 +203,7 @@
         }
     }
     
    -impl<'a> Hash for TokenStreamHelper<'a> {
    +impl<'a> Hash for TokenStreamHelper<'a> {
         fn hash<H: Hasher>(&self, state: &mut H) {
             let tts = self.0.clone().into_iter().collect::<Vec<_>>();
             tts.len().hash(state);
    diff --git a/src/syn/ty.rs.html b/src/syn/ty.rs.html
    index e0d44c5..f124fd2 100644
    --- a/src/syn/ty.rs.html
    +++ b/src/syn/ty.rs.html
    @@ -1,4 +1,5 @@
    -ty.rs - source
    1
    +ty.rs - source

    syn/
    ty.rs

    +1
     2
     3
     4
    @@ -1272,53 +1273,28 @@
     1272
     1273
     1274
    -1275
    -1276
    -1277
    -1278
    -1279
    -1280
    -1281
    -1282
    -1283
    -1284
    -1285
    -1286
    -1287
    -1288
    -1289
    -1290
    -1291
    -1292
    -1293
    -1294
    -1295
    -1296
    -1297
    -1298
    -1299
    -1300
    -1301
    -1302
    -1303
    -1304
    -
    use super::*;
    +1275
    use crate::attr::Attribute;
    +use crate::expr::Expr;
    +use crate::generics::{BoundLifetimes, TypeParamBound};
    +use crate::ident::Ident;
    +use crate::lifetime::Lifetime;
    +use crate::lit::LitStr;
    +use crate::mac::Macro;
    +use crate::path::{Path, QSelf};
     use crate::punctuated::Punctuated;
    +use crate::token;
     use proc_macro2::TokenStream;
     
    -ast_enum_of_structs! {
    +ast_enum_of_structs! {
         /// The possible types that a Rust value could have.
         ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    ///
         /// # Syntax tree enum
         ///
         /// This type is a [syntax tree enum].
         ///
    -    /// [syntax tree enum]: Expr#syntax-tree-enums
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    -    #[cfg_attr(not(syn_no_non_exhaustive), non_exhaustive)]
    +    /// [syntax tree enum]: crate::expr::Expr#syntax-tree-enums
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[non_exhaustive]
         pub enum Type {
             /// A fixed size array type: `[T; n]`.
             Array(TypeArray),
    @@ -1352,7 +1328,7 @@
             /// A raw pointer type: `*const T` or `*mut T`.
             Ptr(TypePtr),
     
    -        /// A reference type: `&'a T` or `&'a mut T`.
    +        /// A reference type: `&'a T` or `&'a mut T`.
             Reference(TypeReference),
     
             /// A dynamically sized slice type: `[T]`.
    @@ -1368,36 +1344,29 @@
             /// Tokens in type position not interpreted by Syn.
             Verbatim(TokenStream),
     
    -        // Not public API.
    -        //
    -        // For testing exhaustiveness in downstream code, use the following idiom:
    +        // For testing exhaustiveness in downstream code, use the following idiom:
             //
             //     match ty {
    +        //         #![cfg_attr(test, deny(non_exhaustive_omitted_patterns))]
    +        //
             //         Type::Array(ty) => {...}
             //         Type::BareFn(ty) => {...}
             //         ...
             //         Type::Verbatim(ty) => {...}
             //
    -        //         #[cfg_attr(test, deny(non_exhaustive_omitted_patterns))]
             //         _ => { /* some sane fallback */ }
             //     }
             //
    -        // This way we fail your tests but don't break your library when adding
    +        // This way we fail your tests but don't break your library when adding
             // a variant. You will be notified by a test failure when a variant is
             // added, so that you can add code to handle it, but your library will
             // continue to compile and work for downstream users in the interim.
    -        #[cfg(syn_no_non_exhaustive)]
    -        #[doc(hidden)]
    -        __NonExhaustive,
    -    }
    +    }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A fixed size array type: `[T; n]`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct TypeArray {
             pub bracket_token: token::Bracket,
             pub elem: Box<Type>,
    @@ -1406,12 +1375,9 @@
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A bare function type: `fn(usize) -> bool`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct TypeBareFn {
             pub lifetimes: Option<BoundLifetimes>,
             pub unsafety: Option<Token![unsafe]>,
    @@ -1419,100 +1385,76 @@
             pub fn_token: Token![fn],
             pub paren_token: token::Paren,
             pub inputs: Punctuated<BareFnArg, Token![,]>,
    -        pub variadic: Option<Variadic>,
    +        pub variadic: Option<BareVariadic>,
             pub output: ReturnType,
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A type contained within invisible delimiters.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct TypeGroup {
             pub group_token: token::Group,
             pub elem: Box<Type>,
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// An `impl Bound1 + Bound2 + Bound3` type where `Bound` is a trait or
         /// a lifetime.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct TypeImplTrait {
             pub impl_token: Token![impl],
             pub bounds: Punctuated<TypeParamBound, Token![+]>,
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// Indication that a type should be inferred by the compiler: `_`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct TypeInfer {
             pub underscore_token: Token![_],
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A macro in the type position.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct TypeMacro {
             pub mac: Macro,
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// The never type: `!`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct TypeNever {
             pub bang_token: Token![!],
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A parenthesized type equivalent to the inner type.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct TypeParen {
             pub paren_token: token::Paren,
             pub elem: Box<Type>,
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A path like `std::slice::Iter`, optionally qualified with a
         /// self-type as in `<Vec<T> as SomeTrait>::Associated`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct TypePath {
             pub qself: Option<QSelf>,
             pub path: Path,
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A raw pointer type: `*const T` or `*mut T`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct TypePtr {
             pub star_token: Token![*],
             pub const_token: Option<Token![const]>,
    @@ -1521,12 +1463,9 @@
         }
     }
     
    -ast_struct! {
    -    /// A reference type: `&'a T` or `&'a mut T`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +ast_struct! {
    +    /// A reference type: `&'a T` or `&'a mut T`.
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct TypeReference {
             pub and_token: Token![&],
             pub lifetime: Option<Lifetime>,
    @@ -1535,61 +1474,46 @@
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A dynamically sized slice type: `[T]`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct TypeSlice {
             pub bracket_token: token::Bracket,
             pub elem: Box<Type>,
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A trait object type `dyn Bound1 + Bound2 + Bound3` where `Bound` is a
         /// trait or a lifetime.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct TypeTraitObject {
             pub dyn_token: Option<Token![dyn]>,
             pub bounds: Punctuated<TypeParamBound, Token![+]>,
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// A tuple type: `(A, B, C, String)`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or
    -    /// `"full"` feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct TypeTuple {
             pub paren_token: token::Paren,
             pub elems: Punctuated<Type, Token![,]>,
         }
     }
     
    -ast_struct! {
    -    /// The binary interface of a function: `extern "C"`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +ast_struct! {
    +    /// The binary interface of a function: `extern "C"`.
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct Abi {
             pub extern_token: Token![extern],
             pub name: Option<LitStr>,
         }
     }
     
    -ast_struct! {
    +ast_struct! {
         /// An argument in a function type: the `usize` in `fn(usize) -> bool`.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub struct BareFnArg {
             pub attrs: Vec<Attribute>,
             pub name: Option<(Ident, Token![:])>,
    @@ -1597,34 +1521,20 @@
         }
     }
     
    -ast_struct! {
    -    /// The variadic argument of a foreign function.
    -    ///
    -    /// ```rust
    -    /// # struct c_char;
    -    /// # struct c_int;
    -    /// #
    -    /// extern "C" {
    -    ///     fn printf(format: *const c_char, ...) -> c_int;
    -    ///     //                               ^^^
    -    /// }
    -    /// ```
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    -    pub struct Variadic {
    +ast_struct! {
    +    /// The variadic argument of a function pointer like `fn(usize, ...)`.
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    pub struct BareVariadic {
             pub attrs: Vec<Attribute>,
    +        pub name: Option<(Ident, Token![:])>,
             pub dots: Token![...],
    +        pub comma: Option<Token![,]>,
         }
     }
     
    -ast_enum! {
    +ast_enum! {
         /// Return type of a function signature.
    -    ///
    -    /// *This type is available only if Syn is built with the `"derive"` or `"full"`
    -    /// feature.*
    -    #[cfg_attr(doc_cfg, doc(cfg(any(feature = "full", feature = "derive"))))]
    +    #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
         pub enum ReturnType {
             /// Return type is not specified.
             ///
    @@ -1635,15 +1545,29 @@
         }
     }
     
    -#[cfg(feature = "parsing")]
    -pub mod parsing {
    -    use super::*;
    -    use crate::ext::IdentExt;
    -    use crate::parse::{Parse, ParseStream, Result};
    +#[cfg(feature = "parsing")]
    +pub(crate) mod parsing {
    +    use crate::attr::Attribute;
    +    use crate::error::{self, Result};
    +    use crate::ext::IdentExt as _;
    +    use crate::generics::{BoundLifetimes, TraitBound, TraitBoundModifier, TypeParamBound};
    +    use crate::ident::Ident;
    +    use crate::lifetime::Lifetime;
    +    use crate::mac::{self, Macro};
    +    use crate::parse::{Parse, ParseStream};
         use crate::path;
    -    use proc_macro2::{Punct, Spacing, Span, TokenTree};
    +    use crate::path::{Path, PathArguments, QSelf};
    +    use crate::punctuated::Punctuated;
    +    use crate::token;
    +    use crate::ty::{
    +        Abi, BareFnArg, BareVariadic, ReturnType, Type, TypeArray, TypeBareFn, TypeGroup,
    +        TypeImplTrait, TypeInfer, TypeMacro, TypeNever, TypeParen, TypePath, TypePtr,
    +        TypeReference, TypeSlice, TypeTraitObject, TypeTuple,
    +    };
    +    use crate::verbatim;
    +    use proc_macro2::Span;
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for Type {
             fn parse(input: ParseStream) -> Result<Self> {
                 let allow_plus = true;
    @@ -1658,7 +1582,7 @@
             /// contain a `+` character.
             ///
             /// This parser does not allow a `+`, while the default parser does.
    -        #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +        #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
             pub fn without_plus(input: ParseStream) -> Result<Self> {
                 let allow_plus = false;
                 let allow_group_generic = true;
    @@ -1696,7 +1620,7 @@
                 {
                     if let Type::Path(mut ty) = *group.elem {
                         let arguments = &mut ty.path.segments.last_mut().unwrap().arguments;
    -                    if let PathArguments::None = arguments {
    +                    if arguments.is_none() {
                             *arguments = PathArguments::AngleBracketed(input.parse()?);
                             Path::parse_rest(input, &mut ty.path, false)?;
                             return Ok(Type::Path(ty));
    @@ -1753,7 +1677,15 @@
                             }));
                             while let Some(plus) = input.parse()? {
                                 bounds.push_punct(plus);
    -                            bounds.push_value(input.parse()?);
    +                            bounds.push_value({
    +                                let allow_precise_capture = false;
    +                                let allow_tilde_const = false;
    +                                TypeParamBound::parse_single(
    +                                    input,
    +                                    allow_precise_capture,
    +                                    allow_tilde_const,
    +                                )?
    +                            });
                             }
                             bounds
                         },
    @@ -1807,7 +1739,9 @@
                                             ..trait_bound
                                         })
                                     }
    -                                other @ TypeParamBound::Lifetime(_) => other,
    +                                other @ (TypeParamBound::Lifetime(_)
    +                                | TypeParamBound::PreciseCapture(_)
    +                                | TypeParamBound::Verbatim(_)) => other,
                                 }
                             }
                             _ => break,
    @@ -1819,7 +1753,15 @@
                                 bounds.push_value(first);
                                 while let Some(plus) = input.parse()? {
                                     bounds.push_punct(plus);
    -                                bounds.push_value(input.parse()?);
    +                                bounds.push_value({
    +                                    let allow_precise_capture = false;
    +                                    let allow_tilde_const = false;
    +                                    TypeParamBound::parse_single(
    +                                        input,
    +                                        allow_precise_capture,
    +                                        allow_tilde_const,
    +                                    )?
    +                                });
                                 }
                                 bounds
                             },
    @@ -1834,13 +1776,9 @@
                 || lookahead.peek(Token![unsafe])
                 || lookahead.peek(Token![extern])
             {
    -            let allow_mut_self = true;
    -            if let Some(mut bare_fn) = parse_bare_fn(input, allow_mut_self)? {
    -                bare_fn.lifetimes = lifetimes;
    -                Ok(Type::BareFn(bare_fn))
    -            } else {
    -                Ok(Type::Verbatim(verbatim::between(begin, input)))
    -            }
    +            let mut bare_fn: TypeBareFn = input.parse()?;
    +            bare_fn.lifetimes = lifetimes;
    +            Ok(Type::BareFn(bare_fn))
             } else if lookahead.peek(Ident)
                 || input.peek(Token![super])
                 || input.peek(Token![self])
    @@ -1849,49 +1787,22 @@
                 || lookahead.peek(Token![::])
                 || lookahead.peek(Token![<])
             {
    -            let dyn_token: Option<Token![dyn]> = input.parse()?;
    -            if let Some(dyn_token) = dyn_token {
    -                let dyn_span = dyn_token.span;
    -                let star_token: Option<Token![*]> = input.parse()?;
    -                let bounds = TypeTraitObject::parse_bounds(dyn_span, input, allow_plus)?;
    -                return Ok(if star_token.is_some() {
    -                    Type::Verbatim(verbatim::between(begin, input))
    -                } else {
    -                    Type::TraitObject(TypeTraitObject {
    -                        dyn_token: Some(dyn_token),
    -                        bounds,
    -                    })
    -                });
    -            }
    -
                 let ty: TypePath = input.parse()?;
                 if ty.qself.is_some() {
                     return Ok(Type::Path(ty));
                 }
     
    -            if input.peek(Token![!]) && !input.peek(Token![!=]) {
    -                let mut contains_arguments = false;
    -                for segment in &ty.path.segments {
    -                    match segment.arguments {
    -                        PathArguments::None => {}
    -                        PathArguments::AngleBracketed(_) | PathArguments::Parenthesized(_) => {
    -                            contains_arguments = true;
    -                        }
    -                    }
    -                }
    -
    -                if !contains_arguments {
    -                    let bang_token: Token![!] = input.parse()?;
    -                    let (delimiter, tokens) = mac::parse_delimiter(input)?;
    -                    return Ok(Type::Macro(TypeMacro {
    -                        mac: Macro {
    -                            path: ty.path,
    -                            bang_token,
    -                            delimiter,
    -                            tokens,
    -                        },
    -                    }));
    -                }
    +            if input.peek(Token![!]) && !input.peek(Token![!=]) && ty.path.is_mod_style() {
    +                let bang_token: Token![!] = input.parse()?;
    +                let (delimiter, tokens) = mac::parse_delimiter(input)?;
    +                return Ok(Type::Macro(TypeMacro {
    +                    mac: Macro {
    +                        path: ty.path,
    +                        bang_token,
    +                        delimiter,
    +                        tokens,
    +                    },
    +                }));
                 }
     
                 if lifetimes.is_some() || allow_plus && input.peek(Token![+]) {
    @@ -1913,7 +1824,15 @@
                             {
                                 break;
                             }
    -                        bounds.push_value(input.parse()?);
    +                        bounds.push_value({
    +                            let allow_precise_capture = false;
    +                            let allow_tilde_const = false;
    +                            TypeParamBound::parse_single(
    +                                input,
    +                                allow_precise_capture,
    +                                allow_tilde_const,
    +                            )?
    +                        });
                         }
                     }
                     return Ok(Type::TraitObject(TypeTraitObject {
    @@ -1923,6 +1842,19 @@
                 }
     
                 Ok(Type::Path(ty))
    +        } else if lookahead.peek(Token![dyn]) {
    +            let dyn_token: Token![dyn] = input.parse()?;
    +            let dyn_span = dyn_token.span;
    +            let star_token: Option<Token![*]> = input.parse()?;
    +            let bounds = TypeTraitObject::parse_bounds(dyn_span, input, allow_plus)?;
    +            return Ok(if star_token.is_some() {
    +                Type::Verbatim(verbatim::between(&begin, input))
    +            } else {
    +                Type::TraitObject(TypeTraitObject {
    +                    dyn_token: Some(dyn_token),
    +                    bounds,
    +                })
    +            });
             } else if lookahead.peek(token::Bracket) {
                 let content;
                 let bracket_token = bracketed!(content in input);
    @@ -1957,7 +1889,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for TypeSlice {
             fn parse(input: ParseStream) -> Result<Self> {
                 let content;
    @@ -1968,7 +1900,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for TypeArray {
             fn parse(input: ParseStream) -> Result<Self> {
                 let content;
    @@ -1981,7 +1913,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for TypePtr {
             fn parse(input: ParseStream) -> Result<Self> {
                 let star_token: Token![*] = input.parse()?;
    @@ -2004,81 +1936,67 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for TypeReference {
             fn parse(input: ParseStream) -> Result<Self> {
                 Ok(TypeReference {
                     and_token: input.parse()?,
                     lifetime: input.parse()?,
                     mutability: input.parse()?,
    -                // & binds tighter than +, so we don't allow + here.
    +                // & binds tighter than +, so we don't allow + here.
                     elem: Box::new(input.call(Type::without_plus)?),
                 })
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for TypeBareFn {
             fn parse(input: ParseStream) -> Result<Self> {
    -            let allow_mut_self = false;
    -            parse_bare_fn(input, allow_mut_self).map(Option::unwrap)
    -        }
    -    }
    +            let args;
    +            let mut variadic = None;
     
    -    fn parse_bare_fn(input: ParseStream, allow_mut_self: bool) -> Result<Option<TypeBareFn>> {
    -        let args;
    -        let mut variadic = None;
    -        let mut has_mut_self = false;
    +            Ok(TypeBareFn {
    +                lifetimes: input.parse()?,
    +                unsafety: input.parse()?,
    +                abi: input.parse()?,
    +                fn_token: input.parse()?,
    +                paren_token: parenthesized!(args in input),
    +                inputs: {
    +                    let mut inputs = Punctuated::new();
     
    -        let bare_fn = TypeBareFn {
    -            lifetimes: input.parse()?,
    -            unsafety: input.parse()?,
    -            abi: input.parse()?,
    -            fn_token: input.parse()?,
    -            paren_token: parenthesized!(args in input),
    -            inputs: {
    -                let mut inputs = Punctuated::new();
    +                    while !args.is_empty() {
    +                        let attrs = args.call(Attribute::parse_outer)?;
     
    -                while !args.is_empty() {
    -                    let attrs = args.call(Attribute::parse_outer)?;
    +                        if inputs.empty_or_trailing()
    +                            && (args.peek(Token![...])
    +                                || (args.peek(Ident) || args.peek(Token![_]))
    +                                    && args.peek2(Token![:])
    +                                    && args.peek3(Token![...]))
    +                        {
    +                            variadic = Some(parse_bare_variadic(&args, attrs)?);
    +                            break;
    +                        }
     
    -                    if inputs.empty_or_trailing() && args.peek(Token![...]) {
    -                        variadic = Some(Variadic {
    -                            attrs,
    -                            dots: args.parse()?,
    -                        });
    -                        break;
    -                    }
    -
    -                    if let Some(arg) = parse_bare_fn_arg(&args, allow_mut_self)? {
    +                        let allow_self = inputs.is_empty();
    +                        let arg = parse_bare_fn_arg(&args, allow_self)?;
                             inputs.push_value(BareFnArg { attrs, ..arg });
    -                    } else {
    -                        has_mut_self = true;
    -                    }
    -                    if args.is_empty() {
    -                        break;
    -                    }
    +                        if args.is_empty() {
    +                            break;
    +                        }
     
    -                    let comma = args.parse()?;
    -                    if !has_mut_self {
    +                        let comma = args.parse()?;
                             inputs.push_punct(comma);
                         }
    -                }
     
    -                inputs
    -            },
    -            variadic,
    -            output: input.call(ReturnType::without_plus)?,
    -        };
    -
    -        if has_mut_self {
    -            Ok(None)
    -        } else {
    -            Ok(Some(bare_fn))
    +                    inputs
    +                },
    +                variadic,
    +                output: input.call(ReturnType::without_plus)?,
    +            })
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for TypeNever {
             fn parse(input: ParseStream) -> Result<Self> {
                 Ok(TypeNever {
    @@ -2087,7 +2005,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for TypeInfer {
             fn parse(input: ParseStream) -> Result<Self> {
                 Ok(TypeInfer {
    @@ -2096,7 +2014,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for TypeTuple {
             fn parse(input: ParseStream) -> Result<Self> {
                 let content;
    @@ -2129,7 +2047,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for TypeMacro {
             fn parse(input: ParseStream) -> Result<Self> {
                 Ok(TypeMacro {
    @@ -2138,39 +2056,17 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for TypePath {
             fn parse(input: ParseStream) -> Result<Self> {
                 let expr_style = false;
    -            let (qself, mut path) = path::parsing::qpath(input, expr_style)?;
    -
    -            while path.segments.last().unwrap().arguments.is_empty()
    -                && (input.peek(token::Paren) || input.peek(Token![::]) && input.peek3(token::Paren))
    -            {
    -                input.parse::<Option<Token![::]>>()?;
    -                let args: ParenthesizedGenericArguments = input.parse()?;
    -                let allow_associated_type = cfg!(feature = "full")
    -                    && match &args.output {
    -                        ReturnType::Default => true,
    -                        ReturnType::Type(_, ty) => match **ty {
    -                            // TODO: probably some of the other kinds allow this too.
    -                            Type::Paren(_) => true,
    -                            _ => false,
    -                        },
    -                    };
    -                let parenthesized = PathArguments::Parenthesized(args);
    -                path.segments.last_mut().unwrap().arguments = parenthesized;
    -                if allow_associated_type {
    -                    Path::parse_rest(input, &mut path, expr_style)?;
    -                }
    -            }
    -
    +            let (qself, path) = path::parsing::qpath(input, expr_style)?;
                 Ok(TypePath { qself, path })
             }
         }
     
         impl ReturnType {
    -        #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +        #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
             pub fn without_plus(input: ParseStream) -> Result<Self> {
                 let allow_plus = false;
                 Self::parse(input, allow_plus)
    @@ -2188,7 +2084,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for ReturnType {
             fn parse(input: ParseStream) -> Result<Self> {
                 let allow_plus = true;
    @@ -2196,7 +2092,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for TypeTraitObject {
             fn parse(input: ParseStream) -> Result<Self> {
                 let allow_plus = true;
    @@ -2205,7 +2101,7 @@
         }
     
         impl TypeTraitObject {
    -        #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +        #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
             pub fn without_plus(input: ParseStream) -> Result<Self> {
                 let allow_plus = false;
                 Self::parse(input, allow_plus)
    @@ -2227,7 +2123,14 @@
                 input: ParseStream,
                 allow_plus: bool,
             ) -> Result<Punctuated<TypeParamBound, Token![+]>> {
    -            let bounds = TypeParamBound::parse_multiple(input, allow_plus)?;
    +            let allow_precise_capture = false;
    +            let allow_tilde_const = false;
    +            let bounds = TypeParamBound::parse_multiple(
    +                input,
    +                allow_plus,
    +                allow_precise_capture,
    +                allow_tilde_const,
    +            )?;
                 let mut last_lifetime_span = None;
                 let mut at_least_one_trait = false;
                 for bound in &bounds {
    @@ -2239,18 +2142,21 @@
                         TypeParamBound::Lifetime(lifetime) => {
                             last_lifetime_span = Some(lifetime.ident.span());
                         }
    +                    TypeParamBound::PreciseCapture(_) | TypeParamBound::Verbatim(_) => {
    +                        unreachable!()
    +                    }
                     }
                 }
    -            // Just lifetimes like `'a + 'b` is not a TraitObject.
    +            // Just lifetimes like `'a + 'b` is not a TraitObject.
                 if !at_least_one_trait {
    -                let msg = "at least one trait is required for an object type";
    +                let msg = "at least one trait is required for an object type";
                     return Err(error::new2(dyn_span, last_lifetime_span.unwrap(), msg));
                 }
                 Ok(bounds)
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for TypeImplTrait {
             fn parse(input: ParseStream) -> Result<Self> {
                 let allow_plus = true;
    @@ -2259,7 +2165,7 @@
         }
     
         impl TypeImplTrait {
    -        #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +        #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
             pub fn without_plus(input: ParseStream) -> Result<Self> {
                 let allow_plus = false;
                 Self::parse(input, allow_plus)
    @@ -2267,8 +2173,15 @@
     
             pub(crate) fn parse(input: ParseStream, allow_plus: bool) -> Result<Self> {
                 let impl_token: Token![impl] = input.parse()?;
    -            let bounds = TypeParamBound::parse_multiple(input, allow_plus)?;
    -            let mut last_lifetime_span = None;
    +            let allow_precise_capture = true;
    +            let allow_tilde_const = false;
    +            let bounds = TypeParamBound::parse_multiple(
    +                input,
    +                allow_plus,
    +                allow_precise_capture,
    +                allow_tilde_const,
    +            )?;
    +            let mut last_nontrait_span = None;
                 let mut at_least_one_trait = false;
                 for bound in &bounds {
                     match bound {
    @@ -2277,15 +2190,31 @@
                             break;
                         }
                         TypeParamBound::Lifetime(lifetime) => {
    -                        last_lifetime_span = Some(lifetime.ident.span());
    +                        last_nontrait_span = Some(lifetime.ident.span());
    +                    }
    +                    TypeParamBound::PreciseCapture(precise_capture) => {
    +                        #[cfg(feature = "full")]
    +                        {
    +                            last_nontrait_span = Some(precise_capture.gt_token.span);
    +                        }
    +                        #[cfg(not(feature = "full"))]
    +                        {
    +                            _ = precise_capture;
    +                            unreachable!();
    +                        }
    +                    }
    +                    TypeParamBound::Verbatim(_) => {
    +                        // ~const Trait
    +                        at_least_one_trait = true;
    +                        break;
                         }
                     }
                 }
                 if !at_least_one_trait {
    -                let msg = "at least one trait must be specified";
    +                let msg = "at least one trait must be specified";
                     return Err(error::new2(
                         impl_token.span,
    -                    last_lifetime_span.unwrap(),
    +                    last_nontrait_span.unwrap(),
                         msg,
                     ));
                 }
    @@ -2293,7 +2222,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for TypeGroup {
             fn parse(input: ParseStream) -> Result<Self> {
                 let group = crate::group::parse_group(input)?;
    @@ -2304,7 +2233,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for TypeParen {
             fn parse(input: ParseStream) -> Result<Self> {
                 let allow_plus = false;
    @@ -2325,81 +2254,78 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for BareFnArg {
             fn parse(input: ParseStream) -> Result<Self> {
    -            let allow_mut_self = false;
    -            parse_bare_fn_arg(input, allow_mut_self).map(Option::unwrap)
    +            let allow_self = false;
    +            parse_bare_fn_arg(input, allow_self)
             }
         }
     
    -    fn parse_bare_fn_arg(
    -        input: ParseStream,
    -        mut allow_mut_self: bool,
    -    ) -> Result<Option<BareFnArg>> {
    -        let mut has_mut_self = false;
    -        let arg = BareFnArg {
    -            attrs: input.call(Attribute::parse_outer)?,
    -            name: {
    -                if (input.peek(Ident) || input.peek(Token![_]) || input.peek(Token![self]))
    -                    && input.peek2(Token![:])
    -                    && !input.peek2(Token![::])
    -                {
    -                    let name = input.call(Ident::parse_any)?;
    -                    let colon: Token![:] = input.parse()?;
    -                    Some((name, colon))
    -                } else if allow_mut_self
    -                    && input.peek(Token![mut])
    -                    && input.peek2(Token![self])
    -                    && input.peek3(Token![:])
    -                    && !input.peek3(Token![::])
    -                {
    -                    has_mut_self = true;
    -                    allow_mut_self = false;
    -                    input.parse::<Token![mut]>()?;
    -                    input.parse::<Token![self]>()?;
    -                    input.parse::<Token![:]>()?;
    -                    None
    -                } else {
    -                    None
    -                }
    -            },
    -            ty: if !has_mut_self && input.peek(Token![...]) {
    -                let dot3 = input.parse::<Token![...]>()?;
    -                let args = vec![
    -                    TokenTree::Punct(Punct::new('.', Spacing::Joint)),
    -                    TokenTree::Punct(Punct::new('.', Spacing::Joint)),
    -                    TokenTree::Punct(Punct::new('.', Spacing::Alone)),
    -                ];
    -                let tokens: TokenStream = args
    -                    .into_iter()
    -                    .zip(&dot3.spans)
    -                    .map(|(mut arg, span)| {
    -                        arg.set_span(*span);
    -                        arg
    -                    })
    -                    .collect();
    -                Type::Verbatim(tokens)
    -            } else if allow_mut_self && input.peek(Token![mut]) && input.peek2(Token![self]) {
    -                has_mut_self = true;
    -                input.parse::<Token![mut]>()?;
    -                Type::Path(TypePath {
    -                    qself: None,
    -                    path: input.parse::<Token![self]>()?.into(),
    -                })
    -            } else {
    -                input.parse()?
    -            },
    +    fn parse_bare_fn_arg(input: ParseStream, allow_self: bool) -> Result<BareFnArg> {
    +        let attrs = input.call(Attribute::parse_outer)?;
    +
    +        let begin = input.fork();
    +
    +        let has_mut_self = allow_self && input.peek(Token![mut]) && input.peek2(Token![self]);
    +        if has_mut_self {
    +            input.parse::<Token![mut]>()?;
    +        }
    +
    +        let mut has_self = false;
    +        let mut name = if (input.peek(Ident) || input.peek(Token![_]) || {
    +            has_self = allow_self && input.peek(Token![self]);
    +            has_self
    +        }) && input.peek2(Token![:])
    +            && !input.peek2(Token![::])
    +        {
    +            let name = input.call(Ident::parse_any)?;
    +            let colon: Token![:] = input.parse()?;
    +            Some((name, colon))
    +        } else {
    +            has_self = false;
    +            None
    +        };
    +
    +        let ty = if allow_self && !has_self && input.peek(Token![mut]) && input.peek2(Token![self])
    +        {
    +            input.parse::<Token![mut]>()?;
    +            input.parse::<Token![self]>()?;
    +            None
    +        } else if has_mut_self && name.is_none() {
    +            input.parse::<Token![self]>()?;
    +            None
    +        } else {
    +            Some(input.parse()?)
             };
     
    -        if has_mut_self {
    -            Ok(None)
    -        } else {
    -            Ok(Some(arg))
    -        }
    +        let ty = match ty {
    +            Some(ty) if !has_mut_self => ty,
    +            _ => {
    +                name = None;
    +                Type::Verbatim(verbatim::between(&begin, input))
    +            }
    +        };
    +
    +        Ok(BareFnArg { attrs, name, ty })
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    fn parse_bare_variadic(input: ParseStream, attrs: Vec<Attribute>) -> Result<BareVariadic> {
    +        Ok(BareVariadic {
    +            attrs,
    +            name: if input.peek(Ident) || input.peek(Token![_]) {
    +                let name = input.call(Ident::parse_any)?;
    +                let colon: Token![:] = input.parse()?;
    +                Some((name, colon))
    +            } else {
    +                None
    +            },
    +            dots: input.parse()?,
    +            comma: input.parse()?,
    +        })
    +    }
    +
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for Abi {
             fn parse(input: ParseStream) -> Result<Self> {
                 Ok(Abi {
    @@ -2409,7 +2335,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
         impl Parse for Option<Abi> {
             fn parse(input: ParseStream) -> Result<Self> {
                 if input.peek(Token![extern]) {
    @@ -2421,15 +2347,21 @@
         }
     }
     
    -#[cfg(feature = "printing")]
    +#[cfg(feature = "printing")]
     mod printing {
    -    use super::*;
         use crate::attr::FilterAttrs;
    +    use crate::path;
    +    use crate::path::printing::PathStyle;
         use crate::print::TokensOrDefault;
    +    use crate::ty::{
    +        Abi, BareFnArg, BareVariadic, ReturnType, TypeArray, TypeBareFn, TypeGroup, TypeImplTrait,
    +        TypeInfer, TypeMacro, TypeNever, TypeParen, TypePath, TypePtr, TypeReference, TypeSlice,
    +        TypeTraitObject, TypeTuple,
    +    };
         use proc_macro2::TokenStream;
         use quote::{ToTokens, TokenStreamExt};
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for TypeSlice {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 self.bracket_token.surround(tokens, |tokens| {
    @@ -2438,7 +2370,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for TypeArray {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 self.bracket_token.surround(tokens, |tokens| {
    @@ -2449,7 +2381,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for TypePtr {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 self.star_token.to_tokens(tokens);
    @@ -2463,7 +2395,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for TypeReference {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 self.and_token.to_tokens(tokens);
    @@ -2473,7 +2405,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for TypeBareFn {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 self.lifetimes.to_tokens(tokens);
    @@ -2494,30 +2426,35 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for TypeNever {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 self.bang_token.to_tokens(tokens);
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for TypeTuple {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 self.paren_token.surround(tokens, |tokens| {
                     self.elems.to_tokens(tokens);
    +                // If we only have one argument, we need a trailing comma to
    +                // distinguish TypeTuple from TypeParen.
    +                if self.elems.len() == 1 && !self.elems.trailing_punct() {
    +                    <Token![,]>::default().to_tokens(tokens);
    +                }
                 });
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for TypePath {
             fn to_tokens(&self, tokens: &mut TokenStream) {
    -            path::printing::print_path(tokens, &self.qself, &self.path);
    +            path::printing::print_qpath(tokens, &self.qself, &self.path, PathStyle::AsWritten);
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for TypeTraitObject {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 self.dyn_token.to_tokens(tokens);
    @@ -2525,7 +2462,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for TypeImplTrait {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 self.impl_token.to_tokens(tokens);
    @@ -2533,7 +2470,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for TypeGroup {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 self.group_token.surround(tokens, |tokens| {
    @@ -2542,7 +2479,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for TypeParen {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 self.paren_token.surround(tokens, |tokens| {
    @@ -2551,21 +2488,21 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for TypeInfer {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 self.underscore_token.to_tokens(tokens);
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for TypeMacro {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 self.mac.to_tokens(tokens);
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for ReturnType {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 match self {
    @@ -2578,7 +2515,7 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for BareFnArg {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 tokens.append_all(self.attrs.outer());
    @@ -2590,15 +2527,20 @@
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    -    impl ToTokens for Variadic {
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
    +    impl ToTokens for BareVariadic {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 tokens.append_all(self.attrs.outer());
    +            if let Some((name, colon)) = &self.name {
    +                name.to_tokens(tokens);
    +                colon.to_tokens(tokens);
    +            }
                 self.dots.to_tokens(tokens);
    +            self.comma.to_tokens(tokens);
             }
         }
     
    -    #[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
    +    #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
         impl ToTokens for Abi {
             fn to_tokens(&self, tokens: &mut TokenStream) {
                 self.extern_token.to_tokens(tokens);
    diff --git a/src/syn/verbatim.rs.html b/src/syn/verbatim.rs.html
    index fdedb31..4352084 100644
    --- a/src/syn/verbatim.rs.html
    +++ b/src/syn/verbatim.rs.html
    @@ -1,4 +1,5 @@
    -verbatim.rs - source
    1
    +verbatim.rs - source

    syn/
    verbatim.rs

    +1
     2
     3
     4
    @@ -30,13 +31,12 @@
     30
     31
     32
    -33
    -
    use crate::parse::{ParseBuffer, ParseStream};
    +33
    use crate::parse::ParseStream;
     use proc_macro2::{Delimiter, TokenStream};
     use std::cmp::Ordering;
     use std::iter;
     
    -pub fn between<'a>(begin: ParseBuffer<'a>, end: ParseStream<'a>) -> TokenStream {
    +pub(crate) fn between<'a>(begin: ParseStream<'a>, end: ParseStream<'a>) -> TokenStream {
         let end = end.cursor();
         let mut cursor = begin.cursor();
         assert!(crate::buffer::same_buffer(end, cursor));
    @@ -55,7 +55,7 @@
                     cursor = inside;
                     continue;
                 } else {
    -                panic!("verbatim end must not be inside a delimited group");
    +                panic!("verbatim end must not be inside a delimited group");
                 }
             }
     
    diff --git a/src/synstructure/lib.rs.html b/src/synstructure/lib.rs.html
    index 512820c..42c6e13 100644
    --- a/src/synstructure/lib.rs.html
    +++ b/src/synstructure/lib.rs.html
    @@ -1,4 +1,5 @@
    -lib.rs - source
    1
    +lib.rs - source

    synstructure/
    lib.rs

    +1
     2
     3
     4
    @@ -2486,7 +2487,74 @@
     2486
     2487
     2488
    -
    //! This crate provides helper types for matching against enum variants, and
    +2489
    +2490
    +2491
    +2492
    +2493
    +2494
    +2495
    +2496
    +2497
    +2498
    +2499
    +2500
    +2501
    +2502
    +2503
    +2504
    +2505
    +2506
    +2507
    +2508
    +2509
    +2510
    +2511
    +2512
    +2513
    +2514
    +2515
    +2516
    +2517
    +2518
    +2519
    +2520
    +2521
    +2522
    +2523
    +2524
    +2525
    +2526
    +2527
    +2528
    +2529
    +2530
    +2531
    +2532
    +2533
    +2534
    +2535
    +2536
    +2537
    +2538
    +2539
    +2540
    +2541
    +2542
    +2543
    +2544
    +2545
    +2546
    +2547
    +2548
    +2549
    +2550
    +2551
    +2552
    +2553
    +2554
    +2555
    +2556
    //! This crate provides helper types for matching against enum variants, and
     //! extracting bindings to each of the fields in the deriving Struct or Enum in
     //! a generic way.
     //!
    @@ -2522,7 +2590,7 @@
     //!         }
     //!     })
     //! }
    -//! # const _IGNORE: &'static str = stringify!(
    +//! # const _IGNORE: &'static str = stringify!(
     //! synstructure::decl_derive!([WalkFields] => walkfields_derive);
     //! # );
     //!
    @@ -2538,8 +2606,7 @@
     //!             }
     //!         }
     //!         expands to {
    -//!             #[allow(non_upper_case_globals)]
    -//!             const _DERIVE_synstructure_test_traits_WalkFields_FOR_A: () = {
    +//!             const _: () = {
     //!                 extern crate synstructure_test_traits;
     //!                 impl<T> synstructure_test_traits::WalkFields for A<T>
     //!                     where T: synstructure_test_traits::WalkFields
    @@ -2592,7 +2659,7 @@
     //!         }
     //!     })
     //! }
    -//! # const _IGNORE: &'static str = stringify!(
    +//! # const _IGNORE: &'static str = stringify!(
     //! synstructure::decl_derive!([Interest] => interest_derive);
     //! # );
     //!
    @@ -2608,8 +2675,7 @@
     //!             }
     //!         }
     //!         expands to {
    -//!             #[allow(non_upper_case_globals)]
    -//!             const _DERIVE_synstructure_test_traits_Interest_FOR_A: () = {
    +//!             const _: () = {
     //!                 extern crate synstructure_test_traits;
     //!                 impl<T> synstructure_test_traits::Interest for A<T>
     //!                     where T: synstructure_test_traits::Interest
    @@ -2637,9 +2703,17 @@
     //! For more example usage, consider investigating the `abomonation_derive` crate,
     //! which makes use of this crate, and is fairly simple.
     
    -#[cfg(all(
    -    not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
    -    feature = "proc-macro"
    +#![allow(
    +    clippy::default_trait_access,
    +    clippy::missing_errors_doc,
    +    clippy::missing_panics_doc,
    +    clippy::must_use_candidate,
    +    clippy::needless_pass_by_value
    +)]
    +
    +#[cfg(all(
    +    not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
    +    feature = "proc-macro"
     ))]
     extern crate proc_macro;
     
    @@ -2654,13 +2728,11 @@
     };
     
     use quote::{format_ident, quote_spanned, ToTokens};
    -// re-export the quote! macro so we can depend on it being around in our macro's
    +// re-export the quote! macro so we can depend on it being around in our macro's
     // implementations.
     #[doc(hidden)]
     pub use quote::quote;
     
    -use unicode_xid::UnicodeXID;
    -
     use proc_macro2::{Span, TokenStream, TokenTree};
     
     // NOTE: This module has documentation hidden, as it only exports macros (which
    @@ -2670,7 +2742,8 @@
     pub mod macros;
     
     /// Changes how bounds are added
    -#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
    +#[allow(clippy::manual_non_exhaustive)]
    +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
     pub enum AddBounds {
         /// Add for fields and generics
         Both,
    @@ -2721,34 +2794,18 @@
     }
     
     // Internal method for extracting the set of generics which have been matched.
    -fn fetch_generics<'a>(set: &[bool], generics: &'a Generics) -> Vec<&'a Ident> {
    +fn fetch_generics<'a>(set: &[bool], generics: &'a Generics) -> Vec<&'a Ident> {
         let mut tys = vec![];
         for (&seen, param) in set.iter().zip(generics.params.iter()) {
             if seen {
                 if let GenericParam::Type(tparam) = param {
    -                tys.push(&tparam.ident)
    +                tys.push(&tparam.ident);
                 }
             }
         }
         tys
     }
     
    -// Internal method for sanitizing an identifier for hygiene purposes.
    -fn sanitize_ident(s: &str) -> Ident {
    -    let mut res = String::with_capacity(s.len());
    -    for mut c in s.chars() {
    -        if !UnicodeXID::is_xid_continue(c) {
    -            c = '_'
    -        }
    -        // Deduplicate consecutive _ characters.
    -        if res.ends_with('_') && c == '_' {
    -            continue;
    -        }
    -        res.push(c);
    -    }
    -    Ident::new(&res, Span::call_site())
    -}
    -
     // Internal method to merge two Generics objects together intelligently.
     fn merge_generics(into: &mut Generics, from: &Generics) -> Result<()> {
         // Try to add the param into `into`, and merge parmas with identical names.
    @@ -2761,7 +2818,7 @@
                             return Err(Error::new_spanned(
                                 p,
                                 format!(
    -                                "Attempted to merge conflicting generic parameters: {} and {}",
    +                                "Attempted to merge conflicting generic parameters: {} and {}",
                                     quote!(#op),
                                     quote!(#p)
                                 ),
    @@ -2774,14 +2831,14 @@
                             return Err(Error::new_spanned(
                                 p,
                                 format!(
    -                                "Attempted to merge conflicting generic parameters: {} and {}",
    +                                "Attempted to merge conflicting generic parameters: {} and {}",
                                     quote!(#op),
                                     quote!(#p)
                                 ),
                             ));
                         }
                     }
    -                // We don't support merging Const parameters, because that wouldn't make much sense.
    +                // We don't support merging Const parameters, because that wouldn't make much sense.
                     _ => (),
                 }
             }
    @@ -2798,7 +2855,7 @@
         Ok(())
     }
     
    -/// Helper method which does the same thing as rustc 1.20's
    +/// Helper method which does the same thing as rustc 1.20's
     /// `Option::get_or_insert_with`. This method is used to keep backwards
     /// compatibility with rustc 1.15.
     fn get_or_insert_with<T, F>(opt: &mut Option<T>, f: F) -> &mut T
    @@ -2816,39 +2873,39 @@
     }
     
     /// Information about a specific binding. This contains both an `Ident`
    -/// reference to the given field, and the syn `&'a Field` descriptor for that
    +/// reference to the given field, and the syn `&'a Field` descriptor for that
     /// field.
     ///
     /// This type supports `quote::ToTokens`, so can be directly used within the
     /// `quote!` macro. It expands to a reference to the matched field.
     #[derive(Debug, Clone, PartialEq, Eq, Hash)]
    -pub struct BindingInfo<'a> {
    +pub struct BindingInfo<'a> {
         /// The name which this BindingInfo will bind to.
         pub binding: Ident,
     
         /// The type of binding which this BindingInfo will create.
         pub style: BindStyle,
     
    -    field: &'a Field,
    +    field: &'a Field,
     
         // These are used to determine which type parameters are avaliable.
    -    generics: &'a Generics,
    +    generics: &'a Generics,
         seen_generics: Vec<bool>,
         // The original index of the binding
         // this will not change when .filter() is called
         index: usize,
     }
     
    -impl<'a> ToTokens for BindingInfo<'a> {
    +impl<'a> ToTokens for BindingInfo<'a> {
         fn to_tokens(&self, tokens: &mut TokenStream) {
             self.binding.to_tokens(tokens);
         }
     }
     
    -impl<'a> BindingInfo<'a> {
    +impl<'a> BindingInfo<'a> {
         /// Returns a reference to the underlying `syn` AST node which this
         /// `BindingInfo` references
    -    pub fn ast(&self) -> &'a Field {
    +    pub fn ast(&self) -> &'a Field {
             self.field
         }
     
    @@ -2878,7 +2935,7 @@
         }
     
         /// Returns a list of the type parameters which are referenced in this
    -    /// field's type.
    +    /// field's type.
         ///
         /// # Caveat
         ///
    @@ -2899,50 +2956,50 @@
         ///
         /// assert_eq!(
         ///     s.variants()[0].bindings()[0].referenced_ty_params(),
    -    ///     &[&quote::format_ident!("T")]
    +    ///     &[&quote::format_ident!("T")]
         /// );
         /// ```
    -    pub fn referenced_ty_params(&self) -> Vec<&'a Ident> {
    +    pub fn referenced_ty_params(&self) -> Vec<&'a Ident> {
             fetch_generics(&self.seen_generics, self.generics)
         }
     }
     
    -/// This type is similar to `syn`'s `Variant` type, however each of the fields
    +/// This type is similar to `syn`'s `Variant` type, however each of the fields
     /// are references rather than owned. When this is used as the AST for a real
     /// variant, this struct simply borrows the fields of the `syn::Variant`,
     /// however this type may also be used as the sole variant for a struct.
     #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
    -pub struct VariantAst<'a> {
    -    pub attrs: &'a [Attribute],
    -    pub ident: &'a Ident,
    -    pub fields: &'a Fields,
    -    pub discriminant: &'a Option<(token::Eq, Expr)>,
    +pub struct VariantAst<'a> {
    +    pub attrs: &'a [Attribute],
    +    pub ident: &'a Ident,
    +    pub fields: &'a Fields,
    +    pub discriminant: &'a Option<(token::Eq, Expr)>,
     }
     
    -/// A wrapper around a `syn::DeriveInput`'s variant which provides utilities
    +/// A wrapper around a `syn::DeriveInput`'s variant which provides utilities
     /// for destructuring `Variant`s with `match` expressions.
     #[derive(Debug, Clone, PartialEq, Eq, Hash)]
    -pub struct VariantInfo<'a> {
    -    pub prefix: Option<&'a Ident>,
    -    bindings: Vec<BindingInfo<'a>>,
    -    ast: VariantAst<'a>,
    -    generics: &'a Generics,
    +pub struct VariantInfo<'a> {
    +    pub prefix: Option<&'a Ident>,
    +    bindings: Vec<BindingInfo<'a>>,
    +    ast: VariantAst<'a>,
    +    generics: &'a Generics,
         // The original length of `bindings` before any `.filter()` calls
         original_length: usize,
     }
     
    -/// Helper function used by the VariantInfo constructor. Walks all of the types
    +/// Helper function used by the `VariantInfo` constructor. Walks all of the types
     /// in `field` and returns a list of the type parameters from `ty_params` which
     /// are referenced in the field.
     fn get_ty_params(field: &Field, generics: &Generics) -> Vec<bool> {
         // Helper type. Discovers all identifiers inside of the visited type,
         // and calls a callback with them.
    -    struct BoundTypeLocator<'a> {
    +    struct BoundTypeLocator<'a> {
             result: Vec<bool>,
    -        generics: &'a Generics,
    +        generics: &'a Generics,
         }
     
    -    impl<'a> Visit<'a> for BoundTypeLocator<'a> {
    +    impl<'a> Visit<'a> for BoundTypeLocator<'a> {
             // XXX: This also (intentionally) captures paths like T::SomeType. Is
             // this desirable?
             fn visit_ident(&mut self, id: &Ident) {
    @@ -2955,13 +3012,13 @@
                 }
             }
     
    -        fn visit_type_macro(&mut self, x: &'a TypeMacro) {
    -            // If we see a type_mac declaration, then we can't know what type parameters
    +        fn visit_type_macro(&mut self, x: &'a TypeMacro) {
    +            // If we see a type_mac declaration, then we can't know what type parameters
                 // it might be binding, so we presume it binds all of them.
                 for r in &mut self.result {
                     *r = true;
                 }
    -            visit::visit_type_macro(self, x)
    +            visit::visit_type_macro(self, x);
             }
         }
     
    @@ -2975,8 +3032,8 @@
         btl.result
     }
     
    -impl<'a> VariantInfo<'a> {
    -    fn new(ast: VariantAst<'a>, prefix: Option<&'a Ident>, generics: &'a Generics) -> Self {
    +impl<'a> VariantInfo<'a> {
    +    fn new(ast: VariantAst<'a>, prefix: Option<&'a Ident>, generics: &'a Generics) -> Self {
             let bindings = match ast.fields {
                 Fields::Unit => vec![],
                 Fields::Unnamed(FieldsUnnamed {
    @@ -2990,7 +3047,7 @@
                             BindingInfo {
                                 // XXX: This has to be call_site to avoid privacy
                                 // when deriving on private fields.
    -                            binding: format_ident!("__binding_{}", i),
    +                            binding: format_ident!("__binding_{}", i),
                                 style: BindStyle::Ref,
                                 field,
                                 generics,
    @@ -3013,18 +3070,18 @@
         }
     
         /// Returns a slice of the bindings in this Variant.
    -    pub fn bindings(&self) -> &[BindingInfo<'a>] {
    +    pub fn bindings(&self) -> &[BindingInfo<'a>] {
             &self.bindings
         }
     
         /// Returns a mut slice of the bindings in this Variant.
    -    pub fn bindings_mut(&mut self) -> &mut [BindingInfo<'a>] {
    +    pub fn bindings_mut(&mut self) -> &mut [BindingInfo<'a>] {
             &mut self.bindings
         }
     
         /// Returns a `VariantAst` object which contains references to the
         /// underlying `syn` AST node which this `Variant` was created from.
    -    pub fn ast(&self) -> VariantAst<'a> {
    +    pub fn ast(&self) -> VariantAst<'a> {
             self.ast
         }
     
    @@ -3145,7 +3202,7 @@
                             func(field, i).to_tokens(t);
                             quote!(,).to_tokens(t);
                         }
    -                })
    +                });
                 }
                 Fields::Named(FieldsNamed { named, .. }) => {
                     token::Brace::default().surround(&mut t, |t| {
    @@ -3155,7 +3212,7 @@
                             func(field, i).to_tokens(t);
                             quote!(,).to_tokens(t);
                         }
    -                })
    +                });
                 }
             }
             t
    @@ -3179,19 +3236,19 @@
         /// let s = Structure::new(&di);
         ///
         /// assert_eq!(
    -    ///     s.variants()[0].each(|bi| quote!(println!("{:?}", #bi))).to_string(),
    +    ///     s.variants()[0].each(|bi| quote!(println!("{:?}", #bi))).to_string(),
         ///
         ///     quote!{
         ///         A::B(ref __binding_0, ref __binding_1,) => {
    -    ///             { println!("{:?}", __binding_0) }
    -    ///             { println!("{:?}", __binding_1) }
    +    ///             { println!("{:?}", __binding_0) }
    +    ///             { println!("{:?}", __binding_1) }
         ///         }
         ///     }.to_string()
         /// );
         /// ```
         pub fn each<F, R>(&self, mut f: F) -> TokenStream
         where
    -        F: FnMut(&BindingInfo<'_>) -> R,
    +        F: FnMut(&BindingInfo<'_>) -> R,
             R: ToTokens,
         {
             let pat = self.pat();
    @@ -3234,7 +3291,7 @@
         /// ```
         pub fn fold<F, I, R>(&self, init: I, mut f: F) -> TokenStream
         where
    -        F: FnMut(TokenStream, &BindingInfo<'_>) -> R,
    +        F: FnMut(TokenStream, &BindingInfo<'_>) -> R,
             I: ToTokens,
             R: ToTokens,
         {
    @@ -3267,30 +3324,95 @@
         /// let mut s = Structure::new(&di);
         ///
         /// s.variants_mut()[0].filter(|bi| {
    -    ///     bi.ast().ident == Some(quote::format_ident!("b"))
    +    ///     bi.ast().ident == Some(quote::format_ident!("b"))
         /// });
         ///
         /// assert_eq!(
    -    ///     s.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
    +    ///     s.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
         ///
         ///     quote!{
         ///         A::B{ b: ref __binding_1, .. } => {
    -    ///             { println!("{:?}", __binding_1) }
    +    ///             { println!("{:?}", __binding_1) }
         ///         }
         ///         A::C{ a: ref __binding_0, } => {
    -    ///             { println!("{:?}", __binding_0) }
    +    ///             { println!("{:?}", __binding_0) }
         ///         }
         ///     }.to_string()
         /// );
         /// ```
         pub fn filter<F>(&mut self, f: F) -> &mut Self
         where
    -        F: FnMut(&BindingInfo<'_>) -> bool,
    +        F: FnMut(&BindingInfo<'_>) -> bool,
         {
             self.bindings.retain(f);
             self
         }
     
    +    /// Iterates all the bindings of this `Variant` object and uses a closure to determine if a
    +    /// binding should be removed. If the closure returns `true` the binding is removed from the
    +    /// variant. If the closure returns `false`, the binding remains in the variant.
    +    ///
    +    /// All the removed bindings are moved to a new `Variant` object which is otherwise identical
    +    /// to the current one. To understand the effects of removing a binding from a variant check
    +    /// the [`VariantInfo::filter`] documentation.
    +    ///
    +    /// # Example
    +    /// ```
    +    /// # use synstructure::*;
    +    /// let di: syn::DeriveInput = syn::parse_quote! {
    +    ///     enum A {
    +    ///         B{ a: i32, b: i32 },
    +    ///         C{ a: u32 },
    +    ///     }
    +    /// };
    +    /// let mut s = Structure::new(&di);
    +    ///
    +    /// let mut with_b = &mut s.variants_mut()[0];
    +    ///
    +    /// let with_a = with_b.drain_filter(|bi| {
    +    ///     bi.ast().ident == Some(quote::format_ident!("a"))
    +    /// });
    +    ///
    +    /// assert_eq!(
    +    ///     with_a.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
    +    ///
    +    ///     quote!{
    +    ///         A::B{ a: ref __binding_0, .. } => {
    +    ///             { println!("{:?}", __binding_0) }
    +    ///         }
    +    ///     }.to_string()
    +    /// );
    +    ///
    +    /// assert_eq!(
    +    ///     with_b.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
    +    ///
    +    ///     quote!{
    +    ///         A::B{ b: ref __binding_1, .. } => {
    +    ///             { println!("{:?}", __binding_1) }
    +    ///         }
    +    ///     }.to_string()
    +    /// );
    +    /// ```
    +    #[allow(clippy::return_self_not_must_use)]
    +    pub fn drain_filter<F>(&mut self, mut f: F) -> Self
    +    where
    +        F: FnMut(&BindingInfo<'_>) -> bool,
    +    {
    +        let mut other = VariantInfo {
    +            prefix: self.prefix,
    +            bindings: vec![],
    +            ast: self.ast,
    +            generics: self.generics,
    +            original_length: self.original_length,
    +        };
    +
    +        let (other_bindings, self_bindings) = self.bindings.drain(..).partition(&mut f);
    +        other.bindings = other_bindings;
    +        self.bindings = self_bindings;
    +
    +        other
    +    }
    +
         /// Remove the binding at the given index.
         ///
         /// # Panics
    @@ -3318,25 +3440,25 @@
         /// s.variants_mut()[0].bind_with(|bi| BindStyle::RefMut);
         ///
         /// assert_eq!(
    -    ///     s.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
    +    ///     s.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
         ///
         ///     quote!{
         ///         A::B(ref mut __binding_0, ref mut __binding_1,) => {
    -    ///             { println!("{:?}", __binding_0) }
    -    ///             { println!("{:?}", __binding_1) }
    +    ///             { println!("{:?}", __binding_0) }
    +    ///             { println!("{:?}", __binding_1) }
         ///         }
         ///         A::C(ref __binding_0,) => {
    -    ///             { println!("{:?}", __binding_0) }
    +    ///             { println!("{:?}", __binding_0) }
         ///         }
         ///     }.to_string()
         /// );
         /// ```
         pub fn bind_with<F>(&mut self, mut f: F) -> &mut Self
         where
    -        F: FnMut(&BindingInfo<'_>) -> BindStyle,
    +        F: FnMut(&BindingInfo<'_>) -> BindStyle,
         {
             for binding in &mut self.bindings {
    -            binding.style = f(&binding);
    +            binding.style = f(binding);
             }
             self
         }
    @@ -3364,15 +3486,15 @@
         /// s.variants_mut()[0].binding_name(|bi, i| bi.ident.clone().unwrap());
         ///
         /// assert_eq!(
    -    ///     s.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
    +    ///     s.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
         ///
         ///     quote!{
         ///         A::B{ a: ref a, b: ref b, } => {
    -    ///             { println!("{:?}", a) }
    -    ///             { println!("{:?}", b) }
    +    ///             { println!("{:?}", a) }
    +    ///             { println!("{:?}", b) }
         ///         }
         ///         A::C{ a: ref __binding_0, } => {
    -    ///             { println!("{:?}", __binding_0) }
    +    ///             { println!("{:?}", __binding_0) }
         ///         }
         ///     }.to_string()
         /// );
    @@ -3388,7 +3510,7 @@
         }
     
         /// Returns a list of the type parameters which are referenced in this
    -    /// field's type.
    +    /// field's type.
         ///
         /// # Caveat
         ///
    @@ -3409,10 +3531,10 @@
         ///
         /// assert_eq!(
         ///     s.variants()[0].bindings()[0].referenced_ty_params(),
    -    ///     &[&quote::format_ident!("T")]
    +    ///     &[&quote::format_ident!("T")]
         /// );
         /// ```
    -    pub fn referenced_ty_params(&self) -> Vec<&'a Ident> {
    +    pub fn referenced_ty_params(&self) -> Vec<&'a Ident> {
             let mut flags = Vec::new();
             for binding in &self.bindings {
                 generics_fuse(&mut flags, &binding.seen_generics);
    @@ -3424,17 +3546,16 @@
     /// A wrapper around a `syn::DeriveInput` which provides utilities for creating
     /// custom derive trait implementations.
     #[derive(Debug, Clone, PartialEq, Eq, Hash)]
    -pub struct Structure<'a> {
    -    variants: Vec<VariantInfo<'a>>,
    +pub struct Structure<'a> {
    +    variants: Vec<VariantInfo<'a>>,
         omitted_variants: bool,
    -    underscore_const: bool,
    -    ast: &'a DeriveInput,
    +    ast: &'a DeriveInput,
         extra_impl: Vec<GenericParam>,
         extra_predicates: Vec<WherePredicate>,
         add_bounds: AddBounds,
     }
     
    -impl<'a> Structure<'a> {
    +impl<'a> Structure<'a> {
         /// Create a new `Structure` with the variants and fields from the passed-in
         /// `DeriveInput`.
         ///
    @@ -3442,8 +3563,8 @@
         ///
         /// This method will panic if the provided AST node represents an untagged
         /// union.
    -    pub fn new(ast: &'a DeriveInput) -> Self {
    -        Self::try_new(ast).expect("Unable to create synstructure::Structure")
    +    pub fn new(ast: &'a DeriveInput) -> Self {
    +        Self::try_new(ast).expect("Unable to create synstructure::Structure")
         }
     
         /// Create a new `Structure` with the variants and fields from the passed-in
    @@ -3451,7 +3572,7 @@
         ///
         /// Unlike `Structure::new`, this method does not panic if the provided AST
         /// node represents an untagged union.
    -    pub fn try_new(ast: &'a DeriveInput) -> Result<Self> {
    +    pub fn try_new(ast: &'a DeriveInput) -> Result<Self> {
             let variants = match &ast.data {
                 Data::Enum(data) => (&data.variants)
                     .into_iter()
    @@ -3469,21 +3590,12 @@
                     })
                     .collect::<Vec<_>>(),
                 Data::Struct(data) => {
    -                // SAFETY NOTE: Normally putting an `Expr` in static storage
    -                // wouldn't be safe, because it could contain `Term` objects
    -                // which use thread-local interning. However, this static always
    -                // contains the value `None`. Thus, it will never contain any
    -                // unsafe values.
    -                struct UnsafeMakeSync(Option<(token::Eq, Expr)>);
    -                unsafe impl Sync for UnsafeMakeSync {}
    -                static NONE_DISCRIMINANT: UnsafeMakeSync = UnsafeMakeSync(None);
    -
                     vec![VariantInfo::new(
                         VariantAst {
                             attrs: &ast.attrs,
                             ident: &ast.ident,
                             fields: &data.fields,
    -                        discriminant: &NONE_DISCRIMINANT.0,
    +                        discriminant: &None,
                         },
                         None,
                         &ast.generics,
    @@ -3492,7 +3604,7 @@
                 Data::Union(_) => {
                     return Err(Error::new_spanned(
                         ast,
    -                    "unexpected unsupported untagged union",
    +                    "unexpected unsupported untagged union",
                     ));
                 }
             };
    @@ -3500,7 +3612,6 @@
             Ok(Structure {
                 variants,
                 omitted_variants: false,
    -            underscore_const: false,
                 ast,
                 extra_impl: vec![],
                 extra_predicates: vec![],
    @@ -3509,18 +3620,18 @@
         }
     
         /// Returns a slice of the variants in this Structure.
    -    pub fn variants(&self) -> &[VariantInfo<'a>] {
    +    pub fn variants(&self) -> &[VariantInfo<'a>] {
             &self.variants
         }
     
         /// Returns a mut slice of the variants in this Structure.
    -    pub fn variants_mut(&mut self) -> &mut [VariantInfo<'a>] {
    +    pub fn variants_mut(&mut self) -> &mut [VariantInfo<'a>] {
             &mut self.variants
         }
     
         /// Returns a reference to the underlying `syn` AST node which this
         /// `Structure` was created from.
    -    pub fn ast(&self) -> &'a DeriveInput {
    +    pub fn ast(&self) -> &'a DeriveInput {
             self.ast
         }
     
    @@ -3547,22 +3658,22 @@
         /// let s = Structure::new(&di);
         ///
         /// assert_eq!(
    -    ///     s.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
    +    ///     s.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
         ///
         ///     quote!{
         ///         A::B(ref __binding_0, ref __binding_1,) => {
    -    ///             { println!("{:?}", __binding_0) }
    -    ///             { println!("{:?}", __binding_1) }
    +    ///             { println!("{:?}", __binding_0) }
    +    ///             { println!("{:?}", __binding_1) }
         ///         }
         ///         A::C(ref __binding_0,) => {
    -    ///             { println!("{:?}", __binding_0) }
    +    ///             { println!("{:?}", __binding_0) }
         ///         }
         ///     }.to_string()
         /// );
         /// ```
         pub fn each<F, R>(&self, mut f: F) -> TokenStream
         where
    -        F: FnMut(&BindingInfo<'_>) -> R,
    +        F: FnMut(&BindingInfo<'_>) -> R,
             R: ToTokens,
         {
             let mut t = TokenStream::new();
    @@ -3610,7 +3721,7 @@
         /// ```
         pub fn fold<F, I, R>(&self, init: I, mut f: F) -> TokenStream
         where
    -        F: FnMut(TokenStream, &BindingInfo<'_>) -> R,
    +        F: FnMut(TokenStream, &BindingInfo<'_>) -> R,
             I: ToTokens,
             R: ToTokens,
         {
    @@ -3660,7 +3771,7 @@
         /// ```
         pub fn each_variant<F, R>(&self, mut f: F) -> TokenStream
         where
    -        F: FnMut(&VariantInfo<'_>) -> R,
    +        F: FnMut(&VariantInfo<'_>) -> R,
             R: ToTokens,
         {
             let mut t = TokenStream::new();
    @@ -3696,25 +3807,25 @@
         /// let mut s = Structure::new(&di);
         ///
         /// s.filter(|bi| {
    -    ///     bi.ast().ident == Some(quote::format_ident!("a"))
    +    ///     bi.ast().ident == Some(quote::format_ident!("a"))
         /// });
         ///
         /// assert_eq!(
    -    ///     s.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
    +    ///     s.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
         ///
         ///     quote!{
         ///         A::B{ a: ref __binding_0, .. } => {
    -    ///             { println!("{:?}", __binding_0) }
    +    ///             { println!("{:?}", __binding_0) }
         ///         }
         ///         A::C{ a: ref __binding_0, } => {
    -    ///             { println!("{:?}", __binding_0) }
    +    ///             { println!("{:?}", __binding_0) }
         ///         }
         ///     }.to_string()
         /// );
         /// ```
         pub fn filter<F>(&mut self, mut f: F) -> &mut Self
         where
    -        F: FnMut(&BindingInfo<'_>) -> bool,
    +        F: FnMut(&BindingInfo<'_>) -> bool,
         {
             for variant in &mut self.variants {
                 variant.filter(&mut f);
    @@ -3722,6 +3833,74 @@
             self
         }
     
    +    /// Iterates all the bindings of this `Structure` object and uses a closure to determine if a
    +    /// binding should be removed. If the closure returns `true` the binding is removed from the
    +    /// structure. If the closure returns `false`, the binding remains in the structure.
    +    ///
    +    /// All the removed bindings are moved to a new `Structure` object which is otherwise identical
    +    /// to the current one. To understand the effects of removing a binding from a structure check
    +    /// the [`Structure::filter`] documentation.
    +    ///
    +    /// # Example
    +    /// ```
    +    /// # use synstructure::*;
    +    /// let di: syn::DeriveInput = syn::parse_quote! {
    +    ///     enum A {
    +    ///         B{ a: i32, b: i32 },
    +    ///         C{ a: u32 },
    +    ///     }
    +    /// };
    +    /// let mut with_b = Structure::new(&di);
    +    ///
    +    /// let with_a = with_b.drain_filter(|bi| {
    +    ///     bi.ast().ident == Some(quote::format_ident!("a"))
    +    /// });
    +    ///
    +    /// assert_eq!(
    +    ///     with_a.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
    +    ///
    +    ///     quote!{
    +    ///         A::B{ a: ref __binding_0, .. } => {
    +    ///             { println!("{:?}", __binding_0) }
    +    ///         }
    +    ///         A::C{ a: ref __binding_0, } => {
    +    ///             { println!("{:?}", __binding_0) }
    +    ///         }
    +    ///     }.to_string()
    +    /// );
    +    ///
    +    /// assert_eq!(
    +    ///     with_b.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
    +    ///
    +    ///     quote!{
    +    ///         A::B{ b: ref __binding_1, .. } => {
    +    ///             { println!("{:?}", __binding_1) }
    +    ///         }
    +    ///         A::C{ .. } => {
    +    ///
    +    ///         }
    +    ///     }.to_string()
    +    /// );
    +    /// ```
    +    #[allow(clippy::return_self_not_must_use)]
    +    pub fn drain_filter<F>(&mut self, mut f: F) -> Self
    +    where
    +        F: FnMut(&BindingInfo<'_>) -> bool,
    +    {
    +        Self {
    +            variants: self
    +                .variants
    +                .iter_mut()
    +                .map(|variant| variant.drain_filter(&mut f))
    +                .collect(),
    +            omitted_variants: self.omitted_variants,
    +            ast: self.ast,
    +            extra_impl: self.extra_impl.clone(),
    +            extra_predicates: self.extra_predicates.clone(),
    +            add_bounds: self.add_bounds,
    +        }
    +    }
    +
         /// Specify additional where predicate bounds which should be generated by
         /// impl-generating functions such as `gen_impl`, `bound_impl`, and
         /// `unsafe_bound_impl`.
    @@ -3745,9 +3924,7 @@
         ///         fn a() {}
         ///     }).to_string(),
         ///     quote!{
    -    ///         #[allow(non_upper_case_globals)]
    -    ///         #[doc(hidden)]
    -    ///         const _DERIVE_krate_Trait_FOR_A: () = {
    +    ///         const _: () = {
         ///             extern crate krate;
         ///             impl<T, U> krate::Trait for A<T, U>
         ///                 where T: std::fmt::Display,
    @@ -3791,9 +3968,7 @@
         ///         fn a() {}
         ///     }).to_string(),
         ///     quote!{
    -    ///         #[allow(non_upper_case_globals)]
    -    ///         #[doc(hidden)]
    -    ///         const _DERIVE_krate_Trait_FOR_A: () = {
    +    ///         const _: () = {
         ///             extern crate krate;
         ///             impl<T, U> krate::Trait for A<T, U>
         ///                 where T: krate::Trait,
    @@ -3831,14 +4006,14 @@
         ///
         /// let mut s = Structure::new(&di);
         ///
    -    /// s.filter_variants(|v| v.ast().ident != "B");
    +    /// s.filter_variants(|v| v.ast().ident != "B");
         ///
         /// assert_eq!(
    -    ///     s.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
    +    ///     s.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
         ///
         ///     quote!{
         ///         A::C(ref __binding_0,) => {
    -    ///             { println!("{:?}", __binding_0) }
    +    ///             { println!("{:?}", __binding_0) }
         ///         }
         ///         _ => {}
         ///     }.to_string()
    @@ -3846,7 +4021,7 @@
         /// ```
         pub fn filter_variants<F>(&mut self, f: F) -> &mut Self
         where
    -        F: FnMut(&VariantInfo<'_>) -> bool,
    +        F: FnMut(&VariantInfo<'_>) -> bool,
         {
             let before_len = self.variants.len();
             self.variants.retain(f);
    @@ -3855,6 +4030,68 @@
             }
             self
         }
    +    /// Iterates all the variants of this `Structure` object and uses a closure to determine if a
    +    /// variant should be removed. If the closure returns `true` the variant is removed from the
    +    /// structure. If the closure returns `false`, the variant remains in the structure.
    +    ///
    +    /// All the removed variants are moved to a new `Structure` object which is otherwise identical
    +    /// to the current one. To understand the effects of removing a variant from a structure check
    +    /// the [`Structure::filter_variants`] documentation.
    +    ///
    +    /// # Example
    +    /// ```
    +    /// # use synstructure::*;
    +    /// let di: syn::DeriveInput = syn::parse_quote! {
    +    ///     enum A {
    +    ///         B(i32, i32),
    +    ///         C(u32),
    +    ///     }
    +    /// };
    +    ///
    +    /// let mut with_c = Structure::new(&di);
    +    ///
    +    /// let with_b = with_c.drain_filter_variants(|v| v.ast().ident == "B");
    +    ///
    +    /// assert_eq!(
    +    ///     with_c.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
    +    ///
    +    ///     quote!{
    +    ///         A::C(ref __binding_0,) => {
    +    ///             { println!("{:?}", __binding_0) }
    +    ///         }
    +    ///     }.to_string()
    +    /// );
    +    ///
    +    /// assert_eq!(
    +    ///     with_b.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
    +    ///
    +    ///     quote!{
    +    ///         A::B(ref __binding_0, ref __binding_1,) => {
    +    ///             { println!("{:?}", __binding_0) }
    +    ///             { println!("{:?}", __binding_1) }
    +    ///         }
    +    ///     }.to_string()
    +    /// );
    +    #[allow(clippy::return_self_not_must_use)]
    +    pub fn drain_filter_variants<F>(&mut self, mut f: F) -> Self
    +    where
    +        F: FnMut(&VariantInfo<'_>) -> bool,
    +    {
    +        let mut other = Self {
    +            variants: vec![],
    +            omitted_variants: self.omitted_variants,
    +            ast: self.ast,
    +            extra_impl: self.extra_impl.clone(),
    +            extra_predicates: self.extra_predicates.clone(),
    +            add_bounds: self.add_bounds,
    +        };
    +
    +        let (other_variants, self_variants) = self.variants.drain(..).partition(&mut f);
    +        other.variants = other_variants;
    +        self.variants = self_variants;
    +
    +        other
    +    }
     
         /// Remove the variant at the given index.
         ///
    @@ -3884,22 +4121,22 @@
         /// s.bind_with(|bi| BindStyle::RefMut);
         ///
         /// assert_eq!(
    -    ///     s.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
    +    ///     s.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
         ///
         ///     quote!{
         ///         A::B(ref mut __binding_0, ref mut __binding_1,) => {
    -    ///             { println!("{:?}", __binding_0) }
    -    ///             { println!("{:?}", __binding_1) }
    +    ///             { println!("{:?}", __binding_0) }
    +    ///             { println!("{:?}", __binding_1) }
         ///         }
         ///         A::C(ref mut __binding_0,) => {
    -    ///             { println!("{:?}", __binding_0) }
    +    ///             { println!("{:?}", __binding_0) }
         ///         }
         ///     }.to_string()
         /// );
         /// ```
         pub fn bind_with<F>(&mut self, mut f: F) -> &mut Self
         where
    -        F: FnMut(&BindingInfo<'_>) -> BindStyle,
    +        F: FnMut(&BindingInfo<'_>) -> BindStyle,
         {
             for variant in &mut self.variants {
                 variant.bind_with(&mut f);
    @@ -3930,15 +4167,15 @@
         /// s.binding_name(|bi, i| bi.ident.clone().unwrap());
         ///
         /// assert_eq!(
    -    ///     s.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
    +    ///     s.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
         ///
         ///     quote!{
         ///         A::B{ a: ref a, b: ref b, } => {
    -    ///             { println!("{:?}", a) }
    -    ///             { println!("{:?}", b) }
    +    ///             { println!("{:?}", a) }
    +    ///             { println!("{:?}", b) }
         ///         }
         ///         A::C{ a: ref a, } => {
    -    ///             { println!("{:?}", a) }
    +    ///             { println!("{:?}", a) }
         ///         }
         ///     }.to_string()
         /// );
    @@ -3973,14 +4210,14 @@
         /// };
         /// let mut s = Structure::new(&di);
         ///
    -    /// s.filter_variants(|v| v.ast().ident != "C");
    +    /// s.filter_variants(|v| v.ast().ident != "C");
         ///
         /// assert_eq!(
         ///     s.referenced_ty_params(),
    -    ///     &[&quote::format_ident!("T")]
    +    ///     &[&quote::format_ident!("T")]
         /// );
         /// ```
    -    pub fn referenced_ty_params(&self) -> Vec<&'a Ident> {
    +    pub fn referenced_ty_params(&self) -> Vec<&'a Ident> {
             let mut flags = Vec::new();
             for variant in &self.variants {
                 for binding in &variant.bindings {
    @@ -4013,9 +4250,7 @@
         ///         }
         ///     ).to_string(),
         ///     quote!{
    -    ///         #[allow(non_upper_case_globals)]
    -    ///         #[doc(hidden)]
    -    ///         const _DERIVE_krate_Trait_X_FOR_A: () = {
    +    ///         const _: () = {
         ///             extern crate krate;
         ///             impl<T, U, X: krate::AnotherTrait> krate::Trait<X> for A<T, U>
         ///                 where T : krate :: Trait < X >,
    @@ -4108,53 +4343,12 @@
             }
         }
     
    -    /// Configure whether to use `const _` instead of a generated const name in
    -    /// code generated by `gen_impl` and `bound_impl`.
    -    ///
    -    /// This syntax is only supported by rust 1.37, and later versions.
    -    ///
    -    /// Defaults to `false` for backwards compatibility reasons.
    -    ///
    -    /// # Example
    -    ///
    -    /// ```
    -    /// # use synstructure::*;
    -    /// let di: syn::DeriveInput = syn::parse_quote! {
    -    ///     struct MyStruct;
    -    /// };
    -    /// let mut s = Structure::new(&di);
    -    ///
    -    /// assert_eq!(
    -    ///     s.underscore_const(true)
    -    ///         .gen_impl(quote! { gen impl Trait for @Self { } })
    -    ///         .to_string(),
    -    ///     quote! {
    -    ///         const _: () = {
    -    ///             impl Trait for MyStruct { }
    -    ///         };
    -    ///     }
    -    ///     .to_string()
    -    /// );
    -    ///
    -    /// assert_eq!(
    -    ///     s.underscore_const(false)
    -    ///         .gen_impl(quote! { gen impl Trait for @Self { } })
    -    ///         .to_string(),
    -    ///     quote! {
    -    ///         #[allow(non_upper_case_globals)]
    -    ///         const _DERIVE_Trait_FOR_MyStruct: () = {
    -    ///             impl Trait for MyStruct { }
    -    ///         };
    -    ///     }
    -    ///     .to_string()
    -    /// );
    -    /// ```
    -    pub fn underscore_const(&mut self, enabled: bool) -> &mut Self {
    -        self.underscore_const = enabled;
    +    /// This method is a no-op, underscore consts are used by default now.
    +    pub fn underscore_const(&mut self, _enabled: bool) -> &mut Self {
             self
         }
     
    -    /// > NOTE: This methods' features are superceded by `Structure::gen_impl`.
    +    /// > NOTE: This methods' features are superceded by `Structure::gen_impl`.
         ///
         /// Creates an `impl` block with the required generic type fields filled in
         /// to implement the trait `path`.
    @@ -4166,7 +4360,7 @@
         ///
         /// This method wraps the impl block inside of a `const` (see the example
         /// below). In this scope, the first segment of the passed-in path is
    -    /// `extern crate`-ed in. If you don't want to generate that `extern crate`
    +    /// `extern crate`-ed in. If you don't want to generate that `extern crate`
         /// item, use a global path.
         ///
         /// This means that if you are implementing `my_crate::Trait`, you simply
    @@ -4194,16 +4388,14 @@
         /// };
         /// let mut s = Structure::new(&di);
         ///
    -    /// s.filter_variants(|v| v.ast().ident != "B");
    +    /// s.filter_variants(|v| v.ast().ident != "B");
         ///
         /// assert_eq!(
         ///     s.bound_impl(quote!(krate::Trait), quote!{
         ///         fn a() {}
         ///     }).to_string(),
         ///     quote!{
    -    ///         #[allow(non_upper_case_globals)]
    -    ///         #[doc(hidden)]
    -    ///         const _DERIVE_krate_Trait_FOR_A: () = {
    +    ///         const _: () = {
         ///             extern crate krate;
         ///             impl<T, U> krate::Trait for A<T, U>
         ///                 where Option<U>: krate::Trait,
    @@ -4224,7 +4416,7 @@
             )
         }
     
    -    /// > NOTE: This methods' features are superceded by `Structure::gen_impl`.
    +    /// > NOTE: This methods' features are superceded by `Structure::gen_impl`.
         ///
         /// Creates an `impl` block with the required generic type fields filled in
         /// to implement the unsafe trait `path`.
    @@ -4236,7 +4428,7 @@
         ///
         /// This method wraps the impl block inside of a `const` (see the example
         /// below). In this scope, the first segment of the passed-in path is
    -    /// `extern crate`-ed in. If you don't want to generate that `extern crate`
    +    /// `extern crate`-ed in. If you don't want to generate that `extern crate`
         /// item, use a global path.
         ///
         /// This means that if you are implementing `my_crate::Trait`, you simply
    @@ -4264,16 +4456,14 @@
         /// };
         /// let mut s = Structure::new(&di);
         ///
    -    /// s.filter_variants(|v| v.ast().ident != "B");
    +    /// s.filter_variants(|v| v.ast().ident != "B");
         ///
         /// assert_eq!(
         ///     s.unsafe_bound_impl(quote!(krate::Trait), quote!{
         ///         fn a() {}
         ///     }).to_string(),
         ///     quote!{
    -    ///         #[allow(non_upper_case_globals)]
    -    ///         #[doc(hidden)]
    -    ///         const _DERIVE_krate_Trait_FOR_A: () = {
    +    ///         const _: () = {
         ///             extern crate krate;
         ///             unsafe impl<T, U> krate::Trait for A<T, U>
         ///                 where Option<U>: krate::Trait,
    @@ -4294,7 +4484,7 @@
             )
         }
     
    -    /// > NOTE: This methods' features are superceded by `Structure::gen_impl`.
    +    /// > NOTE: This methods' features are superceded by `Structure::gen_impl`.
         ///
         /// Creates an `impl` block with the required generic type fields filled in
         /// to implement the trait `path`.
    @@ -4305,7 +4495,7 @@
         ///
         /// This method wraps the impl block inside of a `const` (see the example
         /// below). In this scope, the first segment of the passed-in path is
    -    /// `extern crate`-ed in. If you don't want to generate that `extern crate`
    +    /// `extern crate`-ed in. If you don't want to generate that `extern crate`
         /// item, use a global path.
         ///
         /// This means that if you are implementing `my_crate::Trait`, you simply
    @@ -4327,16 +4517,14 @@
         /// };
         /// let mut s = Structure::new(&di);
         ///
    -    /// s.filter_variants(|v| v.ast().ident != "B");
    +    /// s.filter_variants(|v| v.ast().ident != "B");
         ///
         /// assert_eq!(
         ///     s.unbound_impl(quote!(krate::Trait), quote!{
         ///         fn a() {}
         ///     }).to_string(),
         ///     quote!{
    -    ///         #[allow(non_upper_case_globals)]
    -    ///         #[doc(hidden)]
    -    ///         const _DERIVE_krate_Trait_FOR_A: () = {
    +    ///         const _: () = {
         ///             extern crate krate;
         ///             impl<T, U> krate::Trait for A<T, U> {
         ///                 fn a() {}
    @@ -4354,7 +4542,7 @@
             )
         }
     
    -    /// > NOTE: This methods' features are superceded by `Structure::gen_impl`.
    +    /// > NOTE: This methods' features are superceded by `Structure::gen_impl`.
         ///
         /// Creates an `impl` block with the required generic type fields filled in
         /// to implement the unsafe trait `path`.
    @@ -4365,7 +4553,7 @@
         ///
         /// This method wraps the impl block inside of a `const` (see the example
         /// below). In this scope, the first segment of the passed-in path is
    -    /// `extern crate`-ed in. If you don't want to generate that `extern crate`
    +    /// `extern crate`-ed in. If you don't want to generate that `extern crate`
         /// item, use a global path.
         ///
         /// This means that if you are implementing `my_crate::Trait`, you simply
    @@ -4387,16 +4575,14 @@
         /// };
         /// let mut s = Structure::new(&di);
         ///
    -    /// s.filter_variants(|v| v.ast().ident != "B");
    +    /// s.filter_variants(|v| v.ast().ident != "B");
         ///
         /// assert_eq!(
         ///     s.unsafe_unbound_impl(quote!(krate::Trait), quote!{
         ///         fn a() {}
         ///     }).to_string(),
         ///     quote!{
    -    ///         #[allow(non_upper_case_globals)]
    -    ///         #[doc(hidden)]
    -    ///         const _DERIVE_krate_Trait_FOR_A: () = {
    +    ///         const _: () = {
         ///             extern crate krate;
         ///             unsafe impl<T, U> krate::Trait for A<T, U> {
         ///                 fn a() {}
    @@ -4425,12 +4611,12 @@
             let mode = mode.unwrap_or(self.add_bounds);
             let name = &self.ast.ident;
             let mut gen_clone = self.ast.generics.clone();
    -        gen_clone.params.extend(self.extra_impl.clone().into_iter());
    +        gen_clone.params.extend(self.extra_impl.iter().cloned());
             let (impl_generics, _, _) = gen_clone.split_for_impl();
             let (_, ty_generics, where_clause) = self.ast.generics.split_for_impl();
     
             let bound = syn::parse2::<TraitBound>(path)
    -            .expect("`path` argument must be a valid rust trait bound");
    +            .expect("`path` argument must be a valid rust trait bound");
     
             let mut where_clause = where_clause.cloned();
             self.add_trait_bounds(&bound, &mut where_clause, mode);
    @@ -4443,39 +4629,24 @@
             if bound.path.leading_colon.is_none() {
                 if let Some(seg) = bound.path.segments.first() {
                     let seg = &seg.ident;
    -                extern_crate = quote! { extern crate #seg; };
    +                extern_crate = quote! { extern crate #seg; };
                 }
             }
     
    -        let generated = quote! {
    +        let generated = quote! {
                 #extern_crate
                 #safety impl #impl_generics #bound for #name #ty_generics #where_clause {
                     #body
                 }
             };
     
    -        if self.underscore_const {
    -            quote! {
    -                const _: () = { #generated };
    -            }
    -        } else {
    -            let dummy_const: Ident = sanitize_ident(&format!(
    -                "_DERIVE_{}_FOR_{}",
    -                (&bound).into_token_stream(),
    -                name.into_token_stream(),
    -            ));
    -            quote! {
    -                #[allow(non_upper_case_globals)]
    -                #[doc(hidden)]
    -                const #dummy_const: () = {
    -                    #generated
    -                };
    -            }
    +        quote! {
    +            const _: () = { #generated };
             }
         }
     
         /// Generate an impl block for the given struct. This impl block will
    -    /// automatically use hygiene tricks to avoid polluting the caller's
    +    /// automatically use hygiene tricks to avoid polluting the caller's
         /// namespace, and will automatically add trait bounds for generic type
         /// parameters.
         ///
    @@ -4490,7 +4661,7 @@
         ///     // You can write any items which you want to import into scope here.
         ///     // For example, you may want to include an `extern crate` for the
         ///     // crate which implements your trait. These items will only be
    -    ///     // visible to the code you generate, and won't be exposed to the
    +    ///     // visible to the code you generate, and won't be exposed to the
         ///     // consuming crate
         ///     extern crate krate;
         ///
    @@ -4503,7 +4674,7 @@
         ///     use krate::Trait as MyTrait;
         ///
         ///     // The actual impl block is a `gen impl` or `gen unsafe impl` block.
    -    ///     // You can use `@Self` to refer to the structure's type.
    +    ///     // You can use `@Self` to refer to the structure's type.
         ///     gen impl MyTrait for @Self {
         ///         fn f(&self) { ... }
         ///     }
    @@ -4516,7 +4687,7 @@
         ///
         /// # Hygiene
         ///
    -    /// This method tries to handle hygiene intelligenly for both stable and
    +    /// This method tries to handle hygiene intelligently for both stable and
         /// unstable proc-macro implementations, however there are visible
         /// differences.
         ///
    @@ -4528,19 +4699,6 @@
         /// following:
         ///
         /// ```ignore
    -    /// const _DERIVE_krate_Trait_FOR_Struct: () = {
    -    ///     extern crate krate;
    -    ///     use krate::Trait as MyTrait;
    -    ///     impl<T> MyTrait for Struct<T> where T: MyTrait {
    -    ///         fn f(&self) { ... }
    -    ///     }
    -    /// };
    -    /// ```
    -    ///
    -    /// The `Structure` may also be confired with the [`underscore_const`] method
    -    /// to generate `const _` instead.
    -    ///
    -    /// ```ignore
         /// const _: () = {
         ///     extern crate krate;
         ///     use krate::Trait as MyTrait;
    @@ -4553,9 +4711,9 @@
         /// ### Using the `std` crate
         ///
         /// If you are using `quote!()` to implement your trait, with the
    -    /// `proc-macro2/nightly` feature, `std` isn't considered to be in scope for
    +    /// `proc-macro2/nightly` feature, `std` isn't considered to be in scope for
         /// your macro. This means that if you use types from `std` in your
    -    /// procedural macro, you'll want to explicitly load it with an `extern
    +    /// procedural macro, you'll want to explicitly load it with an `extern
         /// crate std;`.
         ///
         /// ### Absolute paths
    @@ -4601,7 +4759,7 @@
         /// };
         /// let mut s = Structure::new(&di);
         ///
    -    /// s.filter_variants(|v| v.ast().ident != "B");
    +    /// s.filter_variants(|v| v.ast().ident != "B");
         ///
         /// assert_eq!(
         ///     s.gen_impl(quote! {
    @@ -4611,8 +4769,7 @@
         ///         }
         ///     }).to_string(),
         ///     quote!{
    -    ///         #[allow(non_upper_case_globals)]
    -    ///         const _DERIVE_krate_Trait_FOR_A: () = {
    +    ///         const _: () = {
         ///             extern crate krate;
         ///             impl<T, U> krate::Trait for A<T, U>
         ///             where
    @@ -4637,8 +4794,7 @@
         ///         }
         ///     }).to_string(),
         ///     quote!{
    -    ///         #[allow(non_upper_case_globals)]
    -    ///         const _DERIVE_krate_Trait_X_FOR_A: () = {
    +    ///         const _: () = {
         ///             extern crate krate;
         ///             impl<X: krate::OtherTrait, T, U> krate::Trait<X> for A<T, U>
         ///             where
    @@ -4666,8 +4822,7 @@
         ///         }
         ///     }).to_string(),
         ///     quote!{
    -    ///         #[allow(non_upper_case_globals)]
    -    ///         const _DERIVE_krate_Trait_FOR_A: () = {
    +    ///         const _: () = {
         ///             extern crate krate;
         ///             impl<T, U> krate::Trait for A<T, U>
         ///             where
    @@ -4692,16 +4847,16 @@
         /// Use `add_bounds` to change which bounds are generated.
         pub fn gen_impl(&self, cfg: TokenStream) -> TokenStream {
             Parser::parse2(
    -            |input: ParseStream<'_>| -> Result<TokenStream> { self.gen_impl_parse(input, true) },
    +            |input: ParseStream<'_>| -> Result<TokenStream> { self.gen_impl_parse(input, true) },
                 cfg,
             )
    -        .expect("Failed to parse gen_impl")
    +        .expect("Failed to parse gen_impl")
         }
     
    -    fn gen_impl_parse(&self, input: ParseStream<'_>, wrap: bool) -> Result<TokenStream> {
    -        fn parse_prefix(input: ParseStream<'_>) -> Result<Option<Token![unsafe]>> {
    -            if input.parse::<Ident>()? != "gen" {
    -                return Err(input.error("Expected keyword `gen`"));
    +    fn gen_impl_parse(&self, input: ParseStream<'_>, wrap: bool) -> Result<TokenStream> {
    +        fn parse_prefix(input: ParseStream<'_>) -> Result<Option<Token![unsafe]>> {
    +            if input.parse::<Ident>()? != "gen" {
    +                return Err(input.error("Expected keyword `gen`"));
                 }
                 let safety = input.parse::<Option<Token![unsafe]>>()?;
                 let _ = input.parse::<Token![impl]>()?;
    @@ -4716,7 +4871,7 @@
                 before.push(input.parse::<TokenTree>()?);
             }
     
    -        // Parse the prefix "for real"
    +        // Parse the prefix "for real"
             let safety = parse_prefix(input)?;
     
             // optional `<>`
    @@ -4738,17 +4893,17 @@
             braced!(body in input);
             let body = body.parse::<TokenStream>()?;
     
    -        // Try to parse the next entry in sequence. If this fails, we'll fall
    +        // Try to parse the next entry in sequence. If this fails, we'll fall
             // back to just parsing the entire rest of the TokenStream.
             let maybe_next_impl = self.gen_impl_parse(&input.fork(), false);
     
             // Eat tokens to the end. Whether or not our speculative nested parse
    -        // succeeded, we're going to want to consume the rest of our input.
    +        // succeeded, we're going to want to consume the rest of our input.
             let mut after = input.parse::<TokenStream>()?;
             if let Ok(stream) = maybe_next_impl {
                 after = stream;
             }
    -        assert!(input.is_empty(), "Should've consumed the rest of our input");
    +        assert!(input.is_empty(), "Should've consumed the rest of our input");
     
             /* Codegen Logic */
             let name = &self.ast.ident;
    @@ -4765,7 +4920,7 @@
             let (impl_generics, _, where_clause) = generics.split_for_impl();
             let (_, ty_generics, _) = self.ast.generics.split_for_impl();
     
    -        let generated = quote! {
    +        let generated = quote! {
                 #(#before)*
                 #safety impl #impl_generics #bound for #name #ty_generics #where_clause {
                     #body
    @@ -4774,23 +4929,9 @@
             };
     
             if wrap {
    -            if self.underscore_const {
    -                Ok(quote! {
    -                    const _: () = { #generated };
    -                })
    -            } else {
    -                let dummy_const: Ident = sanitize_ident(&format!(
    -                    "_DERIVE_{}_FOR_{}",
    -                    (&bound).into_token_stream(),
    -                    name.into_token_stream(),
    -                ));
    -                Ok(quote! {
    -                    #[allow(non_upper_case_globals)]
    -                    const #dummy_const: () = {
    -                        #generated
    -                    };
    -                })
    -            }
    +            Ok(quote! {
    +                const _: () = { #generated };
    +            })
             } else {
                 Ok(generated)
             }
    @@ -4816,8 +4957,7 @@
     /// # use quote::quote;
     /// assert_eq!(
     ///     synstructure::unpretty_print(quote! {
    -///         #[allow(non_upper_case_globals)]
    -///         const _DERIVE_krate_Trait_FOR_A: () = {
    +///         const _: () = {
     ///             extern crate krate;
     ///             impl<T, U> krate::Trait for A<T, U>
     ///             where
    @@ -4828,11 +4968,7 @@
     ///             }
     ///         };
     ///     }),
    -///     "# [
    -///     allow (
    -///         non_upper_case_globals )
    -///     ]
    -/// const _DERIVE_krate_Trait_FOR_A : (
    +///     "const _ : (
     ///     )
     /// = {
     ///     extern crate krate ;
    @@ -4844,7 +4980,7 @@
     ///         }
     ///     }
     /// ;
    -/// "
    +/// "
     /// )
     /// ```
     pub fn unpretty_print<T: std::fmt::Display>(ts: T) -> String {
    @@ -4853,18 +4989,18 @@
         let raw_s = ts.to_string();
         let mut s = &raw_s[..];
         let mut indent = 0;
    -    while let Some(i) = s.find(&['(', '{', '[', ')', '}', ']', ';'][..]) {
    +    while let Some(i) = s.find(&['(', '{', '[', ')', '}', ']', ';'][..]) {
             match &s[i..=i] {
    -            "(" | "{" | "[" => indent += 1,
    -            ")" | "}" | "]" => indent -= 1,
    +            "(" | "{" | "[" => indent += 1,
    +            ")" | "}" | "]" => indent -= 1,
                 _ => {}
             }
             res.push_str(&s[..=i]);
    -        res.push('\n');
    +        res.push('\n');
             for _ in 0..indent {
    -            res.push_str("    ");
    +            res.push_str("    ");
             }
    -        s = trim_start_matches(&s[i + 1..], ' ');
    +        s = trim_start_matches(&s[i + 1..], ' ');
         }
         res.push_str(s);
         res
    @@ -4879,7 +5015,7 @@
     }
     
     /// Helper trait describing values which may be returned by macro implementation
    -/// methods used by this crate's macros.
    +/// methods used by this crate's macros.
     pub trait MacroResult {
         /// Convert this result into a `Result` for further processing / validation.
         fn into_result(self) -> Result<TokenStream>;
    @@ -4891,10 +5027,10 @@
         /// generate a `compile_error!` invocation to nicely report the error.
         ///
         /// *This method is available if `synstructure` is built with the
    -    /// `"proc-macro"` feature.*
    +    /// `"proc-macro"` feature.*
         #[cfg(all(
    -        not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
    -        feature = "proc-macro"
    +        not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
    +        feature = "proc-macro"
         ))]
         fn into_stream(self) -> proc_macro::TokenStream
         where
    @@ -4908,8 +5044,8 @@
     }
     
     #[cfg(all(
    -    not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
    -    feature = "proc-macro"
    +    not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
    +    feature = "proc-macro"
     ))]
     impl MacroResult for proc_macro::TokenStream {
         fn into_result(self) -> Result<TokenStream> {
    @@ -4943,7 +5079,7 @@
         // Regression test for #48
         #[test]
         fn test_each_enum() {
    -        let di: syn::DeriveInput = syn::parse_quote! {
    +        let di: syn::DeriveInput = syn::parse_quote! {
              enum A {
                  Foo(usize, bool),
                  Bar(bool, usize),
    @@ -4953,11 +5089,11 @@
             };
             let mut s = Structure::new(&di);
     
    -        s.filter(|bi| bi.ast().ty.to_token_stream().to_string() == "bool");
    +        s.filter(|bi| bi.ast().ty.to_token_stream().to_string() == "bool");
     
             assert_eq!(
                 s.each(|bi| quote!(do_something(#bi))).to_string(),
    -            quote! {
    +            quote! {
                     A::Foo(_, ref __binding_1,) => { { do_something(__binding_1) } }
                     A::Bar(ref __binding_0, ..) => { { do_something(__binding_0) } }
                     A::Baz(_, ref __binding_1, ..) => { { do_something(__binding_1) } }
    diff --git a/src/synstructure/macros.rs.html b/src/synstructure/macros.rs.html
    index 828f8e2..f05106c 100644
    --- a/src/synstructure/macros.rs.html
    +++ b/src/synstructure/macros.rs.html
    @@ -1,4 +1,5 @@
    -macros.rs - source
    1
    +macros.rs - source

    synstructure/
    macros.rs

    +1
     2
     3
     4
    @@ -248,22 +249,34 @@
     248
     249
     250
    -
    //! This module provides two utility macros for testing custom derives. They can
    +251
    +252
    +253
    +254
    +255
    +256
    +257
    +258
    +259
    +260
    +261
    +262
    //! This module provides two utility macros for testing custom derives. They can
     //! be used together to eliminate some of the boilerplate required in order to
     //! declare and test custom derive implementations.
     
     // Re-exports used by the decl_derive! and test_derive!
     pub use proc_macro2::TokenStream as TokenStream2;
    -pub use syn::{parse_str, DeriveInput};
    +pub use syn::{parse2, parse_str, DeriveInput};
    +pub use quote::quote;
     
     #[cfg(all(
    -    not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
    -    feature = "proc-macro"
    +    not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
    +    feature = "proc-macro"
     ))]
     pub use proc_macro::TokenStream;
     #[cfg(all(
    -    not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
    -    feature = "proc-macro"
    +    not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
    +    feature = "proc-macro"
     ))]
     pub use syn::parse;
     
    @@ -294,7 +307,7 @@
     ///     quote::quote! { ... }
     /// }
     ///
    -/// # const _IGNORE: &'static str = stringify! {
    +/// # const _IGNORE: &'static str = stringify! {
     /// decl_derive!([Interesting] => derive_interesting);
     /// # };
     /// ```
    @@ -306,7 +319,7 @@
     ///     quote::quote! { ... }
     /// }
     ///
    -/// # const _IGNORE: &'static str = stringify! {
    +/// # const _IGNORE: &'static str = stringify! {
     /// decl_derive!([Interesting, attributes(interesting_ignore)] => derive_interesting);
     /// # };
     /// ```
    @@ -318,7 +331,7 @@
     ///     quote::quote! { ... }
     /// }
     ///
    -/// # const _IGNORE: &'static str = stringify! {
    +/// # const _IGNORE: &'static str = stringify! {
     /// decl_derive! {
     ///     [Interesting] =>
     ///     #[allow(some_lint)]
    @@ -328,14 +341,14 @@
     /// # };
     /// ```
     ///
    -/// *This macro is available if `synstructure` is built with the `"proc-macro"`
    +/// *This macro is available if `synstructure` is built with the `"proc-macro"`
     /// feature.*
     #[cfg(all(
    -    not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
    -    feature = "proc-macro"
    +    not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
    +    feature = "proc-macro"
     ))]
     #[macro_export]
    -macro_rules! decl_derive {
    +macro_rules! decl_derive {
         // XXX: Switch to using this variant everywhere?
         ([$derives:ident $($derive_t:tt)*] => $(#[$($attrs:tt)*])* $inner:path) => {
             #[proc_macro_derive($derives $($derive_t)*)]
    @@ -345,13 +358,17 @@
                 i: $crate::macros::TokenStream
             ) -> $crate::macros::TokenStream {
                 match $crate::macros::parse::<$crate::macros::DeriveInput>(i) {
    -                Ok(p) => {
    +                ::core::result::Result::Ok(p) => {
                         match $crate::Structure::try_new(&p) {
    -                        Ok(s) => $crate::MacroResult::into_stream($inner(s)),
    -                        Err(e) => e.to_compile_error().into(),
    +                        ::core::result::Result::Ok(s) => $crate::MacroResult::into_stream($inner(s)),
    +                        ::core::result::Result::Err(e) => {
    +                            ::core::convert::Into::into(e.to_compile_error())
    +                        }
                         }
                     }
    -                Err(e) => e.to_compile_error().into(),
    +                ::core::result::Result::Err(e) => {
    +                    ::core::convert::Into::into(e.to_compile_error())
    +                }
                 }
             }
         };
    @@ -382,19 +399,19 @@
     ///     quote::quote! { ... }
     /// }
     ///
    -/// # const _IGNORE: &'static str = stringify! {
    +/// # const _IGNORE: &'static str = stringify! {
     /// decl_attribute!([interesting] => attribute_interesting);
     /// # };
     /// ```
     ///
    -/// *This macro is available if `synstructure` is built with the `"proc-macro"`
    +/// *This macro is available if `synstructure` is built with the `"proc-macro"`
     /// feature.*
     #[cfg(all(
    -    not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
    -    feature = "proc-macro"
    +    not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
    +    feature = "proc-macro"
     ))]
     #[macro_export]
    -macro_rules! decl_attribute {
    +macro_rules! decl_attribute {
         ([$attribute:ident] => $(#[$($attrs:tt)*])* $inner:path) => {
             #[proc_macro_attribute]
             $(#[$($attrs)*])*
    @@ -403,11 +420,19 @@
                 i: $crate::macros::TokenStream,
             ) -> $crate::macros::TokenStream {
                 match $crate::macros::parse::<$crate::macros::DeriveInput>(i) {
    -                Ok(p) => match $crate::Structure::try_new(&p) {
    -                    Ok(s) => $crate::MacroResult::into_stream($inner(attr.into(), s)),
    -                    Err(e) => e.to_compile_error().into(),
    +                ::core::result::Result::Ok(p) => match $crate::Structure::try_new(&p) {
    +                    ::core::result::Result::Ok(s) => {
    +                        $crate::MacroResult::into_stream(
    +                            $inner(::core::convert::Into::into(attr), s)
    +                        )
    +                    }
    +                    ::core::result::Result::Err(e) => {
    +                        ::core::convert::Into::into(e.to_compile_error())
    +                    }
                     },
    -                Err(e) => e.to_compile_error().into(),
    +                ::core::result::Result::Err(e) => {
    +                    ::core::convert::Into::into(e.to_compile_error())
    +                }
                 }
             }
         };
    @@ -429,7 +454,7 @@
     /// fn test_derive_example(_s: synstructure::Structure)
     ///     -> Result<proc_macro2::TokenStream, syn::Error>
     /// {
    -///     Ok(quote::quote! { const YOUR_OUTPUT: &'static str = "here"; })
    +///     Ok(quote::quote! { const YOUR_OUTPUT: &'static str = "here"; })
     /// }
     ///
     /// fn main() {
    @@ -438,13 +463,13 @@
     ///             struct A;
     ///         }
     ///         expands to {
    -///             const YOUR_OUTPUT: &'static str = "here";
    +///             const YOUR_OUTPUT: &'static str = "here";
     ///         }
     ///     }
     /// }
     /// ```
     #[macro_export]
    -macro_rules! test_derive {
    +macro_rules! test_derive {
         ($name:path { $($i:tt)* } expands to { $($o:tt)* }) => {
             {
                 #[allow(dead_code)]
    @@ -459,28 +484,27 @@
     
         ($name:path { $($i:tt)* } expands to { $($o:tt)* } no_build) => {
             {
    -            let i = stringify!( $($i)* );
    -            let parsed = $crate::macros::parse_str::<$crate::macros::DeriveInput>(i)
    -                .expect(concat!(
    -                    "Failed to parse input to `#[derive(",
    -                    stringify!($name),
    -                    ")]`",
    +            let i = $crate::macros::quote!( $($i)* );
    +            let parsed = $crate::macros::parse2::<$crate::macros::DeriveInput>(i)
    +                .expect(::core::concat!(
    +                    "Failed to parse input to `#[derive(",
    +                    ::core::stringify!($name),
    +                    ")]`",
                     ));
     
                 let raw_res = $name($crate::Structure::new(&parsed));
                 let res = $crate::MacroResult::into_result(raw_res)
    -                .expect(concat!(
    -                    "Procedural macro failed for `#[derive(",
    -                    stringify!($name),
    -                    ")]`",
    +                .expect(::core::concat!(
    +                    "Procedural macro failed for `#[derive(",
    +                    ::core::stringify!($name),
    +                    ")]`",
                     ));
     
    -            let expected = stringify!( $($o)* )
    -                .parse::<$crate::macros::TokenStream2>()
    -                .expect("output should be a valid TokenStream");
    -            let mut expected_toks = $crate::macros::TokenStream2::from(expected);
    -            if res.to_string() != expected_toks.to_string() {
    -                panic!("\
    +            let expected_toks = $crate::macros::quote!( $($o)* );
    +            if <$crate::macros::TokenStream2 as ::std::string::ToString>::to_string(&res)
    +                != <$crate::macros::TokenStream2 as ::std::string::ToString>::to_string(&expected_toks)
    +            {
    +                panic!("\
     test_derive failed:
     expected:
     ```
    @@ -490,7 +514,7 @@ expected:
     got:
     ```
     {}
    -```\n",
    +```\n",
                         $crate::unpretty_print(&expected_toks),
                         $crate::unpretty_print(&res),
                     );
    diff --git a/src/unicode_ident/lib.rs.html b/src/unicode_ident/lib.rs.html
    index 9b89e6e..9f9080e 100644
    --- a/src/unicode_ident/lib.rs.html
    +++ b/src/unicode_ident/lib.rs.html
    @@ -1,4 +1,5 @@
    -lib.rs - source
    1
    +lib.rs - source

    unicode_ident/
    lib.rs

    +1
     2
     3
     4
    @@ -266,8 +267,7 @@
     266
     267
     268
    -269
    -
    //! [![github]](https://github.com/dtolnay/unicode-ident)&ensp;[![crates-io]](https://crates.io/crates/unicode-ident)&ensp;[![docs-rs]](https://docs.rs/unicode-ident)
    +269
    //! [![github]](https://github.com/dtolnay/unicode-ident)&ensp;[![crates-io]](https://crates.io/crates/unicode-ident)&ensp;[![docs-rs]](https://docs.rs/unicode-ident)
     //!
     //! [github]: https://img.shields.io/badge/github-8da0cb?style=for-the-badge&labelColor=555555&logo=github
     //! [crates-io]: https://img.shields.io/badge/crates.io-fc8d62?style=for-the-badge&labelColor=555555&logo=rust
    @@ -293,7 +293,7 @@
     //! implementations.
     //!
     //! - `unicode-ident` is this crate;
    -//! - [`unicode-xid`] is a widely used crate run by the "unicode-rs" org;
    +//! - [`unicode-xid`] is a widely used crate run by the "unicode-rs" org;
     //! - `ucd-trie` and `fst` are two data structures supported by the
     //!   [`ucd-generate`] tool;
     //! - [`roaring`] is a Rust implementation of Roaring bitmap.
    @@ -312,10 +312,10 @@
     //!
     //! | | static storage | 0% nonascii | 1% | 10% | 100% nonascii |
     //! |---|---|---|---|---|---|
    -//! | **`unicode-ident`** | 10.1 K | 0.96 ns | 0.95 ns | 1.09 ns | 1.55 ns |
    -//! | **`unicode-xid`** | 11.5 K | 1.88 ns | 2.14 ns | 3.48 ns | 15.63 ns |
    -//! | **`ucd-trie`** | 10.2 K | 1.29 ns | 1.28 ns | 1.36 ns | 2.15 ns |
    -//! | **`fst`** | 139 K | 55.1 ns | 54.9 ns | 53.2 ns | 28.5 ns |
    +//! | **`unicode-ident`** | 10.4 K | 0.96 ns | 0.95 ns | 1.09 ns | 1.55 ns |
    +//! | **`unicode-xid`** | 11.8 K | 1.88 ns | 2.14 ns | 3.48 ns | 15.63 ns |
    +//! | **`ucd-trie`** | 10.3 K | 1.29 ns | 1.28 ns | 1.36 ns | 2.15 ns |
    +//! | **`fst`** | 144 K | 55.1 ns | 54.9 ns | 53.2 ns | 28.5 ns |
     //! | **`roaring`** | 66.1 K | 2.78 ns | 3.09 ns | 3.37 ns | 4.70 ns |
     //!
     //! Source code for the benchmark is provided in the *bench* directory of this
    @@ -333,12 +333,12 @@
     //! ```rust
     //! # const _: &str = stringify! {
     //! static XID_Continue_table: [(char, char); 763] = [
    -//!     ('\u{30}', '\u{39}'),  // 0-9
    -//!     ('\u{41}', '\u{5a}'),  // A-Z
    -//! # "
    +//!     ('\u{30}', '\u{39}'),  // 0-9
    +//!     ('\u{41}', '\u{5a}'),  // A-Z
    +//! # "
     //!     …
    -//! # "
    -//!     ('\u{e0100}', '\u{e01ef}'),
    +//! # "
    +//!     ('\u{e0100}', '\u{e01ef}'),
     //! ];
     //! # };
     //! ```
    @@ -363,12 +363,12 @@
     //! compared to the fastest crate.
     //!
     //! A potential improvement would be to pack the table entries more compactly.
    -//! Rust's `char` type is a 21-bit integer padded to 32 bits, which means every
    +//! Rust's `char` type is a 21-bit integer padded to 32 bits, which means every
     //! table entry is holding 22 bits of wasted space, adding up to 3.9 K. They
     //! could instead fit every table entry into 6 bytes, leaving out some of the
     //! padding, for a 25% improvement in space used. With some cleverness it may be
     //! possible to fit in 5 bytes or even 4 bytes by storing a low char and an
    -//! extent, instead of low char and high char. I don't expect that performance
    +//! extent, instead of low char and high char. I don't expect that performance
     //! would improve much but this could be the most efficient for space across all
     //! the libraries, needing only about 7 K to store.
     //!
    @@ -382,17 +382,17 @@
     //!
     //! ```rust
     //! pub struct TrieSet {
    -//!     tree1_level1: &'static [u64; 32],
    -//!     tree2_level1: &'static [u8; 992],
    -//!     tree2_level2: &'static [u64],
    -//!     tree3_level1: &'static [u8; 256],
    -//!     tree3_level2: &'static [u8],
    -//!     tree3_level3: &'static [u64],
    +//!     tree1_level1: &'static [u64; 32],
    +//!     tree2_level1: &'static [u8; 992],
    +//!     tree2_level2: &'static [u64],
    +//!     tree3_level1: &'static [u8; 256],
    +//!     tree3_level2: &'static [u8],
    +//!     tree3_level3: &'static [u64],
     //! }
     //! ```
     //!
     //! It represents codepoint sets using a trie to achieve prefix compression. The
    -//! final states of the trie are embedded in leaves or "chunks", where each
    +//! final states of the trie are embedded in leaves or "chunks", where each
     //! chunk is a 64-bit integer. Each bit position of the integer corresponds to
     //! whether a particular codepoint is in the set or not. These chunks are not
     //! just a compact representation of the final states of the trie, but are also
    @@ -460,7 +460,7 @@
     //!
     //! #### unicode-ident
     //!
    -//! This crate is most similar to the `ucd-trie` library, in that it's based on
    +//! This crate is most similar to the `ucd-trie` library, in that it's based on
     //! bitmaps stored in the leafs of a trie representation, achieving both prefix
     //! compression and suffix compression.
     //!
    @@ -479,8 +479,8 @@
     //! <table>
     //! <tr><th>XID_Start</th><th>XID_Continue</th></tr>
     //! <tr>
    -//! <td><img alt="XID_Start bitmap" width="256" src="https://user-images.githubusercontent.com/1940490/168647353-c6eeb922-afec-49b2-9ef5-c03e9d1e0760.png"></td>
    -//! <td><img alt="XID_Continue bitmap" width="256" src="https://user-images.githubusercontent.com/1940490/168647367-f447cca7-2362-4d7d-8cd7-d21c011d329b.png"></td>
    +//! <td><img alt="XID_Start bitmap" width="256" src="https://user-images.githubusercontent.com/1940490/168647353-c6eeb922-afec-49b2-9ef5-c03e9d1e0760.png"></td>
    +//! <td><img alt="XID_Continue bitmap" width="256" src="https://user-images.githubusercontent.com/1940490/168647367-f447cca7-2362-4d7d-8cd7-d21c011d329b.png"></td>
     //! </tr>
     //! </table>
     //!
    @@ -489,7 +489,7 @@
     //! between the two bitmaps and across the rows, which lends well to
     //! compression.
     //!
    -//! This crate stores one 512-bit "row" of the above bitmaps in the leaf level
    +//! This crate stores one 512-bit "row" of the above bitmaps in the leaf level
     //! of a trie, and a single additional level to index into the leafs. It turns
     //! out there are 124 unique 512-bit chunks across the two bitmaps so 7 bits are
     //! sufficient to index them.
    @@ -505,13 +505,13 @@
     //! additional 8.5% compression by eliminating redundancies between the second
     //! half of any chunk and the first half of any other chunk. Note that this is
     //! not the same as using chunks which are half the size, because it does not
    -//! necessitate raising the size of the trie's first level.
    +//! necessitate raising the size of the trie's first level.
     //!
     //! In contrast to binary search or the `ucd-trie` crate, performing lookups in
     //! this data structure is straight-line code with no need for branching.
     
     #![no_std]
    -#![doc(html_root_url = "https://docs.rs/unicode-ident/1.0.12")]
    +#![doc(html_root_url = "https://docs.rs/unicode-ident/1.0.14")]
     #![allow(clippy::doc_markdown, clippy::must_use_candidate)]
     
     #[rustfmt::skip]
    diff --git a/src/unicode_ident/tables.rs.html b/src/unicode_ident/tables.rs.html
    index 09d67b1..4b7c720 100644
    --- a/src/unicode_ident/tables.rs.html
    +++ b/src/unicode_ident/tables.rs.html
    @@ -1,4 +1,5 @@
    -tables.rs - source
    1
    +tables.rs - source

    unicode_ident/
    tables.rs

    +1
     2
     3
     4
    @@ -649,9 +650,28 @@
     649
     650
     651
    -
    // @generated by ../generate. To regenerate, run the following in the repo root:
    +652
    +653
    +654
    +655
    +656
    +657
    +658
    +659
    +660
    +661
    +662
    +663
    +664
    +665
    +666
    +667
    +668
    +669
    +670
    +671
    // @generated by ../generate. To regenerate, run the following in the repo root:
     //
    -// $ curl -LO https://www.unicode.org/Public/zipped/15.0.0/UCD.zip
    +// $ curl -LO https://www.unicode.org/Public/zipped/16.0.0/UCD.zip
     // $ unzip UCD.zip -d UCD
     // $ cargo run --manifest-path generate/Cargo.toml
     
    @@ -688,24 +708,24 @@
         0x05, 0x05, 0x51, 0x54, 0x58, 0x5C, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
         0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x09, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x60, 0x64, 0x66,
    -    0x6A, 0x6E, 0x72, 0x28, 0x76, 0x78, 0x7C, 0x80, 0x84, 0x88, 0x8C, 0x90, 0x94, 0x98, 0x9E, 0xA2,
    -    0x05, 0x2B, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x99, 0x05, 0x05, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0x00, 0x00, 0x05, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0x00, 0x00, 0x00, 0x00, 0x05, 0xB1, 0x00, 0xB5, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
    -    0x05, 0x05, 0x05, 0x32, 0x05, 0x05, 0xB9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x43, 0xBB, 0x00, 0x00, 0x00, 0x00, 0xBE, 0x00,
    -    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC8, 0x00, 0x00, 0x00, 0xAF,
    -    0xCE, 0xD2, 0xD6, 0xBC, 0xDA, 0x00, 0x00, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0x6A, 0x6E, 0x72, 0x28, 0x76, 0x78, 0x7C, 0x80, 0x84, 0x88, 0x8C, 0x90, 0x94, 0x98, 0x9C, 0xA0,
    +    0x05, 0x2B, 0xA4, 0x00, 0x00, 0x00, 0x00, 0xA6, 0x05, 0x05, 0xA8, 0x05, 0x05, 0x05, 0x05, 0x05,
    +    0x05, 0x32, 0x05, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0xAF, 0x00, 0x00, 0x00, 0x05, 0xB3, 0xB7, 0xBB, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
    +    0x05, 0x05, 0x05, 0x43, 0x05, 0x05, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x52, 0xC3, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD2, 0xD4, 0x00, 0x00, 0x00, 0xCA,
    +    0xDB, 0xDF, 0xE3, 0xCD, 0xE7, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
         0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
         0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
         0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
         0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
    -    0x05, 0x05, 0x05, 0xE0, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x52, 0xE3, 0x05, 0x05, 0x05,
    -    0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0xE6, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
    -    0x05, 0x05, 0x05, 0x05, 0x05, 0xE1, 0x05, 0xE9, 0x00, 0x00, 0x00, 0x00, 0x05, 0xEB, 0x00, 0x00,
    -    0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0xE4, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
    -    0x05, 0xE7,
    +    0x05, 0x05, 0x05, 0xED, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0xA9, 0xF0, 0x05, 0x05, 0x05,
    +    0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0xF3, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
    +    0x05, 0x05, 0x05, 0x05, 0x05, 0xAC, 0x05, 0xF5, 0x00, 0x00, 0x00, 0x00, 0x05, 0xB0, 0x00, 0x00,
    +    0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0xEE, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
    +    0x05, 0xF1,
     ]);
     
     pub(crate) static TRIE_CONTINUE: Align8<[u8; 1793]> = Align8([
    @@ -717,24 +737,24 @@
         0x05, 0x05, 0x51, 0x56, 0x5A, 0x5E, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
         0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x09, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x62, 0x64, 0x68,
    -    0x6C, 0x70, 0x74, 0x28, 0x76, 0x7A, 0x7E, 0x82, 0x86, 0x8A, 0x8E, 0x92, 0x96, 0x9B, 0xA0, 0xA4,
    -    0x05, 0x2B, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x99, 0x05, 0x05, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0x00, 0x00, 0x05, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0x00, 0x00, 0x00, 0x00, 0x05, 0xB3, 0x00, 0xB7, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
    -    0x05, 0x05, 0x05, 0x32, 0x05, 0x05, 0xB9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x43, 0xBB, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x00,
    -    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA9, 0xAC, 0xC4, 0xC6, 0xCA, 0x00, 0xCC, 0x00, 0xAF,
    -    0xD0, 0xD4, 0xD8, 0xBC, 0xDC, 0x00, 0x00, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x00, 0x00,
    +    0x6C, 0x70, 0x74, 0x28, 0x76, 0x7A, 0x7E, 0x82, 0x86, 0x8A, 0x8E, 0x92, 0x96, 0x9A, 0x9E, 0xA2,
    +    0x05, 0x2B, 0xA4, 0x00, 0x00, 0x00, 0x00, 0xA6, 0x05, 0x05, 0xAB, 0x05, 0x05, 0x05, 0x05, 0x05,
    +    0x05, 0x32, 0x05, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0xB1, 0x00, 0x00, 0x00, 0x05, 0xB5, 0xB9, 0xBD, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
    +    0x05, 0x05, 0x05, 0x43, 0x05, 0x05, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x52, 0xC3, 0x00, 0x00, 0x00, 0x00, 0xC9, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0xC4, 0xC7, 0xCF, 0xD2, 0xD6, 0x00, 0xD8, 0x00, 0xCA,
    +    0xDD, 0xE1, 0xE5, 0xCD, 0xE9, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x00, 0x00,
         0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
         0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
         0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
         0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
         0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
    -    0x05, 0x05, 0x05, 0xE0, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x52, 0xE3, 0x05, 0x05, 0x05,
    -    0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0xE6, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
    -    0x05, 0x05, 0x05, 0x05, 0x05, 0xE1, 0x05, 0xE9, 0x00, 0x00, 0x00, 0x00, 0x05, 0xEB, 0x00, 0x00,
    -    0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0xE4, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
    -    0x05, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0x05, 0x05, 0x05, 0xED, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0xA9, 0xF0, 0x05, 0x05, 0x05,
    +    0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0xF3, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
    +    0x05, 0x05, 0x05, 0x05, 0x05, 0xAC, 0x05, 0xF5, 0x00, 0x00, 0x00, 0x00, 0x05, 0xB0, 0x00, 0x00,
    +    0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0xEE, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
    +    0x05, 0xF1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    @@ -821,10 +841,10 @@
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0xC2,
    +    0xD9,
     ]);
     
    -pub(crate) static LEAF: Align64<[u8; 7584]> = Align64([
    +pub(crate) static LEAF: Align64<[u8; 7904]> = Align64([
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    @@ -876,7 +896,7 @@
         0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x23, 0x00, 0x00, 0x01, 0xFF, 0x03, 0x00, 0xFE, 0xFF,
         0xE1, 0x9F, 0xF9, 0xFF, 0xFF, 0xFD, 0xC5, 0x23, 0x00, 0x40, 0x00, 0xB0, 0x03, 0x00, 0x03, 0x10,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0x07, 0xFF, 0xFF,
    -    0xFF, 0x7E, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF,
    +    0xFF, 0x7E, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFE, 0xFF,
         0xEF, 0x9F, 0xF9, 0xFF, 0xFF, 0xFD, 0xC5, 0xF3, 0x9F, 0x79, 0x80, 0xB0, 0xCF, 0xFF, 0x03, 0x50,
         0xE0, 0x87, 0xF9, 0xFF, 0xFF, 0xFD, 0x6D, 0x03, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x00, 0x1C, 0x00,
    @@ -928,7 +948,7 @@
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    -    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
    +    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF,
         0xFE, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xFF, 0x01,
         0xFF, 0xFF, 0x03, 0x80, 0xFF, 0xFF, 0x03, 0x00, 0xFF, 0xFF, 0x03, 0x00, 0xFF, 0xDF, 0x01, 0x00,
    @@ -954,15 +974,15 @@
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0x03, 0x00, 0xF8, 0x0F, 0x00,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00,
         0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x3F,
    -    0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE, 0x6F, 0x04,
    +    0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE, 0x6F, 0x04,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xE3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
    -    0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0x07,
    +    0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0x07,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    -    0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x27, 0x00, 0xF0, 0x00, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    +    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80,
         0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x84, 0xFC, 0x2F, 0x3F, 0x50, 0xFD, 0xFF, 0xF3, 0xE0, 0x43, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
    @@ -991,16 +1011,16 @@
         0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    -    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    +    0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x27, 0x00, 0xF0, 0x00, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
         0xFF, 0x1F, 0xFF, 0xFF, 0x00, 0x0C, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x80,
         0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
         0x00, 0x00, 0x80, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    -    0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xEB, 0x03, 0x00, 0x00, 0xFC, 0xFF,
    +    0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xEB, 0x1F, 0x00, 0x00, 0xFC, 0xFF,
         0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xBF,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00,
         0x00, 0x00, 0x80, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    -    0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xEB, 0x03, 0x00, 0x00, 0xFC, 0xFF,
    +    0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xEB, 0x1F, 0x00, 0x00, 0xFC, 0xFF,
         0xBB, 0xF7, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00,
         0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x68,
         0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x1F,
    @@ -1056,11 +1076,11 @@
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xF7,
    -    0xFF, 0xF7, 0xB7, 0xFF, 0xFB, 0xFF, 0xFB, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0xFF, 0xF7, 0xB7, 0xFF, 0xFB, 0xFF, 0xFB, 0x1B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xF7,
    -    0xFF, 0xF7, 0xB7, 0xFF, 0xFB, 0xFF, 0xFB, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0xFF, 0xF7, 0xB7, 0xFF, 0xFB, 0xFF, 0xFB, 0x1B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00,
         0x3F, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x91, 0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0xFF, 0x7F, 0x00,
         0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x37, 0x00,
         0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    @@ -1075,18 +1095,18 @@
         0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00,
    -    0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0x80, 0xFF, 0xFF,
    +    0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00,
    -    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xBE, 0xFF, 0xFF,
    +    0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0xFF, 0xFF, 0xFF, 0x1F, 0x80, 0x00, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
         0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1B, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0,
    +    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1B, 0x03, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0,
         0xFF, 0xFF, 0xFF, 0x1F, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF,
         0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00,
         0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00,
    @@ -1100,11 +1120,11 @@
         0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0x0F, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x7F, 0xBD, 0xFF, 0xBF, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
         0xE0, 0x9F, 0xF9, 0xFF, 0xFF, 0xFD, 0xED, 0x23, 0x00, 0x00, 0x01, 0xE0, 0x03, 0x00, 0x00, 0x00,
    -    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0xFF, 0x4B, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00,
         0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x7F, 0xBD, 0xFF, 0xBF, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0x03,
         0xEF, 0x9F, 0xF9, 0xFF, 0xFF, 0xFD, 0xED, 0xFB, 0x9F, 0x39, 0x81, 0xE0, 0xCF, 0x1F, 0x1F, 0x00,
    -    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0xFF, 0x4B, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xA5, 0xF7, 0x0F, 0x00, 0x06, 0x00, 0x00, 0x00,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x80, 0x07, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    @@ -1118,7 +1138,7 @@
         0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x11, 0x00, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
    -    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0x03, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00,
         0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0x0F, 0xFF, 0x03, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    @@ -1132,15 +1152,11 @@
         0x01, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x04, 0x00, 0x00, 0x01, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF,
         0xFF, 0x03, 0x00, 0x20, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0x23, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x6F,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFF, 0x03,
         0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF,
         0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x7F, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x40, 0x00, 0x00, 0x00, 0xBF, 0xFD, 0xFF, 0xFF,
    @@ -1155,29 +1171,37 @@
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00,
    -    0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x07, 0x00, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
    +    0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x07, 0x00, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE3, 0x07, 0xF8,
    -    0xE7, 0x0F, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00,
    +    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
    +    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    +    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    +    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    +    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    +    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    +    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
    +    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    +    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    +    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    +    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    +    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0xFF, 0xFF, 0xFF, 0x7F, 0xE0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00,
    @@ -1187,6 +1211,14 @@
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0x00,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x0F, 0x00, 0xFF, 0x03, 0xF8, 0xFF, 0xFF, 0xE0,
         0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0x03,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
    @@ -1196,31 +1228,43 @@
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
         0xFF, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x03, 0x00,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    -    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80,
         0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x6F,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x6F, 0xFF, 0x7F,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0x1F,
         0xFF, 0x01, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE3, 0x07, 0xF8,
    +    0xE7, 0x0F, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0x1F,
         0xFF, 0x01, 0xFF, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    -    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
    +    0xFF, 0xFF, 0xFF, 0x7F, 0xE0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x6F, 0xFF, 0x7F,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0xDF, 0x64, 0xDE, 0xFF, 0xEB, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
         0xBF, 0xE7, 0xDF, 0xDF, 0xFF, 0xFF, 0xFF, 0x7B, 0x5F, 0xFC, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    @@ -1237,6 +1281,8 @@
         0x10, 0x00, 0x00, 0xF8, 0xFE, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    +    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x80, 0x3F, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    @@ -1256,11 +1302,11 @@
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x3F, 0x01, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    @@ -1277,27 +1323,21 @@
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    +    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    -    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    -    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    +    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    -    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    -    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    -    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     ]);
     
    \ No newline at end of file diff --git a/src/unicode_xid/lib.rs.html b/src/unicode_xid/lib.rs.html deleted file mode 100644 index 5f7e1da..0000000 --- a/src/unicode_xid/lib.rs.html +++ /dev/null @@ -1,185 +0,0 @@ -lib.rs - source
    1
    -2
    -3
    -4
    -5
    -6
    -7
    -8
    -9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -31
    -32
    -33
    -34
    -35
    -36
    -37
    -38
    -39
    -40
    -41
    -42
    -43
    -44
    -45
    -46
    -47
    -48
    -49
    -50
    -51
    -52
    -53
    -54
    -55
    -56
    -57
    -58
    -59
    -60
    -61
    -62
    -63
    -64
    -65
    -66
    -67
    -68
    -69
    -70
    -71
    -72
    -73
    -74
    -75
    -76
    -77
    -78
    -79
    -80
    -81
    -82
    -83
    -84
    -85
    -86
    -87
    -88
    -89
    -90
    -91
    -92
    -
    // Copyright 2012-2015 The Rust Project Developers. See the COPYRIGHT
    -// file at the top-level directory of this distribution and at
    -// http://rust-lang.org/COPYRIGHT.
    -//
    -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
    -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
    -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
    -// option. This file may not be copied, modified, or distributed
    -// except according to those terms.
    -
    -//! Determine if a `char` is a valid identifier for a parser and/or lexer according to
    -//! [Unicode Standard Annex #31](http://www.unicode.org/reports/tr31/) rules.
    -//!
    -//! ```rust
    -//! extern crate unicode_xid;
    -//!
    -//! use unicode_xid::UnicodeXID;
    -//!
    -//! fn main() {
    -//!     let ch = 'a';
    -//!     println!("Is {} a valid start of an identifier? {}", ch, UnicodeXID::is_xid_start(ch));
    -//! }
    -//! ```
    -//!
    -//! # features
    -//!
    -//! unicode-xid supports a `no_std` feature. This eliminates dependence
    -//! on std, and instead uses equivalent functions from core.
    -//!
    -
    -#![forbid(unsafe_code)]
    -#![deny(missing_docs)]
    -#![doc(
    -    html_logo_url = "https://unicode-rs.github.io/unicode-rs_sm.png",
    -    html_favicon_url = "https://unicode-rs.github.io/unicode-rs_sm.png"
    -)]
    -#![no_std]
    -#![cfg_attr(feature = "bench", feature(test, unicode_internals))]
    -
    -#[cfg(test)]
    -#[macro_use]
    -extern crate std;
    -
    -#[cfg(feature = "bench")]
    -extern crate test;
    -
    -use tables::derived_property;
    -pub use tables::UNICODE_VERSION;
    -
    -mod tables;
    -
    -#[cfg(test)]
    -mod tests;
    -
    -/// Methods for determining if a character is a valid identifier character.
    -pub trait UnicodeXID {
    -    /// Returns whether the specified character satisfies the 'XID_Start'
    -    /// Unicode property.
    -    ///
    -    /// 'XID_Start' is a Unicode Derived Property specified in
    -    /// [UAX #31](http://unicode.org/reports/tr31/#NFKC_Modifications),
    -    /// mostly similar to ID_Start but modified for closure under NFKx.
    -    fn is_xid_start(self) -> bool;
    -
    -    /// Returns whether the specified `char` satisfies the 'XID_Continue'
    -    /// Unicode property.
    -    ///
    -    /// 'XID_Continue' is a Unicode Derived Property specified in
    -    /// [UAX #31](http://unicode.org/reports/tr31/#NFKC_Modifications),
    -    /// mostly similar to 'ID_Continue' but modified for closure under NFKx.
    -    fn is_xid_continue(self) -> bool;
    -}
    -
    -impl UnicodeXID for char {
    -    #[inline]
    -    fn is_xid_start(self) -> bool {
    -        // Fast-path for ascii idents
    -        ('a' <= self && self <= 'z')
    -            || ('A' <= self && self <= 'Z')
    -            || (self > '\x7f' && derived_property::XID_Start(self))
    -    }
    -
    -    #[inline]
    -    fn is_xid_continue(self) -> bool {
    -        // Fast-path for ascii idents
    -        ('a' <= self && self <= 'z')
    -            || ('A' <= self && self <= 'Z')
    -            || ('0' <= self && self <= '9')
    -            || self == '_'
    -            || (self > '\x7f' && derived_property::XID_Continue(self))
    -    }
    -}
    -
    \ No newline at end of file diff --git a/src/unicode_xid/tables.rs.html b/src/unicode_xid/tables.rs.html deleted file mode 100644 index 0d01635..0000000 --- a/src/unicode_xid/tables.rs.html +++ /dev/null @@ -1,2989 +0,0 @@ -tables.rs - source
    1
    -2
    -3
    -4
    -5
    -6
    -7
    -8
    -9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -31
    -32
    -33
    -34
    -35
    -36
    -37
    -38
    -39
    -40
    -41
    -42
    -43
    -44
    -45
    -46
    -47
    -48
    -49
    -50
    -51
    -52
    -53
    -54
    -55
    -56
    -57
    -58
    -59
    -60
    -61
    -62
    -63
    -64
    -65
    -66
    -67
    -68
    -69
    -70
    -71
    -72
    -73
    -74
    -75
    -76
    -77
    -78
    -79
    -80
    -81
    -82
    -83
    -84
    -85
    -86
    -87
    -88
    -89
    -90
    -91
    -92
    -93
    -94
    -95
    -96
    -97
    -98
    -99
    -100
    -101
    -102
    -103
    -104
    -105
    -106
    -107
    -108
    -109
    -110
    -111
    -112
    -113
    -114
    -115
    -116
    -117
    -118
    -119
    -120
    -121
    -122
    -123
    -124
    -125
    -126
    -127
    -128
    -129
    -130
    -131
    -132
    -133
    -134
    -135
    -136
    -137
    -138
    -139
    -140
    -141
    -142
    -143
    -144
    -145
    -146
    -147
    -148
    -149
    -150
    -151
    -152
    -153
    -154
    -155
    -156
    -157
    -158
    -159
    -160
    -161
    -162
    -163
    -164
    -165
    -166
    -167
    -168
    -169
    -170
    -171
    -172
    -173
    -174
    -175
    -176
    -177
    -178
    -179
    -180
    -181
    -182
    -183
    -184
    -185
    -186
    -187
    -188
    -189
    -190
    -191
    -192
    -193
    -194
    -195
    -196
    -197
    -198
    -199
    -200
    -201
    -202
    -203
    -204
    -205
    -206
    -207
    -208
    -209
    -210
    -211
    -212
    -213
    -214
    -215
    -216
    -217
    -218
    -219
    -220
    -221
    -222
    -223
    -224
    -225
    -226
    -227
    -228
    -229
    -230
    -231
    -232
    -233
    -234
    -235
    -236
    -237
    -238
    -239
    -240
    -241
    -242
    -243
    -244
    -245
    -246
    -247
    -248
    -249
    -250
    -251
    -252
    -253
    -254
    -255
    -256
    -257
    -258
    -259
    -260
    -261
    -262
    -263
    -264
    -265
    -266
    -267
    -268
    -269
    -270
    -271
    -272
    -273
    -274
    -275
    -276
    -277
    -278
    -279
    -280
    -281
    -282
    -283
    -284
    -285
    -286
    -287
    -288
    -289
    -290
    -291
    -292
    -293
    -294
    -295
    -296
    -297
    -298
    -299
    -300
    -301
    -302
    -303
    -304
    -305
    -306
    -307
    -308
    -309
    -310
    -311
    -312
    -313
    -314
    -315
    -316
    -317
    -318
    -319
    -320
    -321
    -322
    -323
    -324
    -325
    -326
    -327
    -328
    -329
    -330
    -331
    -332
    -333
    -334
    -335
    -336
    -337
    -338
    -339
    -340
    -341
    -342
    -343
    -344
    -345
    -346
    -347
    -348
    -349
    -350
    -351
    -352
    -353
    -354
    -355
    -356
    -357
    -358
    -359
    -360
    -361
    -362
    -363
    -364
    -365
    -366
    -367
    -368
    -369
    -370
    -371
    -372
    -373
    -374
    -375
    -376
    -377
    -378
    -379
    -380
    -381
    -382
    -383
    -384
    -385
    -386
    -387
    -388
    -389
    -390
    -391
    -392
    -393
    -394
    -395
    -396
    -397
    -398
    -399
    -400
    -401
    -402
    -403
    -404
    -405
    -406
    -407
    -408
    -409
    -410
    -411
    -412
    -413
    -414
    -415
    -416
    -417
    -418
    -419
    -420
    -421
    -422
    -423
    -424
    -425
    -426
    -427
    -428
    -429
    -430
    -431
    -432
    -433
    -434
    -435
    -436
    -437
    -438
    -439
    -440
    -441
    -442
    -443
    -444
    -445
    -446
    -447
    -448
    -449
    -450
    -451
    -452
    -453
    -454
    -455
    -456
    -457
    -458
    -459
    -460
    -461
    -462
    -463
    -464
    -465
    -466
    -467
    -468
    -469
    -470
    -471
    -472
    -473
    -474
    -475
    -476
    -477
    -478
    -479
    -480
    -481
    -482
    -483
    -484
    -485
    -486
    -487
    -488
    -489
    -490
    -491
    -492
    -493
    -494
    -495
    -496
    -497
    -498
    -499
    -500
    -501
    -502
    -503
    -504
    -505
    -506
    -507
    -508
    -509
    -510
    -511
    -512
    -513
    -514
    -515
    -516
    -517
    -518
    -519
    -520
    -521
    -522
    -523
    -524
    -525
    -526
    -527
    -528
    -529
    -530
    -531
    -532
    -533
    -534
    -535
    -536
    -537
    -538
    -539
    -540
    -541
    -542
    -543
    -544
    -545
    -546
    -547
    -548
    -549
    -550
    -551
    -552
    -553
    -554
    -555
    -556
    -557
    -558
    -559
    -560
    -561
    -562
    -563
    -564
    -565
    -566
    -567
    -568
    -569
    -570
    -571
    -572
    -573
    -574
    -575
    -576
    -577
    -578
    -579
    -580
    -581
    -582
    -583
    -584
    -585
    -586
    -587
    -588
    -589
    -590
    -591
    -592
    -593
    -594
    -595
    -596
    -597
    -598
    -599
    -600
    -601
    -602
    -603
    -604
    -605
    -606
    -607
    -608
    -609
    -610
    -611
    -612
    -613
    -614
    -615
    -616
    -617
    -618
    -619
    -620
    -621
    -622
    -623
    -624
    -625
    -626
    -627
    -628
    -629
    -630
    -631
    -632
    -633
    -634
    -635
    -636
    -637
    -638
    -639
    -640
    -641
    -642
    -643
    -644
    -645
    -646
    -647
    -648
    -649
    -650
    -651
    -652
    -653
    -654
    -655
    -656
    -657
    -658
    -659
    -660
    -661
    -662
    -663
    -664
    -665
    -666
    -667
    -668
    -669
    -670
    -671
    -672
    -673
    -674
    -675
    -676
    -677
    -678
    -679
    -680
    -681
    -682
    -683
    -684
    -685
    -686
    -687
    -688
    -689
    -690
    -691
    -692
    -693
    -694
    -695
    -696
    -697
    -698
    -699
    -700
    -701
    -702
    -703
    -704
    -705
    -706
    -707
    -708
    -709
    -710
    -711
    -712
    -713
    -714
    -715
    -716
    -717
    -718
    -719
    -720
    -721
    -722
    -723
    -724
    -725
    -726
    -727
    -728
    -729
    -730
    -731
    -732
    -733
    -734
    -735
    -736
    -737
    -738
    -739
    -740
    -741
    -742
    -743
    -744
    -745
    -746
    -747
    -748
    -749
    -750
    -751
    -752
    -753
    -754
    -755
    -756
    -757
    -758
    -759
    -760
    -761
    -762
    -763
    -764
    -765
    -766
    -767
    -768
    -769
    -770
    -771
    -772
    -773
    -774
    -775
    -776
    -777
    -778
    -779
    -780
    -781
    -782
    -783
    -784
    -785
    -786
    -787
    -788
    -789
    -790
    -791
    -792
    -793
    -794
    -795
    -796
    -797
    -798
    -799
    -800
    -801
    -802
    -803
    -804
    -805
    -806
    -807
    -808
    -809
    -810
    -811
    -812
    -813
    -814
    -815
    -816
    -817
    -818
    -819
    -820
    -821
    -822
    -823
    -824
    -825
    -826
    -827
    -828
    -829
    -830
    -831
    -832
    -833
    -834
    -835
    -836
    -837
    -838
    -839
    -840
    -841
    -842
    -843
    -844
    -845
    -846
    -847
    -848
    -849
    -850
    -851
    -852
    -853
    -854
    -855
    -856
    -857
    -858
    -859
    -860
    -861
    -862
    -863
    -864
    -865
    -866
    -867
    -868
    -869
    -870
    -871
    -872
    -873
    -874
    -875
    -876
    -877
    -878
    -879
    -880
    -881
    -882
    -883
    -884
    -885
    -886
    -887
    -888
    -889
    -890
    -891
    -892
    -893
    -894
    -895
    -896
    -897
    -898
    -899
    -900
    -901
    -902
    -903
    -904
    -905
    -906
    -907
    -908
    -909
    -910
    -911
    -912
    -913
    -914
    -915
    -916
    -917
    -918
    -919
    -920
    -921
    -922
    -923
    -924
    -925
    -926
    -927
    -928
    -929
    -930
    -931
    -932
    -933
    -934
    -935
    -936
    -937
    -938
    -939
    -940
    -941
    -942
    -943
    -944
    -945
    -946
    -947
    -948
    -949
    -950
    -951
    -952
    -953
    -954
    -955
    -956
    -957
    -958
    -959
    -960
    -961
    -962
    -963
    -964
    -965
    -966
    -967
    -968
    -969
    -970
    -971
    -972
    -973
    -974
    -975
    -976
    -977
    -978
    -979
    -980
    -981
    -982
    -983
    -984
    -985
    -986
    -987
    -988
    -989
    -990
    -991
    -992
    -993
    -994
    -995
    -996
    -997
    -998
    -999
    -1000
    -1001
    -1002
    -1003
    -1004
    -1005
    -1006
    -1007
    -1008
    -1009
    -1010
    -1011
    -1012
    -1013
    -1014
    -1015
    -1016
    -1017
    -1018
    -1019
    -1020
    -1021
    -1022
    -1023
    -1024
    -1025
    -1026
    -1027
    -1028
    -1029
    -1030
    -1031
    -1032
    -1033
    -1034
    -1035
    -1036
    -1037
    -1038
    -1039
    -1040
    -1041
    -1042
    -1043
    -1044
    -1045
    -1046
    -1047
    -1048
    -1049
    -1050
    -1051
    -1052
    -1053
    -1054
    -1055
    -1056
    -1057
    -1058
    -1059
    -1060
    -1061
    -1062
    -1063
    -1064
    -1065
    -1066
    -1067
    -1068
    -1069
    -1070
    -1071
    -1072
    -1073
    -1074
    -1075
    -1076
    -1077
    -1078
    -1079
    -1080
    -1081
    -1082
    -1083
    -1084
    -1085
    -1086
    -1087
    -1088
    -1089
    -1090
    -1091
    -1092
    -1093
    -1094
    -1095
    -1096
    -1097
    -1098
    -1099
    -1100
    -1101
    -1102
    -1103
    -1104
    -1105
    -1106
    -1107
    -1108
    -1109
    -1110
    -1111
    -1112
    -1113
    -1114
    -1115
    -1116
    -1117
    -1118
    -1119
    -1120
    -1121
    -1122
    -1123
    -1124
    -1125
    -1126
    -1127
    -1128
    -1129
    -1130
    -1131
    -1132
    -1133
    -1134
    -1135
    -1136
    -1137
    -1138
    -1139
    -1140
    -1141
    -1142
    -1143
    -1144
    -1145
    -1146
    -1147
    -1148
    -1149
    -1150
    -1151
    -1152
    -1153
    -1154
    -1155
    -1156
    -1157
    -1158
    -1159
    -1160
    -1161
    -1162
    -1163
    -1164
    -1165
    -1166
    -1167
    -1168
    -1169
    -1170
    -1171
    -1172
    -1173
    -1174
    -1175
    -1176
    -1177
    -1178
    -1179
    -1180
    -1181
    -1182
    -1183
    -1184
    -1185
    -1186
    -1187
    -1188
    -1189
    -1190
    -1191
    -1192
    -1193
    -1194
    -1195
    -1196
    -1197
    -1198
    -1199
    -1200
    -1201
    -1202
    -1203
    -1204
    -1205
    -1206
    -1207
    -1208
    -1209
    -1210
    -1211
    -1212
    -1213
    -1214
    -1215
    -1216
    -1217
    -1218
    -1219
    -1220
    -1221
    -1222
    -1223
    -1224
    -1225
    -1226
    -1227
    -1228
    -1229
    -1230
    -1231
    -1232
    -1233
    -1234
    -1235
    -1236
    -1237
    -1238
    -1239
    -1240
    -1241
    -1242
    -1243
    -1244
    -1245
    -1246
    -1247
    -1248
    -1249
    -1250
    -1251
    -1252
    -1253
    -1254
    -1255
    -1256
    -1257
    -1258
    -1259
    -1260
    -1261
    -1262
    -1263
    -1264
    -1265
    -1266
    -1267
    -1268
    -1269
    -1270
    -1271
    -1272
    -1273
    -1274
    -1275
    -1276
    -1277
    -1278
    -1279
    -1280
    -1281
    -1282
    -1283
    -1284
    -1285
    -1286
    -1287
    -1288
    -1289
    -1290
    -1291
    -1292
    -1293
    -1294
    -1295
    -1296
    -1297
    -1298
    -1299
    -1300
    -1301
    -1302
    -1303
    -1304
    -1305
    -1306
    -1307
    -1308
    -1309
    -1310
    -1311
    -1312
    -1313
    -1314
    -1315
    -1316
    -1317
    -1318
    -1319
    -1320
    -1321
    -1322
    -1323
    -1324
    -1325
    -1326
    -1327
    -1328
    -1329
    -1330
    -1331
    -1332
    -1333
    -1334
    -1335
    -1336
    -1337
    -1338
    -1339
    -1340
    -1341
    -1342
    -1343
    -1344
    -1345
    -1346
    -1347
    -1348
    -1349
    -1350
    -1351
    -1352
    -1353
    -1354
    -1355
    -1356
    -1357
    -1358
    -1359
    -1360
    -1361
    -1362
    -1363
    -1364
    -1365
    -1366
    -1367
    -1368
    -1369
    -1370
    -1371
    -1372
    -1373
    -1374
    -1375
    -1376
    -1377
    -1378
    -1379
    -1380
    -1381
    -1382
    -1383
    -1384
    -1385
    -1386
    -1387
    -1388
    -1389
    -1390
    -1391
    -1392
    -1393
    -1394
    -1395
    -1396
    -1397
    -1398
    -1399
    -1400
    -1401
    -1402
    -1403
    -1404
    -1405
    -1406
    -1407
    -1408
    -1409
    -1410
    -1411
    -1412
    -1413
    -1414
    -1415
    -1416
    -1417
    -1418
    -1419
    -1420
    -1421
    -1422
    -1423
    -1424
    -1425
    -1426
    -1427
    -1428
    -1429
    -1430
    -1431
    -1432
    -1433
    -1434
    -1435
    -1436
    -1437
    -1438
    -1439
    -1440
    -1441
    -1442
    -1443
    -1444
    -1445
    -1446
    -1447
    -1448
    -1449
    -1450
    -1451
    -1452
    -1453
    -1454
    -1455
    -1456
    -1457
    -1458
    -1459
    -1460
    -1461
    -1462
    -1463
    -1464
    -1465
    -1466
    -1467
    -1468
    -1469
    -1470
    -1471
    -1472
    -1473
    -1474
    -1475
    -1476
    -1477
    -1478
    -1479
    -1480
    -1481
    -1482
    -1483
    -1484
    -1485
    -1486
    -1487
    -1488
    -1489
    -1490
    -1491
    -1492
    -1493
    -1494
    -
    // Copyright 2012-2015 The Rust Project Developers. See the COPYRIGHT
    -// file at the top-level directory of this distribution and at
    -// http://rust-lang.org/COPYRIGHT.
    -//
    -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
    -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
    -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
    -// option. This file may not be copied, modified, or distributed
    -// except according to those terms.
    -
    -// NOTE: The following code was generated by "scripts/unicode.py", do not edit directly
    -
    -#![allow(missing_docs, non_upper_case_globals, non_snake_case)]
    -
    -/// The version of [Unicode](http://www.unicode.org/)
    -/// that this version of unicode-xid is based on.
    -pub const UNICODE_VERSION: (u64, u64, u64) = (15, 0, 0);
    -
    -fn bsearch_range_table(c: char, r: &[(char, char)]) -> bool {
    -    use core::cmp::Ordering::{Equal, Greater, Less};
    -
    -    r.binary_search_by(|&(lo, hi)| {
    -        // Because ASCII ranges are at the start of the tables, a search for an
    -        // ASCII char will involve more `Greater` results (i.e. the `(lo,hi)`
    -        // table entry is greater than `c`) than `Less` results. And given that
    -        // ASCII chars are so common, it makes sense to favor them. Therefore,
    -        // the `Greater` case is tested for before the `Less` case.
    -        if lo > c {
    -            Greater
    -        } else if hi < c {
    -            Less
    -        } else {
    -            Equal
    -        }
    -    })
    -    .is_ok()
    -}
    -
    -pub mod derived_property {
    -    static XID_Continue_table: &[(char, char)] = &[
    -        ('\u{30}', '\u{39}'),
    -        ('\u{41}', '\u{5a}'),
    -        ('\u{5f}', '\u{5f}'),
    -        ('\u{61}', '\u{7a}'),
    -        ('\u{aa}', '\u{aa}'),
    -        ('\u{b5}', '\u{b5}'),
    -        ('\u{b7}', '\u{b7}'),
    -        ('\u{ba}', '\u{ba}'),
    -        ('\u{c0}', '\u{d6}'),
    -        ('\u{d8}', '\u{f6}'),
    -        ('\u{f8}', '\u{2c1}'),
    -        ('\u{2c6}', '\u{2d1}'),
    -        ('\u{2e0}', '\u{2e4}'),
    -        ('\u{2ec}', '\u{2ec}'),
    -        ('\u{2ee}', '\u{2ee}'),
    -        ('\u{300}', '\u{374}'),
    -        ('\u{376}', '\u{377}'),
    -        ('\u{37b}', '\u{37d}'),
    -        ('\u{37f}', '\u{37f}'),
    -        ('\u{386}', '\u{38a}'),
    -        ('\u{38c}', '\u{38c}'),
    -        ('\u{38e}', '\u{3a1}'),
    -        ('\u{3a3}', '\u{3f5}'),
    -        ('\u{3f7}', '\u{481}'),
    -        ('\u{483}', '\u{487}'),
    -        ('\u{48a}', '\u{52f}'),
    -        ('\u{531}', '\u{556}'),
    -        ('\u{559}', '\u{559}'),
    -        ('\u{560}', '\u{588}'),
    -        ('\u{591}', '\u{5bd}'),
    -        ('\u{5bf}', '\u{5bf}'),
    -        ('\u{5c1}', '\u{5c2}'),
    -        ('\u{5c4}', '\u{5c5}'),
    -        ('\u{5c7}', '\u{5c7}'),
    -        ('\u{5d0}', '\u{5ea}'),
    -        ('\u{5ef}', '\u{5f2}'),
    -        ('\u{610}', '\u{61a}'),
    -        ('\u{620}', '\u{669}'),
    -        ('\u{66e}', '\u{6d3}'),
    -        ('\u{6d5}', '\u{6dc}'),
    -        ('\u{6df}', '\u{6e8}'),
    -        ('\u{6ea}', '\u{6fc}'),
    -        ('\u{6ff}', '\u{6ff}'),
    -        ('\u{710}', '\u{74a}'),
    -        ('\u{74d}', '\u{7b1}'),
    -        ('\u{7c0}', '\u{7f5}'),
    -        ('\u{7fa}', '\u{7fa}'),
    -        ('\u{7fd}', '\u{7fd}'),
    -        ('\u{800}', '\u{82d}'),
    -        ('\u{840}', '\u{85b}'),
    -        ('\u{860}', '\u{86a}'),
    -        ('\u{870}', '\u{887}'),
    -        ('\u{889}', '\u{88e}'),
    -        ('\u{898}', '\u{8e1}'),
    -        ('\u{8e3}', '\u{963}'),
    -        ('\u{966}', '\u{96f}'),
    -        ('\u{971}', '\u{983}'),
    -        ('\u{985}', '\u{98c}'),
    -        ('\u{98f}', '\u{990}'),
    -        ('\u{993}', '\u{9a8}'),
    -        ('\u{9aa}', '\u{9b0}'),
    -        ('\u{9b2}', '\u{9b2}'),
    -        ('\u{9b6}', '\u{9b9}'),
    -        ('\u{9bc}', '\u{9c4}'),
    -        ('\u{9c7}', '\u{9c8}'),
    -        ('\u{9cb}', '\u{9ce}'),
    -        ('\u{9d7}', '\u{9d7}'),
    -        ('\u{9dc}', '\u{9dd}'),
    -        ('\u{9df}', '\u{9e3}'),
    -        ('\u{9e6}', '\u{9f1}'),
    -        ('\u{9fc}', '\u{9fc}'),
    -        ('\u{9fe}', '\u{9fe}'),
    -        ('\u{a01}', '\u{a03}'),
    -        ('\u{a05}', '\u{a0a}'),
    -        ('\u{a0f}', '\u{a10}'),
    -        ('\u{a13}', '\u{a28}'),
    -        ('\u{a2a}', '\u{a30}'),
    -        ('\u{a32}', '\u{a33}'),
    -        ('\u{a35}', '\u{a36}'),
    -        ('\u{a38}', '\u{a39}'),
    -        ('\u{a3c}', '\u{a3c}'),
    -        ('\u{a3e}', '\u{a42}'),
    -        ('\u{a47}', '\u{a48}'),
    -        ('\u{a4b}', '\u{a4d}'),
    -        ('\u{a51}', '\u{a51}'),
    -        ('\u{a59}', '\u{a5c}'),
    -        ('\u{a5e}', '\u{a5e}'),
    -        ('\u{a66}', '\u{a75}'),
    -        ('\u{a81}', '\u{a83}'),
    -        ('\u{a85}', '\u{a8d}'),
    -        ('\u{a8f}', '\u{a91}'),
    -        ('\u{a93}', '\u{aa8}'),
    -        ('\u{aaa}', '\u{ab0}'),
    -        ('\u{ab2}', '\u{ab3}'),
    -        ('\u{ab5}', '\u{ab9}'),
    -        ('\u{abc}', '\u{ac5}'),
    -        ('\u{ac7}', '\u{ac9}'),
    -        ('\u{acb}', '\u{acd}'),
    -        ('\u{ad0}', '\u{ad0}'),
    -        ('\u{ae0}', '\u{ae3}'),
    -        ('\u{ae6}', '\u{aef}'),
    -        ('\u{af9}', '\u{aff}'),
    -        ('\u{b01}', '\u{b03}'),
    -        ('\u{b05}', '\u{b0c}'),
    -        ('\u{b0f}', '\u{b10}'),
    -        ('\u{b13}', '\u{b28}'),
    -        ('\u{b2a}', '\u{b30}'),
    -        ('\u{b32}', '\u{b33}'),
    -        ('\u{b35}', '\u{b39}'),
    -        ('\u{b3c}', '\u{b44}'),
    -        ('\u{b47}', '\u{b48}'),
    -        ('\u{b4b}', '\u{b4d}'),
    -        ('\u{b55}', '\u{b57}'),
    -        ('\u{b5c}', '\u{b5d}'),
    -        ('\u{b5f}', '\u{b63}'),
    -        ('\u{b66}', '\u{b6f}'),
    -        ('\u{b71}', '\u{b71}'),
    -        ('\u{b82}', '\u{b83}'),
    -        ('\u{b85}', '\u{b8a}'),
    -        ('\u{b8e}', '\u{b90}'),
    -        ('\u{b92}', '\u{b95}'),
    -        ('\u{b99}', '\u{b9a}'),
    -        ('\u{b9c}', '\u{b9c}'),
    -        ('\u{b9e}', '\u{b9f}'),
    -        ('\u{ba3}', '\u{ba4}'),
    -        ('\u{ba8}', '\u{baa}'),
    -        ('\u{bae}', '\u{bb9}'),
    -        ('\u{bbe}', '\u{bc2}'),
    -        ('\u{bc6}', '\u{bc8}'),
    -        ('\u{bca}', '\u{bcd}'),
    -        ('\u{bd0}', '\u{bd0}'),
    -        ('\u{bd7}', '\u{bd7}'),
    -        ('\u{be6}', '\u{bef}'),
    -        ('\u{c00}', '\u{c0c}'),
    -        ('\u{c0e}', '\u{c10}'),
    -        ('\u{c12}', '\u{c28}'),
    -        ('\u{c2a}', '\u{c39}'),
    -        ('\u{c3c}', '\u{c44}'),
    -        ('\u{c46}', '\u{c48}'),
    -        ('\u{c4a}', '\u{c4d}'),
    -        ('\u{c55}', '\u{c56}'),
    -        ('\u{c58}', '\u{c5a}'),
    -        ('\u{c5d}', '\u{c5d}'),
    -        ('\u{c60}', '\u{c63}'),
    -        ('\u{c66}', '\u{c6f}'),
    -        ('\u{c80}', '\u{c83}'),
    -        ('\u{c85}', '\u{c8c}'),
    -        ('\u{c8e}', '\u{c90}'),
    -        ('\u{c92}', '\u{ca8}'),
    -        ('\u{caa}', '\u{cb3}'),
    -        ('\u{cb5}', '\u{cb9}'),
    -        ('\u{cbc}', '\u{cc4}'),
    -        ('\u{cc6}', '\u{cc8}'),
    -        ('\u{cca}', '\u{ccd}'),
    -        ('\u{cd5}', '\u{cd6}'),
    -        ('\u{cdd}', '\u{cde}'),
    -        ('\u{ce0}', '\u{ce3}'),
    -        ('\u{ce6}', '\u{cef}'),
    -        ('\u{cf1}', '\u{cf3}'),
    -        ('\u{d00}', '\u{d0c}'),
    -        ('\u{d0e}', '\u{d10}'),
    -        ('\u{d12}', '\u{d44}'),
    -        ('\u{d46}', '\u{d48}'),
    -        ('\u{d4a}', '\u{d4e}'),
    -        ('\u{d54}', '\u{d57}'),
    -        ('\u{d5f}', '\u{d63}'),
    -        ('\u{d66}', '\u{d6f}'),
    -        ('\u{d7a}', '\u{d7f}'),
    -        ('\u{d81}', '\u{d83}'),
    -        ('\u{d85}', '\u{d96}'),
    -        ('\u{d9a}', '\u{db1}'),
    -        ('\u{db3}', '\u{dbb}'),
    -        ('\u{dbd}', '\u{dbd}'),
    -        ('\u{dc0}', '\u{dc6}'),
    -        ('\u{dca}', '\u{dca}'),
    -        ('\u{dcf}', '\u{dd4}'),
    -        ('\u{dd6}', '\u{dd6}'),
    -        ('\u{dd8}', '\u{ddf}'),
    -        ('\u{de6}', '\u{def}'),
    -        ('\u{df2}', '\u{df3}'),
    -        ('\u{e01}', '\u{e3a}'),
    -        ('\u{e40}', '\u{e4e}'),
    -        ('\u{e50}', '\u{e59}'),
    -        ('\u{e81}', '\u{e82}'),
    -        ('\u{e84}', '\u{e84}'),
    -        ('\u{e86}', '\u{e8a}'),
    -        ('\u{e8c}', '\u{ea3}'),
    -        ('\u{ea5}', '\u{ea5}'),
    -        ('\u{ea7}', '\u{ebd}'),
    -        ('\u{ec0}', '\u{ec4}'),
    -        ('\u{ec6}', '\u{ec6}'),
    -        ('\u{ec8}', '\u{ece}'),
    -        ('\u{ed0}', '\u{ed9}'),
    -        ('\u{edc}', '\u{edf}'),
    -        ('\u{f00}', '\u{f00}'),
    -        ('\u{f18}', '\u{f19}'),
    -        ('\u{f20}', '\u{f29}'),
    -        ('\u{f35}', '\u{f35}'),
    -        ('\u{f37}', '\u{f37}'),
    -        ('\u{f39}', '\u{f39}'),
    -        ('\u{f3e}', '\u{f47}'),
    -        ('\u{f49}', '\u{f6c}'),
    -        ('\u{f71}', '\u{f84}'),
    -        ('\u{f86}', '\u{f97}'),
    -        ('\u{f99}', '\u{fbc}'),
    -        ('\u{fc6}', '\u{fc6}'),
    -        ('\u{1000}', '\u{1049}'),
    -        ('\u{1050}', '\u{109d}'),
    -        ('\u{10a0}', '\u{10c5}'),
    -        ('\u{10c7}', '\u{10c7}'),
    -        ('\u{10cd}', '\u{10cd}'),
    -        ('\u{10d0}', '\u{10fa}'),
    -        ('\u{10fc}', '\u{1248}'),
    -        ('\u{124a}', '\u{124d}'),
    -        ('\u{1250}', '\u{1256}'),
    -        ('\u{1258}', '\u{1258}'),
    -        ('\u{125a}', '\u{125d}'),
    -        ('\u{1260}', '\u{1288}'),
    -        ('\u{128a}', '\u{128d}'),
    -        ('\u{1290}', '\u{12b0}'),
    -        ('\u{12b2}', '\u{12b5}'),
    -        ('\u{12b8}', '\u{12be}'),
    -        ('\u{12c0}', '\u{12c0}'),
    -        ('\u{12c2}', '\u{12c5}'),
    -        ('\u{12c8}', '\u{12d6}'),
    -        ('\u{12d8}', '\u{1310}'),
    -        ('\u{1312}', '\u{1315}'),
    -        ('\u{1318}', '\u{135a}'),
    -        ('\u{135d}', '\u{135f}'),
    -        ('\u{1369}', '\u{1371}'),
    -        ('\u{1380}', '\u{138f}'),
    -        ('\u{13a0}', '\u{13f5}'),
    -        ('\u{13f8}', '\u{13fd}'),
    -        ('\u{1401}', '\u{166c}'),
    -        ('\u{166f}', '\u{167f}'),
    -        ('\u{1681}', '\u{169a}'),
    -        ('\u{16a0}', '\u{16ea}'),
    -        ('\u{16ee}', '\u{16f8}'),
    -        ('\u{1700}', '\u{1715}'),
    -        ('\u{171f}', '\u{1734}'),
    -        ('\u{1740}', '\u{1753}'),
    -        ('\u{1760}', '\u{176c}'),
    -        ('\u{176e}', '\u{1770}'),
    -        ('\u{1772}', '\u{1773}'),
    -        ('\u{1780}', '\u{17d3}'),
    -        ('\u{17d7}', '\u{17d7}'),
    -        ('\u{17dc}', '\u{17dd}'),
    -        ('\u{17e0}', '\u{17e9}'),
    -        ('\u{180b}', '\u{180d}'),
    -        ('\u{180f}', '\u{1819}'),
    -        ('\u{1820}', '\u{1878}'),
    -        ('\u{1880}', '\u{18aa}'),
    -        ('\u{18b0}', '\u{18f5}'),
    -        ('\u{1900}', '\u{191e}'),
    -        ('\u{1920}', '\u{192b}'),
    -        ('\u{1930}', '\u{193b}'),
    -        ('\u{1946}', '\u{196d}'),
    -        ('\u{1970}', '\u{1974}'),
    -        ('\u{1980}', '\u{19ab}'),
    -        ('\u{19b0}', '\u{19c9}'),
    -        ('\u{19d0}', '\u{19da}'),
    -        ('\u{1a00}', '\u{1a1b}'),
    -        ('\u{1a20}', '\u{1a5e}'),
    -        ('\u{1a60}', '\u{1a7c}'),
    -        ('\u{1a7f}', '\u{1a89}'),
    -        ('\u{1a90}', '\u{1a99}'),
    -        ('\u{1aa7}', '\u{1aa7}'),
    -        ('\u{1ab0}', '\u{1abd}'),
    -        ('\u{1abf}', '\u{1ace}'),
    -        ('\u{1b00}', '\u{1b4c}'),
    -        ('\u{1b50}', '\u{1b59}'),
    -        ('\u{1b6b}', '\u{1b73}'),
    -        ('\u{1b80}', '\u{1bf3}'),
    -        ('\u{1c00}', '\u{1c37}'),
    -        ('\u{1c40}', '\u{1c49}'),
    -        ('\u{1c4d}', '\u{1c7d}'),
    -        ('\u{1c80}', '\u{1c88}'),
    -        ('\u{1c90}', '\u{1cba}'),
    -        ('\u{1cbd}', '\u{1cbf}'),
    -        ('\u{1cd0}', '\u{1cd2}'),
    -        ('\u{1cd4}', '\u{1cfa}'),
    -        ('\u{1d00}', '\u{1f15}'),
    -        ('\u{1f18}', '\u{1f1d}'),
    -        ('\u{1f20}', '\u{1f45}'),
    -        ('\u{1f48}', '\u{1f4d}'),
    -        ('\u{1f50}', '\u{1f57}'),
    -        ('\u{1f59}', '\u{1f59}'),
    -        ('\u{1f5b}', '\u{1f5b}'),
    -        ('\u{1f5d}', '\u{1f5d}'),
    -        ('\u{1f5f}', '\u{1f7d}'),
    -        ('\u{1f80}', '\u{1fb4}'),
    -        ('\u{1fb6}', '\u{1fbc}'),
    -        ('\u{1fbe}', '\u{1fbe}'),
    -        ('\u{1fc2}', '\u{1fc4}'),
    -        ('\u{1fc6}', '\u{1fcc}'),
    -        ('\u{1fd0}', '\u{1fd3}'),
    -        ('\u{1fd6}', '\u{1fdb}'),
    -        ('\u{1fe0}', '\u{1fec}'),
    -        ('\u{1ff2}', '\u{1ff4}'),
    -        ('\u{1ff6}', '\u{1ffc}'),
    -        ('\u{203f}', '\u{2040}'),
    -        ('\u{2054}', '\u{2054}'),
    -        ('\u{2071}', '\u{2071}'),
    -        ('\u{207f}', '\u{207f}'),
    -        ('\u{2090}', '\u{209c}'),
    -        ('\u{20d0}', '\u{20dc}'),
    -        ('\u{20e1}', '\u{20e1}'),
    -        ('\u{20e5}', '\u{20f0}'),
    -        ('\u{2102}', '\u{2102}'),
    -        ('\u{2107}', '\u{2107}'),
    -        ('\u{210a}', '\u{2113}'),
    -        ('\u{2115}', '\u{2115}'),
    -        ('\u{2118}', '\u{211d}'),
    -        ('\u{2124}', '\u{2124}'),
    -        ('\u{2126}', '\u{2126}'),
    -        ('\u{2128}', '\u{2128}'),
    -        ('\u{212a}', '\u{2139}'),
    -        ('\u{213c}', '\u{213f}'),
    -        ('\u{2145}', '\u{2149}'),
    -        ('\u{214e}', '\u{214e}'),
    -        ('\u{2160}', '\u{2188}'),
    -        ('\u{2c00}', '\u{2ce4}'),
    -        ('\u{2ceb}', '\u{2cf3}'),
    -        ('\u{2d00}', '\u{2d25}'),
    -        ('\u{2d27}', '\u{2d27}'),
    -        ('\u{2d2d}', '\u{2d2d}'),
    -        ('\u{2d30}', '\u{2d67}'),
    -        ('\u{2d6f}', '\u{2d6f}'),
    -        ('\u{2d7f}', '\u{2d96}'),
    -        ('\u{2da0}', '\u{2da6}'),
    -        ('\u{2da8}', '\u{2dae}'),
    -        ('\u{2db0}', '\u{2db6}'),
    -        ('\u{2db8}', '\u{2dbe}'),
    -        ('\u{2dc0}', '\u{2dc6}'),
    -        ('\u{2dc8}', '\u{2dce}'),
    -        ('\u{2dd0}', '\u{2dd6}'),
    -        ('\u{2dd8}', '\u{2dde}'),
    -        ('\u{2de0}', '\u{2dff}'),
    -        ('\u{3005}', '\u{3007}'),
    -        ('\u{3021}', '\u{302f}'),
    -        ('\u{3031}', '\u{3035}'),
    -        ('\u{3038}', '\u{303c}'),
    -        ('\u{3041}', '\u{3096}'),
    -        ('\u{3099}', '\u{309a}'),
    -        ('\u{309d}', '\u{309f}'),
    -        ('\u{30a1}', '\u{30fa}'),
    -        ('\u{30fc}', '\u{30ff}'),
    -        ('\u{3105}', '\u{312f}'),
    -        ('\u{3131}', '\u{318e}'),
    -        ('\u{31a0}', '\u{31bf}'),
    -        ('\u{31f0}', '\u{31ff}'),
    -        ('\u{3400}', '\u{4dbf}'),
    -        ('\u{4e00}', '\u{a48c}'),
    -        ('\u{a4d0}', '\u{a4fd}'),
    -        ('\u{a500}', '\u{a60c}'),
    -        ('\u{a610}', '\u{a62b}'),
    -        ('\u{a640}', '\u{a66f}'),
    -        ('\u{a674}', '\u{a67d}'),
    -        ('\u{a67f}', '\u{a6f1}'),
    -        ('\u{a717}', '\u{a71f}'),
    -        ('\u{a722}', '\u{a788}'),
    -        ('\u{a78b}', '\u{a7ca}'),
    -        ('\u{a7d0}', '\u{a7d1}'),
    -        ('\u{a7d3}', '\u{a7d3}'),
    -        ('\u{a7d5}', '\u{a7d9}'),
    -        ('\u{a7f2}', '\u{a827}'),
    -        ('\u{a82c}', '\u{a82c}'),
    -        ('\u{a840}', '\u{a873}'),
    -        ('\u{a880}', '\u{a8c5}'),
    -        ('\u{a8d0}', '\u{a8d9}'),
    -        ('\u{a8e0}', '\u{a8f7}'),
    -        ('\u{a8fb}', '\u{a8fb}'),
    -        ('\u{a8fd}', '\u{a92d}'),
    -        ('\u{a930}', '\u{a953}'),
    -        ('\u{a960}', '\u{a97c}'),
    -        ('\u{a980}', '\u{a9c0}'),
    -        ('\u{a9cf}', '\u{a9d9}'),
    -        ('\u{a9e0}', '\u{a9fe}'),
    -        ('\u{aa00}', '\u{aa36}'),
    -        ('\u{aa40}', '\u{aa4d}'),
    -        ('\u{aa50}', '\u{aa59}'),
    -        ('\u{aa60}', '\u{aa76}'),
    -        ('\u{aa7a}', '\u{aac2}'),
    -        ('\u{aadb}', '\u{aadd}'),
    -        ('\u{aae0}', '\u{aaef}'),
    -        ('\u{aaf2}', '\u{aaf6}'),
    -        ('\u{ab01}', '\u{ab06}'),
    -        ('\u{ab09}', '\u{ab0e}'),
    -        ('\u{ab11}', '\u{ab16}'),
    -        ('\u{ab20}', '\u{ab26}'),
    -        ('\u{ab28}', '\u{ab2e}'),
    -        ('\u{ab30}', '\u{ab5a}'),
    -        ('\u{ab5c}', '\u{ab69}'),
    -        ('\u{ab70}', '\u{abea}'),
    -        ('\u{abec}', '\u{abed}'),
    -        ('\u{abf0}', '\u{abf9}'),
    -        ('\u{ac00}', '\u{d7a3}'),
    -        ('\u{d7b0}', '\u{d7c6}'),
    -        ('\u{d7cb}', '\u{d7fb}'),
    -        ('\u{f900}', '\u{fa6d}'),
    -        ('\u{fa70}', '\u{fad9}'),
    -        ('\u{fb00}', '\u{fb06}'),
    -        ('\u{fb13}', '\u{fb17}'),
    -        ('\u{fb1d}', '\u{fb28}'),
    -        ('\u{fb2a}', '\u{fb36}'),
    -        ('\u{fb38}', '\u{fb3c}'),
    -        ('\u{fb3e}', '\u{fb3e}'),
    -        ('\u{fb40}', '\u{fb41}'),
    -        ('\u{fb43}', '\u{fb44}'),
    -        ('\u{fb46}', '\u{fbb1}'),
    -        ('\u{fbd3}', '\u{fc5d}'),
    -        ('\u{fc64}', '\u{fd3d}'),
    -        ('\u{fd50}', '\u{fd8f}'),
    -        ('\u{fd92}', '\u{fdc7}'),
    -        ('\u{fdf0}', '\u{fdf9}'),
    -        ('\u{fe00}', '\u{fe0f}'),
    -        ('\u{fe20}', '\u{fe2f}'),
    -        ('\u{fe33}', '\u{fe34}'),
    -        ('\u{fe4d}', '\u{fe4f}'),
    -        ('\u{fe71}', '\u{fe71}'),
    -        ('\u{fe73}', '\u{fe73}'),
    -        ('\u{fe77}', '\u{fe77}'),
    -        ('\u{fe79}', '\u{fe79}'),
    -        ('\u{fe7b}', '\u{fe7b}'),
    -        ('\u{fe7d}', '\u{fe7d}'),
    -        ('\u{fe7f}', '\u{fefc}'),
    -        ('\u{ff10}', '\u{ff19}'),
    -        ('\u{ff21}', '\u{ff3a}'),
    -        ('\u{ff3f}', '\u{ff3f}'),
    -        ('\u{ff41}', '\u{ff5a}'),
    -        ('\u{ff66}', '\u{ffbe}'),
    -        ('\u{ffc2}', '\u{ffc7}'),
    -        ('\u{ffca}', '\u{ffcf}'),
    -        ('\u{ffd2}', '\u{ffd7}'),
    -        ('\u{ffda}', '\u{ffdc}'),
    -        ('\u{10000}', '\u{1000b}'),
    -        ('\u{1000d}', '\u{10026}'),
    -        ('\u{10028}', '\u{1003a}'),
    -        ('\u{1003c}', '\u{1003d}'),
    -        ('\u{1003f}', '\u{1004d}'),
    -        ('\u{10050}', '\u{1005d}'),
    -        ('\u{10080}', '\u{100fa}'),
    -        ('\u{10140}', '\u{10174}'),
    -        ('\u{101fd}', '\u{101fd}'),
    -        ('\u{10280}', '\u{1029c}'),
    -        ('\u{102a0}', '\u{102d0}'),
    -        ('\u{102e0}', '\u{102e0}'),
    -        ('\u{10300}', '\u{1031f}'),
    -        ('\u{1032d}', '\u{1034a}'),
    -        ('\u{10350}', '\u{1037a}'),
    -        ('\u{10380}', '\u{1039d}'),
    -        ('\u{103a0}', '\u{103c3}'),
    -        ('\u{103c8}', '\u{103cf}'),
    -        ('\u{103d1}', '\u{103d5}'),
    -        ('\u{10400}', '\u{1049d}'),
    -        ('\u{104a0}', '\u{104a9}'),
    -        ('\u{104b0}', '\u{104d3}'),
    -        ('\u{104d8}', '\u{104fb}'),
    -        ('\u{10500}', '\u{10527}'),
    -        ('\u{10530}', '\u{10563}'),
    -        ('\u{10570}', '\u{1057a}'),
    -        ('\u{1057c}', '\u{1058a}'),
    -        ('\u{1058c}', '\u{10592}'),
    -        ('\u{10594}', '\u{10595}'),
    -        ('\u{10597}', '\u{105a1}'),
    -        ('\u{105a3}', '\u{105b1}'),
    -        ('\u{105b3}', '\u{105b9}'),
    -        ('\u{105bb}', '\u{105bc}'),
    -        ('\u{10600}', '\u{10736}'),
    -        ('\u{10740}', '\u{10755}'),
    -        ('\u{10760}', '\u{10767}'),
    -        ('\u{10780}', '\u{10785}'),
    -        ('\u{10787}', '\u{107b0}'),
    -        ('\u{107b2}', '\u{107ba}'),
    -        ('\u{10800}', '\u{10805}'),
    -        ('\u{10808}', '\u{10808}'),
    -        ('\u{1080a}', '\u{10835}'),
    -        ('\u{10837}', '\u{10838}'),
    -        ('\u{1083c}', '\u{1083c}'),
    -        ('\u{1083f}', '\u{10855}'),
    -        ('\u{10860}', '\u{10876}'),
    -        ('\u{10880}', '\u{1089e}'),
    -        ('\u{108e0}', '\u{108f2}'),
    -        ('\u{108f4}', '\u{108f5}'),
    -        ('\u{10900}', '\u{10915}'),
    -        ('\u{10920}', '\u{10939}'),
    -        ('\u{10980}', '\u{109b7}'),
    -        ('\u{109be}', '\u{109bf}'),
    -        ('\u{10a00}', '\u{10a03}'),
    -        ('\u{10a05}', '\u{10a06}'),
    -        ('\u{10a0c}', '\u{10a13}'),
    -        ('\u{10a15}', '\u{10a17}'),
    -        ('\u{10a19}', '\u{10a35}'),
    -        ('\u{10a38}', '\u{10a3a}'),
    -        ('\u{10a3f}', '\u{10a3f}'),
    -        ('\u{10a60}', '\u{10a7c}'),
    -        ('\u{10a80}', '\u{10a9c}'),
    -        ('\u{10ac0}', '\u{10ac7}'),
    -        ('\u{10ac9}', '\u{10ae6}'),
    -        ('\u{10b00}', '\u{10b35}'),
    -        ('\u{10b40}', '\u{10b55}'),
    -        ('\u{10b60}', '\u{10b72}'),
    -        ('\u{10b80}', '\u{10b91}'),
    -        ('\u{10c00}', '\u{10c48}'),
    -        ('\u{10c80}', '\u{10cb2}'),
    -        ('\u{10cc0}', '\u{10cf2}'),
    -        ('\u{10d00}', '\u{10d27}'),
    -        ('\u{10d30}', '\u{10d39}'),
    -        ('\u{10e80}', '\u{10ea9}'),
    -        ('\u{10eab}', '\u{10eac}'),
    -        ('\u{10eb0}', '\u{10eb1}'),
    -        ('\u{10efd}', '\u{10f1c}'),
    -        ('\u{10f27}', '\u{10f27}'),
    -        ('\u{10f30}', '\u{10f50}'),
    -        ('\u{10f70}', '\u{10f85}'),
    -        ('\u{10fb0}', '\u{10fc4}'),
    -        ('\u{10fe0}', '\u{10ff6}'),
    -        ('\u{11000}', '\u{11046}'),
    -        ('\u{11066}', '\u{11075}'),
    -        ('\u{1107f}', '\u{110ba}'),
    -        ('\u{110c2}', '\u{110c2}'),
    -        ('\u{110d0}', '\u{110e8}'),
    -        ('\u{110f0}', '\u{110f9}'),
    -        ('\u{11100}', '\u{11134}'),
    -        ('\u{11136}', '\u{1113f}'),
    -        ('\u{11144}', '\u{11147}'),
    -        ('\u{11150}', '\u{11173}'),
    -        ('\u{11176}', '\u{11176}'),
    -        ('\u{11180}', '\u{111c4}'),
    -        ('\u{111c9}', '\u{111cc}'),
    -        ('\u{111ce}', '\u{111da}'),
    -        ('\u{111dc}', '\u{111dc}'),
    -        ('\u{11200}', '\u{11211}'),
    -        ('\u{11213}', '\u{11237}'),
    -        ('\u{1123e}', '\u{11241}'),
    -        ('\u{11280}', '\u{11286}'),
    -        ('\u{11288}', '\u{11288}'),
    -        ('\u{1128a}', '\u{1128d}'),
    -        ('\u{1128f}', '\u{1129d}'),
    -        ('\u{1129f}', '\u{112a8}'),
    -        ('\u{112b0}', '\u{112ea}'),
    -        ('\u{112f0}', '\u{112f9}'),
    -        ('\u{11300}', '\u{11303}'),
    -        ('\u{11305}', '\u{1130c}'),
    -        ('\u{1130f}', '\u{11310}'),
    -        ('\u{11313}', '\u{11328}'),
    -        ('\u{1132a}', '\u{11330}'),
    -        ('\u{11332}', '\u{11333}'),
    -        ('\u{11335}', '\u{11339}'),
    -        ('\u{1133b}', '\u{11344}'),
    -        ('\u{11347}', '\u{11348}'),
    -        ('\u{1134b}', '\u{1134d}'),
    -        ('\u{11350}', '\u{11350}'),
    -        ('\u{11357}', '\u{11357}'),
    -        ('\u{1135d}', '\u{11363}'),
    -        ('\u{11366}', '\u{1136c}'),
    -        ('\u{11370}', '\u{11374}'),
    -        ('\u{11400}', '\u{1144a}'),
    -        ('\u{11450}', '\u{11459}'),
    -        ('\u{1145e}', '\u{11461}'),
    -        ('\u{11480}', '\u{114c5}'),
    -        ('\u{114c7}', '\u{114c7}'),
    -        ('\u{114d0}', '\u{114d9}'),
    -        ('\u{11580}', '\u{115b5}'),
    -        ('\u{115b8}', '\u{115c0}'),
    -        ('\u{115d8}', '\u{115dd}'),
    -        ('\u{11600}', '\u{11640}'),
    -        ('\u{11644}', '\u{11644}'),
    -        ('\u{11650}', '\u{11659}'),
    -        ('\u{11680}', '\u{116b8}'),
    -        ('\u{116c0}', '\u{116c9}'),
    -        ('\u{11700}', '\u{1171a}'),
    -        ('\u{1171d}', '\u{1172b}'),
    -        ('\u{11730}', '\u{11739}'),
    -        ('\u{11740}', '\u{11746}'),
    -        ('\u{11800}', '\u{1183a}'),
    -        ('\u{118a0}', '\u{118e9}'),
    -        ('\u{118ff}', '\u{11906}'),
    -        ('\u{11909}', '\u{11909}'),
    -        ('\u{1190c}', '\u{11913}'),
    -        ('\u{11915}', '\u{11916}'),
    -        ('\u{11918}', '\u{11935}'),
    -        ('\u{11937}', '\u{11938}'),
    -        ('\u{1193b}', '\u{11943}'),
    -        ('\u{11950}', '\u{11959}'),
    -        ('\u{119a0}', '\u{119a7}'),
    -        ('\u{119aa}', '\u{119d7}'),
    -        ('\u{119da}', '\u{119e1}'),
    -        ('\u{119e3}', '\u{119e4}'),
    -        ('\u{11a00}', '\u{11a3e}'),
    -        ('\u{11a47}', '\u{11a47}'),
    -        ('\u{11a50}', '\u{11a99}'),
    -        ('\u{11a9d}', '\u{11a9d}'),
    -        ('\u{11ab0}', '\u{11af8}'),
    -        ('\u{11c00}', '\u{11c08}'),
    -        ('\u{11c0a}', '\u{11c36}'),
    -        ('\u{11c38}', '\u{11c40}'),
    -        ('\u{11c50}', '\u{11c59}'),
    -        ('\u{11c72}', '\u{11c8f}'),
    -        ('\u{11c92}', '\u{11ca7}'),
    -        ('\u{11ca9}', '\u{11cb6}'),
    -        ('\u{11d00}', '\u{11d06}'),
    -        ('\u{11d08}', '\u{11d09}'),
    -        ('\u{11d0b}', '\u{11d36}'),
    -        ('\u{11d3a}', '\u{11d3a}'),
    -        ('\u{11d3c}', '\u{11d3d}'),
    -        ('\u{11d3f}', '\u{11d47}'),
    -        ('\u{11d50}', '\u{11d59}'),
    -        ('\u{11d60}', '\u{11d65}'),
    -        ('\u{11d67}', '\u{11d68}'),
    -        ('\u{11d6a}', '\u{11d8e}'),
    -        ('\u{11d90}', '\u{11d91}'),
    -        ('\u{11d93}', '\u{11d98}'),
    -        ('\u{11da0}', '\u{11da9}'),
    -        ('\u{11ee0}', '\u{11ef6}'),
    -        ('\u{11f00}', '\u{11f10}'),
    -        ('\u{11f12}', '\u{11f3a}'),
    -        ('\u{11f3e}', '\u{11f42}'),
    -        ('\u{11f50}', '\u{11f59}'),
    -        ('\u{11fb0}', '\u{11fb0}'),
    -        ('\u{12000}', '\u{12399}'),
    -        ('\u{12400}', '\u{1246e}'),
    -        ('\u{12480}', '\u{12543}'),
    -        ('\u{12f90}', '\u{12ff0}'),
    -        ('\u{13000}', '\u{1342f}'),
    -        ('\u{13440}', '\u{13455}'),
    -        ('\u{14400}', '\u{14646}'),
    -        ('\u{16800}', '\u{16a38}'),
    -        ('\u{16a40}', '\u{16a5e}'),
    -        ('\u{16a60}', '\u{16a69}'),
    -        ('\u{16a70}', '\u{16abe}'),
    -        ('\u{16ac0}', '\u{16ac9}'),
    -        ('\u{16ad0}', '\u{16aed}'),
    -        ('\u{16af0}', '\u{16af4}'),
    -        ('\u{16b00}', '\u{16b36}'),
    -        ('\u{16b40}', '\u{16b43}'),
    -        ('\u{16b50}', '\u{16b59}'),
    -        ('\u{16b63}', '\u{16b77}'),
    -        ('\u{16b7d}', '\u{16b8f}'),
    -        ('\u{16e40}', '\u{16e7f}'),
    -        ('\u{16f00}', '\u{16f4a}'),
    -        ('\u{16f4f}', '\u{16f87}'),
    -        ('\u{16f8f}', '\u{16f9f}'),
    -        ('\u{16fe0}', '\u{16fe1}'),
    -        ('\u{16fe3}', '\u{16fe4}'),
    -        ('\u{16ff0}', '\u{16ff1}'),
    -        ('\u{17000}', '\u{187f7}'),
    -        ('\u{18800}', '\u{18cd5}'),
    -        ('\u{18d00}', '\u{18d08}'),
    -        ('\u{1aff0}', '\u{1aff3}'),
    -        ('\u{1aff5}', '\u{1affb}'),
    -        ('\u{1affd}', '\u{1affe}'),
    -        ('\u{1b000}', '\u{1b122}'),
    -        ('\u{1b132}', '\u{1b132}'),
    -        ('\u{1b150}', '\u{1b152}'),
    -        ('\u{1b155}', '\u{1b155}'),
    -        ('\u{1b164}', '\u{1b167}'),
    -        ('\u{1b170}', '\u{1b2fb}'),
    -        ('\u{1bc00}', '\u{1bc6a}'),
    -        ('\u{1bc70}', '\u{1bc7c}'),
    -        ('\u{1bc80}', '\u{1bc88}'),
    -        ('\u{1bc90}', '\u{1bc99}'),
    -        ('\u{1bc9d}', '\u{1bc9e}'),
    -        ('\u{1cf00}', '\u{1cf2d}'),
    -        ('\u{1cf30}', '\u{1cf46}'),
    -        ('\u{1d165}', '\u{1d169}'),
    -        ('\u{1d16d}', '\u{1d172}'),
    -        ('\u{1d17b}', '\u{1d182}'),
    -        ('\u{1d185}', '\u{1d18b}'),
    -        ('\u{1d1aa}', '\u{1d1ad}'),
    -        ('\u{1d242}', '\u{1d244}'),
    -        ('\u{1d400}', '\u{1d454}'),
    -        ('\u{1d456}', '\u{1d49c}'),
    -        ('\u{1d49e}', '\u{1d49f}'),
    -        ('\u{1d4a2}', '\u{1d4a2}'),
    -        ('\u{1d4a5}', '\u{1d4a6}'),
    -        ('\u{1d4a9}', '\u{1d4ac}'),
    -        ('\u{1d4ae}', '\u{1d4b9}'),
    -        ('\u{1d4bb}', '\u{1d4bb}'),
    -        ('\u{1d4bd}', '\u{1d4c3}'),
    -        ('\u{1d4c5}', '\u{1d505}'),
    -        ('\u{1d507}', '\u{1d50a}'),
    -        ('\u{1d50d}', '\u{1d514}'),
    -        ('\u{1d516}', '\u{1d51c}'),
    -        ('\u{1d51e}', '\u{1d539}'),
    -        ('\u{1d53b}', '\u{1d53e}'),
    -        ('\u{1d540}', '\u{1d544}'),
    -        ('\u{1d546}', '\u{1d546}'),
    -        ('\u{1d54a}', '\u{1d550}'),
    -        ('\u{1d552}', '\u{1d6a5}'),
    -        ('\u{1d6a8}', '\u{1d6c0}'),
    -        ('\u{1d6c2}', '\u{1d6da}'),
    -        ('\u{1d6dc}', '\u{1d6fa}'),
    -        ('\u{1d6fc}', '\u{1d714}'),
    -        ('\u{1d716}', '\u{1d734}'),
    -        ('\u{1d736}', '\u{1d74e}'),
    -        ('\u{1d750}', '\u{1d76e}'),
    -        ('\u{1d770}', '\u{1d788}'),
    -        ('\u{1d78a}', '\u{1d7a8}'),
    -        ('\u{1d7aa}', '\u{1d7c2}'),
    -        ('\u{1d7c4}', '\u{1d7cb}'),
    -        ('\u{1d7ce}', '\u{1d7ff}'),
    -        ('\u{1da00}', '\u{1da36}'),
    -        ('\u{1da3b}', '\u{1da6c}'),
    -        ('\u{1da75}', '\u{1da75}'),
    -        ('\u{1da84}', '\u{1da84}'),
    -        ('\u{1da9b}', '\u{1da9f}'),
    -        ('\u{1daa1}', '\u{1daaf}'),
    -        ('\u{1df00}', '\u{1df1e}'),
    -        ('\u{1df25}', '\u{1df2a}'),
    -        ('\u{1e000}', '\u{1e006}'),
    -        ('\u{1e008}', '\u{1e018}'),
    -        ('\u{1e01b}', '\u{1e021}'),
    -        ('\u{1e023}', '\u{1e024}'),
    -        ('\u{1e026}', '\u{1e02a}'),
    -        ('\u{1e030}', '\u{1e06d}'),
    -        ('\u{1e08f}', '\u{1e08f}'),
    -        ('\u{1e100}', '\u{1e12c}'),
    -        ('\u{1e130}', '\u{1e13d}'),
    -        ('\u{1e140}', '\u{1e149}'),
    -        ('\u{1e14e}', '\u{1e14e}'),
    -        ('\u{1e290}', '\u{1e2ae}'),
    -        ('\u{1e2c0}', '\u{1e2f9}'),
    -        ('\u{1e4d0}', '\u{1e4f9}'),
    -        ('\u{1e7e0}', '\u{1e7e6}'),
    -        ('\u{1e7e8}', '\u{1e7eb}'),
    -        ('\u{1e7ed}', '\u{1e7ee}'),
    -        ('\u{1e7f0}', '\u{1e7fe}'),
    -        ('\u{1e800}', '\u{1e8c4}'),
    -        ('\u{1e8d0}', '\u{1e8d6}'),
    -        ('\u{1e900}', '\u{1e94b}'),
    -        ('\u{1e950}', '\u{1e959}'),
    -        ('\u{1ee00}', '\u{1ee03}'),
    -        ('\u{1ee05}', '\u{1ee1f}'),
    -        ('\u{1ee21}', '\u{1ee22}'),
    -        ('\u{1ee24}', '\u{1ee24}'),
    -        ('\u{1ee27}', '\u{1ee27}'),
    -        ('\u{1ee29}', '\u{1ee32}'),
    -        ('\u{1ee34}', '\u{1ee37}'),
    -        ('\u{1ee39}', '\u{1ee39}'),
    -        ('\u{1ee3b}', '\u{1ee3b}'),
    -        ('\u{1ee42}', '\u{1ee42}'),
    -        ('\u{1ee47}', '\u{1ee47}'),
    -        ('\u{1ee49}', '\u{1ee49}'),
    -        ('\u{1ee4b}', '\u{1ee4b}'),
    -        ('\u{1ee4d}', '\u{1ee4f}'),
    -        ('\u{1ee51}', '\u{1ee52}'),
    -        ('\u{1ee54}', '\u{1ee54}'),
    -        ('\u{1ee57}', '\u{1ee57}'),
    -        ('\u{1ee59}', '\u{1ee59}'),
    -        ('\u{1ee5b}', '\u{1ee5b}'),
    -        ('\u{1ee5d}', '\u{1ee5d}'),
    -        ('\u{1ee5f}', '\u{1ee5f}'),
    -        ('\u{1ee61}', '\u{1ee62}'),
    -        ('\u{1ee64}', '\u{1ee64}'),
    -        ('\u{1ee67}', '\u{1ee6a}'),
    -        ('\u{1ee6c}', '\u{1ee72}'),
    -        ('\u{1ee74}', '\u{1ee77}'),
    -        ('\u{1ee79}', '\u{1ee7c}'),
    -        ('\u{1ee7e}', '\u{1ee7e}'),
    -        ('\u{1ee80}', '\u{1ee89}'),
    -        ('\u{1ee8b}', '\u{1ee9b}'),
    -        ('\u{1eea1}', '\u{1eea3}'),
    -        ('\u{1eea5}', '\u{1eea9}'),
    -        ('\u{1eeab}', '\u{1eebb}'),
    -        ('\u{1fbf0}', '\u{1fbf9}'),
    -        ('\u{20000}', '\u{2a6df}'),
    -        ('\u{2a700}', '\u{2b739}'),
    -        ('\u{2b740}', '\u{2b81d}'),
    -        ('\u{2b820}', '\u{2cea1}'),
    -        ('\u{2ceb0}', '\u{2ebe0}'),
    -        ('\u{2f800}', '\u{2fa1d}'),
    -        ('\u{30000}', '\u{3134a}'),
    -        ('\u{31350}', '\u{323af}'),
    -        ('\u{e0100}', '\u{e01ef}'),
    -    ];
    -
    -    pub fn XID_Continue(c: char) -> bool {
    -        super::bsearch_range_table(c, XID_Continue_table)
    -    }
    -
    -    static XID_Start_table: &[(char, char)] = &[
    -        ('\u{41}', '\u{5a}'),
    -        ('\u{61}', '\u{7a}'),
    -        ('\u{aa}', '\u{aa}'),
    -        ('\u{b5}', '\u{b5}'),
    -        ('\u{ba}', '\u{ba}'),
    -        ('\u{c0}', '\u{d6}'),
    -        ('\u{d8}', '\u{f6}'),
    -        ('\u{f8}', '\u{2c1}'),
    -        ('\u{2c6}', '\u{2d1}'),
    -        ('\u{2e0}', '\u{2e4}'),
    -        ('\u{2ec}', '\u{2ec}'),
    -        ('\u{2ee}', '\u{2ee}'),
    -        ('\u{370}', '\u{374}'),
    -        ('\u{376}', '\u{377}'),
    -        ('\u{37b}', '\u{37d}'),
    -        ('\u{37f}', '\u{37f}'),
    -        ('\u{386}', '\u{386}'),
    -        ('\u{388}', '\u{38a}'),
    -        ('\u{38c}', '\u{38c}'),
    -        ('\u{38e}', '\u{3a1}'),
    -        ('\u{3a3}', '\u{3f5}'),
    -        ('\u{3f7}', '\u{481}'),
    -        ('\u{48a}', '\u{52f}'),
    -        ('\u{531}', '\u{556}'),
    -        ('\u{559}', '\u{559}'),
    -        ('\u{560}', '\u{588}'),
    -        ('\u{5d0}', '\u{5ea}'),
    -        ('\u{5ef}', '\u{5f2}'),
    -        ('\u{620}', '\u{64a}'),
    -        ('\u{66e}', '\u{66f}'),
    -        ('\u{671}', '\u{6d3}'),
    -        ('\u{6d5}', '\u{6d5}'),
    -        ('\u{6e5}', '\u{6e6}'),
    -        ('\u{6ee}', '\u{6ef}'),
    -        ('\u{6fa}', '\u{6fc}'),
    -        ('\u{6ff}', '\u{6ff}'),
    -        ('\u{710}', '\u{710}'),
    -        ('\u{712}', '\u{72f}'),
    -        ('\u{74d}', '\u{7a5}'),
    -        ('\u{7b1}', '\u{7b1}'),
    -        ('\u{7ca}', '\u{7ea}'),
    -        ('\u{7f4}', '\u{7f5}'),
    -        ('\u{7fa}', '\u{7fa}'),
    -        ('\u{800}', '\u{815}'),
    -        ('\u{81a}', '\u{81a}'),
    -        ('\u{824}', '\u{824}'),
    -        ('\u{828}', '\u{828}'),
    -        ('\u{840}', '\u{858}'),
    -        ('\u{860}', '\u{86a}'),
    -        ('\u{870}', '\u{887}'),
    -        ('\u{889}', '\u{88e}'),
    -        ('\u{8a0}', '\u{8c9}'),
    -        ('\u{904}', '\u{939}'),
    -        ('\u{93d}', '\u{93d}'),
    -        ('\u{950}', '\u{950}'),
    -        ('\u{958}', '\u{961}'),
    -        ('\u{971}', '\u{980}'),
    -        ('\u{985}', '\u{98c}'),
    -        ('\u{98f}', '\u{990}'),
    -        ('\u{993}', '\u{9a8}'),
    -        ('\u{9aa}', '\u{9b0}'),
    -        ('\u{9b2}', '\u{9b2}'),
    -        ('\u{9b6}', '\u{9b9}'),
    -        ('\u{9bd}', '\u{9bd}'),
    -        ('\u{9ce}', '\u{9ce}'),
    -        ('\u{9dc}', '\u{9dd}'),
    -        ('\u{9df}', '\u{9e1}'),
    -        ('\u{9f0}', '\u{9f1}'),
    -        ('\u{9fc}', '\u{9fc}'),
    -        ('\u{a05}', '\u{a0a}'),
    -        ('\u{a0f}', '\u{a10}'),
    -        ('\u{a13}', '\u{a28}'),
    -        ('\u{a2a}', '\u{a30}'),
    -        ('\u{a32}', '\u{a33}'),
    -        ('\u{a35}', '\u{a36}'),
    -        ('\u{a38}', '\u{a39}'),
    -        ('\u{a59}', '\u{a5c}'),
    -        ('\u{a5e}', '\u{a5e}'),
    -        ('\u{a72}', '\u{a74}'),
    -        ('\u{a85}', '\u{a8d}'),
    -        ('\u{a8f}', '\u{a91}'),
    -        ('\u{a93}', '\u{aa8}'),
    -        ('\u{aaa}', '\u{ab0}'),
    -        ('\u{ab2}', '\u{ab3}'),
    -        ('\u{ab5}', '\u{ab9}'),
    -        ('\u{abd}', '\u{abd}'),
    -        ('\u{ad0}', '\u{ad0}'),
    -        ('\u{ae0}', '\u{ae1}'),
    -        ('\u{af9}', '\u{af9}'),
    -        ('\u{b05}', '\u{b0c}'),
    -        ('\u{b0f}', '\u{b10}'),
    -        ('\u{b13}', '\u{b28}'),
    -        ('\u{b2a}', '\u{b30}'),
    -        ('\u{b32}', '\u{b33}'),
    -        ('\u{b35}', '\u{b39}'),
    -        ('\u{b3d}', '\u{b3d}'),
    -        ('\u{b5c}', '\u{b5d}'),
    -        ('\u{b5f}', '\u{b61}'),
    -        ('\u{b71}', '\u{b71}'),
    -        ('\u{b83}', '\u{b83}'),
    -        ('\u{b85}', '\u{b8a}'),
    -        ('\u{b8e}', '\u{b90}'),
    -        ('\u{b92}', '\u{b95}'),
    -        ('\u{b99}', '\u{b9a}'),
    -        ('\u{b9c}', '\u{b9c}'),
    -        ('\u{b9e}', '\u{b9f}'),
    -        ('\u{ba3}', '\u{ba4}'),
    -        ('\u{ba8}', '\u{baa}'),
    -        ('\u{bae}', '\u{bb9}'),
    -        ('\u{bd0}', '\u{bd0}'),
    -        ('\u{c05}', '\u{c0c}'),
    -        ('\u{c0e}', '\u{c10}'),
    -        ('\u{c12}', '\u{c28}'),
    -        ('\u{c2a}', '\u{c39}'),
    -        ('\u{c3d}', '\u{c3d}'),
    -        ('\u{c58}', '\u{c5a}'),
    -        ('\u{c5d}', '\u{c5d}'),
    -        ('\u{c60}', '\u{c61}'),
    -        ('\u{c80}', '\u{c80}'),
    -        ('\u{c85}', '\u{c8c}'),
    -        ('\u{c8e}', '\u{c90}'),
    -        ('\u{c92}', '\u{ca8}'),
    -        ('\u{caa}', '\u{cb3}'),
    -        ('\u{cb5}', '\u{cb9}'),
    -        ('\u{cbd}', '\u{cbd}'),
    -        ('\u{cdd}', '\u{cde}'),
    -        ('\u{ce0}', '\u{ce1}'),
    -        ('\u{cf1}', '\u{cf2}'),
    -        ('\u{d04}', '\u{d0c}'),
    -        ('\u{d0e}', '\u{d10}'),
    -        ('\u{d12}', '\u{d3a}'),
    -        ('\u{d3d}', '\u{d3d}'),
    -        ('\u{d4e}', '\u{d4e}'),
    -        ('\u{d54}', '\u{d56}'),
    -        ('\u{d5f}', '\u{d61}'),
    -        ('\u{d7a}', '\u{d7f}'),
    -        ('\u{d85}', '\u{d96}'),
    -        ('\u{d9a}', '\u{db1}'),
    -        ('\u{db3}', '\u{dbb}'),
    -        ('\u{dbd}', '\u{dbd}'),
    -        ('\u{dc0}', '\u{dc6}'),
    -        ('\u{e01}', '\u{e30}'),
    -        ('\u{e32}', '\u{e32}'),
    -        ('\u{e40}', '\u{e46}'),
    -        ('\u{e81}', '\u{e82}'),
    -        ('\u{e84}', '\u{e84}'),
    -        ('\u{e86}', '\u{e8a}'),
    -        ('\u{e8c}', '\u{ea3}'),
    -        ('\u{ea5}', '\u{ea5}'),
    -        ('\u{ea7}', '\u{eb0}'),
    -        ('\u{eb2}', '\u{eb2}'),
    -        ('\u{ebd}', '\u{ebd}'),
    -        ('\u{ec0}', '\u{ec4}'),
    -        ('\u{ec6}', '\u{ec6}'),
    -        ('\u{edc}', '\u{edf}'),
    -        ('\u{f00}', '\u{f00}'),
    -        ('\u{f40}', '\u{f47}'),
    -        ('\u{f49}', '\u{f6c}'),
    -        ('\u{f88}', '\u{f8c}'),
    -        ('\u{1000}', '\u{102a}'),
    -        ('\u{103f}', '\u{103f}'),
    -        ('\u{1050}', '\u{1055}'),
    -        ('\u{105a}', '\u{105d}'),
    -        ('\u{1061}', '\u{1061}'),
    -        ('\u{1065}', '\u{1066}'),
    -        ('\u{106e}', '\u{1070}'),
    -        ('\u{1075}', '\u{1081}'),
    -        ('\u{108e}', '\u{108e}'),
    -        ('\u{10a0}', '\u{10c5}'),
    -        ('\u{10c7}', '\u{10c7}'),
    -        ('\u{10cd}', '\u{10cd}'),
    -        ('\u{10d0}', '\u{10fa}'),
    -        ('\u{10fc}', '\u{1248}'),
    -        ('\u{124a}', '\u{124d}'),
    -        ('\u{1250}', '\u{1256}'),
    -        ('\u{1258}', '\u{1258}'),
    -        ('\u{125a}', '\u{125d}'),
    -        ('\u{1260}', '\u{1288}'),
    -        ('\u{128a}', '\u{128d}'),
    -        ('\u{1290}', '\u{12b0}'),
    -        ('\u{12b2}', '\u{12b5}'),
    -        ('\u{12b8}', '\u{12be}'),
    -        ('\u{12c0}', '\u{12c0}'),
    -        ('\u{12c2}', '\u{12c5}'),
    -        ('\u{12c8}', '\u{12d6}'),
    -        ('\u{12d8}', '\u{1310}'),
    -        ('\u{1312}', '\u{1315}'),
    -        ('\u{1318}', '\u{135a}'),
    -        ('\u{1380}', '\u{138f}'),
    -        ('\u{13a0}', '\u{13f5}'),
    -        ('\u{13f8}', '\u{13fd}'),
    -        ('\u{1401}', '\u{166c}'),
    -        ('\u{166f}', '\u{167f}'),
    -        ('\u{1681}', '\u{169a}'),
    -        ('\u{16a0}', '\u{16ea}'),
    -        ('\u{16ee}', '\u{16f8}'),
    -        ('\u{1700}', '\u{1711}'),
    -        ('\u{171f}', '\u{1731}'),
    -        ('\u{1740}', '\u{1751}'),
    -        ('\u{1760}', '\u{176c}'),
    -        ('\u{176e}', '\u{1770}'),
    -        ('\u{1780}', '\u{17b3}'),
    -        ('\u{17d7}', '\u{17d7}'),
    -        ('\u{17dc}', '\u{17dc}'),
    -        ('\u{1820}', '\u{1878}'),
    -        ('\u{1880}', '\u{18a8}'),
    -        ('\u{18aa}', '\u{18aa}'),
    -        ('\u{18b0}', '\u{18f5}'),
    -        ('\u{1900}', '\u{191e}'),
    -        ('\u{1950}', '\u{196d}'),
    -        ('\u{1970}', '\u{1974}'),
    -        ('\u{1980}', '\u{19ab}'),
    -        ('\u{19b0}', '\u{19c9}'),
    -        ('\u{1a00}', '\u{1a16}'),
    -        ('\u{1a20}', '\u{1a54}'),
    -        ('\u{1aa7}', '\u{1aa7}'),
    -        ('\u{1b05}', '\u{1b33}'),
    -        ('\u{1b45}', '\u{1b4c}'),
    -        ('\u{1b83}', '\u{1ba0}'),
    -        ('\u{1bae}', '\u{1baf}'),
    -        ('\u{1bba}', '\u{1be5}'),
    -        ('\u{1c00}', '\u{1c23}'),
    -        ('\u{1c4d}', '\u{1c4f}'),
    -        ('\u{1c5a}', '\u{1c7d}'),
    -        ('\u{1c80}', '\u{1c88}'),
    -        ('\u{1c90}', '\u{1cba}'),
    -        ('\u{1cbd}', '\u{1cbf}'),
    -        ('\u{1ce9}', '\u{1cec}'),
    -        ('\u{1cee}', '\u{1cf3}'),
    -        ('\u{1cf5}', '\u{1cf6}'),
    -        ('\u{1cfa}', '\u{1cfa}'),
    -        ('\u{1d00}', '\u{1dbf}'),
    -        ('\u{1e00}', '\u{1f15}'),
    -        ('\u{1f18}', '\u{1f1d}'),
    -        ('\u{1f20}', '\u{1f45}'),
    -        ('\u{1f48}', '\u{1f4d}'),
    -        ('\u{1f50}', '\u{1f57}'),
    -        ('\u{1f59}', '\u{1f59}'),
    -        ('\u{1f5b}', '\u{1f5b}'),
    -        ('\u{1f5d}', '\u{1f5d}'),
    -        ('\u{1f5f}', '\u{1f7d}'),
    -        ('\u{1f80}', '\u{1fb4}'),
    -        ('\u{1fb6}', '\u{1fbc}'),
    -        ('\u{1fbe}', '\u{1fbe}'),
    -        ('\u{1fc2}', '\u{1fc4}'),
    -        ('\u{1fc6}', '\u{1fcc}'),
    -        ('\u{1fd0}', '\u{1fd3}'),
    -        ('\u{1fd6}', '\u{1fdb}'),
    -        ('\u{1fe0}', '\u{1fec}'),
    -        ('\u{1ff2}', '\u{1ff4}'),
    -        ('\u{1ff6}', '\u{1ffc}'),
    -        ('\u{2071}', '\u{2071}'),
    -        ('\u{207f}', '\u{207f}'),
    -        ('\u{2090}', '\u{209c}'),
    -        ('\u{2102}', '\u{2102}'),
    -        ('\u{2107}', '\u{2107}'),
    -        ('\u{210a}', '\u{2113}'),
    -        ('\u{2115}', '\u{2115}'),
    -        ('\u{2118}', '\u{211d}'),
    -        ('\u{2124}', '\u{2124}'),
    -        ('\u{2126}', '\u{2126}'),
    -        ('\u{2128}', '\u{2128}'),
    -        ('\u{212a}', '\u{2139}'),
    -        ('\u{213c}', '\u{213f}'),
    -        ('\u{2145}', '\u{2149}'),
    -        ('\u{214e}', '\u{214e}'),
    -        ('\u{2160}', '\u{2188}'),
    -        ('\u{2c00}', '\u{2ce4}'),
    -        ('\u{2ceb}', '\u{2cee}'),
    -        ('\u{2cf2}', '\u{2cf3}'),
    -        ('\u{2d00}', '\u{2d25}'),
    -        ('\u{2d27}', '\u{2d27}'),
    -        ('\u{2d2d}', '\u{2d2d}'),
    -        ('\u{2d30}', '\u{2d67}'),
    -        ('\u{2d6f}', '\u{2d6f}'),
    -        ('\u{2d80}', '\u{2d96}'),
    -        ('\u{2da0}', '\u{2da6}'),
    -        ('\u{2da8}', '\u{2dae}'),
    -        ('\u{2db0}', '\u{2db6}'),
    -        ('\u{2db8}', '\u{2dbe}'),
    -        ('\u{2dc0}', '\u{2dc6}'),
    -        ('\u{2dc8}', '\u{2dce}'),
    -        ('\u{2dd0}', '\u{2dd6}'),
    -        ('\u{2dd8}', '\u{2dde}'),
    -        ('\u{3005}', '\u{3007}'),
    -        ('\u{3021}', '\u{3029}'),
    -        ('\u{3031}', '\u{3035}'),
    -        ('\u{3038}', '\u{303c}'),
    -        ('\u{3041}', '\u{3096}'),
    -        ('\u{309d}', '\u{309f}'),
    -        ('\u{30a1}', '\u{30fa}'),
    -        ('\u{30fc}', '\u{30ff}'),
    -        ('\u{3105}', '\u{312f}'),
    -        ('\u{3131}', '\u{318e}'),
    -        ('\u{31a0}', '\u{31bf}'),
    -        ('\u{31f0}', '\u{31ff}'),
    -        ('\u{3400}', '\u{4dbf}'),
    -        ('\u{4e00}', '\u{a48c}'),
    -        ('\u{a4d0}', '\u{a4fd}'),
    -        ('\u{a500}', '\u{a60c}'),
    -        ('\u{a610}', '\u{a61f}'),
    -        ('\u{a62a}', '\u{a62b}'),
    -        ('\u{a640}', '\u{a66e}'),
    -        ('\u{a67f}', '\u{a69d}'),
    -        ('\u{a6a0}', '\u{a6ef}'),
    -        ('\u{a717}', '\u{a71f}'),
    -        ('\u{a722}', '\u{a788}'),
    -        ('\u{a78b}', '\u{a7ca}'),
    -        ('\u{a7d0}', '\u{a7d1}'),
    -        ('\u{a7d3}', '\u{a7d3}'),
    -        ('\u{a7d5}', '\u{a7d9}'),
    -        ('\u{a7f2}', '\u{a801}'),
    -        ('\u{a803}', '\u{a805}'),
    -        ('\u{a807}', '\u{a80a}'),
    -        ('\u{a80c}', '\u{a822}'),
    -        ('\u{a840}', '\u{a873}'),
    -        ('\u{a882}', '\u{a8b3}'),
    -        ('\u{a8f2}', '\u{a8f7}'),
    -        ('\u{a8fb}', '\u{a8fb}'),
    -        ('\u{a8fd}', '\u{a8fe}'),
    -        ('\u{a90a}', '\u{a925}'),
    -        ('\u{a930}', '\u{a946}'),
    -        ('\u{a960}', '\u{a97c}'),
    -        ('\u{a984}', '\u{a9b2}'),
    -        ('\u{a9cf}', '\u{a9cf}'),
    -        ('\u{a9e0}', '\u{a9e4}'),
    -        ('\u{a9e6}', '\u{a9ef}'),
    -        ('\u{a9fa}', '\u{a9fe}'),
    -        ('\u{aa00}', '\u{aa28}'),
    -        ('\u{aa40}', '\u{aa42}'),
    -        ('\u{aa44}', '\u{aa4b}'),
    -        ('\u{aa60}', '\u{aa76}'),
    -        ('\u{aa7a}', '\u{aa7a}'),
    -        ('\u{aa7e}', '\u{aaaf}'),
    -        ('\u{aab1}', '\u{aab1}'),
    -        ('\u{aab5}', '\u{aab6}'),
    -        ('\u{aab9}', '\u{aabd}'),
    -        ('\u{aac0}', '\u{aac0}'),
    -        ('\u{aac2}', '\u{aac2}'),
    -        ('\u{aadb}', '\u{aadd}'),
    -        ('\u{aae0}', '\u{aaea}'),
    -        ('\u{aaf2}', '\u{aaf4}'),
    -        ('\u{ab01}', '\u{ab06}'),
    -        ('\u{ab09}', '\u{ab0e}'),
    -        ('\u{ab11}', '\u{ab16}'),
    -        ('\u{ab20}', '\u{ab26}'),
    -        ('\u{ab28}', '\u{ab2e}'),
    -        ('\u{ab30}', '\u{ab5a}'),
    -        ('\u{ab5c}', '\u{ab69}'),
    -        ('\u{ab70}', '\u{abe2}'),
    -        ('\u{ac00}', '\u{d7a3}'),
    -        ('\u{d7b0}', '\u{d7c6}'),
    -        ('\u{d7cb}', '\u{d7fb}'),
    -        ('\u{f900}', '\u{fa6d}'),
    -        ('\u{fa70}', '\u{fad9}'),
    -        ('\u{fb00}', '\u{fb06}'),
    -        ('\u{fb13}', '\u{fb17}'),
    -        ('\u{fb1d}', '\u{fb1d}'),
    -        ('\u{fb1f}', '\u{fb28}'),
    -        ('\u{fb2a}', '\u{fb36}'),
    -        ('\u{fb38}', '\u{fb3c}'),
    -        ('\u{fb3e}', '\u{fb3e}'),
    -        ('\u{fb40}', '\u{fb41}'),
    -        ('\u{fb43}', '\u{fb44}'),
    -        ('\u{fb46}', '\u{fbb1}'),
    -        ('\u{fbd3}', '\u{fc5d}'),
    -        ('\u{fc64}', '\u{fd3d}'),
    -        ('\u{fd50}', '\u{fd8f}'),
    -        ('\u{fd92}', '\u{fdc7}'),
    -        ('\u{fdf0}', '\u{fdf9}'),
    -        ('\u{fe71}', '\u{fe71}'),
    -        ('\u{fe73}', '\u{fe73}'),
    -        ('\u{fe77}', '\u{fe77}'),
    -        ('\u{fe79}', '\u{fe79}'),
    -        ('\u{fe7b}', '\u{fe7b}'),
    -        ('\u{fe7d}', '\u{fe7d}'),
    -        ('\u{fe7f}', '\u{fefc}'),
    -        ('\u{ff21}', '\u{ff3a}'),
    -        ('\u{ff41}', '\u{ff5a}'),
    -        ('\u{ff66}', '\u{ff9d}'),
    -        ('\u{ffa0}', '\u{ffbe}'),
    -        ('\u{ffc2}', '\u{ffc7}'),
    -        ('\u{ffca}', '\u{ffcf}'),
    -        ('\u{ffd2}', '\u{ffd7}'),
    -        ('\u{ffda}', '\u{ffdc}'),
    -        ('\u{10000}', '\u{1000b}'),
    -        ('\u{1000d}', '\u{10026}'),
    -        ('\u{10028}', '\u{1003a}'),
    -        ('\u{1003c}', '\u{1003d}'),
    -        ('\u{1003f}', '\u{1004d}'),
    -        ('\u{10050}', '\u{1005d}'),
    -        ('\u{10080}', '\u{100fa}'),
    -        ('\u{10140}', '\u{10174}'),
    -        ('\u{10280}', '\u{1029c}'),
    -        ('\u{102a0}', '\u{102d0}'),
    -        ('\u{10300}', '\u{1031f}'),
    -        ('\u{1032d}', '\u{1034a}'),
    -        ('\u{10350}', '\u{10375}'),
    -        ('\u{10380}', '\u{1039d}'),
    -        ('\u{103a0}', '\u{103c3}'),
    -        ('\u{103c8}', '\u{103cf}'),
    -        ('\u{103d1}', '\u{103d5}'),
    -        ('\u{10400}', '\u{1049d}'),
    -        ('\u{104b0}', '\u{104d3}'),
    -        ('\u{104d8}', '\u{104fb}'),
    -        ('\u{10500}', '\u{10527}'),
    -        ('\u{10530}', '\u{10563}'),
    -        ('\u{10570}', '\u{1057a}'),
    -        ('\u{1057c}', '\u{1058a}'),
    -        ('\u{1058c}', '\u{10592}'),
    -        ('\u{10594}', '\u{10595}'),
    -        ('\u{10597}', '\u{105a1}'),
    -        ('\u{105a3}', '\u{105b1}'),
    -        ('\u{105b3}', '\u{105b9}'),
    -        ('\u{105bb}', '\u{105bc}'),
    -        ('\u{10600}', '\u{10736}'),
    -        ('\u{10740}', '\u{10755}'),
    -        ('\u{10760}', '\u{10767}'),
    -        ('\u{10780}', '\u{10785}'),
    -        ('\u{10787}', '\u{107b0}'),
    -        ('\u{107b2}', '\u{107ba}'),
    -        ('\u{10800}', '\u{10805}'),
    -        ('\u{10808}', '\u{10808}'),
    -        ('\u{1080a}', '\u{10835}'),
    -        ('\u{10837}', '\u{10838}'),
    -        ('\u{1083c}', '\u{1083c}'),
    -        ('\u{1083f}', '\u{10855}'),
    -        ('\u{10860}', '\u{10876}'),
    -        ('\u{10880}', '\u{1089e}'),
    -        ('\u{108e0}', '\u{108f2}'),
    -        ('\u{108f4}', '\u{108f5}'),
    -        ('\u{10900}', '\u{10915}'),
    -        ('\u{10920}', '\u{10939}'),
    -        ('\u{10980}', '\u{109b7}'),
    -        ('\u{109be}', '\u{109bf}'),
    -        ('\u{10a00}', '\u{10a00}'),
    -        ('\u{10a10}', '\u{10a13}'),
    -        ('\u{10a15}', '\u{10a17}'),
    -        ('\u{10a19}', '\u{10a35}'),
    -        ('\u{10a60}', '\u{10a7c}'),
    -        ('\u{10a80}', '\u{10a9c}'),
    -        ('\u{10ac0}', '\u{10ac7}'),
    -        ('\u{10ac9}', '\u{10ae4}'),
    -        ('\u{10b00}', '\u{10b35}'),
    -        ('\u{10b40}', '\u{10b55}'),
    -        ('\u{10b60}', '\u{10b72}'),
    -        ('\u{10b80}', '\u{10b91}'),
    -        ('\u{10c00}', '\u{10c48}'),
    -        ('\u{10c80}', '\u{10cb2}'),
    -        ('\u{10cc0}', '\u{10cf2}'),
    -        ('\u{10d00}', '\u{10d23}'),
    -        ('\u{10e80}', '\u{10ea9}'),
    -        ('\u{10eb0}', '\u{10eb1}'),
    -        ('\u{10f00}', '\u{10f1c}'),
    -        ('\u{10f27}', '\u{10f27}'),
    -        ('\u{10f30}', '\u{10f45}'),
    -        ('\u{10f70}', '\u{10f81}'),
    -        ('\u{10fb0}', '\u{10fc4}'),
    -        ('\u{10fe0}', '\u{10ff6}'),
    -        ('\u{11003}', '\u{11037}'),
    -        ('\u{11071}', '\u{11072}'),
    -        ('\u{11075}', '\u{11075}'),
    -        ('\u{11083}', '\u{110af}'),
    -        ('\u{110d0}', '\u{110e8}'),
    -        ('\u{11103}', '\u{11126}'),
    -        ('\u{11144}', '\u{11144}'),
    -        ('\u{11147}', '\u{11147}'),
    -        ('\u{11150}', '\u{11172}'),
    -        ('\u{11176}', '\u{11176}'),
    -        ('\u{11183}', '\u{111b2}'),
    -        ('\u{111c1}', '\u{111c4}'),
    -        ('\u{111da}', '\u{111da}'),
    -        ('\u{111dc}', '\u{111dc}'),
    -        ('\u{11200}', '\u{11211}'),
    -        ('\u{11213}', '\u{1122b}'),
    -        ('\u{1123f}', '\u{11240}'),
    -        ('\u{11280}', '\u{11286}'),
    -        ('\u{11288}', '\u{11288}'),
    -        ('\u{1128a}', '\u{1128d}'),
    -        ('\u{1128f}', '\u{1129d}'),
    -        ('\u{1129f}', '\u{112a8}'),
    -        ('\u{112b0}', '\u{112de}'),
    -        ('\u{11305}', '\u{1130c}'),
    -        ('\u{1130f}', '\u{11310}'),
    -        ('\u{11313}', '\u{11328}'),
    -        ('\u{1132a}', '\u{11330}'),
    -        ('\u{11332}', '\u{11333}'),
    -        ('\u{11335}', '\u{11339}'),
    -        ('\u{1133d}', '\u{1133d}'),
    -        ('\u{11350}', '\u{11350}'),
    -        ('\u{1135d}', '\u{11361}'),
    -        ('\u{11400}', '\u{11434}'),
    -        ('\u{11447}', '\u{1144a}'),
    -        ('\u{1145f}', '\u{11461}'),
    -        ('\u{11480}', '\u{114af}'),
    -        ('\u{114c4}', '\u{114c5}'),
    -        ('\u{114c7}', '\u{114c7}'),
    -        ('\u{11580}', '\u{115ae}'),
    -        ('\u{115d8}', '\u{115db}'),
    -        ('\u{11600}', '\u{1162f}'),
    -        ('\u{11644}', '\u{11644}'),
    -        ('\u{11680}', '\u{116aa}'),
    -        ('\u{116b8}', '\u{116b8}'),
    -        ('\u{11700}', '\u{1171a}'),
    -        ('\u{11740}', '\u{11746}'),
    -        ('\u{11800}', '\u{1182b}'),
    -        ('\u{118a0}', '\u{118df}'),
    -        ('\u{118ff}', '\u{11906}'),
    -        ('\u{11909}', '\u{11909}'),
    -        ('\u{1190c}', '\u{11913}'),
    -        ('\u{11915}', '\u{11916}'),
    -        ('\u{11918}', '\u{1192f}'),
    -        ('\u{1193f}', '\u{1193f}'),
    -        ('\u{11941}', '\u{11941}'),
    -        ('\u{119a0}', '\u{119a7}'),
    -        ('\u{119aa}', '\u{119d0}'),
    -        ('\u{119e1}', '\u{119e1}'),
    -        ('\u{119e3}', '\u{119e3}'),
    -        ('\u{11a00}', '\u{11a00}'),
    -        ('\u{11a0b}', '\u{11a32}'),
    -        ('\u{11a3a}', '\u{11a3a}'),
    -        ('\u{11a50}', '\u{11a50}'),
    -        ('\u{11a5c}', '\u{11a89}'),
    -        ('\u{11a9d}', '\u{11a9d}'),
    -        ('\u{11ab0}', '\u{11af8}'),
    -        ('\u{11c00}', '\u{11c08}'),
    -        ('\u{11c0a}', '\u{11c2e}'),
    -        ('\u{11c40}', '\u{11c40}'),
    -        ('\u{11c72}', '\u{11c8f}'),
    -        ('\u{11d00}', '\u{11d06}'),
    -        ('\u{11d08}', '\u{11d09}'),
    -        ('\u{11d0b}', '\u{11d30}'),
    -        ('\u{11d46}', '\u{11d46}'),
    -        ('\u{11d60}', '\u{11d65}'),
    -        ('\u{11d67}', '\u{11d68}'),
    -        ('\u{11d6a}', '\u{11d89}'),
    -        ('\u{11d98}', '\u{11d98}'),
    -        ('\u{11ee0}', '\u{11ef2}'),
    -        ('\u{11f02}', '\u{11f02}'),
    -        ('\u{11f04}', '\u{11f10}'),
    -        ('\u{11f12}', '\u{11f33}'),
    -        ('\u{11fb0}', '\u{11fb0}'),
    -        ('\u{12000}', '\u{12399}'),
    -        ('\u{12400}', '\u{1246e}'),
    -        ('\u{12480}', '\u{12543}'),
    -        ('\u{12f90}', '\u{12ff0}'),
    -        ('\u{13000}', '\u{1342f}'),
    -        ('\u{13441}', '\u{13446}'),
    -        ('\u{14400}', '\u{14646}'),
    -        ('\u{16800}', '\u{16a38}'),
    -        ('\u{16a40}', '\u{16a5e}'),
    -        ('\u{16a70}', '\u{16abe}'),
    -        ('\u{16ad0}', '\u{16aed}'),
    -        ('\u{16b00}', '\u{16b2f}'),
    -        ('\u{16b40}', '\u{16b43}'),
    -        ('\u{16b63}', '\u{16b77}'),
    -        ('\u{16b7d}', '\u{16b8f}'),
    -        ('\u{16e40}', '\u{16e7f}'),
    -        ('\u{16f00}', '\u{16f4a}'),
    -        ('\u{16f50}', '\u{16f50}'),
    -        ('\u{16f93}', '\u{16f9f}'),
    -        ('\u{16fe0}', '\u{16fe1}'),
    -        ('\u{16fe3}', '\u{16fe3}'),
    -        ('\u{17000}', '\u{187f7}'),
    -        ('\u{18800}', '\u{18cd5}'),
    -        ('\u{18d00}', '\u{18d08}'),
    -        ('\u{1aff0}', '\u{1aff3}'),
    -        ('\u{1aff5}', '\u{1affb}'),
    -        ('\u{1affd}', '\u{1affe}'),
    -        ('\u{1b000}', '\u{1b122}'),
    -        ('\u{1b132}', '\u{1b132}'),
    -        ('\u{1b150}', '\u{1b152}'),
    -        ('\u{1b155}', '\u{1b155}'),
    -        ('\u{1b164}', '\u{1b167}'),
    -        ('\u{1b170}', '\u{1b2fb}'),
    -        ('\u{1bc00}', '\u{1bc6a}'),
    -        ('\u{1bc70}', '\u{1bc7c}'),
    -        ('\u{1bc80}', '\u{1bc88}'),
    -        ('\u{1bc90}', '\u{1bc99}'),
    -        ('\u{1d400}', '\u{1d454}'),
    -        ('\u{1d456}', '\u{1d49c}'),
    -        ('\u{1d49e}', '\u{1d49f}'),
    -        ('\u{1d4a2}', '\u{1d4a2}'),
    -        ('\u{1d4a5}', '\u{1d4a6}'),
    -        ('\u{1d4a9}', '\u{1d4ac}'),
    -        ('\u{1d4ae}', '\u{1d4b9}'),
    -        ('\u{1d4bb}', '\u{1d4bb}'),
    -        ('\u{1d4bd}', '\u{1d4c3}'),
    -        ('\u{1d4c5}', '\u{1d505}'),
    -        ('\u{1d507}', '\u{1d50a}'),
    -        ('\u{1d50d}', '\u{1d514}'),
    -        ('\u{1d516}', '\u{1d51c}'),
    -        ('\u{1d51e}', '\u{1d539}'),
    -        ('\u{1d53b}', '\u{1d53e}'),
    -        ('\u{1d540}', '\u{1d544}'),
    -        ('\u{1d546}', '\u{1d546}'),
    -        ('\u{1d54a}', '\u{1d550}'),
    -        ('\u{1d552}', '\u{1d6a5}'),
    -        ('\u{1d6a8}', '\u{1d6c0}'),
    -        ('\u{1d6c2}', '\u{1d6da}'),
    -        ('\u{1d6dc}', '\u{1d6fa}'),
    -        ('\u{1d6fc}', '\u{1d714}'),
    -        ('\u{1d716}', '\u{1d734}'),
    -        ('\u{1d736}', '\u{1d74e}'),
    -        ('\u{1d750}', '\u{1d76e}'),
    -        ('\u{1d770}', '\u{1d788}'),
    -        ('\u{1d78a}', '\u{1d7a8}'),
    -        ('\u{1d7aa}', '\u{1d7c2}'),
    -        ('\u{1d7c4}', '\u{1d7cb}'),
    -        ('\u{1df00}', '\u{1df1e}'),
    -        ('\u{1df25}', '\u{1df2a}'),
    -        ('\u{1e030}', '\u{1e06d}'),
    -        ('\u{1e100}', '\u{1e12c}'),
    -        ('\u{1e137}', '\u{1e13d}'),
    -        ('\u{1e14e}', '\u{1e14e}'),
    -        ('\u{1e290}', '\u{1e2ad}'),
    -        ('\u{1e2c0}', '\u{1e2eb}'),
    -        ('\u{1e4d0}', '\u{1e4eb}'),
    -        ('\u{1e7e0}', '\u{1e7e6}'),
    -        ('\u{1e7e8}', '\u{1e7eb}'),
    -        ('\u{1e7ed}', '\u{1e7ee}'),
    -        ('\u{1e7f0}', '\u{1e7fe}'),
    -        ('\u{1e800}', '\u{1e8c4}'),
    -        ('\u{1e900}', '\u{1e943}'),
    -        ('\u{1e94b}', '\u{1e94b}'),
    -        ('\u{1ee00}', '\u{1ee03}'),
    -        ('\u{1ee05}', '\u{1ee1f}'),
    -        ('\u{1ee21}', '\u{1ee22}'),
    -        ('\u{1ee24}', '\u{1ee24}'),
    -        ('\u{1ee27}', '\u{1ee27}'),
    -        ('\u{1ee29}', '\u{1ee32}'),
    -        ('\u{1ee34}', '\u{1ee37}'),
    -        ('\u{1ee39}', '\u{1ee39}'),
    -        ('\u{1ee3b}', '\u{1ee3b}'),
    -        ('\u{1ee42}', '\u{1ee42}'),
    -        ('\u{1ee47}', '\u{1ee47}'),
    -        ('\u{1ee49}', '\u{1ee49}'),
    -        ('\u{1ee4b}', '\u{1ee4b}'),
    -        ('\u{1ee4d}', '\u{1ee4f}'),
    -        ('\u{1ee51}', '\u{1ee52}'),
    -        ('\u{1ee54}', '\u{1ee54}'),
    -        ('\u{1ee57}', '\u{1ee57}'),
    -        ('\u{1ee59}', '\u{1ee59}'),
    -        ('\u{1ee5b}', '\u{1ee5b}'),
    -        ('\u{1ee5d}', '\u{1ee5d}'),
    -        ('\u{1ee5f}', '\u{1ee5f}'),
    -        ('\u{1ee61}', '\u{1ee62}'),
    -        ('\u{1ee64}', '\u{1ee64}'),
    -        ('\u{1ee67}', '\u{1ee6a}'),
    -        ('\u{1ee6c}', '\u{1ee72}'),
    -        ('\u{1ee74}', '\u{1ee77}'),
    -        ('\u{1ee79}', '\u{1ee7c}'),
    -        ('\u{1ee7e}', '\u{1ee7e}'),
    -        ('\u{1ee80}', '\u{1ee89}'),
    -        ('\u{1ee8b}', '\u{1ee9b}'),
    -        ('\u{1eea1}', '\u{1eea3}'),
    -        ('\u{1eea5}', '\u{1eea9}'),
    -        ('\u{1eeab}', '\u{1eebb}'),
    -        ('\u{20000}', '\u{2a6df}'),
    -        ('\u{2a700}', '\u{2b739}'),
    -        ('\u{2b740}', '\u{2b81d}'),
    -        ('\u{2b820}', '\u{2cea1}'),
    -        ('\u{2ceb0}', '\u{2ebe0}'),
    -        ('\u{2f800}', '\u{2fa1d}'),
    -        ('\u{30000}', '\u{3134a}'),
    -        ('\u{31350}', '\u{323af}'),
    -    ];
    -
    -    pub fn XID_Start(c: char) -> bool {
    -        super::bsearch_range_table(c, XID_Start_table)
    -    }
    -}
    -
    \ No newline at end of file diff --git a/static.files/clipboard-7571035ce49a181d.svg b/static.files/clipboard-7571035ce49a181d.svg deleted file mode 100644 index 8adbd99..0000000 --- a/static.files/clipboard-7571035ce49a181d.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/static.files/favicon-16x16-8b506e7a72182f1c.png b/static.files/favicon-16x16-8b506e7a72182f1c.png deleted file mode 100644 index ea4b45cae1618e6e20e6d61897da953f34b66b30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 715 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4i*LmhONKMUokK+u%tWsIx;Y9?C1WI$jZRL zppfhl21sKV#(O6=Y{y*0za(fziy<#W6(V zeCWl!-m?ouj(+sdXyeelWS6n9d5QO5X0CTjyO%DQ+ck5Eeq&$hw^Wbqj~*#yG_A`L zZ+B8>pZH)#hiYS=V2sav6D83}FU~8P9;=?lJ-ymuPX3{{OL`+NO%OO~UHtG~%G&PI z(9qJO*HYNebDwIOr0?bROlDV@S^f9gC2y4_j97|pY1vNS()6JJSHrixQ;OFr___th z`g#|&TSiNGUF2}7|T-!GYeJ{}O zVx73Yd`CWm;?)Fi6yBFMg~Skx(0^2hQ=X=##V;r zRtDzU1_o9J26GG4MNl;4=BH$)RpQq0MtA-S1_lO6kPX54X(i=}MX3zs<>h*rdD+Fu zi3O>8`9L7=A0){getNotDisplayedElem().appendChild(el.firstElementChild)}if(elemToDisplay===null){addClass(el,"hidden");showMain();return}el.appendChild(elemToDisplay);hideMain();removeClass(el,"hidden")}function browserSupportsHistoryApi(){return window.history&&typeof window.history.pushState==="function"}function preLoadCss(cssUrl){const link=document.createElement("link");link.href=cssUrl;link.rel="preload";link.as="style";document.getElementsByTagName("head")[0].appendChild(link)}(function(){const isHelpPage=window.location.pathname.endsWith("/help.html");function loadScript(url){const script=document.createElement("script");script.src=url;document.head.append(script)}getSettingsButton().onclick=event=>{if(event.ctrlKey||event.altKey||event.metaKey){return}window.hideAllModals(false);addClass(getSettingsButton(),"rotate");event.preventDefault();loadScript(getVar("static-root-path")+getVar("settings-js"));setTimeout(()=>{const themes=getVar("themes").split(",");for(const theme of themes){if(theme!==""){preLoadCss(getVar("root-path")+theme+".css")}}},0)};window.searchState={loadingText:"Loading search results...",input:document.getElementsByClassName("search-input")[0],outputElement:()=>{let el=document.getElementById("search");if(!el){el=document.createElement("section");el.id="search";getNotDisplayedElem().appendChild(el)}return el},title:document.title,titleBeforeSearch:document.title,timeout:null,currentTab:0,focusedByTab:[null,null,null],clearInputTimeout:()=>{if(searchState.timeout!==null){clearTimeout(searchState.timeout);searchState.timeout=null}},isDisplayed:()=>searchState.outputElement().parentElement.id===ALTERNATIVE_DISPLAY_ID,focus:()=>{searchState.input.focus()},defocus:()=>{searchState.input.blur()},showResults:search=>{if(search===null||typeof search==="undefined"){search=searchState.outputElement()}switchDisplayedElement(search);searchState.mouseMovedAfterSearch=false;document.title=searchState.title},removeQueryParameters:()=>{document.title=searchState.titleBeforeSearch;if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.hash)}},hideResults:()=>{switchDisplayedElement(null);searchState.removeQueryParameters()},getQueryStringParams:()=>{const params={};window.location.search.substring(1).split("&").map(s=>{const pair=s.split("=");params[decodeURIComponent(pair[0])]=typeof pair[1]==="undefined"?null:decodeURIComponent(pair[1])});return params},setup:()=>{const search_input=searchState.input;if(!searchState.input){return}let searchLoaded=false;function loadSearch(){if(!searchLoaded){searchLoaded=true;loadScript(getVar("static-root-path")+getVar("search-js"));loadScript(resourcePath("search-index",".js"))}}search_input.addEventListener("focus",()=>{search_input.origPlaceholder=search_input.placeholder;search_input.placeholder="Type your search here.";loadSearch()});if(search_input.value!==""){loadSearch()}const params=searchState.getQueryStringParams();if(params.search!==undefined){searchState.setLoadingSearch();loadSearch()}},setLoadingSearch:()=>{const search=searchState.outputElement();search.innerHTML="

    "+searchState.loadingText+"

    ";searchState.showResults(search)},};const toggleAllDocsId="toggle-all-docs";let savedHash="";function handleHashes(ev){if(ev!==null&&searchState.isDisplayed()&&ev.newURL){switchDisplayedElement(null);const hash=ev.newURL.slice(ev.newURL.indexOf("#")+1);if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.search+"#"+hash)}const elem=document.getElementById(hash);if(elem){elem.scrollIntoView()}}const pageId=window.location.hash.replace(/^#/,"");if(savedHash!==pageId){savedHash=pageId;if(pageId!==""){expandSection(pageId)}}}function onHashChange(ev){hideSidebar();handleHashes(ev)}function openParentDetails(elem){while(elem){if(elem.tagName==="DETAILS"){elem.open=true}elem=elem.parentNode}}function expandSection(id){openParentDetails(document.getElementById(id))}function handleEscape(ev){searchState.clearInputTimeout();searchState.hideResults();ev.preventDefault();searchState.defocus();window.hideAllModals(true)}function handleShortcut(ev){const disableShortcuts=getSettingValue("disable-shortcuts")==="true";if(ev.ctrlKey||ev.altKey||ev.metaKey||disableShortcuts){return}if(document.activeElement.tagName==="INPUT"&&document.activeElement.type!=="checkbox"&&document.activeElement.type!=="radio"){switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break}}else{switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break;case"s":case"S":ev.preventDefault();searchState.focus();break;case"+":ev.preventDefault();expandAllDocs();break;case"-":ev.preventDefault();collapseAllDocs();break;case"?":showHelp();break;default:break}}}document.addEventListener("keypress",handleShortcut);document.addEventListener("keydown",handleShortcut);function addSidebarItems(){if(!window.SIDEBAR_ITEMS){return}const sidebar=document.getElementsByClassName("sidebar-elems")[0];function block(shortty,id,longty){const filtered=window.SIDEBAR_ITEMS[shortty];if(!filtered){return}const h3=document.createElement("h3");h3.innerHTML=`${longty}`;const ul=document.createElement("ul");ul.className="block "+shortty;for(const name of filtered){let path;if(shortty==="mod"){path=name+"/index.html"}else{path=shortty+"."+name+".html"}const current_page=document.location.href.split("/").pop();const link=document.createElement("a");link.href=path;if(path===current_page){link.className="current"}link.textContent=name;const li=document.createElement("li");li.appendChild(link);ul.appendChild(li)}sidebar.appendChild(h3);sidebar.appendChild(ul)}if(sidebar){block("primitive","primitives","Primitive Types");block("mod","modules","Modules");block("macro","macros","Macros");block("struct","structs","Structs");block("enum","enums","Enums");block("union","unions","Unions");block("constant","constants","Constants");block("static","static","Statics");block("trait","traits","Traits");block("fn","functions","Functions");block("type","types","Type Aliases");block("foreigntype","foreign-types","Foreign Types");block("keyword","keywords","Keywords");block("traitalias","trait-aliases","Trait Aliases")}}window.register_implementors=imp=>{const implementors=document.getElementById("implementors-list");const synthetic_implementors=document.getElementById("synthetic-implementors-list");const inlined_types=new Set();const TEXT_IDX=0;const SYNTHETIC_IDX=1;const TYPES_IDX=2;if(synthetic_implementors){onEachLazy(synthetic_implementors.getElementsByClassName("impl"),el=>{const aliases=el.getAttribute("data-aliases");if(!aliases){return}aliases.split(",").forEach(alias=>{inlined_types.add(alias)})})}let currentNbImpls=implementors.getElementsByClassName("impl").length;const traitName=document.querySelector(".main-heading h1 > .trait").textContent;const baseIdName="impl-"+traitName+"-";const libs=Object.getOwnPropertyNames(imp);const script=document.querySelector("script[data-ignore-extern-crates]");const ignoreExternCrates=new Set((script?script.getAttribute("data-ignore-extern-crates"):"").split(","));for(const lib of libs){if(lib===window.currentCrate||ignoreExternCrates.has(lib)){continue}const structs=imp[lib];struct_loop:for(const struct of structs){const list=struct[SYNTHETIC_IDX]?synthetic_implementors:implementors;if(struct[SYNTHETIC_IDX]){for(const struct_type of struct[TYPES_IDX]){if(inlined_types.has(struct_type)){continue struct_loop}inlined_types.add(struct_type)}}const code=document.createElement("h3");code.innerHTML=struct[TEXT_IDX];addClass(code,"code-header");onEachLazy(code.getElementsByTagName("a"),elem=>{const href=elem.getAttribute("href");if(href&&!/^(?:[a-z+]+:)?\/\//.test(href)){elem.setAttribute("href",window.rootPath+href)}});const currentId=baseIdName+currentNbImpls;const anchor=document.createElement("a");anchor.href="#"+currentId;addClass(anchor,"anchor");const display=document.createElement("div");display.id=currentId;addClass(display,"impl");display.appendChild(anchor);display.appendChild(code);list.appendChild(display);currentNbImpls+=1}}};if(window.pending_implementors){window.register_implementors(window.pending_implementors)}function addSidebarCrates(){if(!window.ALL_CRATES){return}const sidebarElems=document.getElementsByClassName("sidebar-elems")[0];if(!sidebarElems){return}const h3=document.createElement("h3");h3.innerHTML="Crates";const ul=document.createElement("ul");ul.className="block crate";for(const crate of window.ALL_CRATES){const link=document.createElement("a");link.href=window.rootPath+crate+"/index.html";if(window.rootPath!=="./"&&crate===window.currentCrate){link.className="current"}link.textContent=crate;const li=document.createElement("li");li.appendChild(link);ul.appendChild(li)}sidebarElems.appendChild(h3);sidebarElems.appendChild(ul)}function expandAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);removeClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hasClass(e,"type-contents-toggle")&&!hasClass(e,"more-examples-toggle")){e.open=true}});innerToggle.title="collapse all docs";innerToggle.children[0].innerText="\u2212"}function collapseAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);addClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(e.parentNode.id!=="implementations-list"||(!hasClass(e,"implementors-toggle")&&!hasClass(e,"type-contents-toggle"))){e.open=false}});innerToggle.title="expand all docs";innerToggle.children[0].innerText="+"}function toggleAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);if(!innerToggle){return}if(hasClass(innerToggle,"will-expand")){expandAllDocs()}else{collapseAllDocs()}}(function(){const toggles=document.getElementById(toggleAllDocsId);if(toggles){toggles.onclick=toggleAllDocs}const hideMethodDocs=getSettingValue("auto-hide-method-docs")==="true";const hideImplementations=getSettingValue("auto-hide-trait-implementations")==="true";const hideLargeItemContents=getSettingValue("auto-hide-large-items")!=="false";function setImplementorsTogglesOpen(id,open){const list=document.getElementById(id);if(list!==null){onEachLazy(list.getElementsByClassName("implementors-toggle"),e=>{e.open=open})}}if(hideImplementations){setImplementorsTogglesOpen("trait-implementations-list",false);setImplementorsTogglesOpen("blanket-implementations-list",false)}onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hideLargeItemContents&&hasClass(e,"type-contents-toggle")){e.open=true}if(hideMethodDocs&&hasClass(e,"method-toggle")){e.open=false}})}());window.rustdoc_add_line_numbers_to_examples=()=>{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");if(line_numbers.length>0){return}const count=x.textContent.split("\n").length;const elems=[];for(let i=0;i{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");for(const node of line_numbers){parent.removeChild(node)}})};if(getSettingValue("line-numbers")==="true"){window.rustdoc_add_line_numbers_to_examples()}function showSidebar(){window.hideAllModals(false);const sidebar=document.getElementsByClassName("sidebar")[0];addClass(sidebar,"shown")}function hideSidebar(){const sidebar=document.getElementsByClassName("sidebar")[0];removeClass(sidebar,"shown")}window.addEventListener("resize",()=>{if(window.CURRENT_TOOLTIP_ELEMENT){const base=window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE;const force_visible=base.TOOLTIP_FORCE_VISIBLE;hideTooltip(false);if(force_visible){showTooltip(base);base.TOOLTIP_FORCE_VISIBLE=true}}});const mainElem=document.getElementById(MAIN_ID);if(mainElem){mainElem.addEventListener("click",hideSidebar)}onEachLazy(document.querySelectorAll("a[href^='#']"),el=>{el.addEventListener("click",()=>{expandSection(el.hash.slice(1));hideSidebar()})});onEachLazy(document.querySelectorAll(".toggle > summary:not(.hideme)"),el=>{el.addEventListener("click",e=>{if(e.target.tagName!=="SUMMARY"&&e.target.tagName!=="A"){e.preventDefault()}})});function showTooltip(e){const notable_ty=e.getAttribute("data-notable-ty");if(!window.NOTABLE_TRAITS&¬able_ty){const data=document.getElementById("notable-traits-data");if(data){window.NOTABLE_TRAITS=JSON.parse(data.innerText)}else{throw new Error("showTooltip() called with notable without any notable traits!")}}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE===e){clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);return}window.hideAllModals(false);const wrapper=document.createElement("div");if(notable_ty){wrapper.innerHTML="
    "+window.NOTABLE_TRAITS[notable_ty]+"
    "}else{if(e.getAttribute("title")!==null){e.setAttribute("data-title",e.getAttribute("title"));e.removeAttribute("title")}if(e.getAttribute("data-title")!==null){const titleContent=document.createElement("div");titleContent.className="content";titleContent.appendChild(document.createTextNode(e.getAttribute("data-title")));wrapper.appendChild(titleContent)}}wrapper.className="tooltip popover";const focusCatcher=document.createElement("div");focusCatcher.setAttribute("tabindex","0");focusCatcher.onfocus=hideTooltip;wrapper.appendChild(focusCatcher);const pos=e.getBoundingClientRect();wrapper.style.top=(pos.top+window.scrollY+pos.height)+"px";wrapper.style.left=0;wrapper.style.right="auto";wrapper.style.visibility="hidden";const body=document.getElementsByTagName("body")[0];body.appendChild(wrapper);const wrapperPos=wrapper.getBoundingClientRect();const finalPos=pos.left+window.scrollX-wrapperPos.width+24;if(finalPos>0){wrapper.style.left=finalPos+"px"}else{wrapper.style.setProperty("--popover-arrow-offset",(wrapperPos.right-pos.right+4)+"px")}wrapper.style.visibility="";window.CURRENT_TOOLTIP_ELEMENT=wrapper;window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE=e;clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);wrapper.onpointerenter=ev=>{if(ev.pointerType!=="mouse"){return}clearTooltipHoverTimeout(e)};wrapper.onpointerleave=ev=>{if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&!elemIsInParent(ev.relatedTarget,e)){setTooltipHoverTimeout(e,false);addClass(wrapper,"fade-out")}}}function setTooltipHoverTimeout(element,show){clearTooltipHoverTimeout(element);if(!show&&!window.CURRENT_TOOLTIP_ELEMENT){return}if(show&&window.CURRENT_TOOLTIP_ELEMENT){return}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE!==element){return}element.TOOLTIP_HOVER_TIMEOUT=setTimeout(()=>{if(show){showTooltip(element)}else if(!element.TOOLTIP_FORCE_VISIBLE){hideTooltip(false)}},show?window.RUSTDOC_TOOLTIP_HOVER_MS:window.RUSTDOC_TOOLTIP_HOVER_EXIT_MS)}function clearTooltipHoverTimeout(element){if(element.TOOLTIP_HOVER_TIMEOUT!==undefined){removeClass(window.CURRENT_TOOLTIP_ELEMENT,"fade-out");clearTimeout(element.TOOLTIP_HOVER_TIMEOUT);delete element.TOOLTIP_HOVER_TIMEOUT}}function tooltipBlurHandler(event){if(window.CURRENT_TOOLTIP_ELEMENT&&!elemIsInParent(document.activeElement,window.CURRENT_TOOLTIP_ELEMENT)&&!elemIsInParent(event.relatedTarget,window.CURRENT_TOOLTIP_ELEMENT)&&!elemIsInParent(document.activeElement,window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE)&&!elemIsInParent(event.relatedTarget,window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE)){setTimeout(()=>hideTooltip(false),0)}}function hideTooltip(focus){if(window.CURRENT_TOOLTIP_ELEMENT){if(window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE){if(focus){window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.focus()}window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE=false}const body=document.getElementsByTagName("body")[0];body.removeChild(window.CURRENT_TOOLTIP_ELEMENT);clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);window.CURRENT_TOOLTIP_ELEMENT=null}}onEachLazy(document.getElementsByClassName("tooltip"),e=>{e.onclick=()=>{e.TOOLTIP_FORCE_VISIBLE=e.TOOLTIP_FORCE_VISIBLE?false:true;if(window.CURRENT_TOOLTIP_ELEMENT&&!e.TOOLTIP_FORCE_VISIBLE){hideTooltip(true)}else{showTooltip(e);window.CURRENT_TOOLTIP_ELEMENT.setAttribute("tabindex","0");window.CURRENT_TOOLTIP_ELEMENT.focus();window.CURRENT_TOOLTIP_ELEMENT.onblur=tooltipBlurHandler}return false};e.onpointerenter=ev=>{if(ev.pointerType!=="mouse"){return}setTooltipHoverTimeout(e,true)};e.onpointermove=ev=>{if(ev.pointerType!=="mouse"){return}setTooltipHoverTimeout(e,true)};e.onpointerleave=ev=>{if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&!elemIsInParent(ev.relatedTarget,window.CURRENT_TOOLTIP_ELEMENT)){setTooltipHoverTimeout(e,false);addClass(window.CURRENT_TOOLTIP_ELEMENT,"fade-out")}}});const sidebar_menu_toggle=document.getElementsByClassName("sidebar-menu-toggle")[0];if(sidebar_menu_toggle){sidebar_menu_toggle.addEventListener("click",()=>{const sidebar=document.getElementsByClassName("sidebar")[0];if(!hasClass(sidebar,"shown")){showSidebar()}else{hideSidebar()}})}function helpBlurHandler(event){blurHandler(event,getHelpButton(),window.hidePopoverMenus)}function buildHelpMenu(){const book_info=document.createElement("span");const channel=getVar("channel");book_info.className="top";book_info.innerHTML=`You can find more information in \ -the rustdoc book.`;const shortcuts=[["?","Show this help dialog"],["S","Focus the search field"],["↑","Move up in search results"],["↓","Move down in search results"],["← / →","Switch result tab (when results focused)"],["⏎","Go to active search result"],["+","Expand all sections"],["-","Collapse all sections"],].map(x=>"
    "+x[0].split(" ").map((y,index)=>((index&1)===0?""+y+"":" "+y+" ")).join("")+"
    "+x[1]+"
    ").join("");const div_shortcuts=document.createElement("div");addClass(div_shortcuts,"shortcuts");div_shortcuts.innerHTML="

    Keyboard Shortcuts

    "+shortcuts+"
    ";const infos=[`For a full list of all search features, take a look here.`,"Prefix searches with a type followed by a colon (e.g., fn:) to \ - restrict the search to a given item kind.","Accepted kinds are: fn, mod, struct, \ - enum, trait, type, macro, \ - and const.","Search functions by type signature (e.g., vec -> usize or \ - -> vec or String, enum:Cow -> bool)","You can look for items with an exact name by putting double quotes around \ - your request: \"string\"","Look for functions that accept or return \ - slices and \ - arrays by writing \ - square brackets (e.g., -> [u8] or [] -> Option)","Look for items inside another one by searching for a path: vec::Vec",].map(x=>"

    "+x+"

    ").join("");const div_infos=document.createElement("div");addClass(div_infos,"infos");div_infos.innerHTML="

    Search Tricks

    "+infos;const rustdoc_version=document.createElement("span");rustdoc_version.className="bottom";const rustdoc_version_code=document.createElement("code");rustdoc_version_code.innerText="rustdoc "+getVar("rustdoc-version");rustdoc_version.appendChild(rustdoc_version_code);const container=document.createElement("div");if(!isHelpPage){container.className="popover"}container.id="help";container.style.display="none";const side_by_side=document.createElement("div");side_by_side.className="side-by-side";side_by_side.appendChild(div_shortcuts);side_by_side.appendChild(div_infos);container.appendChild(book_info);container.appendChild(side_by_side);container.appendChild(rustdoc_version);if(isHelpPage){const help_section=document.createElement("section");help_section.appendChild(container);document.getElementById("main-content").appendChild(help_section);container.style.display="block"}else{const help_button=getHelpButton();help_button.appendChild(container);container.onblur=helpBlurHandler;help_button.onblur=helpBlurHandler;help_button.children[0].onblur=helpBlurHandler}return container}window.hideAllModals=switchFocus=>{hideSidebar();window.hidePopoverMenus();hideTooltip(switchFocus)};window.hidePopoverMenus=()=>{onEachLazy(document.querySelectorAll(".search-form .popover"),elem=>{elem.style.display="none"})};function getHelpMenu(buildNeeded){let menu=getHelpButton().querySelector(".popover");if(!menu&&buildNeeded){menu=buildHelpMenu()}return menu}function showHelp(){getHelpButton().querySelector("a").focus();const menu=getHelpMenu(true);if(menu.style.display==="none"){window.hideAllModals();menu.style.display=""}}if(isHelpPage){showHelp();document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault()})}else{document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault();const menu=getHelpMenu(true);const shouldShowHelp=menu.style.display==="none";if(shouldShowHelp){showHelp()}else{window.hidePopoverMenus()}})}setMobileTopbar();addSidebarItems();addSidebarCrates();onHashChange(null);window.addEventListener("hashchange",onHashChange);searchState.setup()}());(function(){let reset_button_timeout=null;const but=document.getElementById("copy-path");if(!but){return}but.onclick=()=>{const parent=but.parentElement;const path=[];onEach(parent.childNodes,child=>{if(child.tagName==="A"){path.push(child.textContent)}});const el=document.createElement("textarea");el.value=path.join("::");el.setAttribute("readonly","");el.style.position="absolute";el.style.left="-9999px";document.body.appendChild(el);el.select();document.execCommand("copy");document.body.removeChild(el);but.children[0].style.display="none";let tmp;if(but.childNodes.length<2){tmp=document.createTextNode("✓");but.appendChild(tmp)}else{onEachLazy(but.childNodes,e=>{if(e.nodeType===Node.TEXT_NODE){tmp=e;return true}});tmp.textContent="✓"}if(reset_button_timeout!==null){window.clearTimeout(reset_button_timeout)}function reset_button(){tmp.textContent="";reset_button_timeout=null;but.children[0].style.display=""}reset_button_timeout=window.setTimeout(reset_button,1000)}}()) \ No newline at end of file diff --git a/static.files/main-f070b9041d14864c.js b/static.files/main-f070b9041d14864c.js new file mode 100644 index 0000000..3d672cb --- /dev/null +++ b/static.files/main-f070b9041d14864c.js @@ -0,0 +1,11 @@ +"use strict";window.RUSTDOC_TOOLTIP_HOVER_MS=300;window.RUSTDOC_TOOLTIP_HOVER_EXIT_MS=450;function resourcePath(basename,extension){return getVar("root-path")+basename+getVar("resource-suffix")+extension}function hideMain(){addClass(document.getElementById(MAIN_ID),"hidden");const toggle=document.getElementById("toggle-all-docs");if(toggle){toggle.setAttribute("disabled","disabled")}}function showMain(){const main=document.getElementById(MAIN_ID);removeClass(main,"hidden");const mainHeading=main.querySelector(".main-heading");if(mainHeading&&searchState.rustdocToolbar){if(searchState.rustdocToolbar.parentElement){searchState.rustdocToolbar.parentElement.removeChild(searchState.rustdocToolbar)}mainHeading.appendChild(searchState.rustdocToolbar)}const toggle=document.getElementById("toggle-all-docs");if(toggle){toggle.removeAttribute("disabled")}}window.rootPath=getVar("root-path");window.currentCrate=getVar("current-crate");function setMobileTopbar(){const mobileTopbar=document.querySelector(".mobile-topbar");const locationTitle=document.querySelector(".sidebar h2.location");if(mobileTopbar){const mobileTitle=document.createElement("h2");mobileTitle.className="location";if(hasClass(document.querySelector(".rustdoc"),"crate")){mobileTitle.innerHTML=`Crate ${window.currentCrate}`}else if(locationTitle){mobileTitle.innerHTML=locationTitle.innerHTML}mobileTopbar.appendChild(mobileTitle)}}function getVirtualKey(ev){if("key"in ev&&typeof ev.key!=="undefined"){return ev.key}const c=ev.charCode||ev.keyCode;if(c===27){return"Escape"}return String.fromCharCode(c)}const MAIN_ID="main-content";const SETTINGS_BUTTON_ID="settings-menu";const ALTERNATIVE_DISPLAY_ID="alternative-display";const NOT_DISPLAYED_ID="not-displayed";const HELP_BUTTON_ID="help-button";function getSettingsButton(){return document.getElementById(SETTINGS_BUTTON_ID)}function getHelpButton(){return document.getElementById(HELP_BUTTON_ID)}function getNakedUrl(){return window.location.href.split("?")[0].split("#")[0]}function insertAfter(newNode,referenceNode){referenceNode.parentNode.insertBefore(newNode,referenceNode.nextSibling)}function getOrCreateSection(id,classes){let el=document.getElementById(id);if(!el){el=document.createElement("section");el.id=id;el.className=classes;insertAfter(el,document.getElementById(MAIN_ID))}return el}function getAlternativeDisplayElem(){return getOrCreateSection(ALTERNATIVE_DISPLAY_ID,"content hidden")}function getNotDisplayedElem(){return getOrCreateSection(NOT_DISPLAYED_ID,"hidden")}function switchDisplayedElement(elemToDisplay){const el=getAlternativeDisplayElem();if(el.children.length>0){getNotDisplayedElem().appendChild(el.firstElementChild)}if(elemToDisplay===null){addClass(el,"hidden");showMain();return}el.appendChild(elemToDisplay);hideMain();removeClass(el,"hidden");const mainHeading=elemToDisplay.querySelector(".main-heading");if(mainHeading&&searchState.rustdocToolbar){if(searchState.rustdocToolbar.parentElement){searchState.rustdocToolbar.parentElement.removeChild(searchState.rustdocToolbar)}mainHeading.appendChild(searchState.rustdocToolbar)}}function browserSupportsHistoryApi(){return window.history&&typeof window.history.pushState==="function"}function preLoadCss(cssUrl){const link=document.createElement("link");link.href=cssUrl;link.rel="preload";link.as="style";document.getElementsByTagName("head")[0].appendChild(link)}(function(){const isHelpPage=window.location.pathname.endsWith("/help.html");function loadScript(url,errorCallback){const script=document.createElement("script");script.src=url;if(errorCallback!==undefined){script.onerror=errorCallback}document.head.append(script)}if(getSettingsButton()){getSettingsButton().onclick=event=>{if(event.ctrlKey||event.altKey||event.metaKey){return}window.hideAllModals(false);addClass(getSettingsButton(),"rotate");event.preventDefault();loadScript(getVar("static-root-path")+getVar("settings-js"));setTimeout(()=>{const themes=getVar("themes").split(",");for(const theme of themes){if(theme!==""){preLoadCss(getVar("root-path")+theme+".css")}}},0)}}window.searchState={rustdocToolbar:document.querySelector("rustdoc-toolbar"),loadingText:"Loading search results...",input:document.getElementsByClassName("search-input")[0],outputElement:()=>{let el=document.getElementById("search");if(!el){el=document.createElement("section");el.id="search";getNotDisplayedElem().appendChild(el)}return el},title:document.title,titleBeforeSearch:document.title,timeout:null,currentTab:0,focusedByTab:[null,null,null],clearInputTimeout:()=>{if(searchState.timeout!==null){clearTimeout(searchState.timeout);searchState.timeout=null}},isDisplayed:()=>searchState.outputElement().parentElement.id===ALTERNATIVE_DISPLAY_ID,focus:()=>{searchState.input.focus()},defocus:()=>{searchState.input.blur()},showResults:search=>{if(search===null||typeof search==="undefined"){search=searchState.outputElement()}switchDisplayedElement(search);searchState.mouseMovedAfterSearch=false;document.title=searchState.title},removeQueryParameters:()=>{document.title=searchState.titleBeforeSearch;if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.hash)}},hideResults:()=>{switchDisplayedElement(null);searchState.removeQueryParameters()},getQueryStringParams:()=>{const params={};window.location.search.substring(1).split("&").map(s=>{const pair=s.split("=").map(x=>x.replace(/\+/g," "));params[decodeURIComponent(pair[0])]=typeof pair[1]==="undefined"?null:decodeURIComponent(pair[1])});return params},setup:()=>{const search_input=searchState.input;if(!searchState.input){return}let searchLoaded=false;function sendSearchForm(){document.getElementsByClassName("search-form")[0].submit()}function loadSearch(){if(!searchLoaded){searchLoaded=true;loadScript(getVar("static-root-path")+getVar("search-js"),sendSearchForm);loadScript(resourcePath("search-index",".js"),sendSearchForm)}}search_input.addEventListener("focus",()=>{search_input.origPlaceholder=search_input.placeholder;search_input.placeholder="Type your search here.";loadSearch()});if(search_input.value!==""){loadSearch()}const params=searchState.getQueryStringParams();if(params.search!==undefined){searchState.setLoadingSearch();loadSearch()}},setLoadingSearch:()=>{const search=searchState.outputElement();search.innerHTML="

    "+searchState.loadingText+"

    ";searchState.showResults(search)},descShards:new Map(),loadDesc:async function({descShard,descIndex}){if(descShard.promise===null){descShard.promise=new Promise((resolve,reject)=>{descShard.resolve=resolve;const ds=descShard;const fname=`${ds.crate}-desc-${ds.shard}-`;const url=resourcePath(`search.desc/${descShard.crate}/${fname}`,".js",);loadScript(url,reject)})}const list=await descShard.promise;return list[descIndex]},loadedDescShard:function(crate,shard,data){this.descShards.get(crate)[shard].resolve(data.split("\n"))},};const toggleAllDocsId="toggle-all-docs";let savedHash="";function handleHashes(ev){if(ev!==null&&searchState.isDisplayed()&&ev.newURL){switchDisplayedElement(null);const hash=ev.newURL.slice(ev.newURL.indexOf("#")+1);if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.search+"#"+hash)}const elem=document.getElementById(hash);if(elem){elem.scrollIntoView()}}const pageId=window.location.hash.replace(/^#/,"");if(savedHash!==pageId){savedHash=pageId;if(pageId!==""){expandSection(pageId)}}if(savedHash.startsWith("impl-")){const splitAt=savedHash.indexOf("/");if(splitAt!==-1){const implId=savedHash.slice(0,splitAt);const assocId=savedHash.slice(splitAt+1);const implElems=document.querySelectorAll(`details > summary > section[id^="${implId}"]`,);onEachLazy(implElems,implElem=>{const numbered=/^(.+?)-([0-9]+)$/.exec(implElem.id);if(implElem.id!==implId&&(!numbered||numbered[1]!==implId)){return false}return onEachLazy(implElem.parentElement.parentElement.querySelectorAll(`[id^="${assocId}"]`),item=>{const numbered=/^(.+?)-([0-9]+)$/.exec(item.id);if(item.id===assocId||(numbered&&numbered[1]===assocId)){openParentDetails(item);item.scrollIntoView();setTimeout(()=>{window.location.replace("#"+item.id)},0);return true}},)})}}}function onHashChange(ev){hideSidebar();handleHashes(ev)}function openParentDetails(elem){while(elem){if(elem.tagName==="DETAILS"){elem.open=true}elem=elem.parentNode}}function expandSection(id){openParentDetails(document.getElementById(id))}function handleEscape(ev){searchState.clearInputTimeout();searchState.hideResults();ev.preventDefault();searchState.defocus();window.hideAllModals(true)}function handleShortcut(ev){const disableShortcuts=getSettingValue("disable-shortcuts")==="true";if(ev.ctrlKey||ev.altKey||ev.metaKey||disableShortcuts){return}if(document.activeElement.tagName==="INPUT"&&document.activeElement.type!=="checkbox"&&document.activeElement.type!=="radio"){switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break}}else{switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break;case"s":case"S":case"/":ev.preventDefault();searchState.focus();break;case"+":ev.preventDefault();expandAllDocs();break;case"-":ev.preventDefault();collapseAllDocs();break;case"?":showHelp();break;default:break}}}document.addEventListener("keypress",handleShortcut);document.addEventListener("keydown",handleShortcut);function addSidebarItems(){if(!window.SIDEBAR_ITEMS){return}const sidebar=document.getElementById("rustdoc-modnav");function block(shortty,id,longty){const filtered=window.SIDEBAR_ITEMS[shortty];if(!filtered){return}const modpath=hasClass(document.querySelector(".rustdoc"),"mod")?"../":"";const h3=document.createElement("h3");h3.innerHTML=`${longty}`;const ul=document.createElement("ul");ul.className="block "+shortty;for(const name of filtered){let path;if(shortty==="mod"){path=`${modpath}${name}/index.html`}else{path=`${modpath}${shortty}.${name}.html`}let current_page=document.location.href.toString();if(current_page.endsWith("/")){current_page+="index.html"}const link=document.createElement("a");link.href=path;link.textContent=name;const li=document.createElement("li");if(link.href===current_page){li.classList.add("current")}li.appendChild(link);ul.appendChild(li)}sidebar.appendChild(h3);sidebar.appendChild(ul)}if(sidebar){block("primitive","primitives","Primitive Types");block("mod","modules","Modules");block("macro","macros","Macros");block("struct","structs","Structs");block("enum","enums","Enums");block("constant","constants","Constants");block("static","static","Statics");block("trait","traits","Traits");block("fn","functions","Functions");block("type","types","Type Aliases");block("union","unions","Unions");block("foreigntype","foreign-types","Foreign Types");block("keyword","keywords","Keywords");block("attr","attributes","Attribute Macros");block("derive","derives","Derive Macros");block("traitalias","trait-aliases","Trait Aliases")}}window.register_implementors=imp=>{const implementors=document.getElementById("implementors-list");const synthetic_implementors=document.getElementById("synthetic-implementors-list");const inlined_types=new Set();const TEXT_IDX=0;const SYNTHETIC_IDX=1;const TYPES_IDX=2;if(synthetic_implementors){onEachLazy(synthetic_implementors.getElementsByClassName("impl"),el=>{const aliases=el.getAttribute("data-aliases");if(!aliases){return}aliases.split(",").forEach(alias=>{inlined_types.add(alias)})})}let currentNbImpls=implementors.getElementsByClassName("impl").length;const traitName=document.querySelector(".main-heading h1 > .trait").textContent;const baseIdName="impl-"+traitName+"-";const libs=Object.getOwnPropertyNames(imp);const script=document.querySelector("script[data-ignore-extern-crates]");const ignoreExternCrates=new Set((script?script.getAttribute("data-ignore-extern-crates"):"").split(","),);for(const lib of libs){if(lib===window.currentCrate||ignoreExternCrates.has(lib)){continue}const structs=imp[lib];struct_loop:for(const struct of structs){const list=struct[SYNTHETIC_IDX]?synthetic_implementors:implementors;if(struct[SYNTHETIC_IDX]){for(const struct_type of struct[TYPES_IDX]){if(inlined_types.has(struct_type)){continue struct_loop}inlined_types.add(struct_type)}}const code=document.createElement("h3");code.innerHTML=struct[TEXT_IDX];addClass(code,"code-header");onEachLazy(code.getElementsByTagName("a"),elem=>{const href=elem.getAttribute("href");if(href&&!href.startsWith("#")&&!/^(?:[a-z+]+:)?\/\//.test(href)){elem.setAttribute("href",window.rootPath+href)}});const currentId=baseIdName+currentNbImpls;const anchor=document.createElement("a");anchor.href="#"+currentId;addClass(anchor,"anchor");const display=document.createElement("div");display.id=currentId;addClass(display,"impl");display.appendChild(anchor);display.appendChild(code);list.appendChild(display);currentNbImpls+=1}}};if(window.pending_implementors){window.register_implementors(window.pending_implementors)}window.register_type_impls=imp=>{if(!imp||!imp[window.currentCrate]){return}window.pending_type_impls=null;const idMap=new Map();let implementations=document.getElementById("implementations-list");let trait_implementations=document.getElementById("trait-implementations-list");let trait_implementations_header=document.getElementById("trait-implementations");const script=document.querySelector("script[data-self-path]");const selfPath=script?script.getAttribute("data-self-path"):null;const mainContent=document.querySelector("#main-content");const sidebarSection=document.querySelector(".sidebar section");let methods=document.querySelector(".sidebar .block.method");let associatedTypes=document.querySelector(".sidebar .block.associatedtype");let associatedConstants=document.querySelector(".sidebar .block.associatedconstant");let sidebarTraitList=document.querySelector(".sidebar .block.trait-implementation");for(const impList of imp[window.currentCrate]){const types=impList.slice(2);const text=impList[0];const isTrait=impList[1]!==0;const traitName=impList[1];if(types.indexOf(selfPath)===-1){continue}let outputList=isTrait?trait_implementations:implementations;if(outputList===null){const outputListName=isTrait?"Trait Implementations":"Implementations";const outputListId=isTrait?"trait-implementations-list":"implementations-list";const outputListHeaderId=isTrait?"trait-implementations":"implementations";const outputListHeader=document.createElement("h2");outputListHeader.id=outputListHeaderId;outputListHeader.innerText=outputListName;outputList=document.createElement("div");outputList.id=outputListId;if(isTrait){const link=document.createElement("a");link.href=`#${outputListHeaderId}`;link.innerText="Trait Implementations";const h=document.createElement("h3");h.appendChild(link);trait_implementations=outputList;trait_implementations_header=outputListHeader;sidebarSection.appendChild(h);sidebarTraitList=document.createElement("ul");sidebarTraitList.className="block trait-implementation";sidebarSection.appendChild(sidebarTraitList);mainContent.appendChild(outputListHeader);mainContent.appendChild(outputList)}else{implementations=outputList;if(trait_implementations){mainContent.insertBefore(outputListHeader,trait_implementations_header);mainContent.insertBefore(outputList,trait_implementations_header)}else{const mainContent=document.querySelector("#main-content");mainContent.appendChild(outputListHeader);mainContent.appendChild(outputList)}}}const template=document.createElement("template");template.innerHTML=text;onEachLazy(template.content.querySelectorAll("a"),elem=>{const href=elem.getAttribute("href");if(href&&!href.startsWith("#")&&!/^(?:[a-z+]+:)?\/\//.test(href)){elem.setAttribute("href",window.rootPath+href)}});onEachLazy(template.content.querySelectorAll("[id]"),el=>{let i=0;if(idMap.has(el.id)){i=idMap.get(el.id)}else if(document.getElementById(el.id)){i=1;while(document.getElementById(`${el.id}-${2 * i}`)){i=2*i}while(document.getElementById(`${el.id}-${i}`)){i+=1}}if(i!==0){const oldHref=`#${el.id}`;const newHref=`#${el.id}-${i}`;el.id=`${el.id}-${i}`;onEachLazy(template.content.querySelectorAll("a[href]"),link=>{if(link.getAttribute("href")===oldHref){link.href=newHref}})}idMap.set(el.id,i+1)});const templateAssocItems=template.content.querySelectorAll("section.tymethod, "+"section.method, section.associatedtype, section.associatedconstant");if(isTrait){const li=document.createElement("li");const a=document.createElement("a");a.href=`#${template.content.querySelector(".impl").id}`;a.textContent=traitName;li.appendChild(a);sidebarTraitList.append(li)}else{onEachLazy(templateAssocItems,item=>{let block=hasClass(item,"associatedtype")?associatedTypes:(hasClass(item,"associatedconstant")?associatedConstants:(methods));if(!block){const blockTitle=hasClass(item,"associatedtype")?"Associated Types":(hasClass(item,"associatedconstant")?"Associated Constants":("Methods"));const blockClass=hasClass(item,"associatedtype")?"associatedtype":(hasClass(item,"associatedconstant")?"associatedconstant":("method"));const blockHeader=document.createElement("h3");const blockLink=document.createElement("a");blockLink.href="#implementations";blockLink.innerText=blockTitle;blockHeader.appendChild(blockLink);block=document.createElement("ul");block.className=`block ${blockClass}`;const insertionReference=methods||sidebarTraitList;if(insertionReference){const insertionReferenceH=insertionReference.previousElementSibling;sidebarSection.insertBefore(blockHeader,insertionReferenceH);sidebarSection.insertBefore(block,insertionReferenceH)}else{sidebarSection.appendChild(blockHeader);sidebarSection.appendChild(block)}if(hasClass(item,"associatedtype")){associatedTypes=block}else if(hasClass(item,"associatedconstant")){associatedConstants=block}else{methods=block}}const li=document.createElement("li");const a=document.createElement("a");a.innerText=item.id.split("-")[0].split(".")[1];a.href=`#${item.id}`;li.appendChild(a);block.appendChild(li)})}outputList.appendChild(template.content)}for(const list of[methods,associatedTypes,associatedConstants,sidebarTraitList]){if(!list){continue}const newChildren=Array.prototype.slice.call(list.children);newChildren.sort((a,b)=>{const aI=a.innerText;const bI=b.innerText;return aIbI?1:0});list.replaceChildren(...newChildren)}};if(window.pending_type_impls){window.register_type_impls(window.pending_type_impls)}function addSidebarCrates(){if(!window.ALL_CRATES){return}const sidebarElems=document.getElementById("rustdoc-modnav");if(!sidebarElems){return}const h3=document.createElement("h3");h3.innerHTML="Crates";const ul=document.createElement("ul");ul.className="block crate";for(const crate of window.ALL_CRATES){const link=document.createElement("a");link.href=window.rootPath+crate+"/index.html";link.textContent=crate;const li=document.createElement("li");if(window.rootPath!=="./"&&crate===window.currentCrate){li.className="current"}li.appendChild(link);ul.appendChild(li)}sidebarElems.appendChild(h3);sidebarElems.appendChild(ul)}function expandAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);removeClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hasClass(e,"type-contents-toggle")&&!hasClass(e,"more-examples-toggle")){e.open=true}});innerToggle.children[0].innerText="Summary"}function collapseAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);addClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(e.parentNode.id!=="implementations-list"||(!hasClass(e,"implementors-toggle")&&!hasClass(e,"type-contents-toggle"))){e.open=false}});innerToggle.children[0].innerText="Show all"}function toggleAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);if(!innerToggle){return}if(hasClass(innerToggle,"will-expand")){expandAllDocs()}else{collapseAllDocs()}}(function(){const toggles=document.getElementById(toggleAllDocsId);if(toggles){toggles.onclick=toggleAllDocs}const hideMethodDocs=getSettingValue("auto-hide-method-docs")==="true";const hideImplementations=getSettingValue("auto-hide-trait-implementations")==="true";const hideLargeItemContents=getSettingValue("auto-hide-large-items")!=="false";function setImplementorsTogglesOpen(id,open){const list=document.getElementById(id);if(list!==null){onEachLazy(list.getElementsByClassName("implementors-toggle"),e=>{e.open=open})}}if(hideImplementations){setImplementorsTogglesOpen("trait-implementations-list",false);setImplementorsTogglesOpen("blanket-implementations-list",false)}onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hideLargeItemContents&&hasClass(e,"type-contents-toggle")){e.open=true}if(hideMethodDocs&&hasClass(e,"method-toggle")){e.open=false}})}());window.rustdoc_add_line_numbers_to_examples=()=>{if(document.querySelector(".rustdoc.src")){return}onEachLazy(document.querySelectorAll(":not(.scraped-example) > .example-wrap > pre:not(.example-line-numbers)",),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");if(line_numbers.length>0){return}const count=x.textContent.split("\n").length;const elems=[];for(let i=0;i{onEachLazy(document.querySelectorAll(".example-wrap > .example-line-numbers"),x=>{x.parentNode.removeChild(x)})};if(getSettingValue("line-numbers")==="true"){window.rustdoc_add_line_numbers_to_examples()}function showSidebar(){window.hideAllModals(false);const sidebar=document.getElementsByClassName("sidebar")[0];addClass(sidebar,"shown")}function hideSidebar(){const sidebar=document.getElementsByClassName("sidebar")[0];removeClass(sidebar,"shown")}window.addEventListener("resize",()=>{if(window.CURRENT_TOOLTIP_ELEMENT){const base=window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE;const force_visible=base.TOOLTIP_FORCE_VISIBLE;hideTooltip(false);if(force_visible){showTooltip(base);base.TOOLTIP_FORCE_VISIBLE=true}}});const mainElem=document.getElementById(MAIN_ID);if(mainElem){mainElem.addEventListener("click",hideSidebar)}onEachLazy(document.querySelectorAll("a[href^='#']"),el=>{el.addEventListener("click",()=>{expandSection(el.hash.slice(1));hideSidebar()})});onEachLazy(document.querySelectorAll(".toggle > summary:not(.hideme)"),el=>{el.addEventListener("click",e=>{if(e.target.tagName!=="SUMMARY"&&e.target.tagName!=="A"){e.preventDefault()}})});function showTooltip(e){const notable_ty=e.getAttribute("data-notable-ty");if(!window.NOTABLE_TRAITS&¬able_ty){const data=document.getElementById("notable-traits-data");if(data){window.NOTABLE_TRAITS=JSON.parse(data.innerText)}else{throw new Error("showTooltip() called with notable without any notable traits!")}}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE===e){clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);return}window.hideAllModals(false);const wrapper=document.createElement("div");if(notable_ty){wrapper.innerHTML="
    "+window.NOTABLE_TRAITS[notable_ty]+"
    "}else{if(e.getAttribute("title")!==null){e.setAttribute("data-title",e.getAttribute("title"));e.removeAttribute("title")}if(e.getAttribute("data-title")!==null){const titleContent=document.createElement("div");titleContent.className="content";titleContent.appendChild(document.createTextNode(e.getAttribute("data-title")));wrapper.appendChild(titleContent)}}wrapper.className="tooltip popover";const focusCatcher=document.createElement("div");focusCatcher.setAttribute("tabindex","0");focusCatcher.onfocus=hideTooltip;wrapper.appendChild(focusCatcher);const pos=e.getBoundingClientRect();wrapper.style.top=(pos.top+window.scrollY+pos.height)+"px";wrapper.style.left=0;wrapper.style.right="auto";wrapper.style.visibility="hidden";document.body.appendChild(wrapper);const wrapperPos=wrapper.getBoundingClientRect();const finalPos=pos.left+window.scrollX-wrapperPos.width+24;if(finalPos>0){wrapper.style.left=finalPos+"px"}else{wrapper.style.setProperty("--popover-arrow-offset",(wrapperPos.right-pos.right+4)+"px",)}wrapper.style.visibility="";window.CURRENT_TOOLTIP_ELEMENT=wrapper;window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE=e;clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);wrapper.onpointerenter=ev=>{if(ev.pointerType!=="mouse"){return}clearTooltipHoverTimeout(e)};wrapper.onpointerleave=ev=>{if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&!e.contains(ev.relatedTarget)){setTooltipHoverTimeout(e,false);addClass(wrapper,"fade-out")}}}function setTooltipHoverTimeout(element,show){clearTooltipHoverTimeout(element);if(!show&&!window.CURRENT_TOOLTIP_ELEMENT){return}if(show&&window.CURRENT_TOOLTIP_ELEMENT){return}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE!==element){return}element.TOOLTIP_HOVER_TIMEOUT=setTimeout(()=>{if(show){showTooltip(element)}else if(!element.TOOLTIP_FORCE_VISIBLE){hideTooltip(false)}},show?window.RUSTDOC_TOOLTIP_HOVER_MS:window.RUSTDOC_TOOLTIP_HOVER_EXIT_MS)}function clearTooltipHoverTimeout(element){if(element.TOOLTIP_HOVER_TIMEOUT!==undefined){removeClass(window.CURRENT_TOOLTIP_ELEMENT,"fade-out");clearTimeout(element.TOOLTIP_HOVER_TIMEOUT);delete element.TOOLTIP_HOVER_TIMEOUT}}function tooltipBlurHandler(event){if(window.CURRENT_TOOLTIP_ELEMENT&&!window.CURRENT_TOOLTIP_ELEMENT.contains(document.activeElement)&&!window.CURRENT_TOOLTIP_ELEMENT.contains(event.relatedTarget)&&!window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.contains(document.activeElement)&&!window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.contains(event.relatedTarget)){setTimeout(()=>hideTooltip(false),0)}}function hideTooltip(focus){if(window.CURRENT_TOOLTIP_ELEMENT){if(window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE){if(focus){window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.focus()}window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE=false}document.body.removeChild(window.CURRENT_TOOLTIP_ELEMENT);clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);window.CURRENT_TOOLTIP_ELEMENT=null}}onEachLazy(document.getElementsByClassName("tooltip"),e=>{e.onclick=()=>{e.TOOLTIP_FORCE_VISIBLE=e.TOOLTIP_FORCE_VISIBLE?false:true;if(window.CURRENT_TOOLTIP_ELEMENT&&!e.TOOLTIP_FORCE_VISIBLE){hideTooltip(true)}else{showTooltip(e);window.CURRENT_TOOLTIP_ELEMENT.setAttribute("tabindex","0");window.CURRENT_TOOLTIP_ELEMENT.focus();window.CURRENT_TOOLTIP_ELEMENT.onblur=tooltipBlurHandler}return false};e.onpointerenter=ev=>{if(ev.pointerType!=="mouse"){return}setTooltipHoverTimeout(e,true)};e.onpointermove=ev=>{if(ev.pointerType!=="mouse"){return}setTooltipHoverTimeout(e,true)};e.onpointerleave=ev=>{if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&window.CURRENT_TOOLTIP_ELEMENT&&!window.CURRENT_TOOLTIP_ELEMENT.contains(ev.relatedTarget)){setTooltipHoverTimeout(e,false);addClass(window.CURRENT_TOOLTIP_ELEMENT,"fade-out")}}});const sidebar_menu_toggle=document.getElementsByClassName("sidebar-menu-toggle")[0];if(sidebar_menu_toggle){sidebar_menu_toggle.addEventListener("click",()=>{const sidebar=document.getElementsByClassName("sidebar")[0];if(!hasClass(sidebar,"shown")){showSidebar()}else{hideSidebar()}})}function helpBlurHandler(event){if(!getHelpButton().contains(document.activeElement)&&!getHelpButton().contains(event.relatedTarget)&&!getSettingsButton().contains(document.activeElement)&&!getSettingsButton().contains(event.relatedTarget)){window.hidePopoverMenus()}}function buildHelpMenu(){const book_info=document.createElement("span");const channel=getVar("channel");book_info.className="top";book_info.innerHTML=`You can find more information in \ +the rustdoc book.`;const shortcuts=[["?","Show this help dialog"],["S / /","Focus the search field"],["↑","Move up in search results"],["↓","Move down in search results"],["← / →","Switch result tab (when results focused)"],["⏎","Go to active search result"],["+","Expand all sections"],["-","Collapse all sections"],].map(x=>"
    "+x[0].split(" ").map((y,index)=>((index&1)===0?""+y+"":" "+y+" ")).join("")+"
    "+x[1]+"
    ").join("");const div_shortcuts=document.createElement("div");addClass(div_shortcuts,"shortcuts");div_shortcuts.innerHTML="

    Keyboard Shortcuts

    "+shortcuts+"
    ";const infos=[`For a full list of all search features, take a look here.`,"Prefix searches with a type followed by a colon (e.g., fn:) to \ + restrict the search to a given item kind.","Accepted kinds are: fn, mod, struct, \ + enum, trait, type, macro, \ + and const.","Search functions by type signature (e.g., vec -> usize or \ + -> vec or String, enum:Cow -> bool)","You can look for items with an exact name by putting double quotes around \ + your request: \"string\"","Look for functions that accept or return \ + slices and \ + arrays by writing \ + square brackets (e.g., -> [u8] or [] -> Option)","Look for items inside another one by searching for a path: vec::Vec",].map(x=>"

    "+x+"

    ").join("");const div_infos=document.createElement("div");addClass(div_infos,"infos");div_infos.innerHTML="

    Search Tricks

    "+infos;const rustdoc_version=document.createElement("span");rustdoc_version.className="bottom";const rustdoc_version_code=document.createElement("code");rustdoc_version_code.innerText="rustdoc "+getVar("rustdoc-version");rustdoc_version.appendChild(rustdoc_version_code);const container=document.createElement("div");if(!isHelpPage){container.className="popover"}container.id="help";container.style.display="none";const side_by_side=document.createElement("div");side_by_side.className="side-by-side";side_by_side.appendChild(div_shortcuts);side_by_side.appendChild(div_infos);container.appendChild(book_info);container.appendChild(side_by_side);container.appendChild(rustdoc_version);if(isHelpPage){const help_section=document.createElement("section");help_section.appendChild(container);document.getElementById("main-content").appendChild(help_section);container.style.display="block"}else{const help_button=getHelpButton();help_button.appendChild(container);container.onblur=helpBlurHandler;help_button.onblur=helpBlurHandler;help_button.children[0].onblur=helpBlurHandler}return container}window.hideAllModals=switchFocus=>{hideSidebar();window.hidePopoverMenus();hideTooltip(switchFocus)};window.hidePopoverMenus=()=>{onEachLazy(document.querySelectorAll("rustdoc-toolbar .popover"),elem=>{elem.style.display="none"});const button=getHelpButton();if(button){removeClass(button,"help-open")}};function getHelpMenu(buildNeeded){let menu=getHelpButton().querySelector(".popover");if(!menu&&buildNeeded){menu=buildHelpMenu()}return menu}function showHelp(){const button=getHelpButton();addClass(button,"help-open");button.querySelector("a").focus();const menu=getHelpMenu(true);if(menu.style.display==="none"){window.hideAllModals();menu.style.display=""}}const helpLink=document.querySelector(`#${HELP_BUTTON_ID} > a`);if(isHelpPage){buildHelpMenu()}else if(helpLink){helpLink.addEventListener("click",event=>{if(!helpLink.contains(helpLink)||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault();const menu=getHelpMenu(true);const shouldShowHelp=menu.style.display==="none";if(shouldShowHelp){showHelp()}else{window.hidePopoverMenus()}})}setMobileTopbar();addSidebarItems();addSidebarCrates();onHashChange(null);window.addEventListener("hashchange",onHashChange);searchState.setup()}());(function(){const SIDEBAR_MIN=100;const SIDEBAR_MAX=500;const RUSTDOC_MOBILE_BREAKPOINT=700;const BODY_MIN=400;const SIDEBAR_VANISH_THRESHOLD=SIDEBAR_MIN/2;const sidebarButton=document.getElementById("sidebar-button");if(sidebarButton){sidebarButton.addEventListener("click",e=>{removeClass(document.documentElement,"hide-sidebar");updateLocalStorage("hide-sidebar","false");if(document.querySelector(".rustdoc.src")){window.rustdocToggleSrcSidebar()}e.preventDefault()})}let currentPointerId=null;let desiredSidebarSize=null;let pendingSidebarResizingFrame=false;const resizer=document.querySelector(".sidebar-resizer");const sidebar=document.querySelector(".sidebar");if(!resizer||!sidebar){return}const isSrcPage=hasClass(document.body,"src");function hideSidebar(){if(isSrcPage){window.rustdocCloseSourceSidebar();updateLocalStorage("src-sidebar-width",null);document.documentElement.style.removeProperty("--src-sidebar-width");sidebar.style.removeProperty("--src-sidebar-width");resizer.style.removeProperty("--src-sidebar-width")}else{addClass(document.documentElement,"hide-sidebar");updateLocalStorage("hide-sidebar","true");updateLocalStorage("desktop-sidebar-width",null);document.documentElement.style.removeProperty("--desktop-sidebar-width");sidebar.style.removeProperty("--desktop-sidebar-width");resizer.style.removeProperty("--desktop-sidebar-width")}}function showSidebar(){if(isSrcPage){window.rustdocShowSourceSidebar()}else{removeClass(document.documentElement,"hide-sidebar");updateLocalStorage("hide-sidebar","false")}}function changeSidebarSize(size){if(isSrcPage){updateLocalStorage("src-sidebar-width",size);sidebar.style.setProperty("--src-sidebar-width",size+"px");resizer.style.setProperty("--src-sidebar-width",size+"px")}else{updateLocalStorage("desktop-sidebar-width",size);sidebar.style.setProperty("--desktop-sidebar-width",size+"px");resizer.style.setProperty("--desktop-sidebar-width",size+"px")}}function isSidebarHidden(){return isSrcPage?!hasClass(document.documentElement,"src-sidebar-expanded"):hasClass(document.documentElement,"hide-sidebar")}function resize(e){if(currentPointerId===null||currentPointerId!==e.pointerId){return}e.preventDefault();const pos=e.clientX-3;if(pos=SIDEBAR_MIN){if(isSidebarHidden()){showSidebar()}const constrainedPos=Math.min(pos,window.innerWidth-BODY_MIN,SIDEBAR_MAX);changeSidebarSize(constrainedPos);desiredSidebarSize=constrainedPos;if(pendingSidebarResizingFrame!==false){clearTimeout(pendingSidebarResizingFrame)}pendingSidebarResizingFrame=setTimeout(()=>{if(currentPointerId===null||pendingSidebarResizingFrame===false){return}pendingSidebarResizingFrame=false;document.documentElement.style.setProperty("--resizing-sidebar-width",desiredSidebarSize+"px",)},100)}}window.addEventListener("resize",()=>{if(window.innerWidth=(window.innerWidth-BODY_MIN)){changeSidebarSize(window.innerWidth-BODY_MIN)}else if(desiredSidebarSize!==null&&desiredSidebarSize>SIDEBAR_MIN){changeSidebarSize(desiredSidebarSize)}});function stopResize(e){if(currentPointerId===null){return}if(e){e.preventDefault()}desiredSidebarSize=sidebar.getBoundingClientRect().width;removeClass(resizer,"active");window.removeEventListener("pointermove",resize,false);window.removeEventListener("pointerup",stopResize,false);removeClass(document.documentElement,"sidebar-resizing");document.documentElement.style.removeProperty("--resizing-sidebar-width");if(resizer.releasePointerCapture){resizer.releasePointerCapture(currentPointerId);currentPointerId=null}}function initResize(e){if(currentPointerId!==null||e.altKey||e.ctrlKey||e.metaKey||e.button!==0){return}if(resizer.setPointerCapture){resizer.setPointerCapture(e.pointerId);if(!resizer.hasPointerCapture(e.pointerId)){resizer.releasePointerCapture(e.pointerId);return}currentPointerId=e.pointerId}window.hideAllModals(false);e.preventDefault();window.addEventListener("pointermove",resize,false);window.addEventListener("pointercancel",stopResize,false);window.addEventListener("pointerup",stopResize,false);addClass(resizer,"active");addClass(document.documentElement,"sidebar-resizing");const pos=e.clientX-sidebar.offsetLeft-3;document.documentElement.style.setProperty("--resizing-sidebar-width",pos+"px");desiredSidebarSize=null}resizer.addEventListener("pointerdown",initResize,false)}());(function(){function copyContentToClipboard(content){const el=document.createElement("textarea");el.value=content;el.setAttribute("readonly","");el.style.position="absolute";el.style.left="-9999px";document.body.appendChild(el);el.select();document.execCommand("copy");document.body.removeChild(el)}function copyButtonAnimation(button){button.classList.add("clicked");if(button.reset_button_timeout!==undefined){window.clearTimeout(button.reset_button_timeout)}button.reset_button_timeout=window.setTimeout(()=>{button.reset_button_timeout=undefined;button.classList.remove("clicked")},1000)}const but=document.getElementById("copy-path");if(!but){return}but.onclick=()=>{const title=document.querySelector("title").textContent.replace(" - Rust","");const[item,module]=title.split(" in ");const path=[item];if(module!==undefined){path.unshift(module)}copyContentToClipboard(path.join("::"));copyButtonAnimation(but)};function copyCode(codeElem){if(!codeElem){return}copyContentToClipboard(codeElem.textContent)}function getExampleWrap(event){let elem=event.target;while(!hasClass(elem,"example-wrap")){if(elem===document.body||elem.tagName==="A"||elem.tagName==="BUTTON"||hasClass(elem,"docblock")){return null}elem=elem.parentElement}return elem}function addCopyButton(event){const elem=getExampleWrap(event);if(elem===null){return}elem.removeEventListener("mouseover",addCopyButton);const parent=document.createElement("div");parent.className="button-holder";const runButton=elem.querySelector(".test-arrow");if(runButton!==null){parent.appendChild(runButton)}elem.appendChild(parent);const copyButton=document.createElement("button");copyButton.className="copy-button";copyButton.title="Copy code to clipboard";copyButton.addEventListener("click",()=>{copyCode(elem.querySelector("pre > code"));copyButtonAnimation(copyButton)});parent.appendChild(copyButton);if(!elem.parentElement.classList.contains("scraped-example")){return}const scrapedWrapped=elem.parentElement;window.updateScrapedExample(scrapedWrapped,parent)}function showHideCodeExampleButtons(event){const elem=getExampleWrap(event);if(elem===null){return}let buttons=elem.querySelector(".button-holder");if(buttons===null){addCopyButton(event);buttons=elem.querySelector(".button-holder");if(buttons===null){return}}buttons.classList.toggle("keep-visible")}onEachLazy(document.querySelectorAll(".docblock .example-wrap"),elem=>{elem.addEventListener("mouseover",addCopyButton);elem.addEventListener("click",showHideCodeExampleButtons)})}()) \ No newline at end of file diff --git a/static.files/noscript-0111fcff984fae8f.css b/static.files/noscript-0111fcff984fae8f.css new file mode 100644 index 0000000..a6c18ec --- /dev/null +++ b/static.files/noscript-0111fcff984fae8f.css @@ -0,0 +1 @@ + #main-content .attributes{margin-left:0 !important;}#copy-path,#sidebar-button,.sidebar-resizer{display:none !important;}nav.sub{display:none;}.src .sidebar{display:none;}.notable-traits{display:none;}:root,:root:not([data-theme]){--main-background-color:white;--main-color:black;--settings-input-color:#2196f3;--settings-input-border-color:#717171;--settings-button-color:#000;--settings-button-border-focus:#717171;--sidebar-background-color:#f5f5f5;--sidebar-background-color-hover:#e0e0e0;--code-block-background-color:#f5f5f5;--scrollbar-track-background-color:#dcdcdc;--scrollbar-thumb-background-color:rgba(36,37,39,0.6);--scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;--headings-border-bottom-color:#ddd;--border-color:#e0e0e0;--button-background-color:#fff;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:none;--mobile-sidebar-menu-filter:none;--search-input-focused-border-color:#66afe9;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(35%);--code-example-button-color:#7f7f7f;--code-example-button-hover-color:#595959;--settings-menu-filter:invert(50%);--settings-menu-hover-filter:invert(35%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ad378a;--trait-link-color:#6e4fc9;--assoc-item-link-color:#3873ad;--function-link-color:#ad7c37;--macro-link-color:#068000;--keyword-link-color:#3873ad;--mod-link-color:#3873ad;--link-color:#3873ad;--sidebar-link-color:#356da4;--sidebar-current-link-background-color:#fff;--search-result-link-focus-background-color:#ccc;--search-result-border-color:#aaa3;--search-color:#000;--search-error-code-background-color:#d0cccc;--search-results-alias-color:#000;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#e6e6e6;--search-tab-button-not-selected-background:#e6e6e6;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#fff;--stab-background-color:#fff5d6;--stab-code-color:#000;--code-highlight-kw-color:#8959a8;--code-highlight-kw-2-color:#4271ae;--code-highlight-lifetime-color:#b76514;--code-highlight-prelude-color:#4271ae;--code-highlight-prelude-val-color:#c82829;--code-highlight-number-color:#718c00;--code-highlight-string-color:#718c00;--code-highlight-literal-color:#c82829;--code-highlight-attribute-color:#c82829;--code-highlight-self-color:#c82829;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8e908c;--code-highlight-doc-comment-color:#4d4d4c;--src-line-numbers-span-color:#c67e2d;--src-line-number-highlighted-background-color:#fdffd3;--target-background-color:#fdffd3;--target-border-color:#ad7c37;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:initial;--crate-search-div-filter:invert(100%) sepia(0%) saturate(4223%) hue-rotate(289deg) brightness(114%) contrast(76%);--crate-search-div-hover-filter:invert(44%) sepia(18%) saturate(23%) hue-rotate(317deg) brightness(96%) contrast(93%);--crate-search-hover-border:#717171;--src-sidebar-background-selected:#fff;--src-sidebar-background-hover:#e0e0e0;--table-alt-row-background-color:#f5f5f5;--codeblock-link-background:#eee;--scrape-example-toggle-line-background:#ccc;--scrape-example-toggle-line-hover-background:#999;--scrape-example-code-line-highlight:#fcffd6;--scrape-example-code-line-highlight-focus:#f6fdb0;--scrape-example-help-border-color:#555;--scrape-example-help-color:#333;--scrape-example-help-hover-border-color:#000;--scrape-example-help-hover-color:#000;--scrape-example-code-wrapper-background-start:rgba(255,255,255,1);--scrape-example-code-wrapper-background-end:rgba(255,255,255,0);--sidebar-resizer-hover:hsl(207,90%,66%);--sidebar-resizer-active:hsl(207,90%,54%);}@media (prefers-color-scheme:dark){:root,:root:not([data-theme]){--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--settings-input-border-color:#999;--settings-button-color:#000;--settings-button-border-focus:#ffb900;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--mobile-sidebar-menu-filter:invert(100%);--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--code-example-button-color:#7f7f7f;--code-example-button-hover-color:#a5a5a5;--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--search-result-border-color:#aaa3;--search-color:#111;--search-error-code-background-color:#484848;--search-results-alias-color:#fff;--search-results-grey-color:#ccc;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#252525;--search-tab-button-not-selected-background:#252525;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#353535;--settings-menu-filter:invert(50%);--settings-menu-hover-filter:invert(65%);--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;--target-background-color:#494a3d;--target-border-color:#bb7410;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);--crate-search-div-hover-filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);--crate-search-hover-border:#2196f3;--src-sidebar-background-selected:#333;--src-sidebar-background-hover:#444;--table-alt-row-background-color:#2a2a2a;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(53,53,53,1);--scrape-example-code-wrapper-background-end:rgba(53,53,53,0);--sidebar-resizer-hover:hsl(207,30%,54%);--sidebar-resizer-active:hsl(207,90%,54%);}} \ No newline at end of file diff --git a/static.files/noscript-5d8b3c7633ad77ba.css b/static.files/noscript-5d8b3c7633ad77ba.css deleted file mode 100644 index 8c63ef0..0000000 --- a/static.files/noscript-5d8b3c7633ad77ba.css +++ /dev/null @@ -1 +0,0 @@ - #main-content .attributes{margin-left:0 !important;}#copy-path{display:none;}nav.sub{display:none;}.src .sidebar{display:none;}.notable-traits{display:none;}:root{--main-background-color:white;--main-color:black;--settings-input-color:#2196f3;--settings-input-border-color:#717171;--settings-button-color:#000;--settings-button-border-focus:#717171;--sidebar-background-color:#f5f5f5;--sidebar-background-color-hover:#e0e0e0;--code-block-background-color:#f5f5f5;--scrollbar-track-background-color:#dcdcdc;--scrollbar-thumb-background-color:rgba(36,37,39,0.6);--scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;--headings-border-bottom-color:#ddd;--border-color:#e0e0e0;--button-background-color:#fff;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:none;--search-input-focused-border-color:#66afe9;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(35%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ad378a;--trait-link-color:#6e4fc9;--assoc-item-link-color:#3873ad;--function-link-color:#ad7c37;--macro-link-color:#068000;--keyword-link-color:#3873ad;--mod-link-color:#3873ad;--link-color:#3873ad;--sidebar-link-color:#356da4;--sidebar-current-link-background-color:#fff;--search-result-link-focus-background-color:#ccc;--search-result-border-color:#aaa3;--search-color:#000;--search-error-code-background-color:#d0cccc;--search-results-alias-color:#000;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#e6e6e6;--search-tab-button-not-selected-background:#e6e6e6;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#fff;--stab-background-color:#fff5d6;--stab-code-color:#000;--code-highlight-kw-color:#8959a8;--code-highlight-kw-2-color:#4271ae;--code-highlight-lifetime-color:#b76514;--code-highlight-prelude-color:#4271ae;--code-highlight-prelude-val-color:#c82829;--code-highlight-number-color:#718c00;--code-highlight-string-color:#718c00;--code-highlight-literal-color:#c82829;--code-highlight-attribute-color:#c82829;--code-highlight-self-color:#c82829;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8e908c;--code-highlight-doc-comment-color:#4d4d4c;--src-line-numbers-span-color:#c67e2d;--src-line-number-highlighted-background-color:#fdffd3;--test-arrow-color:#f5f5f5;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#f5f5f5;--test-arrow-hover-background-color:rgb(78,139,202);--target-background-color:#fdffd3;--target-border-color:#ad7c37;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:initial;--crate-search-div-filter:invert(100%) sepia(0%) saturate(4223%) hue-rotate(289deg) brightness(114%) contrast(76%);--crate-search-div-hover-filter:invert(44%) sepia(18%) saturate(23%) hue-rotate(317deg) brightness(96%) contrast(93%);--crate-search-hover-border:#717171;--src-sidebar-background-selected:#fff;--src-sidebar-background-hover:#e0e0e0;--table-alt-row-background-color:#f5f5f5;--codeblock-link-background:#eee;--scrape-example-toggle-line-background:#ccc;--scrape-example-toggle-line-hover-background:#999;--scrape-example-code-line-highlight:#fcffd6;--scrape-example-code-line-highlight-focus:#f6fdb0;--scrape-example-help-border-color:#555;--scrape-example-help-color:#333;--scrape-example-help-hover-border-color:#000;--scrape-example-help-hover-color:#000;--scrape-example-code-wrapper-background-start:rgba(255,255,255,1);--scrape-example-code-wrapper-background-end:rgba(255,255,255,0);}@media (prefers-color-scheme:dark){:root{--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--settings-input-border-color:#999;--settings-button-color:#000;--settings-button-border-focus:#ffb900;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--search-result-border-color:#aaa3;--search-color:#111;--search-error-code-background-color:#484848;--search-results-alias-color:#fff;--search-results-grey-color:#ccc;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#252525;--search-tab-button-not-selected-background:#252525;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#353535;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;--test-arrow-color:#dedede;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#dedede;--test-arrow-hover-background-color:#4e8bca;--target-background-color:#494a3d;--target-border-color:#bb7410;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);--crate-search-div-hover-filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);--crate-search-hover-border:#2196f3;--src-sidebar-background-selected:#333;--src-sidebar-background-hover:#444;--table-alt-row-background-color:#2a2a2a;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(53,53,53,1);--scrape-example-code-wrapper-background-end:rgba(53,53,53,0);}} \ No newline at end of file diff --git a/static.files/rustdoc-b0742ba02757f159.css b/static.files/rustdoc-b0742ba02757f159.css new file mode 100644 index 0000000..9fef311 --- /dev/null +++ b/static.files/rustdoc-b0742ba02757f159.css @@ -0,0 +1,53 @@ + :root{--nav-sub-mobile-padding:8px;--search-typename-width:6.75rem;--desktop-sidebar-width:200px;--src-sidebar-width:300px;--desktop-sidebar-z-index:100;--sidebar-elems-left-padding:24px;--clipboard-image:url('data:image/svg+xml,\ +\ +\ +');--copy-path-height:34px;--copy-path-width:33px;--checkmark-image:url('data:image/svg+xml,\ +\ +');--button-left-margin:4px;--button-border-radius:2px;--toolbar-button-border-radius:6px;--code-block-border-radius:6px;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:400;src:local('Fira Sans'),url("FiraSans-Regular-018c141bf0843ffd.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:500;src:local('Fira Sans Medium'),url("FiraSans-Medium-8f9a781e4970d388.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:400;src:local('Source Serif 4'),url("SourceSerif4-Regular-46f98efaafac5295.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:italic;font-weight:400;src:local('Source Serif 4 Italic'),url("SourceSerif4-It-acdfaf1a8af734b1.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:700;src:local('Source Serif 4 Bold'),url("SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:400;src:url("SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:italic;font-weight:400;src:url("SourceCodePro-It-1cc31594bf4f1f79.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'NanumBarunGothic';src:url("NanumBarunGothic-0f09457c7a19b7c6.ttf.woff2") format("woff2");font-display:swap;unicode-range:U+AC00-D7AF,U+1100-11FF,U+3130-318F,U+A960-A97F,U+D7B0-D7FF;}*{box-sizing:border-box;}body{font:1rem/1.5 "Source Serif 4",NanumBarunGothic,serif;margin:0;position:relative;overflow-wrap:break-word;overflow-wrap:anywhere;font-feature-settings:"kern","liga";background-color:var(--main-background-color);color:var(--main-color);}h1{font-size:1.5rem;}h2{font-size:1.375rem;}h3{font-size:1.25rem;}h1,h2,h3,h4,h5,h6{font-weight:500;}h1,h2,h3,h4{margin:25px 0 15px 0;padding-bottom:6px;}.docblock h3,.docblock h4,h5,h6{margin:15px 0 5px 0;}.docblock>h2:first-child,.docblock>h3:first-child,.docblock>h4:first-child,.docblock>h5:first-child,.docblock>h6:first-child{margin-top:0;}.main-heading h1{margin:0;padding:0;grid-area:main-heading-h1;overflow-wrap:break-word;overflow-wrap:anywhere;}.main-heading{position:relative;display:grid;grid-template-areas:"main-heading-breadcrumbs main-heading-breadcrumbs" "main-heading-h1 main-heading-toolbar" "main-heading-sub-heading main-heading-toolbar";grid-template-columns:minmax(105px,1fr) minmax(0,max-content);grid-template-rows:minmax(25px,min-content) min-content min-content;padding-bottom:6px;margin-bottom:11px;}.rustdoc-breadcrumbs{grid-area:main-heading-breadcrumbs;line-height:1.25;display:flex;flex-wrap:wrap;align-items:end;padding-top:5px;}.rustdoc-breadcrumbs a{padding:4px 0;margin:-4px 0;z-index:1;}.content h2,.top-doc .docblock>h3,.top-doc .docblock>h4{border-bottom:1px solid var(--headings-border-bottom-color);}h1,h2{line-height:1.25;padding-top:3px;padding-bottom:9px;}h3.code-header{font-size:1.125rem;}h4.code-header{font-size:1rem;}.code-header{font-weight:600;margin:0;padding:0;white-space:pre-wrap;}.structfield{margin:0.6em 0;}#crate-search,h1,h2,h3,h4,h5,h6,.sidebar,.mobile-topbar,.search-input,.search-results .result-name,.item-name>a,.out-of-band,.sub-heading,span.since,a.src,rustdoc-toolbar,summary.hideme,.scraped-example-list,.rustdoc-breadcrumbs,ul.all-items{font-family:"Fira Sans",Arial,NanumBarunGothic,sans-serif;}#toggle-all-docs,a.anchor,.section-header a,#src-sidebar a,.rust a,.sidebar h2 a,.sidebar h3 a,.mobile-topbar h2 a,h1 a,.search-results a,.stab,.result-name i{color:var(--main-color);}span.enum,a.enum,span.struct,a.struct,span.union,a.union,span.primitive,a.primitive,span.type,a.type,span.foreigntype,a.foreigntype{color:var(--type-link-color);}span.trait,a.trait,span.traitalias,a.traitalias{color:var(--trait-link-color);}span.associatedtype,a.associatedtype,span.constant,a.constant,span.static,a.static{color:var(--assoc-item-link-color);}span.fn,a.fn,span.method,a.method,span.tymethod,a.tymethod{color:var(--function-link-color);}span.attr,a.attr,span.derive,a.derive,span.macro,a.macro{color:var(--macro-link-color);}span.mod,a.mod{color:var(--mod-link-color);}span.keyword,a.keyword{color:var(--keyword-link-color);}a{color:var(--link-color);text-decoration:none;}ol,ul{padding-left:24px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:.625em;}p,.docblock>.warning{margin:0 0 .75em 0;}p:last-child,.docblock>.warning:last-child{margin:0;}button{padding:1px 6px;cursor:pointer;}button#toggle-all-docs{padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.rustdoc{display:flex;flex-direction:row;flex-wrap:nowrap;}main{position:relative;flex-grow:1;padding:10px 15px 40px 45px;min-width:0;}.src main{padding:15px;}.width-limiter{max-width:960px;margin-right:auto;}details:not(.toggle) summary{margin-bottom:.6em;}code,pre,.code-header{font-family:"Source Code Pro",monospace;}.docblock code,.docblock-short code{border-radius:3px;padding:0 0.125em;}.docblock pre code,.docblock-short pre code{padding:0;}pre{padding:14px;line-height:1.5;}pre.item-decl{overflow-x:auto;}.item-decl .type-contents-toggle{contain:initial;}.src .content pre{padding:20px;}.rustdoc.src .example-wrap .src-line-numbers{padding:20px 0 20px 4px;}img{max-width:100%;}.logo-container{line-height:0;display:block;}.rust-logo{filter:var(--rust-logo-filter);}.sidebar{font-size:0.875rem;flex:0 0 var(--desktop-sidebar-width);width:var(--desktop-sidebar-width);overflow-y:scroll;overscroll-behavior:contain;position:sticky;height:100vh;top:0;left:0;z-index:var(--desktop-sidebar-z-index);}.rustdoc.src .sidebar{flex-basis:50px;width:50px;border-right:1px solid;overflow-x:hidden;overflow-y:hidden;}.hide-sidebar .sidebar,.hide-sidebar .sidebar-resizer{display:none;}.sidebar-resizer{touch-action:none;width:9px;cursor:col-resize;z-index:calc(var(--desktop-sidebar-z-index) + 1);position:fixed;height:100%;left:calc(var(--desktop-sidebar-width) + 1px);}.rustdoc.src .sidebar-resizer{left:49px;}.src-sidebar-expanded .src .sidebar-resizer{left:var(--src-sidebar-width);}.sidebar-resizing{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;}.sidebar-resizing*{cursor:col-resize !important;}.sidebar-resizing .sidebar{position:fixed;}.sidebar-resizing>body{padding-left:var(--resizing-sidebar-width);}.sidebar-resizer:hover,.sidebar-resizer:active,.sidebar-resizer:focus,.sidebar-resizer.active{width:10px;margin:0;left:var(--desktop-sidebar-width);border-left:solid 1px var(--sidebar-resizer-hover);}.src-sidebar-expanded .rustdoc.src .sidebar-resizer:hover,.src-sidebar-expanded .rustdoc.src .sidebar-resizer:active,.src-sidebar-expanded .rustdoc.src .sidebar-resizer:focus,.src-sidebar-expanded .rustdoc.src .sidebar-resizer.active{left:calc(var(--src-sidebar-width) - 1px);}@media (pointer:coarse){.sidebar-resizer{display:none !important;}}.sidebar-resizer.active{padding:0 140px;width:2px;margin-left:-140px;border-left:none;}.sidebar-resizer.active:before{border-left:solid 2px var(--sidebar-resizer-active);display:block;height:100%;content:"";}.sidebar,.mobile-topbar,.sidebar-menu-toggle,#src-sidebar{background-color:var(--sidebar-background-color);}.src .sidebar>*{visibility:hidden;}.src-sidebar-expanded .src .sidebar{overflow-y:auto;flex-basis:var(--src-sidebar-width);width:var(--src-sidebar-width);}.src-sidebar-expanded .src .sidebar>*{visibility:visible;}#all-types{margin-top:1em;}*{scrollbar-width:initial;scrollbar-color:var(--scrollbar-color);}.sidebar{scrollbar-width:thin;scrollbar-color:var(--scrollbar-color);}::-webkit-scrollbar{width:12px;}.sidebar::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0;background-color:var(--scrollbar-track-background-color);}.sidebar::-webkit-scrollbar-track{background-color:var(--scrollbar-track-background-color);}::-webkit-scrollbar-thumb,.sidebar::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb-background-color);}.hidden{display:none !important;}.logo-container>img{height:48px;width:48px;}ul.block,.block li,.block ul{padding:0;margin:0;list-style:none;}.block ul a{padding-left:1rem;}.sidebar-elems a,.sidebar>h2 a{display:block;padding:0.25rem;margin-right:0.25rem;border-left:solid var(--sidebar-elems-left-padding) transparent;margin-left:calc(-0.25rem - var(--sidebar-elems-left-padding));background-clip:border-box;}.hide-toc #rustdoc-toc,.hide-toc .in-crate{display:none;}.hide-modnav #rustdoc-modnav{display:none;}.sidebar h2{text-wrap:balance;overflow-wrap:anywhere;padding:0;margin:0.7rem 0;}.sidebar h3{text-wrap:balance;overflow-wrap:anywhere;font-size:1.125rem;padding:0;margin:0;}.sidebar-elems,.sidebar>.version,.sidebar>h2{padding-left:var(--sidebar-elems-left-padding);}.sidebar a{color:var(--sidebar-link-color);}.sidebar .current,.sidebar .current a,.sidebar-crate a.logo-container:hover+h2 a,.sidebar a:hover:not(.logo-container){background-color:var(--sidebar-current-link-background-color);}.sidebar-elems .block{margin-bottom:2em;}.sidebar-elems .block li a{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}.sidebar-crate{display:flex;align-items:center;justify-content:center;margin:14px 32px 1rem;row-gap:10px;column-gap:32px;flex-wrap:wrap;}.sidebar-crate h2{flex-grow:1;margin:0 -8px;align-self:start;}.sidebar-crate .logo-container{margin:0 calc(-16px - var(--sidebar-elems-left-padding));padding:0 var(--sidebar-elems-left-padding);text-align:center;}.sidebar-crate .logo-container img{margin-top:-16px;border-top:solid 16px transparent;box-sizing:content-box;position:relative;background-clip:border-box;z-index:1;}.sidebar-crate h2 a{display:block;border-left:solid var(--sidebar-elems-left-padding) transparent;background-clip:border-box;margin:0 calc(-24px + 0.25rem) 0 calc(-0.2rem - var(--sidebar-elems-left-padding));padding:calc((16px - 0.57rem ) / 2 ) 0.25rem;padding-left:0.2rem;}.sidebar-crate h2 .version{display:block;font-weight:normal;font-size:1rem;overflow-wrap:break-word;}.sidebar-crate+.version{margin-top:-1rem;margin-bottom:1rem;}.mobile-topbar{display:none;}.rustdoc .example-wrap{display:flex;position:relative;margin-bottom:10px;}.rustdoc .example-wrap>pre,.rustdoc .scraped-example .src-line-numbers,.rustdoc .scraped-example .src-line-numbers>pre{border-radius:6px;}.rustdoc .example-wrap>.example-line-numbers,.rustdoc .scraped-example .src-line-numbers,.rustdoc .scraped-example .src-line-numbers>pre{border-top-right-radius:0;border-bottom-right-radius:0;}.rustdoc .example-wrap>.example-line-numbers+pre,.rustdoc .scraped-example .rust{border-top-left-radius:0;border-bottom-left-radius:0;}.rustdoc .scraped-example{position:relative;}.rustdoc .example-wrap:last-child{margin-bottom:0px;}.rustdoc .example-wrap pre{margin:0;flex-grow:1;}.scraped-example:not(.expanded) .example-wrap{max-height:calc(1.5em * 5 + 10px);}.more-scraped-examples .scraped-example:not(.expanded) .example-wrap{max-height:calc(1.5em * 10 + 10px);}.rustdoc:not(.src) .scraped-example:not(.expanded) .src-line-numbers,.rustdoc:not(.src) .scraped-example:not(.expanded) .src-line-numbers>pre,.rustdoc:not(.src) .scraped-example:not(.expanded) pre.rust{padding-bottom:0;overflow:auto hidden;}.rustdoc:not(.src) .scraped-example .src-line-numbers{padding-top:0;}.rustdoc:not(.src) .scraped-example.expanded .src-line-numbers{padding-bottom:0;}.rustdoc:not(.src) .example-wrap pre{overflow:auto;}.rustdoc .example-wrap pre.example-line-numbers,.rustdoc .example-wrap .src-line-numbers{min-width:fit-content;flex-grow:0;text-align:right;-webkit-user-select:none;user-select:none;padding:14px 8px;padding-right:2px;color:var(--src-line-numbers-span-color);}.rustdoc .scraped-example .example-wrap .src-line-numbers{padding:0;}.rustdoc .src-line-numbers pre{padding:14px 0;}.src-line-numbers a,.src-line-numbers span{color:var(--src-line-numbers-span-color);padding:0 8px;}.src-line-numbers :target{background-color:transparent;border-right:none;padding:0 8px;}.src-line-numbers .line-highlighted{background-color:var(--src-line-number-highlighted-background-color);}.search-loading{text-align:center;}.docblock-short{overflow-wrap:break-word;overflow-wrap:anywhere;}.docblock :not(pre)>code,.docblock-short code{white-space:pre-wrap;}.top-doc .docblock h2{font-size:1.375rem;}.top-doc .docblock h3{font-size:1.25rem;}.top-doc .docblock h4,.top-doc .docblock h5{font-size:1.125rem;}.top-doc .docblock h6{font-size:1rem;}.docblock h5{font-size:1rem;}.docblock h6{font-size:0.875rem;}.docblock{margin-left:24px;position:relative;}.docblock>:not(.more-examples-toggle):not(.example-wrap){max-width:100%;overflow-x:auto;}.sub-heading{font-size:1rem;flex-grow:0;grid-area:main-heading-sub-heading;line-height:1.25;padding-bottom:4px;}.main-heading rustdoc-toolbar,.main-heading .out-of-band{grid-area:main-heading-toolbar;}rustdoc-toolbar{display:flex;flex-direction:row;flex-wrap:nowrap;min-height:60px;}.docblock code,.docblock-short code,pre,.rustdoc.src .example-wrap,.example-wrap .src-line-numbers{background-color:var(--code-block-background-color);border-radius:var(--code-block-border-radius);}#main-content{position:relative;}.docblock table{margin:.5em 0;border-collapse:collapse;}.docblock table td,.docblock table th{padding:.5em;border:1px solid var(--border-color);}.docblock table tbody tr:nth-child(2n){background:var(--table-alt-row-background-color);}.docblock .stab,.docblock-short .stab{display:inline-block;}.docblock li{margin-bottom:.4em;}.docblock li p:not(:last-child){margin-bottom:.3em;}div.where{white-space:pre-wrap;font-size:0.875rem;}.item-info{display:block;margin-left:24px;}.item-info code{font-size:0.875rem;}#main-content>.item-info{margin-left:0;}nav.sub{flex-grow:1;flex-flow:row nowrap;margin:4px 0 0 0;display:flex;align-items:center;}.search-form{position:relative;display:flex;height:34px;flex-grow:1;}.src nav.sub{margin:0 0 -10px 0;}.section-header{display:block;position:relative;}.section-header:hover>.anchor,.impl:hover>.anchor,.trait-impl:hover>.anchor,.variant:hover>.anchor{display:initial;}.anchor{display:none;position:absolute;left:-0.5em;background:none !important;}.anchor.field{left:-5px;}.section-header>.anchor{left:-15px;padding-right:8px;}h2.section-header>.anchor{padding-right:6px;}a.doc-anchor{color:var(--main-color);display:none;position:absolute;left:-17px;padding-right:10px;padding-left:3px;}*:hover>.doc-anchor{display:block;}.top-doc>.docblock>*:first-child>.doc-anchor{display:none !important;}.main-heading a:hover,.example-wrap .rust a:hover,.all-items a:hover,.docblock a:not(.scrape-help):not(.tooltip):hover:not(.doc-anchor),.docblock-short a:not(.scrape-help):not(.tooltip):hover,.item-info a{text-decoration:underline;}.crate.block li.current a{font-weight:500;}table,.item-table{overflow-wrap:break-word;}.item-table{display:table;padding:0;margin:0;width:100%;}.item-table>li{display:table-row;}.item-table>li>div{display:table-cell;}.item-table>li>.item-name{padding-right:1.25rem;}.search-results-title{margin-top:0;white-space:nowrap;display:flex;align-items:baseline;}.search-results-title+.sub-heading{color:var(--main-color);display:flex;align-items:baseline;white-space:nowrap;}#crate-search-div{position:relative;min-width:0;}#crate-search{padding:0 23px 0 4px;max-width:100%;text-overflow:ellipsis;border:1px solid var(--border-color);border-radius:4px;outline:none;cursor:pointer;-moz-appearance:none;-webkit-appearance:none;text-indent:0.01px;background-color:var(--main-background-color);color:inherit;line-height:1.5;font-weight:500;}#crate-search:hover,#crate-search:focus{border-color:var(--crate-search-hover-border);}#crate-search-div::after{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;content:"";background-repeat:no-repeat;background-size:20px;background-position:calc(100% - 2px) 56%;background-image:url('data:image/svg+xml, \ + ');filter:var(--crate-search-div-filter);}#crate-search-div:hover::after,#crate-search-div:focus-within::after{filter:var(--crate-search-div-hover-filter);}#crate-search>option{font-size:1rem;}.search-input{-webkit-appearance:none;outline:none;border:1px solid var(--border-color);border-radius:2px;padding:8px;font-size:1rem;flex-grow:1;background-color:var(--button-background-color);color:var(--search-color);}.search-input:focus{border-color:var(--search-input-focused-border-color);}.search-results{display:none;}.search-results.active{display:block;}.search-results>a{display:flex;margin-left:2px;margin-right:2px;border-bottom:1px solid var(--search-result-border-color);gap:1em;}.search-results>a>div.desc{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex:2;}.search-results a:hover,.search-results a:focus{background-color:var(--search-result-link-focus-background-color);}.search-results .result-name{display:flex;align-items:center;justify-content:start;flex:3;}.search-results .result-name .alias{color:var(--search-results-alias-color);}.search-results .result-name .grey{color:var(--search-results-grey-color);}.search-results .result-name .typename{color:var(--search-results-grey-color);font-size:0.875rem;width:var(--search-typename-width);}.search-results .result-name .path{word-break:break-all;max-width:calc(100% - var(--search-typename-width));display:inline-block;}.search-results .result-name .path>*{display:inline;}.popover{position:absolute;top:100%;right:0;z-index:calc(var(--desktop-sidebar-z-index) + 1);margin-top:7px;border-radius:3px;border:1px solid var(--border-color);background-color:var(--main-background-color);color:var(--main-color);--popover-arrow-offset:11px;}.popover::before{content:'';position:absolute;right:var(--popover-arrow-offset);border:solid var(--border-color);border-width:1px 1px 0 0;background-color:var(--main-background-color);padding:4px;transform:rotate(-45deg);top:-5px;}.setting-line{margin:1.2em 0.6em;}.setting-radio input,.setting-check input{margin-right:0.3em;height:1.2rem;width:1.2rem;border:2px solid var(--settings-input-border-color);outline:none;-webkit-appearance:none;cursor:pointer;}.setting-radio input{border-radius:50%;}.setting-radio span,.setting-check span{padding-bottom:1px;}.setting-radio{margin-top:0.1em;margin-bottom:0.1em;min-width:3.8em;padding:0.3em;display:inline-flex;align-items:center;cursor:pointer;}.setting-radio+.setting-radio{margin-left:0.5em;}.setting-check{margin-right:20px;display:flex;align-items:center;cursor:pointer;}.setting-radio input:checked{box-shadow:inset 0 0 0 3px var(--main-background-color);background-color:var(--settings-input-color);}.setting-check input:checked{background-color:var(--settings-input-color);border-width:1px;content:url('data:image/svg+xml,\ + \ + ');}.setting-radio input:focus,.setting-check input:focus{box-shadow:0 0 1px 1px var(--settings-input-color);}.setting-radio input:checked:focus{box-shadow:inset 0 0 0 3px var(--main-background-color),0 0 2px 2px var(--settings-input-color);}.setting-radio input:hover,.setting-check input:hover{border-color:var(--settings-input-color) !important;}#settings.popover{--popover-arrow-offset:202px;top:calc(100% - 16px);}#help.popover{max-width:600px;--popover-arrow-offset:118px;top:calc(100% - 16px);}#help dt{float:left;clear:left;margin-right:0.5rem;}#help dd{margin-bottom:0.5rem;}#help span.top,#help span.bottom{text-align:center;display:block;font-size:1.125rem;padding:0 0.5rem;text-wrap-style:balance;}#help span.top{margin:10px 0;border-bottom:1px solid var(--border-color);padding-bottom:4px;margin-bottom:6px;}#help span.bottom{clear:both;border-top:1px solid var(--border-color);}.side-by-side{display:flex;margin-bottom:20px;}.side-by-side>div{width:50%;padding:0 20px 0 17px;}.item-info .stab{display:block;padding:3px;margin-bottom:5px;}.item-name .stab{margin-left:0.3125em;}.stab{padding:0 2px;font-size:0.875rem;font-weight:normal;color:var(--main-color);background-color:var(--stab-background-color);width:fit-content;white-space:pre-wrap;border-radius:3px;display:inline;vertical-align:baseline;}.stab.portability>code{background:none;color:var(--stab-code-color);}.stab .emoji,.item-info .stab::before{font-size:1.25rem;}.stab .emoji{margin-right:0.3rem;}.item-info .stab::before{content:"\0";width:0;display:inline-block;color:transparent;}.emoji{text-shadow:1px 0 0 black,-1px 0 0 black,0 1px 0 black,0 -1px 0 black;}.since{font-weight:normal;font-size:initial;}.rightside{padding-left:12px;float:right;}.rightside:not(a),.out-of-band,.sub-heading,rustdoc-toolbar{color:var(--right-side-color);}pre.rust{tab-size:4;-moz-tab-size:4;}pre.rust .kw{color:var(--code-highlight-kw-color);}pre.rust .kw-2{color:var(--code-highlight-kw-2-color);}pre.rust .lifetime{color:var(--code-highlight-lifetime-color);}pre.rust .prelude-ty{color:var(--code-highlight-prelude-color);}pre.rust .prelude-val{color:var(--code-highlight-prelude-val-color);}pre.rust .string{color:var(--code-highlight-string-color);}pre.rust .number{color:var(--code-highlight-number-color);}pre.rust .bool-val{color:var(--code-highlight-literal-color);}pre.rust .self{color:var(--code-highlight-self-color);}pre.rust .attr{color:var(--code-highlight-attribute-color);}pre.rust .macro,pre.rust .macro-nonterminal{color:var(--code-highlight-macro-color);}pre.rust .question-mark{font-weight:bold;color:var(--code-highlight-question-mark-color);}pre.rust .comment{color:var(--code-highlight-comment-color);}pre.rust .doccomment{color:var(--code-highlight-doc-comment-color);}.rustdoc.src .example-wrap pre.rust a{background:var(--codeblock-link-background);}.example-wrap.compile_fail,.example-wrap.should_panic{border-left:2px solid var(--codeblock-error-color);}.ignore.example-wrap{border-left:2px solid var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover,.example-wrap.should_panic:hover{border-left:2px solid var(--codeblock-error-hover-color);}.example-wrap.ignore:hover{border-left:2px solid var(--codeblock-ignore-hover-color);}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip{color:var(--codeblock-error-color);}.example-wrap.ignore .tooltip{color:var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover .tooltip,.example-wrap.should_panic:hover .tooltip{color:var(--codeblock-error-hover-color);}.example-wrap.ignore:hover .tooltip{color:var(--codeblock-ignore-hover-color);}.example-wrap .tooltip{position:absolute;display:block;left:-25px;top:5px;margin:0;line-height:1;}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip,.example-wrap.ignore .tooltip{font-weight:bold;font-size:1.25rem;}.content .docblock .warning{border-left:2px solid var(--warning-border-color);padding:14px;position:relative;overflow-x:visible !important;}.content .docblock .warning::before{color:var(--warning-border-color);content:"ⓘ";position:absolute;left:-25px;top:5px;font-weight:bold;font-size:1.25rem;}.top-doc>.docblock>.warning:first-child::before{top:20px;}.example-wrap>a.test-arrow,.example-wrap .button-holder{visibility:hidden;position:absolute;top:4px;right:4px;z-index:1;}a.test-arrow{height:var(--copy-path-height);padding:6px 4px 0 11px;}a.test-arrow::before{content:url('data:image/svg+xml,');}.example-wrap .button-holder{display:flex;}@media not (pointer:coarse){.example-wrap:hover>a.test-arrow,.example-wrap:hover>.button-holder{visibility:visible;}}.example-wrap .button-holder.keep-visible{visibility:visible;}.example-wrap .button-holder>*{background:var(--main-background-color);cursor:pointer;border-radius:var(--button-border-radius);height:var(--copy-path-height);width:var(--copy-path-width);border:0;color:var(--code-example-button-color);}.example-wrap .button-holder>*:hover{color:var(--code-example-button-hover-color);}.example-wrap .button-holder>*:not(:first-child){margin-left:var(--button-left-margin);}.example-wrap .button-holder .copy-button{padding:2px 0 0 4px;}.example-wrap .button-holder .copy-button::before,.example-wrap .test-arrow::before{filter:var(--copy-path-img-filter);}.example-wrap .button-holder .copy-button::before{content:var(--clipboard-image);}.example-wrap .button-holder .copy-button:hover::before,.example-wrap .test-arrow:hover::before{filter:var(--copy-path-img-hover-filter);}.example-wrap .button-holder .copy-button.clicked::before{content:var(--checkmark-image);padding-right:5px;}.code-attribute{font-weight:300;color:var(--code-attribute-color);}.item-spacer{width:100%;height:12px;display:block;}.main-heading span.since::before{content:"Since ";}.sub-variant h4{font-size:1rem;font-weight:400;margin-top:0;margin-bottom:0;}.sub-variant{margin-left:24px;margin-bottom:40px;}.sub-variant>.sub-variant-field{margin-left:24px;}@keyframes targetfadein{from{background-color:var(--main-background-color);}10%{background-color:var(--target-border-color);}to{background-color:var(--target-background-color);}}:target{padding-right:3px;background-color:var(--target-background-color);border-right:3px solid var(--target-border-color);}.code-header a.tooltip{color:inherit;margin-right:15px;position:relative;}.code-header a.tooltip:hover{color:var(--link-color);}a.tooltip:hover::after{position:absolute;top:calc(100% - 10px);left:-15px;right:-15px;height:20px;content:"\00a0";}@media not (prefers-reduced-motion){:target{animation:0.65s cubic-bezier(0,0,0.1,1.0) 0.1s targetfadein;}.fade-out{opacity:0;transition:opacity 0.45s cubic-bezier(0,0,0.1,1.0);}}.popover.tooltip .content{margin:0.25em 0.5em;}.popover.tooltip .content pre,.popover.tooltip .content code{background:transparent;margin:0;padding:0;font-size:1.25rem;white-space:pre-wrap;}.popover.tooltip .content>h3:first-child{margin:0 0 5px 0;}.search-failed{text-align:center;margin-top:20px;display:none;}.search-failed.active{display:block;}.search-failed>ul{text-align:left;max-width:570px;margin-left:auto;margin-right:auto;}#search-tabs{margin-top:0.25rem;display:flex;flex-direction:row;gap:1px;margin-bottom:4px;}#search-tabs button{text-align:center;font-size:1.125rem;border:0;border-top:2px solid;flex:1;line-height:1.5;color:inherit;}#search-tabs button:not(.selected){background-color:var(--search-tab-button-not-selected-background);border-top-color:var(--search-tab-button-not-selected-border-top-color);}#search-tabs button:hover,#search-tabs button.selected{background-color:var(--search-tab-button-selected-background);border-top-color:var(--search-tab-button-selected-border-top-color);}#search-tabs .count{font-size:1rem;font-variant-numeric:tabular-nums;color:var(--search-tab-title-count-color);}#search .error code{border-radius:3px;background-color:var(--search-error-code-background-color);}.search-corrections{font-weight:normal;}#src-sidebar{width:100%;overflow:auto;}#src-sidebar div.files>a:hover,details.dir-entry summary:hover,#src-sidebar div.files>a:focus,details.dir-entry summary:focus{background-color:var(--src-sidebar-background-hover);}#src-sidebar div.files>a.selected{background-color:var(--src-sidebar-background-selected);}.src-sidebar-title{position:sticky;top:0;display:flex;padding:8px 8px 0 48px;margin-bottom:7px;background:var(--sidebar-background-color);border-bottom:1px solid var(--border-color);}#settings-menu,#help-button,button#toggle-all-docs{margin-left:var(--button-left-margin);display:flex;line-height:1.25;min-width:14px;}#sidebar-button{display:none;line-height:0;}.hide-sidebar #sidebar-button,.src #sidebar-button{display:flex;margin-right:4px;position:fixed;left:6px;height:34px;width:34px;background-color:var(--main-background-color);z-index:1;}.src #sidebar-button{left:8px;z-index:calc(var(--desktop-sidebar-z-index) + 1);}.hide-sidebar .src #sidebar-button{position:static;}#settings-menu>a,#help-button>a,#sidebar-button>a,button#toggle-all-docs{display:flex;align-items:center;justify-content:center;flex-direction:column;border:1px solid transparent;border-radius:var(--button-border-radius);color:var(--main-color);}#settings-menu>a,#help-button>a,button#toggle-all-docs{width:80px;border-radius:var(--toolbar-button-border-radius);}#settings-menu>a,#help-button>a{min-width:0;}#sidebar-button>a{background-color:var(--button-background-color);border-color:var(--border-color);width:33px;}#settings-menu>a:hover,#settings-menu>a:focus-visible,#help-button>a:hover,#help-button>a:focus-visible,#sidebar-button>a:hover,#sidebar-button>a:focus-visible,button#toggle-all-docs:hover,button#toggle-all-docs:focus-visible{border-color:var(--settings-button-border-focus);text-decoration:none;}#settings-menu>a:before{content:url('data:image/svg+xml,\ + ');width:18px;height:18px;filter:var(--settings-menu-filter);}button#toggle-all-docs:before{content:url('data:image/svg+xml,\ + ');width:18px;height:18px;filter:var(--settings-menu-filter);}#help-button>a:before{content:url('data:image/svg+xml,\ + \ + ?');width:18px;height:18px;filter:var(--settings-menu-filter);}button#toggle-all-docs:before,#help-button>a:before,#settings-menu>a:before{filter:var(--settings-menu-filter);margin:8px;}@media not (pointer:coarse){button#toggle-all-docs:hover:before,#help-button>a:hover:before,#settings-menu>a:hover:before{filter:var(--settings-menu-hover-filter);}}button[disabled]#toggle-all-docs{opacity:0.25;border:solid 1px var(--main-background-color);background-size:cover;}button[disabled]#toggle-all-docs:hover{border:solid 1px var(--main-background-color);cursor:not-allowed;}rustdoc-toolbar span.label{font-size:1rem;flex-grow:1;padding-bottom:4px;}#sidebar-button>a:before{content:url('data:image/svg+xml,\ + \ + \ + ');width:22px;height:22px;}#copy-path{color:var(--copy-path-button-color);background:var(--main-background-color);height:var(--copy-path-height);width:var(--copy-path-width);margin-left:10px;padding:0;padding-left:2px;border:0;font-size:0;}#copy-path::before{filter:var(--copy-path-img-filter);content:var(--clipboard-image);}#copy-path:hover::before{filter:var(--copy-path-img-hover-filter);}#copy-path.clicked::before{content:var(--checkmark-image);}@keyframes rotating{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}#settings-menu.rotate>a img{animation:rotating 2s linear infinite;}kbd{display:inline-block;padding:3px 5px;font:15px monospace;line-height:10px;vertical-align:middle;border:solid 1px var(--border-color);border-radius:3px;color:var(--kbd-color);background-color:var(--kbd-background);box-shadow:inset 0 -1px 0 var(--kbd-box-shadow-color);}ul.all-items>li{list-style:none;}details.dir-entry{padding-left:4px;}details.dir-entry>summary{margin:0 0 0 -4px;padding:0 0 0 4px;cursor:pointer;}details.dir-entry div.folders,details.dir-entry div.files{padding-left:23px;}details.dir-entry a{display:block;}details.toggle{contain:layout;position:relative;}details.big-toggle{contain:inline-size;}details.toggle>summary.hideme{cursor:pointer;font-size:1rem;}details.toggle>summary{list-style:none;outline:none;}details.toggle>summary::-webkit-details-marker,details.toggle>summary::marker{display:none;}details.toggle>summary.hideme>span{margin-left:9px;}details.toggle>summary::before{background:url('data:image/svg+xml,\ + ');content:"";cursor:pointer;width:16px;height:16px;display:inline-block;vertical-align:middle;opacity:.5;filter:var(--toggle-filter);}details.toggle>summary.hideme>span,.more-examples-toggle summary,.more-examples-toggle .hide-more{color:var(--toggles-color);}details.toggle>summary::after{content:"Expand";overflow:hidden;width:0;height:0;position:absolute;}details.toggle>summary.hideme::after{content:"";}details.toggle>summary:focus::before,details.toggle>summary:hover::before{opacity:1;}details.toggle>summary:focus-visible::before{outline:1px dotted #000;outline-offset:1px;}details.non-exhaustive{margin-bottom:8px;}details.toggle>summary.hideme::before{position:relative;}details.toggle>summary:not(.hideme)::before{position:absolute;left:-24px;top:4px;}.impl-items>details.toggle>summary:not(.hideme)::before{position:absolute;left:-24px;}details.big-toggle>summary:not(.hideme)::before{left:-34px;top:9px;}details.toggle[open] >summary.hideme{position:absolute;}details.toggle[open] >summary.hideme>span{display:none;}details.toggle[open] >summary::before{background:url('data:image/svg+xml,\ + ');}details.toggle[open] >summary::after{content:"Collapse";}.docblock summary>*{display:inline-block;}.docblock>.example-wrap:first-child .tooltip{margin-top:16px;}.src #sidebar-button>a:before,.sidebar-menu-toggle:before{content:url('data:image/svg+xml,\ + ');opacity:0.75;}.sidebar-menu-toggle:hover:before,.sidebar-menu-toggle:active:before,.sidebar-menu-toggle:focus:before{opacity:1;}.src #sidebar-button>a:before{content:url('data:image/svg+xml,\ + \ + \ + ');opacity:0.75;}@media (max-width:850px){#search-tabs .count{display:block;}.side-by-side{flex-direction:column-reverse;}.side-by-side>div{width:auto;}}@media (max-width:700px){*[id]{scroll-margin-top:45px;}#copy-path{display:none;}rustdoc-toolbar span.label{display:none;}#settings-menu>a,#help-button>a,button#toggle-all-docs{width:33px;}#settings.popover{--popover-arrow-offset:86px;}#help.popover{--popover-arrow-offset:48px;}.rustdoc{display:block;}main{padding-left:15px;padding-top:0px;}.sidebar .logo-container,.sidebar .location,.sidebar-resizer{display:none;}.sidebar{position:fixed;top:45px;left:-1000px;z-index:11;height:calc(100vh - 45px);width:200px;}.src main,.rustdoc.src .sidebar{top:0;padding:0;height:100vh;border:0;}.src .search-form{margin-left:40px;}.src .main-heading{margin-left:8px;}.hide-sidebar .search-form{margin-left:32px;}.hide-sidebar .src .search-form{margin-left:0;}.sidebar.shown,.src-sidebar-expanded .src .sidebar,.rustdoc:not(.src) .sidebar:focus-within{left:0;}.mobile-topbar h2{padding-bottom:0;margin:auto 0.5em auto auto;overflow:hidden;font-size:24px;white-space:nowrap;text-overflow:ellipsis;}.mobile-topbar .logo-container>img{max-width:35px;max-height:35px;margin:5px 0 5px 20px;}.mobile-topbar{display:flex;flex-direction:row;position:sticky;z-index:10;font-size:2rem;height:45px;width:100%;left:0;top:0;}.hide-sidebar .mobile-topbar{display:none;}.sidebar-menu-toggle{width:45px;border:none;line-height:0;}.hide-sidebar .sidebar-menu-toggle{display:none;}.sidebar-elems{margin-top:1em;}.anchor{display:none !important;}#main-content>details.toggle>summary::before,#main-content>div>details.toggle>summary::before{left:-11px;}#sidebar-button>a:before{content:url('data:image/svg+xml,\ + \ + \ + ');width:22px;height:22px;}.sidebar-menu-toggle:before{filter:var(--mobile-sidebar-menu-filter);}.sidebar-menu-toggle:hover{background:var(--main-background-color);}.item-table,.item-row,.item-table>li,.item-table>li>div,.search-results>a,.search-results>a>div{display:block;}.search-results>a{padding:5px 0px;}.search-results>a>div.desc,.item-table>li>div.desc{padding-left:2em;}.search-results .result-name{display:block;}.search-results .result-name .typename{width:initial;margin-right:0;}.search-results .result-name .typename,.search-results .result-name .path{display:inline;}.src-sidebar-expanded .src .sidebar{position:fixed;max-width:100vw;width:100vw;}.src .src-sidebar-title{padding-top:0;}details.toggle:not(.top-doc)>summary,.impl-items>section{margin-left:10px;}.impl-items>details.toggle>summary:not(.hideme)::before,#main-content>details.toggle:not(.top-doc)>summary::before,#main-content>div>details.toggle>summary::before{left:-11px;}.impl-items>.item-info{margin-left:34px;}.src nav.sub{margin:0 0 -25px 0;padding:var(--nav-sub-mobile-padding);}}@media (min-width:701px){.scraped-example-title{position:absolute;z-index:10;background:var(--main-background-color);bottom:8px;right:5px;padding:2px 4px;box-shadow:0 0 4px var(--main-background-color);}.item-table>li>.item-name{width:33%;}.item-table>li>div{overflow-wrap:anywhere;}}@media print{nav.sidebar,nav.sub,.out-of-band,a.src,#copy-path,details.toggle[open] >summary::before,details.toggle>summary::before,details.toggle.top-doc>summary{display:none;}.docblock{margin-left:0;}main{padding:10px;}}@media (max-width:464px){.docblock{margin-left:12px;}.docblock code{overflow-wrap:break-word;overflow-wrap:anywhere;}nav.sub{flex-direction:column;}.search-form{align-self:stretch;}}.variant,.implementors-toggle>summary,.impl,#implementors-list>.docblock,.impl-items>section,.impl-items>.toggle>summary,.methods>section,.methods>.toggle>summary{margin-bottom:0.75em;}.variants>.docblock,.implementors-toggle>.docblock,.impl-items>.toggle[open]:not(:last-child),.methods>.toggle[open]:not(:last-child),.implementors-toggle[open]:not(:last-child){margin-bottom:2em;}#trait-implementations-list .impl-items>.toggle:not(:last-child),#synthetic-implementations-list .impl-items>.toggle:not(:last-child),#blanket-implementations-list .impl-items>.toggle:not(:last-child){margin-bottom:1em;}.scraped-example-list .scrape-help{margin-left:10px;padding:0 4px;font-weight:normal;font-size:12px;position:relative;bottom:1px;border:1px solid var(--scrape-example-help-border-color);border-radius:50px;color:var(--scrape-example-help-color);}.scraped-example-list .scrape-help:hover{border-color:var(--scrape-example-help-hover-border-color);color:var(--scrape-example-help-hover-color);}.scraped-example:not(.expanded) .example-wrap::before,.scraped-example:not(.expanded) .example-wrap::after{content:" ";width:100%;height:5px;position:absolute;z-index:1;}.scraped-example:not(.expanded) .example-wrap::before{top:0;background:linear-gradient(to bottom,var(--scrape-example-code-wrapper-background-start),var(--scrape-example-code-wrapper-background-end));}.scraped-example:not(.expanded) .example-wrap::after{bottom:0;background:linear-gradient(to top,var(--scrape-example-code-wrapper-background-start),var(--scrape-example-code-wrapper-background-end));}.scraped-example:not(.expanded){width:100%;overflow-y:hidden;margin-bottom:0;}.scraped-example:not(.expanded){overflow-x:hidden;}.scraped-example .rust span.highlight{background:var(--scrape-example-code-line-highlight);}.scraped-example .rust span.highlight.focus{background:var(--scrape-example-code-line-highlight-focus);}.more-examples-toggle{max-width:calc(100% + 25px);margin-top:10px;margin-left:-25px;}.more-examples-toggle .hide-more{margin-left:25px;cursor:pointer;}.more-scraped-examples{margin-left:25px;position:relative;}.toggle-line{position:absolute;top:5px;bottom:0;right:calc(100% + 10px);padding:0 4px;cursor:pointer;}.toggle-line-inner{min-width:2px;height:100%;background:var(--scrape-example-toggle-line-background);}.toggle-line:hover .toggle-line-inner{background:var(--scrape-example-toggle-line-hover-background);}.more-scraped-examples .scraped-example,.example-links{margin-top:20px;}.more-scraped-examples .scraped-example:first-child{margin-top:5px;}.example-links ul{margin-bottom:0;}:root[data-theme="light"],:root:not([data-theme]){--main-background-color:white;--main-color:black;--settings-input-color:#2196f3;--settings-input-border-color:#717171;--settings-button-color:#000;--settings-button-border-focus:#717171;--sidebar-background-color:#f5f5f5;--sidebar-background-color-hover:#e0e0e0;--code-block-background-color:#f5f5f5;--scrollbar-track-background-color:#dcdcdc;--scrollbar-thumb-background-color:rgba(36,37,39,0.6);--scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;--headings-border-bottom-color:#ddd;--border-color:#e0e0e0;--button-background-color:#fff;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:none;--mobile-sidebar-menu-filter:none;--search-input-focused-border-color:#66afe9;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(35%);--code-example-button-color:#7f7f7f;--code-example-button-hover-color:#595959;--settings-menu-filter:invert(50%);--settings-menu-hover-filter:invert(35%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ad378a;--trait-link-color:#6e4fc9;--assoc-item-link-color:#3873ad;--function-link-color:#ad7c37;--macro-link-color:#068000;--keyword-link-color:#3873ad;--mod-link-color:#3873ad;--link-color:#3873ad;--sidebar-link-color:#356da4;--sidebar-current-link-background-color:#fff;--search-result-link-focus-background-color:#ccc;--search-result-border-color:#aaa3;--search-color:#000;--search-error-code-background-color:#d0cccc;--search-results-alias-color:#000;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#e6e6e6;--search-tab-button-not-selected-background:#e6e6e6;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#fff;--stab-background-color:#fff5d6;--stab-code-color:#000;--code-highlight-kw-color:#8959a8;--code-highlight-kw-2-color:#4271ae;--code-highlight-lifetime-color:#b76514;--code-highlight-prelude-color:#4271ae;--code-highlight-prelude-val-color:#c82829;--code-highlight-number-color:#718c00;--code-highlight-string-color:#718c00;--code-highlight-literal-color:#c82829;--code-highlight-attribute-color:#c82829;--code-highlight-self-color:#c82829;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8e908c;--code-highlight-doc-comment-color:#4d4d4c;--src-line-numbers-span-color:#c67e2d;--src-line-number-highlighted-background-color:#fdffd3;--target-background-color:#fdffd3;--target-border-color:#ad7c37;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:initial;--crate-search-div-filter:invert(100%) sepia(0%) saturate(4223%) hue-rotate(289deg) brightness(114%) contrast(76%);--crate-search-div-hover-filter:invert(44%) sepia(18%) saturate(23%) hue-rotate(317deg) brightness(96%) contrast(93%);--crate-search-hover-border:#717171;--src-sidebar-background-selected:#fff;--src-sidebar-background-hover:#e0e0e0;--table-alt-row-background-color:#f5f5f5;--codeblock-link-background:#eee;--scrape-example-toggle-line-background:#ccc;--scrape-example-toggle-line-hover-background:#999;--scrape-example-code-line-highlight:#fcffd6;--scrape-example-code-line-highlight-focus:#f6fdb0;--scrape-example-help-border-color:#555;--scrape-example-help-color:#333;--scrape-example-help-hover-border-color:#000;--scrape-example-help-hover-color:#000;--scrape-example-code-wrapper-background-start:rgba(255,255,255,1);--scrape-example-code-wrapper-background-end:rgba(255,255,255,0);--sidebar-resizer-hover:hsl(207,90%,66%);--sidebar-resizer-active:hsl(207,90%,54%);}:root[data-theme="dark"]{--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--settings-input-border-color:#999;--settings-button-color:#000;--settings-button-border-focus:#ffb900;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--mobile-sidebar-menu-filter:invert(100%);--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--code-example-button-color:#7f7f7f;--code-example-button-hover-color:#a5a5a5;--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--search-result-border-color:#aaa3;--search-color:#111;--search-error-code-background-color:#484848;--search-results-alias-color:#fff;--search-results-grey-color:#ccc;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#252525;--search-tab-button-not-selected-background:#252525;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#353535;--settings-menu-filter:invert(50%);--settings-menu-hover-filter:invert(65%);--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;--target-background-color:#494a3d;--target-border-color:#bb7410;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);--crate-search-div-hover-filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);--crate-search-hover-border:#2196f3;--src-sidebar-background-selected:#333;--src-sidebar-background-hover:#444;--table-alt-row-background-color:#2a2a2a;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(53,53,53,1);--scrape-example-code-wrapper-background-end:rgba(53,53,53,0);--sidebar-resizer-hover:hsl(207,30%,54%);--sidebar-resizer-active:hsl(207,90%,54%);}:root[data-theme="ayu"]{--main-background-color:#0f1419;--main-color:#c5c5c5;--settings-input-color:#ffb454;--settings-input-border-color:#999;--settings-button-color:#fff;--settings-button-border-focus:#e0e0e0;--sidebar-background-color:#14191f;--sidebar-background-color-hover:rgba(70,70,70,0.33);--code-block-background-color:#191f26;--scrollbar-track-background-color:transparent;--scrollbar-thumb-background-color:#5c6773;--scrollbar-color:#5c6773 #24292f;--headings-border-bottom-color:#5c6773;--border-color:#5c6773;--button-background-color:#141920;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--mobile-sidebar-menu-filter:invert(100%);--search-input-focused-border-color:#5c6773;--copy-path-button-color:#fff;--copy-path-img-filter:invert(70%);--copy-path-img-hover-filter:invert(100%);--code-example-button-color:#b2b2b2;--code-example-button-hover-color:#fff;--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ffa0a5;--trait-link-color:#39afd7;--assoc-item-link-color:#39afd7;--function-link-color:#fdd687;--macro-link-color:#a37acc;--keyword-link-color:#39afd7;--mod-link-color:#39afd7;--link-color:#39afd7;--sidebar-link-color:#53b1db;--sidebar-current-link-background-color:transparent;--search-result-link-focus-background-color:#3c3c3c;--search-result-border-color:#aaa3;--search-color:#fff;--search-error-code-background-color:#4f4c4c;--search-results-alias-color:#c5c5c5;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:none;--search-tab-button-not-selected-background:transparent !important;--search-tab-button-selected-border-top-color:none;--search-tab-button-selected-background:#141920 !important;--settings-menu-filter:invert(70%);--settings-menu-hover-filter:invert(100%);--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ff7733;--code-highlight-kw-2-color:#ff7733;--code-highlight-lifetime-color:#ff7733;--code-highlight-prelude-color:#69f2df;--code-highlight-prelude-val-color:#ff7733;--code-highlight-number-color:#b8cc52;--code-highlight-string-color:#b8cc52;--code-highlight-literal-color:#ff7733;--code-highlight-attribute-color:#e6e1cf;--code-highlight-self-color:#36a3d9;--code-highlight-macro-color:#a37acc;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#788797;--code-highlight-doc-comment-color:#a1ac88;--src-line-numbers-span-color:#5c6773;--src-line-number-highlighted-background-color:rgba(255,236,164,0.06);--target-background-color:rgba(255,236,164,0.06);--target-border-color:rgba(255,180,76,0.85);--kbd-color:#c5c5c5;--kbd-background:#314559;--kbd-box-shadow-color:#5c6773;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(41%) sepia(12%) saturate(487%) hue-rotate(171deg) brightness(94%) contrast(94%);--crate-search-div-hover-filter:invert(98%) sepia(12%) saturate(81%) hue-rotate(343deg) brightness(113%) contrast(76%);--crate-search-hover-border:#e0e0e0;--src-sidebar-background-selected:#14191f;--src-sidebar-background-hover:#14191f;--table-alt-row-background-color:#191f26;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(15,20,25,1);--scrape-example-code-wrapper-background-end:rgba(15,20,25,0);--sidebar-resizer-hover:hsl(34,50%,33%);--sidebar-resizer-active:hsl(34,100%,66%);}:root[data-theme="ayu"] h1,:root[data-theme="ayu"] h2,:root[data-theme="ayu"] h3,:root[data-theme="ayu"] h4,:where(:root[data-theme="ayu"]) h1 a,:root[data-theme="ayu"] .sidebar h2 a,:root[data-theme="ayu"] .sidebar h3 a{color:#fff;}:root[data-theme="ayu"] .docblock code{color:#ffb454;}:root[data-theme="ayu"] .docblock a>code{color:#39AFD7 !important;}:root[data-theme="ayu"] .code-header,:root[data-theme="ayu"] .docblock pre>code,:root[data-theme="ayu"] pre,:root[data-theme="ayu"] pre>code,:root[data-theme="ayu"] .item-info code,:root[data-theme="ayu"] .rustdoc.source .example-wrap{color:#e6e1cf;}:root[data-theme="ayu"] .sidebar .current,:root[data-theme="ayu"] .sidebar .current a,:root[data-theme="ayu"] .sidebar a:hover,:root[data-theme="ayu"] #src-sidebar div.files>a:hover,:root[data-theme="ayu"] details.dir-entry summary:hover,:root[data-theme="ayu"] #src-sidebar div.files>a:focus,:root[data-theme="ayu"] details.dir-entry summary:focus,:root[data-theme="ayu"] #src-sidebar div.files>a.selected{color:#ffb44c;}:root[data-theme="ayu"] .sidebar-elems .location{color:#ff7733;}:root[data-theme="ayu"] .src-line-numbers .line-highlighted{color:#708090;padding-right:7px;border-right:1px solid #ffb44c;}:root[data-theme="ayu"] .search-results a:hover,:root[data-theme="ayu"] .search-results a:focus{color:#fff !important;background-color:#3c3c3c;}:root[data-theme="ayu"] .search-results a{color:#0096cf;}:root[data-theme="ayu"] .search-results a div.desc{color:#c5c5c5;}:root[data-theme="ayu"] .result-name .primitive>i,:root[data-theme="ayu"] .result-name .keyword>i{color:#788797;}:root[data-theme="ayu"] #search-tabs>button.selected{border-bottom:1px solid #ffb44c !important;border-top:none;}:root[data-theme="ayu"] #search-tabs>button:not(.selected){border:none;background-color:transparent !important;}:root[data-theme="ayu"] #search-tabs>button:hover{border-bottom:1px solid rgba(242,151,24,0.3);}:root[data-theme="ayu"] #settings-menu>a img,:root[data-theme="ayu"] #sidebar-button>a:before{filter:invert(100);} \ No newline at end of file diff --git a/static.files/rustdoc-fa3bb1812debf86c.css b/static.files/rustdoc-fa3bb1812debf86c.css deleted file mode 100644 index 2dd5ceb..0000000 --- a/static.files/rustdoc-fa3bb1812debf86c.css +++ /dev/null @@ -1,10 +0,0 @@ - :root{--nav-sub-mobile-padding:8px;--search-typename-width:6.75rem;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:400;src:local('Fira Sans'),url("FiraSans-Regular-018c141bf0843ffd.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:500;src:local('Fira Sans Medium'),url("FiraSans-Medium-8f9a781e4970d388.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:400;src:local('Source Serif 4'),url("SourceSerif4-Regular-46f98efaafac5295.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:italic;font-weight:400;src:local('Source Serif 4 Italic'),url("SourceSerif4-It-acdfaf1a8af734b1.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:700;src:local('Source Serif 4 Bold'),url("SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:400;src:url("SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:italic;font-weight:400;src:url("SourceCodePro-It-1cc31594bf4f1f79.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'NanumBarunGothic';src:url("NanumBarunGothic-0f09457c7a19b7c6.ttf.woff2") format("woff2");font-display:swap;unicode-range:U+AC00-D7AF,U+1100-11FF,U+3130-318F,U+A960-A97F,U+D7B0-D7FF;}*{box-sizing:border-box;}body{font:1rem/1.5 "Source Serif 4",NanumBarunGothic,serif;margin:0;position:relative;overflow-wrap:break-word;overflow-wrap:anywhere;font-feature-settings:"kern","liga";background-color:var(--main-background-color);color:var(--main-color);}h1{font-size:1.5rem;}h2{font-size:1.375rem;}h3{font-size:1.25rem;}h1,h2,h3,h4,h5,h6{font-weight:500;}h1,h2,h3,h4{margin:25px 0 15px 0;padding-bottom:6px;}.docblock h3,.docblock h4,h5,h6{margin:15px 0 5px 0;}.docblock>h2:first-child,.docblock>h3:first-child,.docblock>h4:first-child,.docblock>h5:first-child,.docblock>h6:first-child{margin-top:0;}.main-heading h1{margin:0;padding:0;flex-grow:1;overflow-wrap:break-word;overflow-wrap:anywhere;}.main-heading{display:flex;flex-wrap:wrap;padding-bottom:6px;margin-bottom:15px;}.content h2,.top-doc .docblock>h3,.top-doc .docblock>h4{border-bottom:1px solid var(--headings-border-bottom-color);}h1,h2{line-height:1.25;padding-top:3px;padding-bottom:9px;}h3.code-header{font-size:1.125rem;}h4.code-header{font-size:1rem;}.code-header{font-weight:600;margin:0;padding:0;white-space:pre-wrap;}#crate-search,h1,h2,h3,h4,h5,h6,.sidebar,.mobile-topbar,.search-input,.search-results .result-name,.item-name>a,.out-of-band,span.since,a.src,#help-button>a,summary.hideme,.scraped-example-list,ul.all-items{font-family:"Fira Sans",Arial,NanumBarunGothic,sans-serif;}#toggle-all-docs,a.anchor,.small-section-header a,#src-sidebar a,.rust a,.sidebar h2 a,.sidebar h3 a,.mobile-topbar h2 a,h1 a,.search-results a,.stab,.result-name i{color:var(--main-color);}span.enum,a.enum,span.struct,a.struct,span.union,a.union,span.primitive,a.primitive,span.type,a.type,span.foreigntype,a.foreigntype{color:var(--type-link-color);}span.trait,a.trait,span.traitalias,a.traitalias{color:var(--trait-link-color);}span.associatedtype,a.associatedtype,span.constant,a.constant,span.static,a.static{color:var(--assoc-item-link-color);}span.fn,a.fn,span.method,a.method,span.tymethod,a.tymethod{color:var(--function-link-color);}span.attr,a.attr,span.derive,a.derive,span.macro,a.macro{color:var(--macro-link-color);}span.mod,a.mod{color:var(--mod-link-color);}span.keyword,a.keyword{color:var(--keyword-link-color);}a{color:var(--link-color);text-decoration:none;}ol,ul{padding-left:24px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:.625em;}p,.docblock>.warning{margin:0 0 .75em 0;}p:last-child,.docblock>.warning:last-child{margin:0;}button{padding:1px 6px;cursor:pointer;}button#toggle-all-docs{padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.rustdoc{display:flex;flex-direction:row;flex-wrap:nowrap;}main{position:relative;flex-grow:1;padding:10px 15px 40px 45px;min-width:0;}.src main{padding:15px;}.width-limiter{max-width:960px;margin-right:auto;}details:not(.toggle) summary{margin-bottom:.6em;}code,pre,a.test-arrow,.code-header{font-family:"Source Code Pro",monospace;}.docblock code,.docblock-short code{border-radius:3px;padding:0 0.125em;}.docblock pre code,.docblock-short pre code{padding:0;}pre{padding:14px;line-height:1.5;}pre.item-decl{overflow-x:auto;}.item-decl .type-contents-toggle{contain:initial;}.src .content pre{padding:20px;}.rustdoc.src .example-wrap pre.src-line-numbers{padding:20px 0 20px 4px;}img{max-width:100%;}.sub-logo-container,.logo-container{line-height:0;display:block;}.sub-logo-container{margin-right:32px;}.sub-logo-container>img{height:60px;width:60px;object-fit:contain;}.rust-logo{filter:var(--rust-logo-filter);}.sidebar{font-size:0.875rem;flex:0 0 200px;overflow-y:scroll;overscroll-behavior:contain;position:sticky;height:100vh;top:0;left:0;}.rustdoc.src .sidebar{flex-basis:50px;border-right:1px solid;overflow-x:hidden;overflow-y:hidden;z-index:1;}.sidebar,.mobile-topbar,.sidebar-menu-toggle,#src-sidebar-toggle,#src-sidebar{background-color:var(--sidebar-background-color);}#src-sidebar-toggle>button:hover,#src-sidebar-toggle>button:focus{background-color:var(--sidebar-background-color-hover);}.src .sidebar>*:not(#src-sidebar-toggle){visibility:hidden;}.src-sidebar-expanded .src .sidebar{overflow-y:auto;flex-basis:300px;}.src-sidebar-expanded .src .sidebar>*:not(#src-sidebar-toggle){visibility:visible;}#all-types{margin-top:1em;}*{scrollbar-width:initial;scrollbar-color:var(--scrollbar-color);}.sidebar{scrollbar-width:thin;scrollbar-color:var(--scrollbar-color);}::-webkit-scrollbar{width:12px;}.sidebar::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0;background-color:var(--scrollbar-track-background-color);}.sidebar::-webkit-scrollbar-track{background-color:var(--scrollbar-track-background-color);}::-webkit-scrollbar-thumb,.sidebar::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb-background-color);}.hidden{display:none !important;}.sidebar .logo-container{margin-top:10px;margin-bottom:10px;text-align:center;}.version{overflow-wrap:break-word;}.logo-container>img{height:100px;width:100px;}ul.block,.block li{padding:0;margin:0;list-style:none;}.sidebar-elems a,.sidebar>h2 a{display:block;padding:0.25rem;margin-left:-0.25rem;}.sidebar h2{overflow-wrap:anywhere;padding:0;margin:0.7rem 0;}.sidebar h3{font-size:1.125rem;padding:0;margin:0;}.sidebar-elems,.sidebar>h2{padding-left:24px;}.sidebar a{color:var(--sidebar-link-color);}.sidebar .current,.sidebar a:hover:not(.logo-container){background-color:var(--sidebar-current-link-background-color);}.sidebar-elems .block{margin-bottom:2em;}.sidebar-elems .block li a{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}.mobile-topbar{display:none;}.rustdoc .example-wrap{display:flex;position:relative;margin-bottom:10px;}.rustdoc .example-wrap:last-child{margin-bottom:0px;}.rustdoc .example-wrap pre{margin:0;flex-grow:1;}.rustdoc:not(.src) .example-wrap pre{overflow:auto hidden;}.rustdoc .example-wrap pre.example-line-numbers,.rustdoc .example-wrap pre.src-line-numbers{flex-grow:0;min-width:fit-content;overflow:initial;text-align:right;-webkit-user-select:none;user-select:none;padding:14px 8px;color:var(--src-line-numbers-span-color);}.rustdoc .example-wrap pre.src-line-numbers{padding:14px 0;}.src-line-numbers a,.src-line-numbers span{color:var(--src-line-numbers-span-color);padding:0 8px;}.src-line-numbers :target{background-color:transparent;border-right:none;padding:0 8px;}.src-line-numbers .line-highlighted{background-color:var(--src-line-number-highlighted-background-color);}.search-loading{text-align:center;}.docblock-short{overflow-wrap:break-word;overflow-wrap:anywhere;}.docblock :not(pre)>code,.docblock-short code{white-space:pre-wrap;}.top-doc .docblock h2{font-size:1.375rem;}.top-doc .docblock h3{font-size:1.25rem;}.top-doc .docblock h4,.top-doc .docblock h5{font-size:1.125rem;}.top-doc .docblock h6{font-size:1rem;}.docblock h5{font-size:1rem;}.docblock h6{font-size:0.875rem;}.docblock{margin-left:24px;position:relative;}.docblock>:not(.more-examples-toggle):not(.example-wrap){max-width:100%;overflow-x:auto;}.out-of-band{flex-grow:0;font-size:1.125rem;}.docblock code,.docblock-short code,pre,.rustdoc.src .example-wrap{background-color:var(--code-block-background-color);}#main-content{position:relative;}.docblock table{margin:.5em 0;border-collapse:collapse;}.docblock table td,.docblock table th{padding:.5em;border:1px solid var(--border-color);}.docblock table tbody tr:nth-child(2n){background:var(--table-alt-row-background-color);}.method .where,.fn .where,.where.fmt-newline{display:block;white-space:pre-wrap;font-size:0.875rem;}.item-info{display:block;margin-left:24px;}.item-info code{font-size:0.875rem;}#main-content>.item-info{margin-left:0;}nav.sub{flex-grow:1;flex-flow:row nowrap;margin:4px 0 25px 0;display:flex;align-items:center;}.search-form{position:relative;display:flex;height:34px;flex-grow:1;}.src nav.sub{margin:0 0 15px 0;}.small-section-header{display:block;position:relative;}.small-section-header:hover>.anchor,.impl:hover>.anchor,.trait-impl:hover>.anchor,.variant:hover>.anchor{display:initial;}.anchor{display:none;position:absolute;left:-0.5em;background:none !important;}.anchor.field{left:-5px;}.small-section-header>.anchor{left:-15px;padding-right:8px;}h2.small-section-header>.anchor{padding-right:6px;}.main-heading a:hover,.example-wrap .rust a:hover,.all-items a:hover,.docblock a:not(.test-arrow):not(.scrape-help):not(.tooltip):hover,.docblock-short a:not(.test-arrow):not(.scrape-help):not(.tooltip):hover,.item-info a{text-decoration:underline;}.crate.block a.current{font-weight:500;}table,.item-table{overflow-wrap:break-word;}.item-table{display:table;padding:0;margin:0;}.item-table>li{display:table-row;}.item-table>li>div{display:table-cell;}.item-table>li>.item-name{padding-right:1.25rem;}.search-results-title{margin-top:0;white-space:nowrap;display:flex;align-items:baseline;}#crate-search-div{position:relative;min-width:5em;}#crate-search{min-width:115px;padding:0 23px 0 4px;max-width:100%;text-overflow:ellipsis;border:1px solid var(--border-color);border-radius:4px;outline:none;cursor:pointer;-moz-appearance:none;-webkit-appearance:none;text-indent:0.01px;background-color:var(--main-background-color);color:inherit;line-height:1.5;font-weight:500;}#crate-search:hover,#crate-search:focus{border-color:var(--crate-search-hover-border);}#crate-search-div::after{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;content:"";background-repeat:no-repeat;background-size:20px;background-position:calc(100% - 2px) 56%;background-image:url('data:image/svg+xml, \ - ');filter:var(--crate-search-div-filter);}#crate-search-div:hover::after,#crate-search-div:focus-within::after{filter:var(--crate-search-div-hover-filter);}#crate-search>option{font-size:1rem;}.search-input{-webkit-appearance:none;outline:none;border:1px solid var(--border-color);border-radius:2px;padding:8px;font-size:1rem;flex-grow:1;background-color:var(--button-background-color);color:var(--search-color);}.search-input:focus{border-color:var(--search-input-focused-border-color);}.search-results{display:none;}.search-results.active{display:block;}.search-results>a{display:flex;margin-left:2px;margin-right:2px;border-bottom:1px solid var(--search-result-border-color);gap:1em;}.search-results>a>div.desc{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex:2;}.search-results a:hover,.search-results a:focus{background-color:var(--search-result-link-focus-background-color);}.search-results .result-name{display:flex;align-items:center;justify-content:start;flex:3;}.search-results .result-name .alias{color:var(--search-results-alias-color);}.search-results .result-name .grey{color:var(--search-results-grey-color);}.search-results .result-name .typename{color:var(--search-results-grey-color);font-size:0.875rem;width:var(--search-typename-width);}.search-results .result-name .path{word-break:break-all;max-width:calc(100% - var(--search-typename-width));display:inline-block;}.search-results .result-name .path>*{display:inline;}.popover{position:absolute;top:100%;right:0;z-index:2;margin-top:7px;border-radius:3px;border:1px solid var(--border-color);background-color:var(--main-background-color);color:var(--main-color);--popover-arrow-offset:11px;}.popover::before{content:'';position:absolute;right:var(--popover-arrow-offset);border:solid var(--border-color);border-width:1px 1px 0 0;background-color:var(--main-background-color);padding:4px;transform:rotate(-45deg);top:-5px;}.setting-line{margin:1.2em 0.6em;}.setting-radio input,.setting-check input{margin-right:0.3em;height:1.2rem;width:1.2rem;border:2px solid var(--settings-input-border-color);outline:none;-webkit-appearance:none;cursor:pointer;}.setting-radio input{border-radius:50%;}.setting-radio span,.setting-check span{padding-bottom:1px;}.setting-radio{margin-top:0.1em;margin-bottom:0.1em;min-width:3.8em;padding:0.3em;display:inline-flex;align-items:center;cursor:pointer;}.setting-radio+.setting-radio{margin-left:0.5em;}.setting-check{margin-right:20px;display:flex;align-items:center;cursor:pointer;}.setting-radio input:checked{box-shadow:inset 0 0 0 3px var(--main-background-color);background-color:var(--settings-input-color);}.setting-check input:checked{background-color:var(--settings-input-color);border-width:1px;content:url('data:image/svg+xml,\ - \ - ');}.setting-radio input:focus,.setting-check input:focus{box-shadow:0 0 1px 1px var(--settings-input-color);}.setting-radio input:checked:focus{box-shadow:inset 0 0 0 3px var(--main-background-color),0 0 2px 2px var(--settings-input-color);}.setting-radio input:hover,.setting-check input:hover{border-color:var(--settings-input-color) !important;}#help.popover{max-width:600px;--popover-arrow-offset:48px;}#help dt{float:left;clear:left;margin-right:0.5rem;}#help span.top,#help span.bottom{text-align:center;display:block;font-size:1.125rem;}#help span.top{margin:10px 0;border-bottom:1px solid var(--border-color);padding-bottom:4px;margin-bottom:6px;}#help span.bottom{clear:both;border-top:1px solid var(--border-color);}.side-by-side>div{width:50%;float:left;padding:0 20px 20px 17px;}.item-info .stab{min-height:36px;display:flex;padding:3px;margin-bottom:5px;align-items:center;vertical-align:text-bottom;}.item-name .stab{margin-left:0.3125em;}.stab{padding:0 2px;font-size:0.875rem;font-weight:normal;color:var(--main-color);background-color:var(--stab-background-color);width:fit-content;white-space:pre-wrap;border-radius:3px;display:inline;}.stab.portability>code{background:none;color:var(--stab-code-color);}.stab .emoji{font-size:1.25rem;margin-right:0.3rem;}.emoji{text-shadow:1px 0 0 black,-1px 0 0 black,0 1px 0 black,0 -1px 0 black;}.since{font-weight:normal;font-size:initial;}.rightside{padding-left:12px;float:right;}.rightside:not(a),.out-of-band{color:var(--right-side-color);}pre.rust{tab-size:4;-moz-tab-size:4;}pre.rust .kw{color:var(--code-highlight-kw-color);}pre.rust .kw-2{color:var(--code-highlight-kw-2-color);}pre.rust .lifetime{color:var(--code-highlight-lifetime-color);}pre.rust .prelude-ty{color:var(--code-highlight-prelude-color);}pre.rust .prelude-val{color:var(--code-highlight-prelude-val-color);}pre.rust .string{color:var(--code-highlight-string-color);}pre.rust .number{color:var(--code-highlight-number-color);}pre.rust .bool-val{color:var(--code-highlight-literal-color);}pre.rust .self{color:var(--code-highlight-self-color);}pre.rust .attr{color:var(--code-highlight-attribute-color);}pre.rust .macro,pre.rust .macro-nonterminal{color:var(--code-highlight-macro-color);}pre.rust .question-mark{font-weight:bold;color:var(--code-highlight-question-mark-color);}pre.rust .comment{color:var(--code-highlight-comment-color);}pre.rust .doccomment{color:var(--code-highlight-doc-comment-color);}.rustdoc.src .example-wrap pre.rust a{background:var(--codeblock-link-background);}.example-wrap.compile_fail,.example-wrap.should_panic{border-left:2px solid var(--codeblock-error-color);}.ignore.example-wrap{border-left:2px solid var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover,.example-wrap.should_panic:hover{border-left:2px solid var(--codeblock-error-hover-color);}.example-wrap.ignore:hover{border-left:2px solid var(--codeblock-ignore-hover-color);}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip{color:var(--codeblock-error-color);}.example-wrap.ignore .tooltip{color:var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover .tooltip,.example-wrap.should_panic:hover .tooltip{color:var(--codeblock-error-hover-color);}.example-wrap.ignore:hover .tooltip{color:var(--codeblock-ignore-hover-color);}.example-wrap .tooltip{position:absolute;display:block;left:-25px;top:5px;margin:0;line-height:1;}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip,.example-wrap.ignore .tooltip{font-weight:bold;font-size:1.25rem;}.content .docblock .warning{border-left:2px solid var(--warning-border-color);padding:14px;position:relative;overflow-x:visible !important;}.content .docblock .warning::before{color:var(--warning-border-color);content:"ⓘ";position:absolute;left:-25px;top:5px;font-weight:bold;font-size:1.25rem;}a.test-arrow{visibility:hidden;position:absolute;padding:5px 10px 5px 10px;border-radius:5px;font-size:1.375rem;top:5px;right:5px;z-index:1;color:var(--test-arrow-color);background-color:var(--test-arrow-background-color);}a.test-arrow:hover{color:var(--test-arrow-hover-color);background-color:var(--test-arrow-hover-background-color);}.example-wrap:hover .test-arrow{visibility:visible;}.code-attribute{font-weight:300;color:var(--code-attribute-color);}.item-spacer{width:100%;height:12px;display:block;}.out-of-band>span.since{font-size:1.25rem;}.sub-variant h4{font-size:1rem;font-weight:400;margin-top:0;margin-bottom:0;}.sub-variant{margin-left:24px;margin-bottom:40px;}.sub-variant>.sub-variant-field{margin-left:24px;}:target{padding-right:3px;background-color:var(--target-background-color);border-right:3px solid var(--target-border-color);}.code-header a.tooltip{color:inherit;margin-right:15px;position:relative;}.code-header a.tooltip:hover{color:var(--link-color);}a.tooltip:hover::after{position:absolute;top:calc(100% - 10px);left:-15px;right:-15px;height:20px;content:"\00a0";}.fade-out{opacity:0;transition:opacity 0.45s cubic-bezier(0,0,0.1,1.0);}.popover.tooltip .content{margin:0.25em 0.5em;}.popover.tooltip .content pre,.popover.tooltip .content code{background:transparent;margin:0;padding:0;font-size:1.25rem;white-space:pre-wrap;}.popover.tooltip .content>h3:first-child{margin:0 0 5px 0;}.search-failed{text-align:center;margin-top:20px;display:none;}.search-failed.active{display:block;}.search-failed>ul{text-align:left;max-width:570px;margin-left:auto;margin-right:auto;}#search-tabs{display:flex;flex-direction:row;gap:1px;margin-bottom:4px;}#search-tabs button{text-align:center;font-size:1.125rem;border:0;border-top:2px solid;flex:1;line-height:1.5;color:inherit;}#search-tabs button:not(.selected){background-color:var(--search-tab-button-not-selected-background);border-top-color:var(--search-tab-button-not-selected-border-top-color);}#search-tabs button:hover,#search-tabs button.selected{background-color:var(--search-tab-button-selected-background);border-top-color:var(--search-tab-button-selected-border-top-color);}#search-tabs .count{font-size:1rem;font-variant-numeric:tabular-nums;color:var(--search-tab-title-count-color);}#search .error code{border-radius:3px;background-color:var(--search-error-code-background-color);}.search-corrections{font-weight:normal;}#src-sidebar-toggle{position:sticky;top:0;left:0;font-size:1.25rem;border-bottom:1px solid;display:flex;height:40px;justify-content:stretch;align-items:stretch;z-index:10;}#src-sidebar{width:100%;overflow:auto;}#src-sidebar>.title{font-size:1.5rem;text-align:center;border-bottom:1px solid var(--border-color);margin-bottom:6px;}#src-sidebar div.files>a:hover,details.dir-entry summary:hover,#src-sidebar div.files>a:focus,details.dir-entry summary:focus{background-color:var(--src-sidebar-background-hover);}#src-sidebar div.files>a.selected{background-color:var(--src-sidebar-background-selected);}#src-sidebar-toggle>button{font-size:inherit;font-weight:bold;background:none;color:inherit;text-align:center;border:none;outline:none;flex:1 1;-webkit-appearance:none;opacity:1;}#settings-menu,#help-button{margin-left:4px;display:flex;}#settings-menu>a,#help-button>a{display:flex;align-items:center;justify-content:center;background-color:var(--button-background-color);border:1px solid var(--border-color);border-radius:2px;color:var(--settings-button-color);font-size:20px;width:33px;}#settings-menu>a:hover,#settings-menu>a:focus,#help-button>a:hover,#help-button>a:focus{border-color:var(--settings-button-border-focus);}#copy-path{color:var(--copy-path-button-color);background:var(--main-background-color);height:34px;margin-left:10px;padding:0;padding-left:2px;border:0;width:33px;}#copy-path>img{filter:var(--copy-path-img-filter);}#copy-path:hover>img{filter:var(--copy-path-img-hover-filter);}@keyframes rotating{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}#settings-menu.rotate>a img{animation:rotating 2s linear infinite;}kbd{display:inline-block;padding:3px 5px;font:15px monospace;line-height:10px;vertical-align:middle;border:solid 1px var(--border-color);border-radius:3px;color:var(--kbd-color);background-color:var(--kbd-background);box-shadow:inset 0 -1px 0 var(--kbd-box-shadow-color);}ul.all-items>li{list-style:none;}details.dir-entry{padding-left:4px;}details.dir-entry>summary{margin:0 0 0 -4px;padding:0 0 0 4px;cursor:pointer;}details.dir-entry div.folders,details.dir-entry div.files{padding-left:23px;}details.dir-entry a{display:block;}details.toggle{contain:layout;position:relative;}details.toggle>summary.hideme{cursor:pointer;font-size:1rem;}details.toggle>summary{list-style:none;outline:none;}details.toggle>summary::-webkit-details-marker,details.toggle>summary::marker{display:none;}details.toggle>summary.hideme>span{margin-left:9px;}details.toggle>summary::before{background:url('data:image/svg+xml,') no-repeat top left;content:"";cursor:pointer;width:16px;height:16px;display:inline-block;vertical-align:middle;opacity:.5;filter:var(--toggle-filter);}details.toggle>summary.hideme>span,.more-examples-toggle summary,.more-examples-toggle .hide-more{color:var(--toggles-color);}details.toggle>summary::after{content:"Expand";overflow:hidden;width:0;height:0;position:absolute;}details.toggle>summary.hideme::after{content:"";}details.toggle>summary:focus::before,details.toggle>summary:hover::before{opacity:1;}details.toggle>summary:focus-visible::before{outline:1px dotted #000;outline-offset:1px;}details.non-exhaustive{margin-bottom:8px;}details.toggle>summary.hideme::before{position:relative;}details.toggle>summary:not(.hideme)::before{position:absolute;left:-24px;top:4px;}.impl-items>details.toggle>summary:not(.hideme)::before{position:absolute;left:-24px;}details.toggle[open] >summary.hideme{position:absolute;}details.toggle[open] >summary.hideme>span{display:none;}details.toggle[open] >summary::before{background:url('data:image/svg+xml,') no-repeat top left;}details.toggle[open] >summary::after{content:"Collapse";}.docblock summary>*{display:inline-block;}.docblock>.example-wrap:first-child .tooltip{margin-top:16px;}@media (max-width:850px){#search-tabs .count{display:block;}}@media (max-width:700px){*[id]{scroll-margin-top:45px;}.rustdoc{display:block;}main{padding-left:15px;padding-top:0px;}.main-heading{flex-direction:column;}.out-of-band{text-align:left;margin-left:initial;padding:initial;}.out-of-band .since::before{content:"Since ";}.sidebar .logo-container,.sidebar .location{display:none;}.sidebar{position:fixed;top:45px;left:-1000px;z-index:11;height:calc(100vh - 45px);width:200px;}.src main,.rustdoc.src .sidebar{top:0;padding:0;height:100vh;border:0;}.sidebar.shown,.src-sidebar-expanded .src .sidebar,.rustdoc:not(.src) .sidebar:focus-within{left:0;}.mobile-topbar h2{padding-bottom:0;margin:auto 0.5em auto auto;overflow:hidden;font-size:24px;}.mobile-topbar h2 a{display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;}.mobile-topbar .logo-container>img{max-width:35px;max-height:35px;margin:5px 0 5px 20px;}.mobile-topbar{display:flex;flex-direction:row;position:sticky;z-index:10;font-size:2rem;height:45px;width:100%;left:0;top:0;}.sidebar-menu-toggle{width:45px;font-size:32px;border:none;color:var(--main-color);}.sidebar-elems{margin-top:1em;}.anchor{display:none !important;}#main-content>details.toggle>summary::before,#main-content>div>details.toggle>summary::before{left:-11px;}#src-sidebar-toggle{position:fixed;left:1px;top:100px;width:30px;font-size:1.5rem;padding:0;z-index:10;border-top-right-radius:3px;border-bottom-right-radius:3px;border:1px solid;border-left:0;}.src-sidebar-expanded #src-sidebar-toggle{left:unset;top:unset;width:unset;border-top-right-radius:unset;border-bottom-right-radius:unset;position:sticky;border:0;border-bottom:1px solid;}#copy-path,#help-button{display:none;}.item-table,.item-row,.item-table>li,.item-table>li>div,.search-results>a,.search-results>a>div{display:block;}.search-results>a{padding:5px 0px;}.search-results>a>div.desc,.item-table>li>div.desc{padding-left:2em;}.search-results .result-name{display:block;}.search-results .result-name .typename{width:initial;margin-right:0;}.search-results .result-name .typename,.search-results .result-name .path{display:inline;}.src-sidebar-expanded .src .sidebar{max-width:100vw;width:100vw;}details.toggle:not(.top-doc)>summary{margin-left:10px;}.impl-items>details.toggle>summary:not(.hideme)::before,#main-content>details.toggle:not(.top-doc)>summary::before,#main-content>div>details.toggle>summary::before{left:-11px;}.impl-items>.item-info{margin-left:34px;}.src nav.sub{margin:0;padding:var(--nav-sub-mobile-padding);}}@media (min-width:701px){.scraped-example-title{position:absolute;z-index:10;background:var(--main-background-color);bottom:8px;right:5px;padding:2px 4px;box-shadow:0 0 4px var(--main-background-color);}}@media print{nav.sidebar,nav.sub,.out-of-band,a.src,#copy-path,details.toggle[open] >summary::before,details.toggle>summary::before,details.toggle.top-doc>summary{display:none;}.docblock{margin-left:0;}main{padding:10px;}}@media (max-width:464px){.docblock{margin-left:12px;}.docblock code{overflow-wrap:break-word;overflow-wrap:anywhere;}nav.sub{flex-direction:column;}.search-form{align-self:stretch;}.sub-logo-container>img{height:35px;width:35px;margin-bottom:var(--nav-sub-mobile-padding);}}.variant,.implementors-toggle>summary,.impl,#implementors-list>.docblock,.impl-items>section,.impl-items>.toggle>summary,.methods>section,.methods>.toggle>summary{margin-bottom:0.75em;}.variants>.docblock,.implementors-toggle>.docblock,.impl-items>.toggle[open]:not(:last-child),.methods>.toggle[open]:not(:last-child),.implementors-toggle[open]:not(:last-child){margin-bottom:2em;}#trait-implementations-list .impl-items>.toggle:not(:last-child),#synthetic-implementations-list .impl-items>.toggle:not(:last-child),#blanket-implementations-list .impl-items>.toggle:not(:last-child){margin-bottom:1em;}.scraped-example-list .scrape-help{margin-left:10px;padding:0 4px;font-weight:normal;font-size:12px;position:relative;bottom:1px;border:1px solid var(--scrape-example-help-border-color);border-radius:50px;color:var(--scrape-example-help-color);}.scraped-example-list .scrape-help:hover{border-color:var(--scrape-example-help-hover-border-color);color:var(--scrape-example-help-hover-color);}.scraped-example{position:relative;}.scraped-example .code-wrapper{position:relative;display:flex;flex-direction:row;flex-wrap:wrap;width:100%;}.scraped-example:not(.expanded) .code-wrapper{max-height:calc(1.5em * 5 + 10px);}.scraped-example:not(.expanded) .code-wrapper pre{overflow-y:hidden;padding-bottom:0;max-height:calc(1.5em * 5 + 10px);}.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper,.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper pre{max-height:calc(1.5em * 10 + 10px);}.scraped-example .code-wrapper .next,.scraped-example .code-wrapper .prev,.scraped-example .code-wrapper .expand{color:var(--main-color);position:absolute;top:0.25em;z-index:1;padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.scraped-example .code-wrapper .prev{right:2.25em;}.scraped-example .code-wrapper .next{right:1.25em;}.scraped-example .code-wrapper .expand{right:0.25em;}.scraped-example:not(.expanded) .code-wrapper::before,.scraped-example:not(.expanded) .code-wrapper::after{content:" ";width:100%;height:5px;position:absolute;z-index:1;}.scraped-example:not(.expanded) .code-wrapper::before{top:0;background:linear-gradient(to bottom,var(--scrape-example-code-wrapper-background-start),var(--scrape-example-code-wrapper-background-end));}.scraped-example:not(.expanded) .code-wrapper::after{bottom:0;background:linear-gradient(to top,var(--scrape-example-code-wrapper-background-start),var(--scrape-example-code-wrapper-background-end));}.scraped-example .code-wrapper .example-wrap{width:100%;overflow-y:hidden;margin-bottom:0;}.scraped-example:not(.expanded) .code-wrapper .example-wrap{overflow-x:hidden;}.scraped-example .example-wrap .rust span.highlight{background:var(--scrape-example-code-line-highlight);}.scraped-example .example-wrap .rust span.highlight.focus{background:var(--scrape-example-code-line-highlight-focus);}.more-examples-toggle{max-width:calc(100% + 25px);margin-top:10px;margin-left:-25px;}.more-examples-toggle .hide-more{margin-left:25px;cursor:pointer;}.more-scraped-examples{margin-left:25px;position:relative;}.toggle-line{position:absolute;top:5px;bottom:0;right:calc(100% + 10px);padding:0 4px;cursor:pointer;}.toggle-line-inner{min-width:2px;height:100%;background:var(--scrape-example-toggle-line-background);}.toggle-line:hover .toggle-line-inner{background:var(--scrape-example-toggle-line-hover-background);}.more-scraped-examples .scraped-example,.example-links{margin-top:20px;}.more-scraped-examples .scraped-example:first-child{margin-top:5px;}.example-links ul{margin-bottom:0;}:root[data-theme="light"]{--main-background-color:white;--main-color:black;--settings-input-color:#2196f3;--settings-input-border-color:#717171;--settings-button-color:#000;--settings-button-border-focus:#717171;--sidebar-background-color:#f5f5f5;--sidebar-background-color-hover:#e0e0e0;--code-block-background-color:#f5f5f5;--scrollbar-track-background-color:#dcdcdc;--scrollbar-thumb-background-color:rgba(36,37,39,0.6);--scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;--headings-border-bottom-color:#ddd;--border-color:#e0e0e0;--button-background-color:#fff;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:none;--search-input-focused-border-color:#66afe9;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(35%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ad378a;--trait-link-color:#6e4fc9;--assoc-item-link-color:#3873ad;--function-link-color:#ad7c37;--macro-link-color:#068000;--keyword-link-color:#3873ad;--mod-link-color:#3873ad;--link-color:#3873ad;--sidebar-link-color:#356da4;--sidebar-current-link-background-color:#fff;--search-result-link-focus-background-color:#ccc;--search-result-border-color:#aaa3;--search-color:#000;--search-error-code-background-color:#d0cccc;--search-results-alias-color:#000;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#e6e6e6;--search-tab-button-not-selected-background:#e6e6e6;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#fff;--stab-background-color:#fff5d6;--stab-code-color:#000;--code-highlight-kw-color:#8959a8;--code-highlight-kw-2-color:#4271ae;--code-highlight-lifetime-color:#b76514;--code-highlight-prelude-color:#4271ae;--code-highlight-prelude-val-color:#c82829;--code-highlight-number-color:#718c00;--code-highlight-string-color:#718c00;--code-highlight-literal-color:#c82829;--code-highlight-attribute-color:#c82829;--code-highlight-self-color:#c82829;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8e908c;--code-highlight-doc-comment-color:#4d4d4c;--src-line-numbers-span-color:#c67e2d;--src-line-number-highlighted-background-color:#fdffd3;--test-arrow-color:#f5f5f5;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#f5f5f5;--test-arrow-hover-background-color:rgb(78,139,202);--target-background-color:#fdffd3;--target-border-color:#ad7c37;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:initial;--crate-search-div-filter:invert(100%) sepia(0%) saturate(4223%) hue-rotate(289deg) brightness(114%) contrast(76%);--crate-search-div-hover-filter:invert(44%) sepia(18%) saturate(23%) hue-rotate(317deg) brightness(96%) contrast(93%);--crate-search-hover-border:#717171;--src-sidebar-background-selected:#fff;--src-sidebar-background-hover:#e0e0e0;--table-alt-row-background-color:#f5f5f5;--codeblock-link-background:#eee;--scrape-example-toggle-line-background:#ccc;--scrape-example-toggle-line-hover-background:#999;--scrape-example-code-line-highlight:#fcffd6;--scrape-example-code-line-highlight-focus:#f6fdb0;--scrape-example-help-border-color:#555;--scrape-example-help-color:#333;--scrape-example-help-hover-border-color:#000;--scrape-example-help-hover-color:#000;--scrape-example-code-wrapper-background-start:rgba(255,255,255,1);--scrape-example-code-wrapper-background-end:rgba(255,255,255,0);}:root[data-theme="dark"]{--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--settings-input-border-color:#999;--settings-button-color:#000;--settings-button-border-focus:#ffb900;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--search-result-border-color:#aaa3;--search-color:#111;--search-error-code-background-color:#484848;--search-results-alias-color:#fff;--search-results-grey-color:#ccc;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#252525;--search-tab-button-not-selected-background:#252525;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#353535;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;--test-arrow-color:#dedede;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#dedede;--test-arrow-hover-background-color:#4e8bca;--target-background-color:#494a3d;--target-border-color:#bb7410;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);--crate-search-div-hover-filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);--crate-search-hover-border:#2196f3;--src-sidebar-background-selected:#333;--src-sidebar-background-hover:#444;--table-alt-row-background-color:#2a2a2a;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(53,53,53,1);--scrape-example-code-wrapper-background-end:rgba(53,53,53,0);}:root[data-theme="ayu"]{--main-background-color:#0f1419;--main-color:#c5c5c5;--settings-input-color:#ffb454;--settings-input-border-color:#999;--settings-button-color:#fff;--settings-button-border-focus:#e0e0e0;--sidebar-background-color:#14191f;--sidebar-background-color-hover:rgba(70,70,70,0.33);--code-block-background-color:#191f26;--scrollbar-track-background-color:transparent;--scrollbar-thumb-background-color:#5c6773;--scrollbar-color:#5c6773 #24292f;--headings-border-bottom-color:#5c6773;--border-color:#5c6773;--button-background-color:#141920;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--search-input-focused-border-color:#5c6773;--copy-path-button-color:#fff;--copy-path-img-filter:invert(70%);--copy-path-img-hover-filter:invert(100%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ffa0a5;--trait-link-color:#39afd7;--assoc-item-link-color:#39afd7;--function-link-color:#fdd687;--macro-link-color:#a37acc;--keyword-link-color:#39afd7;--mod-link-color:#39afd7;--link-color:#39afd7;--sidebar-link-color:#53b1db;--sidebar-current-link-background-color:transparent;--search-result-link-focus-background-color:#3c3c3c;--search-result-border-color:#aaa3;--search-color:#fff;--search-error-code-background-color:#4f4c4c;--search-results-alias-color:#c5c5c5;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:none;--search-tab-button-not-selected-background:transparent !important;--search-tab-button-selected-border-top-color:none;--search-tab-button-selected-background:#141920 !important;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ff7733;--code-highlight-kw-2-color:#ff7733;--code-highlight-lifetime-color:#ff7733;--code-highlight-prelude-color:#69f2df;--code-highlight-prelude-val-color:#ff7733;--code-highlight-number-color:#b8cc52;--code-highlight-string-color:#b8cc52;--code-highlight-literal-color:#ff7733;--code-highlight-attribute-color:#e6e1cf;--code-highlight-self-color:#36a3d9;--code-highlight-macro-color:#a37acc;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#788797;--code-highlight-doc-comment-color:#a1ac88;--src-line-numbers-span-color:#5c6773;--src-line-number-highlighted-background-color:rgba(255,236,164,0.06);--test-arrow-color:#788797;--test-arrow-background-color:rgba(57,175,215,0.09);--test-arrow-hover-color:#c5c5c5;--test-arrow-hover-background-color:rgba(57,175,215,0.368);--target-background-color:rgba(255,236,164,0.06);--target-border-color:rgba(255,180,76,0.85);--kbd-color:#c5c5c5;--kbd-background:#314559;--kbd-box-shadow-color:#5c6773;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(41%) sepia(12%) saturate(487%) hue-rotate(171deg) brightness(94%) contrast(94%);--crate-search-div-hover-filter:invert(98%) sepia(12%) saturate(81%) hue-rotate(343deg) brightness(113%) contrast(76%);--crate-search-hover-border:#e0e0e0;--src-sidebar-background-selected:#14191f;--src-sidebar-background-hover:#14191f;--table-alt-row-background-color:#191f26;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(15,20,25,1);--scrape-example-code-wrapper-background-end:rgba(15,20,25,0);}:root[data-theme="ayu"] h1,:root[data-theme="ayu"] h2,:root[data-theme="ayu"] h3,:root[data-theme="ayu"] h4,:where(:root[data-theme="ayu"]) h1 a,:root[data-theme="ayu"] .sidebar h2 a,:root[data-theme="ayu"] .sidebar h3 a,:root[data-theme="ayu"] #source-sidebar>.title{color:#fff;}:root[data-theme="ayu"] .docblock code{color:#ffb454;}:root[data-theme="ayu"] .docblock a>code{color:#39AFD7 !important;}:root[data-theme="ayu"] .code-header,:root[data-theme="ayu"] .docblock pre>code,:root[data-theme="ayu"] pre,:root[data-theme="ayu"] pre>code,:root[data-theme="ayu"] .item-info code,:root[data-theme="ayu"] .rustdoc.source .example-wrap{color:#e6e1cf;}:root[data-theme="ayu"] .sidebar .current,:root[data-theme="ayu"] .sidebar a:hover,:root[data-theme="ayu"] #src-sidebar div.files>a:hover,:root[data-theme="ayu"] details.dir-entry summary:hover,:root[data-theme="ayu"] #src-sidebar div.files>a:focus,:root[data-theme="ayu"] details.dir-entry summary:focus,:root[data-theme="ayu"] #src-sidebar div.files>a.selected{color:#ffb44c;}:root[data-theme="ayu"] .sidebar-elems .location{color:#ff7733;}:root[data-theme="ayu"] .src-line-numbers .line-highlighted{color:#708090;padding-right:7px;border-right:1px solid #ffb44c;}:root[data-theme="ayu"] .search-results a:hover,:root[data-theme="ayu"] .search-results a:focus{color:#fff !important;background-color:#3c3c3c;}:root[data-theme="ayu"] .search-results a{color:#0096cf;}:root[data-theme="ayu"] .search-results a div.desc{color:#c5c5c5;}:root[data-theme="ayu"] .result-name .primitive>i,:root[data-theme="ayu"] .result-name .keyword>i{color:#788797;}:root[data-theme="ayu"] #search-tabs>button.selected{border-bottom:1px solid #ffb44c !important;border-top:none;}:root[data-theme="ayu"] #search-tabs>button:not(.selected){border:none;background-color:transparent !important;}:root[data-theme="ayu"] #search-tabs>button:hover{border-bottom:1px solid rgba(242,151,24,0.3);}:root[data-theme="ayu"] #settings-menu>a img{filter:invert(100);} \ No newline at end of file diff --git a/static.files/scrape-examples-46fc985aa763a438.js b/static.files/scrape-examples-46fc985aa763a438.js new file mode 100644 index 0000000..87b6065 --- /dev/null +++ b/static.files/scrape-examples-46fc985aa763a438.js @@ -0,0 +1 @@ +"use strict";(function(){const DEFAULT_MAX_LINES=5;const HIDDEN_MAX_LINES=10;function scrollToLoc(elt,loc,isHidden){const lines=elt.querySelector(".src-line-numbers > pre");let scrollOffset;const maxLines=isHidden?HIDDEN_MAX_LINES:DEFAULT_MAX_LINES;if(loc[1]-loc[0]>maxLines){const line=Math.max(0,loc[0]-1);scrollOffset=lines.children[line].offsetTop}else{const halfHeight=elt.offsetHeight/2;const offsetTop=lines.children[loc[0]].offsetTop;const lastLine=lines.children[loc[1]];const offsetBot=lastLine.offsetTop+lastLine.offsetHeight;const offsetMid=(offsetTop+offsetBot)/2;scrollOffset=offsetMid-halfHeight}lines.parentElement.scrollTo(0,scrollOffset);elt.querySelector(".rust").scrollTo(0,scrollOffset)}function createScrapeButton(parent,className,content){const button=document.createElement("button");button.className=className;button.innerText=content;parent.insertBefore(button,parent.firstChild);return button}window.updateScrapedExample=(example,buttonHolder)=>{let locIndex=0;const highlights=Array.prototype.slice.call(example.querySelectorAll(".highlight"));const link=example.querySelector(".scraped-example-title a");let expandButton=null;if(!example.classList.contains("expanded")){expandButton=createScrapeButton(buttonHolder,"expand","↕")}const isHidden=example.parentElement.classList.contains("more-scraped-examples");const locs=example.locs;if(locs.length>1){const next=createScrapeButton(buttonHolder,"next","≻");const prev=createScrapeButton(buttonHolder,"prev","≺");const onChangeLoc=changeIndex=>{removeClass(highlights[locIndex],"focus");changeIndex();scrollToLoc(example,locs[locIndex][0],isHidden);addClass(highlights[locIndex],"focus");const url=locs[locIndex][1];const title=locs[locIndex][2];link.href=url;link.innerHTML=title};prev.addEventListener("click",()=>{onChangeLoc(()=>{locIndex=(locIndex-1+locs.length)%locs.length})});next.addEventListener("click",()=>{onChangeLoc(()=>{locIndex=(locIndex+1)%locs.length})})}if(expandButton){expandButton.addEventListener("click",()=>{if(hasClass(example,"expanded")){removeClass(example,"expanded");scrollToLoc(example,locs[0][0],isHidden)}else{addClass(example,"expanded")}})}};function setupLoc(example,isHidden){example.locs=JSON.parse(example.attributes.getNamedItem("data-locs").textContent);scrollToLoc(example,example.locs[0][0],isHidden)}const firstExamples=document.querySelectorAll(".scraped-example-list > .scraped-example");onEachLazy(firstExamples,el=>setupLoc(el,false));onEachLazy(document.querySelectorAll(".more-examples-toggle"),toggle=>{onEachLazy(toggle.querySelectorAll(".toggle-line, .hide-more"),button=>{button.addEventListener("click",()=>{toggle.open=false})});const moreExamples=toggle.querySelectorAll(".scraped-example");toggle.querySelector("summary").addEventListener("click",()=>{setTimeout(()=>{onEachLazy(moreExamples,el=>setupLoc(el,true))})},{once:true})})})() \ No newline at end of file diff --git a/static.files/scrape-examples-ef1e698c1d417c0c.js b/static.files/scrape-examples-ef1e698c1d417c0c.js deleted file mode 100644 index ba830e3..0000000 --- a/static.files/scrape-examples-ef1e698c1d417c0c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(function(){const DEFAULT_MAX_LINES=5;const HIDDEN_MAX_LINES=10;function scrollToLoc(elt,loc,isHidden){const lines=elt.querySelector(".src-line-numbers");let scrollOffset;const maxLines=isHidden?HIDDEN_MAX_LINES:DEFAULT_MAX_LINES;if(loc[1]-loc[0]>maxLines){const line=Math.max(0,loc[0]-1);scrollOffset=lines.children[line].offsetTop}else{const wrapper=elt.querySelector(".code-wrapper");const halfHeight=wrapper.offsetHeight/2;const offsetTop=lines.children[loc[0]].offsetTop;const lastLine=lines.children[loc[1]];const offsetBot=lastLine.offsetTop+lastLine.offsetHeight;const offsetMid=(offsetTop+offsetBot)/2;scrollOffset=offsetMid-halfHeight}lines.scrollTo(0,scrollOffset);elt.querySelector(".rust").scrollTo(0,scrollOffset)}function updateScrapedExample(example,isHidden){const locs=JSON.parse(example.attributes.getNamedItem("data-locs").textContent);let locIndex=0;const highlights=Array.prototype.slice.call(example.querySelectorAll(".highlight"));const link=example.querySelector(".scraped-example-title a");if(locs.length>1){const onChangeLoc=changeIndex=>{removeClass(highlights[locIndex],"focus");changeIndex();scrollToLoc(example,locs[locIndex][0],isHidden);addClass(highlights[locIndex],"focus");const url=locs[locIndex][1];const title=locs[locIndex][2];link.href=url;link.innerHTML=title};example.querySelector(".prev").addEventListener("click",()=>{onChangeLoc(()=>{locIndex=(locIndex-1+locs.length)%locs.length})});example.querySelector(".next").addEventListener("click",()=>{onChangeLoc(()=>{locIndex=(locIndex+1)%locs.length})})}const expandButton=example.querySelector(".expand");if(expandButton){expandButton.addEventListener("click",()=>{if(hasClass(example,"expanded")){removeClass(example,"expanded");scrollToLoc(example,locs[0][0],isHidden)}else{addClass(example,"expanded")}})}scrollToLoc(example,locs[0][0],isHidden)}const firstExamples=document.querySelectorAll(".scraped-example-list > .scraped-example");onEachLazy(firstExamples,el=>updateScrapedExample(el,false));onEachLazy(document.querySelectorAll(".more-examples-toggle"),toggle=>{onEachLazy(toggle.querySelectorAll(".toggle-line, .hide-more"),button=>{button.addEventListener("click",()=>{toggle.open=false})});const moreExamples=toggle.querySelectorAll(".scraped-example");toggle.querySelector("summary").addEventListener("click",()=>{setTimeout(()=>{onEachLazy(moreExamples,el=>updateScrapedExample(el,true))})},{once:true})})})() \ No newline at end of file diff --git a/static.files/search-8be46b629f5f14a8.js b/static.files/search-8be46b629f5f14a8.js deleted file mode 100644 index 4ecf5c5..0000000 --- a/static.files/search-8be46b629f5f14a8.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict";if(!Array.prototype.toSpliced){Array.prototype.toSpliced=function(){const me=this.slice();Array.prototype.splice.apply(me,arguments);return me}}(function(){const itemTypes=["mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","primitive","associatedtype","constant","associatedconstant","union","foreigntype","keyword","existential","attr","derive","traitalias","generic",];const longItemTypes=["module","extern crate","re-export","struct","enum","function","type alias","static","trait","","trait method","method","struct field","enum variant","macro","primitive type","assoc type","constant","assoc const","union","foreign type","keyword","existential type","attribute macro","derive macro","trait alias",];const TY_PRIMITIVE=itemTypes.indexOf("primitive");const TY_KEYWORD=itemTypes.indexOf("keyword");const TY_GENERIC=itemTypes.indexOf("generic");const ROOT_PATH=typeof window!=="undefined"?window.rootPath:"../";function hasOwnPropertyRustdoc(obj,property){return Object.prototype.hasOwnProperty.call(obj,property)}function printTab(nb){let iter=0;let foundCurrentTab=false;let foundCurrentResultSet=false;onEachLazy(document.getElementById("search-tabs").childNodes,elem=>{if(nb===iter){addClass(elem,"selected");foundCurrentTab=true}else{removeClass(elem,"selected")}iter+=1});const isTypeSearch=(nb>0||iter===1);iter=0;onEachLazy(document.getElementById("results").childNodes,elem=>{if(nb===iter){addClass(elem,"active");foundCurrentResultSet=true}else{removeClass(elem,"active")}iter+=1});if(foundCurrentTab&&foundCurrentResultSet){searchState.currentTab=nb;const correctionsElem=document.getElementsByClassName("search-corrections");if(isTypeSearch){removeClass(correctionsElem[0],"hidden")}else{addClass(correctionsElem[0],"hidden")}}else if(nb!==0){printTab(0)}}const editDistanceState={current:[],prev:[],prevPrev:[],calculate:function calculate(a,b,limit){if(a.lengthlimit){return limit+1}while(b.length>0&&b[0]===a[0]){a=a.substring(1);b=b.substring(1)}while(b.length>0&&b[b.length-1]===a[a.length-1]){a=a.substring(0,a.length-1);b=b.substring(0,b.length-1)}if(b.length===0){return minDist}const aLength=a.length;const bLength=b.length;for(let i=0;i<=bLength;++i){this.current[i]=0;this.prev[i]=i;this.prevPrev[i]=Number.MAX_VALUE}for(let i=1;i<=aLength;++i){this.current[0]=i;const aIdx=i-1;for(let j=1;j<=bLength;++j){const bIdx=j-1;const substitutionCost=a[aIdx]===b[bIdx]?0:1;this.current[j]=Math.min(this.prev[j]+1,this.current[j-1]+1,this.prev[j-1]+substitutionCost);if((i>1)&&(j>1)&&(a[aIdx]===b[bIdx-1])&&(a[aIdx-1]===b[bIdx])){this.current[j]=Math.min(this.current[j],this.prevPrev[j-2]+1)}}const prevPrevTmp=this.prevPrev;this.prevPrev=this.prev;this.prev=this.current;this.current=prevPrevTmp}const distance=this.prev[bLength];return distance<=limit?distance:(limit+1)},};function editDistance(a,b,limit){return editDistanceState.calculate(a,b,limit)}function initSearch(rawSearchIndex){const MAX_RESULTS=200;const NO_TYPE_FILTER=-1;let searchIndex;let currentResults;let typeNameIdMap;const ALIASES=new Map();let typeNameIdOfArray;let typeNameIdOfSlice;let typeNameIdOfArrayOrSlice;function buildTypeMapIndex(name){if(name===""||name===null){return null}if(typeNameIdMap.has(name)){return typeNameIdMap.get(name)}else{const id=typeNameIdMap.size;typeNameIdMap.set(name,id);return id}}function isWhitespace(c){return" \t\n\r".indexOf(c)!==-1}function isSpecialStartCharacter(c){return"<\"".indexOf(c)!==-1}function isEndCharacter(c){return",>-]".indexOf(c)!==-1}function isStopCharacter(c){return isEndCharacter(c)}function isErrorCharacter(c){return"()".indexOf(c)!==-1}function itemTypeFromName(typename){const index=itemTypes.findIndex(i=>i===typename);if(index<0){throw["Unknown type filter ",typename]}return index}function getStringElem(query,parserState,isInGenerics){if(isInGenerics){throw["Unexpected ","\""," in generics"]}else if(query.literalSearch){throw["Cannot have more than one literal search element"]}else if(parserState.totalElems-parserState.genericsElems>0){throw["Cannot use literal search when there is more than one element"]}parserState.pos+=1;const start=parserState.pos;const end=getIdentEndPosition(parserState);if(parserState.pos>=parserState.length){throw["Unclosed ","\""]}else if(parserState.userQuery[end]!=="\""){throw["Unexpected ",parserState.userQuery[end]," in a string element"]}else if(start===end){throw["Cannot have empty string element"]}parserState.pos+=1;query.literalSearch=true}function isPathStart(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="::"}function isReturnArrow(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="->"}function isIdentCharacter(c){return(c==="_"||(c>="0"&&c<="9")||(c>="a"&&c<="z")||(c>="A"&&c<="Z"))}function isSeparatorCharacter(c){return c===","}function isPathSeparator(c){return c===":"||isWhitespace(c)}function prevIs(parserState,lookingFor){let pos=parserState.pos;while(pos>0){const c=parserState.userQuery[pos-1];if(c===lookingFor){return true}else if(!isWhitespace(c)){break}pos-=1}return false}function isLastElemGeneric(elems,parserState){return(elems.length>0&&elems[elems.length-1].generics.length>0)||prevIs(parserState,">")}function skipWhitespace(parserState){while(parserState.pos0){throw["Cannot have more than one element if you use quotes"]}const typeFilter=parserState.typeFilter;parserState.typeFilter=null;if(name==="!"){if(typeFilter!==null&&typeFilter!=="primitive"){throw["Invalid search type: primitive never type ","!"," and ",typeFilter," both specified",]}if(generics.length!==0){throw["Never type ","!"," does not accept generic parameters",]}return{name:"never",id:null,fullPath:["never"],pathWithoutLast:[],pathLast:"never",generics:[],typeFilter:"primitive",}}if(path.startsWith("::")){throw["Paths cannot start with ","::"]}else if(path.endsWith("::")){throw["Paths cannot end with ","::"]}else if(path.includes("::::")){throw["Unexpected ","::::"]}else if(path.includes(" ::")){throw["Unexpected "," ::"]}else if(path.includes(":: ")){throw["Unexpected ",":: "]}const pathSegments=path.split(/::|\s+/);if(pathSegments.length===0||(pathSegments.length===1&&pathSegments[0]==="")){if(generics.length>0||prevIs(parserState,">")){throw["Found generics without a path"]}else{throw["Unexpected ",parserState.userQuery[parserState.pos]]}}for(const[i,pathSegment]of pathSegments.entries()){if(pathSegment==="!"){if(i!==0){throw["Never type ","!"," is not associated item"]}pathSegments[i]="never"}}parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}return{name:name.trim(),id:null,fullPath:pathSegments,pathWithoutLast:pathSegments.slice(0,pathSegments.length-1),pathLast:pathSegments[pathSegments.length-1],generics:generics,typeFilter,}}function getIdentEndPosition(parserState){const start=parserState.pos;let end=parserState.pos;let foundExclamation=-1;while(parserState.pos=end){throw["Found generics without a path"]}parserState.pos+=1;getItemsBefore(query,parserState,generics,">")}if(isStringElem){skipWhitespace(parserState)}if(start>=end&&generics.length===0){return}elems.push(createQueryElement(query,parserState,parserState.userQuery.slice(start,end),generics,isInGenerics))}}function getItemsBefore(query,parserState,elems,endChar){let foundStopChar=true;let start=parserState.pos;const oldTypeFilter=parserState.typeFilter;parserState.typeFilter=null;let extra="";if(endChar===">"){extra="<"}else if(endChar==="]"){extra="["}else if(endChar===""){extra="->"}else{extra=endChar}while(parserState.pos"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(endChar!==""){throw["Expected ",","," or ",endChar,...extra,", found ",c,]}throw["Expected ",",",...extra,", found ",c,]}const posBefore=parserState.pos;start=parserState.pos;getNextElem(query,parserState,elems,endChar!=="");if(endChar!==""&&parserState.pos>=parserState.length){throw["Unclosed ",extra]}if(posBefore===parserState.pos){parserState.pos+=1}foundStopChar=false}if(parserState.pos>=parserState.length&&endChar!==""){throw["Unclosed ",extra]}parserState.pos+=1;parserState.typeFilter=oldTypeFilter}function checkExtraTypeFilterCharacters(start,parserState){const query=parserState.userQuery.slice(start,parserState.pos).trim();for(const c in query){if(!isIdentCharacter(query[c])){throw["Unexpected ",query[c]," in type filter (before ",":",")",]}}}function parseInput(query,parserState){let foundStopChar=true;let start=parserState.pos;while(parserState.pos"){if(isReturnArrow(parserState)){break}throw["Unexpected ",c," (did you mean ","->","?)"]}throw["Unexpected ",c]}else if(c===":"&&!isPathStart(parserState)){if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}else if(query.elems.length===0){throw["Expected type filter before ",":"]}else if(query.literalSearch){throw["Cannot use quotes on type filter"]}const typeFilterElem=query.elems.pop();checkExtraTypeFilterCharacters(start,parserState);parserState.typeFilter=typeFilterElem.name;parserState.pos+=1;parserState.totalElems-=1;query.literalSearch=false;foundStopChar=true;continue}else if(isWhitespace(c)){skipWhitespace(parserState);continue}if(!foundStopChar){let extra="";if(isLastElemGeneric(query.elems,parserState)){extra=[" after ",">"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(parserState.typeFilter!==null){throw["Expected ",","," or ","->",...extra,", found ",c,]}throw["Expected ",",",", ",":"," or ","->",...extra,", found ",c,]}const before=query.elems.length;start=parserState.pos;getNextElem(query,parserState,query.elems,false);if(query.elems.length===before){parserState.pos+=1}foundStopChar=false}if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}while(parserState.pos"]}break}else{parserState.pos+=1}}}function newParsedQuery(userQuery){return{original:userQuery,userQuery:userQuery.toLowerCase(),elems:[],returned:[],foundElems:0,totalElems:0,literalSearch:false,error:null,correction:null,proposeCorrectionFrom:null,proposeCorrectionTo:null,}}function buildUrl(search,filterCrates){let extra="?search="+encodeURIComponent(search);if(filterCrates!==null){extra+="&filter-crate="+encodeURIComponent(filterCrates)}return getNakedUrl()+extra+window.location.hash}function getFilterCrates(){const elem=document.getElementById("crate-search");if(elem&&elem.value!=="all crates"&&hasOwnPropertyRustdoc(rawSearchIndex,elem.value)){return elem.value}return null}function parseQuery(userQuery){function convertTypeFilterOnElem(elem){if(elem.typeFilter!==null){let typeFilter=elem.typeFilter;if(typeFilter==="const"){typeFilter="constant"}elem.typeFilter=itemTypeFromName(typeFilter)}else{elem.typeFilter=NO_TYPE_FILTER}for(const elem2 of elem.generics){convertTypeFilterOnElem(elem2)}}userQuery=userQuery.trim();const parserState={length:userQuery.length,pos:0,totalElems:0,genericsElems:0,typeFilter:null,userQuery:userQuery.toLowerCase(),};let query=newParsedQuery(userQuery);try{parseInput(query,parserState);for(const elem of query.elems){convertTypeFilterOnElem(elem)}for(const elem of query.returned){convertTypeFilterOnElem(elem)}}catch(err){query=newParsedQuery(userQuery);query.error=err;return query}if(!query.literalSearch){query.literalSearch=parserState.totalElems>1}query.foundElems=query.elems.length+query.returned.length;query.totalElems=parserState.totalElems;return query}function createQueryResults(results_in_args,results_returned,results_others,parsedQuery){return{"in_args":results_in_args,"returned":results_returned,"others":results_others,"query":parsedQuery,}}function execQuery(parsedQuery,searchWords,filterCrates,currentCrate){const results_others=new Map(),results_in_args=new Map(),results_returned=new Map();function transformResults(results){const duplicates=new Set();const out=[];for(const result of results){if(result.id!==-1){const obj=searchIndex[result.id];obj.dist=result.dist;const res=buildHrefAndPath(obj);obj.displayPath=pathSplitter(res[0]);obj.fullPath=obj.displayPath+obj.name;obj.fullPath+="|"+obj.ty;if(duplicates.has(obj.fullPath)){continue}duplicates.add(obj.fullPath);obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out}function sortResults(results,isType,preferredCrate){if(results.size===0){return[]}const userQuery=parsedQuery.userQuery;const result_list=[];for(const result of results.values()){result.word=searchWords[result.id];result.item=searchIndex[result.id]||{};result_list.push(result)}result_list.sort((aaa,bbb)=>{let a,b;a=(aaa.word!==userQuery);b=(bbb.word!==userQuery);if(a!==b){return a-b}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.path_dist;b=bbb.path_dist;if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}a=(aaa.dist);b=(bbb.dist);if(a!==b){return a-b}a=aaa.item.deprecated;b=bbb.item.deprecated;if(a!==b){return a-b}a=(aaa.item.crate!==preferredCrate);b=(bbb.item.crate!==preferredCrate);if(a!==b){return a-b}a=aaa.word.length;b=bbb.word.length;if(a!==b){return a-b}a=aaa.word;b=bbb.word;if(a!==b){return(a>b?+1:-1)}if((aaa.item.ty===TY_PRIMITIVE&&bbb.item.ty!==TY_KEYWORD)||(aaa.item.ty===TY_KEYWORD&&bbb.item.ty!==TY_PRIMITIVE)){return-1}if((bbb.item.ty===TY_PRIMITIVE&&aaa.item.ty!==TY_PRIMITIVE)||(bbb.item.ty===TY_KEYWORD&&aaa.item.ty!==TY_KEYWORD)){return 1}a=(aaa.item.desc==="");b=(bbb.item.desc==="");if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});let nameSplit=null;if(parsedQuery.elems.length===1){const hasPath=typeof parsedQuery.elems[0].path==="undefined";nameSplit=hasPath?null:parsedQuery.elems[0].path}for(const result of result_list){if(result.dontValidate){continue}const name=result.item.name.toLowerCase(),path=result.item.path.toLowerCase(),parent=result.item.parent;if(!isType&&!validateResult(name,path,nameSplit,parent)){result.id=-1}}return transformResults(result_list)}function checkGenerics(fnType,queryElem,whereClause,mgensInout){return unifyFunctionTypes(fnType.generics,queryElem.generics,whereClause,mgensInout,mgens=>{if(mgensInout){for(const[fid,qid]of mgens.entries()){mgensInout.set(fid,qid)}}return true})}function unifyFunctionTypes(fnTypesIn,queryElems,whereClause,mgensIn,solutionCb){let mgens=new Map(mgensIn);if(queryElems.length===0){return!solutionCb||solutionCb(mgens)}if(!fnTypesIn||fnTypesIn.length===0){return false}const ql=queryElems.length;let fl=fnTypesIn.length;let fnTypes=fnTypesIn.slice();const backtracking=[];let i=0;let j=0;const backtrack=()=>{while(backtracking.length!==0){const{fnTypesScratch,mgensScratch,queryElemsOffset,fnTypesOffset,unbox,}=backtracking.pop();mgens=new Map(mgensScratch);const fnType=fnTypesScratch[fnTypesOffset];const queryElem=queryElems[queryElemsOffset];if(unbox){if(fnType.id<0){if(mgens.has(fnType.id)&&mgens.get(fnType.id)!==0){continue}mgens.set(fnType.id,0)}const generics=fnType.id<0?whereClause[(-fnType.id)-1]:fnType.generics;fnTypes=fnTypesScratch.toSpliced(fnTypesOffset,1,...generics);fl=fnTypes.length;i=queryElemsOffset-1}else{if(fnType.id<0){if(mgens.has(fnType.id)&&mgens.get(fnType.id)!==queryElem.id){continue}mgens.set(fnType.id,queryElem.id)}fnTypes=fnTypesScratch.slice();fl=fnTypes.length;const tmp=fnTypes[queryElemsOffset];fnTypes[queryElemsOffset]=fnTypes[fnTypesOffset];fnTypes[fnTypesOffset]=tmp;i=queryElemsOffset}return true}return false};for(i=0;i!==ql;++i){const queryElem=queryElems[i];const matchCandidates=[];let fnTypesScratch=null;let mgensScratch=null;for(j=i;j!==fl;++j){const fnType=fnTypes[j];if(unifyFunctionTypeIsMatchCandidate(fnType,queryElem,whereClause,mgens)){if(!fnTypesScratch){fnTypesScratch=fnTypes.slice()}unifyFunctionTypes(fnType.generics,queryElem.generics,whereClause,mgens,mgensScratch=>{matchCandidates.push({fnTypesScratch,mgensScratch,queryElemsOffset:i,fnTypesOffset:j,unbox:false,});return false})}if(unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens)){if(!fnTypesScratch){fnTypesScratch=fnTypes.slice()}if(!mgensScratch){mgensScratch=new Map(mgens)}backtracking.push({fnTypesScratch,mgensScratch,queryElemsOffset:i,fnTypesOffset:j,unbox:true,})}}if(matchCandidates.length===0){if(backtrack()){continue}else{return false}}const{fnTypesOffset:candidate,mgensScratch:mgensNew}=matchCandidates.pop();if(fnTypes[candidate].id<0&&queryElems[i].id<0){mgens.set(fnTypes[candidate].id,queryElems[i].id)}for(const[fid,qid]of mgensNew){mgens.set(fid,qid)}const tmp=fnTypes[candidate];fnTypes[candidate]=fnTypes[i];fnTypes[i]=tmp;for(const otherCandidate of matchCandidates){backtracking.push(otherCandidate)}while(i===(ql-1)&&solutionCb&&!solutionCb(mgens)){if(!backtrack()){return false}}}return true}function unifyFunctionTypeIsMatchCandidate(fnType,queryElem,whereClause,mgens){if(!typePassesFilter(queryElem.typeFilter,fnType.ty)){return false}if(fnType.id<0&&queryElem.id<0){if(mgens.has(fnType.id)&&mgens.get(fnType.id)!==queryElem.id){return false}for(const[fid,qid]of mgens.entries()){if(fnType.id!==fid&&queryElem.id===qid){return false}if(fnType.id===fid&&queryElem.id!==qid){return false}}}else if(fnType.id!==null){if(queryElem.id===typeNameIdOfArrayOrSlice&&(fnType.id===typeNameIdOfSlice||fnType.id===typeNameIdOfArray)){}else if(fnType.id!==queryElem.id){return false}if(fnType.generics.length===0&&queryElem.generics.length!==0){return false}const queryElemPathLength=queryElem.pathWithoutLast.length;if(queryElemPathLength>0){const fnTypePath=fnType.path!==undefined&&fnType.path!==null?fnType.path.split("::"):[];if(queryElemPathLength>fnTypePath.length){return false}let i=0;for(const path of fnTypePath){if(path===queryElem.pathWithoutLast[i]){i+=1;if(i>=queryElemPathLength){break}}}if(i=0){if(!whereClause){return false}if(mgens.has(fnType.id)&&mgens.get(fnType.id)!==0){return false}return checkIfInList(whereClause[(-fnType.id)-1],queryElem,whereClause)}else if(fnType.generics&&fnType.generics.length>0){return checkIfInList(fnType.generics,queryElem,whereClause)}return false}function checkIfInList(list,elem,whereClause){for(const entry of list){if(checkType(entry,elem,whereClause)){return true}}return false}function checkType(row,elem,whereClause){if(row.id===null){return row.generics.length>0?checkIfInList(row.generics,elem,whereClause):false}if(row.id<0&&elem.id>=0){const gid=(-row.id)-1;return checkIfInList(whereClause[gid],elem,whereClause)}if(row.id<0&&elem.id<0){return true}const matchesExact=row.id===elem.id;const matchesArrayOrSlice=elem.id===typeNameIdOfArrayOrSlice&&(row.id===typeNameIdOfSlice||row.id===typeNameIdOfArray);if((matchesExact||matchesArrayOrSlice)&&typePassesFilter(elem.typeFilter,row.ty)){if(elem.generics.length>0){return checkGenerics(row,elem,whereClause,new Map())}return true}return checkIfInList(row.generics,elem,whereClause)}function checkPath(contains,ty,maxEditDistance){if(contains.length===0){return 0}let ret_dist=maxEditDistance+1;const path=ty.path.split("::");if(ty.parent&&ty.parent.name){path.push(ty.parent.name.toLowerCase())}const length=path.length;const clength=contains.length;if(clength>length){return maxEditDistance+1}for(let i=0;ilength){break}let dist_total=0;let aborted=false;for(let x=0;xmaxEditDistance){aborted=true;break}dist_total+=dist}if(!aborted){ret_dist=Math.min(ret_dist,Math.round(dist_total/clength))}}return ret_dist}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER||filter===type)return true;const name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,desc:item.desc,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,deprecated:item.deprecated,}}function handleAliases(ret,query,filterCrates,currentCrate){const lowerQuery=query.toLowerCase();const aliases=[];const crateAliases=[];if(filterCrates!==null){if(ALIASES.has(filterCrates)&&ALIASES.get(filterCrates).has(lowerQuery)){const query_aliases=ALIASES.get(filterCrates).get(lowerQuery);for(const alias of query_aliases){aliases.push(createAliasFromItem(searchIndex[alias]))}}}else{for(const[crate,crateAliasesIndex]of ALIASES){if(crateAliasesIndex.has(lowerQuery)){const pushTo=crate===currentCrate?crateAliases:aliases;const query_aliases=crateAliasesIndex.get(lowerQuery);for(const alias of query_aliases){pushTo.push(createAliasFromItem(searchIndex[alias]))}}}}const sortFunc=(aaa,bbb)=>{if(aaa.path{alias.alias=query;const res=buildHrefAndPath(alias);alias.displayPath=pathSplitter(res[0]);alias.fullPath=alias.displayPath+alias.name;alias.href=res[1];ret.others.unshift(alias);if(ret.others.length>MAX_RESULTS){ret.others.pop()}};aliases.forEach(pushFunc);crateAliases.forEach(pushFunc)}function addIntoResults(results,fullId,id,index,dist,path_dist,maxEditDistance){const inBounds=dist<=maxEditDistance||index!==-1;if(dist===0||(!parsedQuery.literalSearch&&inBounds)){if(results.has(fullId)){const result=results.get(fullId);if(result.dontValidate||result.dist<=dist){return}}results.set(fullId,{id:id,index:index,dontValidate:parsedQuery.literalSearch,dist:dist,path_dist:path_dist,})}}function handleSingleArg(row,pos,elem,results_others,results_in_args,results_returned,maxEditDistance){if(!row||(filterCrates!==null&&row.crate!==filterCrates)){return}let index=-1,path_dist=0;const fullId=row.id;const searchWord=searchWords[pos];const in_args=row.type&&row.type.inputs&&checkIfInList(row.type.inputs,elem,row.type.where_clause);if(in_args){addIntoResults(results_in_args,fullId,pos,-1,0,0,maxEditDistance)}const returned=row.type&&row.type.output&&checkIfInList(row.type.output,elem,row.type.where_clause);if(returned){addIntoResults(results_returned,fullId,pos,-1,0,0,maxEditDistance)}if(!typePassesFilter(elem.typeFilter,row.ty)){return}const row_index=row.normalizedName.indexOf(elem.pathLast);const word_index=searchWord.indexOf(elem.pathLast);if(row_index===-1){index=word_index}else if(word_index===-1){index=row_index}else if(word_index1){path_dist=checkPath(elem.pathWithoutLast,row,maxEditDistance);if(path_dist>maxEditDistance){return}}if(parsedQuery.literalSearch){if(searchWord===elem.name){addIntoResults(results_others,fullId,pos,index,0,path_dist)}return}const dist=editDistance(searchWord,elem.pathLast,maxEditDistance);if(index===-1&&dist+path_dist>maxEditDistance){return}addIntoResults(results_others,fullId,pos,index,dist,path_dist,maxEditDistance)}function handleArgs(row,pos,results){if(!row||(filterCrates!==null&&row.crate!==filterCrates)||!row.type){return}if(!unifyFunctionTypes(row.type.inputs,parsedQuery.elems,row.type.where_clause,null,mgens=>{return unifyFunctionTypes(row.type.output,parsedQuery.returned,row.type.where_clause,mgens)})){return}addIntoResults(results,row.id,pos,0,0,0,Number.MAX_VALUE)}function innerRunQuery(){let elem,i,nSearchWords,in_returned,row;let queryLen=0;for(const elem of parsedQuery.elems){queryLen+=elem.name.length}for(const elem of parsedQuery.returned){queryLen+=elem.name.length}const maxEditDistance=Math.floor(queryLen/3);const genericSymbols=new Map();function convertNameToId(elem){if(typeNameIdMap.has(elem.pathLast)){elem.id=typeNameIdMap.get(elem.pathLast)}else if(!parsedQuery.literalSearch){let match=null;let matchDist=maxEditDistance+1;let matchName="";for(const[name,id]of typeNameIdMap){const dist=editDistance(name,elem.pathLast,maxEditDistance);if(dist<=matchDist&&dist<=maxEditDistance){if(dist===matchDist&&matchName>name){continue}match=id;matchDist=dist;matchName=name}}if(match!==null){parsedQuery.correction=matchName}elem.id=match}if((elem.id===null&&parsedQuery.totalElems>1&&elem.typeFilter===-1&&elem.generics.length===0)||elem.typeFilter===TY_GENERIC){if(genericSymbols.has(elem.name)){elem.id=genericSymbols.get(elem.name)}else{elem.id=-(genericSymbols.size+1);genericSymbols.set(elem.name,elem.id)}if(elem.typeFilter===-1&&elem.name.length>=3){const maxPartDistance=Math.floor(elem.name.length/3);let matchDist=maxPartDistance+1;let matchName="";for(const name of typeNameIdMap.keys()){const dist=editDistance(name,elem.name,maxPartDistance);if(dist<=matchDist&&dist<=maxPartDistance){if(dist===matchDist&&matchName>name){continue}matchDist=dist;matchName=name}}if(matchName!==""){parsedQuery.proposeCorrectionFrom=elem.name;parsedQuery.proposeCorrectionTo=matchName}}elem.typeFilter=TY_GENERIC}if(elem.generics.length>0&&elem.typeFilter===TY_GENERIC){parsedQuery.error=["Generic type parameter ",elem.name," does not accept generic parameters",]}for(const elem2 of elem.generics){convertNameToId(elem2)}}for(const elem of parsedQuery.elems){convertNameToId(elem)}for(const elem of parsedQuery.returned){convertNameToId(elem)}if(parsedQuery.foundElems===1){if(parsedQuery.elems.length===1){elem=parsedQuery.elems[0];for(i=0,nSearchWords=searchWords.length;i0){for(i=0,nSearchWords=searchWords.length;i-1||path.indexOf(key)>-1||(parent!==undefined&&parent.name!==undefined&&parent.name.toLowerCase().indexOf(key)>-1)||editDistance(name,key,maxEditDistance)<=maxEditDistance)){return false}}return true}function nextTab(direction){const next=(searchState.currentTab+direction+3)%searchState.focusedByTab.length;searchState.focusedByTab[searchState.currentTab]=document.activeElement;printTab(next);focusSearchResult()}function focusSearchResult(){const target=searchState.focusedByTab[searchState.currentTab]||document.querySelectorAll(".search-results.active a").item(0)||document.querySelectorAll("#search-tabs button").item(searchState.currentTab);searchState.focusedByTab[searchState.currentTab]=null;if(target){target.focus()}}function buildHrefAndPath(item){let displayPath;let href;const type=itemTypes[item.ty];const name=item.name;let path=item.path;if(type==="mod"){displayPath=path+"::";href=ROOT_PATH+path.replace(/::/g,"/")+"/"+name+"/index.html"}else if(type==="import"){displayPath=item.path+"::";href=ROOT_PATH+item.path.replace(/::/g,"/")+"/index.html#reexport."+name}else if(type==="primitive"||type==="keyword"){displayPath="";href=ROOT_PATH+path.replace(/::/g,"/")+"/"+type+"."+name+".html"}else if(type==="externcrate"){displayPath="";href=ROOT_PATH+name+"/index.html"}else if(item.parent!==undefined){const myparent=item.parent;let anchor="#"+type+"."+name;const parentType=itemTypes[myparent.ty];let pageType=parentType;let pageName=myparent.name;if(parentType==="primitive"){displayPath=myparent.name+"::"}else if(type==="structfield"&&parentType==="variant"){const enumNameIdx=item.path.lastIndexOf("::");const enumName=item.path.substr(enumNameIdx+2);path=item.path.substr(0,enumNameIdx);displayPath=path+"::"+enumName+"::"+myparent.name+"::";anchor="#variant."+myparent.name+".field."+name;pageType="enum";pageName=enumName}else{displayPath=path+"::"+myparent.name+"::"}href=ROOT_PATH+path.replace(/::/g,"/")+"/"+pageType+"."+pageName+".html"+anchor}else{displayPath=item.path+"::";href=ROOT_PATH+item.path.replace(/::/g,"/")+"/"+type+"."+name+".html"}return[displayPath,href]}function pathSplitter(path){const tmp=""+path.replace(/::/g,"::");if(tmp.endsWith("")){return tmp.slice(0,tmp.length-6)}return tmp}function addTab(array,query,display){let extraClass="";if(display===true){extraClass=" active"}const output=document.createElement("div");let length=0;if(array.length>0){output.className="search-results "+extraClass;array.forEach(item=>{const name=item.name;const type=itemTypes[item.ty];const longType=longItemTypes[item.ty];const typeName=longType.length!==0?`${longType}`:"?";length+=1;const link=document.createElement("a");link.className="result-"+type;link.href=item.href;const resultName=document.createElement("div");resultName.className="result-name";resultName.insertAdjacentHTML("beforeend",`${typeName}`);link.appendChild(resultName);let alias=" ";if(item.is_alias){alias=`
    \ -${item.alias} - see \ -
    `}resultName.insertAdjacentHTML("beforeend",`
    ${alias}\ -${item.displayPath}${name}\ -
    `);const description=document.createElement("div");description.className="desc";description.insertAdjacentHTML("beforeend",item.desc);link.appendChild(description);output.appendChild(link)})}else if(query.error===null){output.className="search-failed"+extraClass;output.innerHTML="No results :(
    "+"Try on DuckDuckGo?

    "+"Or try looking in one of these:"}return[output,length]}function makeTabHeader(tabNb,text,nbElems){const fmtNbElems=nbElems<10?`\u{2007}(${nbElems})\u{2007}\u{2007}`:nbElems<100?`\u{2007}(${nbElems})\u{2007}`:`\u{2007}(${nbElems})`;if(searchState.currentTab===tabNb){return""}return""}function showResults(results,go_to_first,filterCrates){const search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true")){window.onunload=()=>{};searchState.removeQueryParameters();const elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}if(results.query===undefined){results.query=parseQuery(searchState.input.value)}currentResults=results.query.userQuery;const ret_others=addTab(results.others,results.query,true);const ret_in_args=addTab(results.in_args,results.query,false);const ret_returned=addTab(results.returned,results.query,false);let currentTab=searchState.currentTab;if((currentTab===0&&ret_others[1]===0)||(currentTab===1&&ret_in_args[1]===0)||(currentTab===2&&ret_returned[1]===0)){if(ret_others[1]!==0){currentTab=0}else if(ret_in_args[1]!==0){currentTab=1}else if(ret_returned[1]!==0){currentTab=2}}let crates="";const crates_list=Object.keys(rawSearchIndex);if(crates_list.length>1){crates=" in 
    "}let output=`

    Results${crates}

    `;if(results.query.error!==null){const error=results.query.error;error.forEach((value,index)=>{value=value.split("<").join("<").split(">").join(">");if(index%2!==0){error[index]=`${value.replaceAll(" ", " ")}`}else{error[index]=value}});output+=`

    Query parser error: "${error.join("")}".

    `;output+="
    "+makeTabHeader(0,"In Names",ret_others[1])+"
    ";currentTab=0}else if(results.query.foundElems<=1&&results.query.returned.length===0){output+="
    "+makeTabHeader(0,"In Names",ret_others[1])+makeTabHeader(1,"In Parameters",ret_in_args[1])+makeTabHeader(2,"In Return Types",ret_returned[1])+"
    "}else{const signatureTabTitle=results.query.elems.length===0?"In Function Return Types":results.query.returned.length===0?"In Function Parameters":"In Function Signatures";output+="
    "+makeTabHeader(0,signatureTabTitle,ret_others[1])+"
    ";currentTab=0}if(results.query.correction!==null){const orig=results.query.returned.length>0?results.query.returned[0].name:results.query.elems[0].name;output+="

    "+`Type "${orig}" not found. `+"Showing results for closest type name "+`"${results.query.correction}" instead.

    `}if(results.query.proposeCorrectionFrom!==null){const orig=results.query.proposeCorrectionFrom;const targ=results.query.proposeCorrectionTo;output+="

    "+`Type "${orig}" not found and used as generic parameter. `+`Consider searching for "${targ}" instead.

    `}const resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others[0]);resultsElem.appendChild(ret_in_args[0]);resultsElem.appendChild(ret_returned[0]);search.innerHTML=output;const crateSearch=document.getElementById("crate-search");if(crateSearch){crateSearch.addEventListener("input",updateCrate)}search.appendChild(resultsElem);searchState.showResults(search);const elems=document.getElementById("search-tabs").childNodes;searchState.focusedByTab=[];let i=0;for(const elem of elems){const j=i;elem.onclick=()=>printTab(j);searchState.focusedByTab.push(null);i+=1}printTab(currentTab)}function updateSearchHistory(url){if(!browserSupportsHistoryApi()){return}const params=searchState.getQueryStringParams();if(!history.state&&!params.search){history.pushState(null,"",url)}else{history.replaceState(null,"",url)}}function search(e,forced){if(e){e.preventDefault()}const query=parseQuery(searchState.input.value.trim());let filterCrates=getFilterCrates();if(!forced&&query.userQuery===currentResults){if(query.userQuery.length>0){putBackSearch()}return}searchState.setLoadingSearch();const params=searchState.getQueryStringParams();if(filterCrates===null&¶ms["filter-crate"]!==undefined){filterCrates=params["filter-crate"]}searchState.title="Results for "+query.original+" - Rust";updateSearchHistory(buildUrl(query.original,filterCrates));showResults(execQuery(query,searchWords,filterCrates,window.currentCrate),params.go_to_first,filterCrates)}function buildItemSearchTypeAll(types,lowercasePaths){return types.map(type=>buildItemSearchType(type,lowercasePaths))}function buildItemSearchType(type,lowercasePaths){const PATH_INDEX_DATA=0;const GENERICS_DATA=1;let pathIndex,generics;if(typeof type==="number"){pathIndex=type;generics=[]}else{pathIndex=type[PATH_INDEX_DATA];generics=buildItemSearchTypeAll(type[GENERICS_DATA],lowercasePaths)}if(pathIndex<0){return{id:pathIndex,ty:TY_GENERIC,path:null,generics,}}if(pathIndex===0){return{id:null,ty:null,path:null,generics,}}const item=lowercasePaths[pathIndex-1];return{id:buildTypeMapIndex(item.name),ty:item.ty,path:item.path,generics,}}function buildFunctionSearchType(functionSearchType,lowercasePaths){const INPUTS_DATA=0;const OUTPUT_DATA=1;if(functionSearchType===0){return null}let inputs,output;if(typeof functionSearchType[INPUTS_DATA]==="number"){inputs=[buildItemSearchType(functionSearchType[INPUTS_DATA],lowercasePaths)]}else{inputs=buildItemSearchTypeAll(functionSearchType[INPUTS_DATA],lowercasePaths)}if(functionSearchType.length>1){if(typeof functionSearchType[OUTPUT_DATA]==="number"){output=[buildItemSearchType(functionSearchType[OUTPUT_DATA],lowercasePaths)]}else{output=buildItemSearchTypeAll(functionSearchType[OUTPUT_DATA],lowercasePaths)}}else{output=[]}const where_clause=[];const l=functionSearchType.length;for(let i=2;i2){path=itemPaths.has(elem[2])?itemPaths.get(elem[2]):lastPath;lastPath=path}lowercasePaths.push({ty:ty,name:name.toLowerCase(),path:path});paths[i]={ty:ty,name:name,path:path}}lastPath="";len=itemTypes.length;for(let i=0;i0?paths[itemParentIdxs[i]-1]:undefined,type:buildFunctionSearchType(itemFunctionSearchTypes[i],lowercasePaths),id:id,normalizedName:word.indexOf("_")===-1?word:word.replace(/_/g,""),deprecated:deprecatedItems.has(i),};id+=1;searchIndex.push(row);lastPath=row.path;crateSize+=1}if(aliases){const currentCrateAliases=new Map();ALIASES.set(crate,currentCrateAliases);for(const alias_name in aliases){if(!hasOwnPropertyRustdoc(aliases,alias_name)){continue}let currentNameAliases;if(currentCrateAliases.has(alias_name)){currentNameAliases=currentCrateAliases.get(alias_name)}else{currentNameAliases=[];currentCrateAliases.set(alias_name,currentNameAliases)}for(const local_alias of aliases[alias_name]){currentNameAliases.push(local_alias+currentIndex)}}}currentIndex+=crateSize}return searchWords}function onSearchSubmit(e){e.preventDefault();searchState.clearInputTimeout();search()}function putBackSearch(){const search_input=searchState.input;if(!searchState.input){return}if(search_input.value!==""&&!searchState.isDisplayed()){searchState.showResults();if(browserSupportsHistoryApi()){history.replaceState(null,"",buildUrl(search_input.value,getFilterCrates()))}document.title=searchState.title}}function registerSearchEvents(){const params=searchState.getQueryStringParams();if(searchState.input.value===""){searchState.input.value=params.search||""}const searchAfter500ms=()=>{searchState.clearInputTimeout();if(searchState.input.value.length===0){searchState.hideResults()}else{searchState.timeout=setTimeout(search,500)}};searchState.input.onkeyup=searchAfter500ms;searchState.input.oninput=searchAfter500ms;document.getElementsByClassName("search-form")[0].onsubmit=onSearchSubmit;searchState.input.onchange=e=>{if(e.target!==document.activeElement){return}searchState.clearInputTimeout();setTimeout(search,0)};searchState.input.onpaste=searchState.input.onchange;searchState.outputElement().addEventListener("keydown",e=>{if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey){return}if(e.which===38){const previous=document.activeElement.previousElementSibling;if(previous){previous.focus()}else{searchState.focus()}e.preventDefault()}else if(e.which===40){const next=document.activeElement.nextElementSibling;if(next){next.focus()}const rect=document.activeElement.getBoundingClientRect();if(window.innerHeight-rect.bottom{if(e.which===40){focusSearchResult();e.preventDefault()}});searchState.input.addEventListener("focus",()=>{putBackSearch()});searchState.input.addEventListener("blur",()=>{searchState.input.placeholder=searchState.input.origPlaceholder});if(browserSupportsHistoryApi()){const previousTitle=document.title;window.addEventListener("popstate",e=>{const params=searchState.getQueryStringParams();document.title=previousTitle;currentResults=null;if(params.search&¶ms.search.length>0){searchState.input.value=params.search;search(e)}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=()=>{const qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}function updateCrate(ev){if(ev.target.value==="all crates"){const query=searchState.input.value.trim();updateSearchHistory(buildUrl(query,null))}currentResults=null;search(undefined,true)}const searchWords=buildIndex(rawSearchIndex);if(typeof window!=="undefined"){registerSearchEvents();if(window.searchState.getQueryStringParams().search){search()}}if(typeof exports!=="undefined"){exports.initSearch=initSearch;exports.execQuery=execQuery;exports.parseQuery=parseQuery}return searchWords}if(typeof window!=="undefined"){window.initSearch=initSearch;if(window.searchIndex!==undefined){initSearch(window.searchIndex)}}else{initSearch({})}})() \ No newline at end of file diff --git a/static.files/search-f0d225181b97f9a4.js b/static.files/search-f0d225181b97f9a4.js new file mode 100644 index 0000000..d34fb34 --- /dev/null +++ b/static.files/search-f0d225181b97f9a4.js @@ -0,0 +1,6 @@ +"use strict";if(!Array.prototype.toSpliced){Array.prototype.toSpliced=function(){const me=this.slice();Array.prototype.splice.apply(me,arguments);return me}}(function(){const itemTypes=["keyword","primitive","mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","associatedtype","constant","associatedconstant","union","foreigntype","existential","attr","derive","traitalias","generic",];const TY_GENERIC=itemTypes.indexOf("generic");const TY_IMPORT=itemTypes.indexOf("import");const ROOT_PATH=typeof window!=="undefined"?window.rootPath:"../";const UNBOXING_LIMIT=5;const REGEX_IDENT=/\p{ID_Start}\p{ID_Continue}*|_\p{ID_Continue}+/uy;const REGEX_INVALID_TYPE_FILTER=/[^a-z]/ui;const MAX_RESULTS=200;const NO_TYPE_FILTER=-1;const editDistanceState={current:[],prev:[],prevPrev:[],calculate:function calculate(a,b,limit){if(a.lengthlimit){return limit+1}while(b.length>0&&b[0]===a[0]){a=a.substring(1);b=b.substring(1)}while(b.length>0&&b[b.length-1]===a[a.length-1]){a=a.substring(0,a.length-1);b=b.substring(0,b.length-1)}if(b.length===0){return minDist}const aLength=a.length;const bLength=b.length;for(let i=0;i<=bLength;++i){this.current[i]=0;this.prev[i]=i;this.prevPrev[i]=Number.MAX_VALUE}for(let i=1;i<=aLength;++i){this.current[0]=i;const aIdx=i-1;for(let j=1;j<=bLength;++j){const bIdx=j-1;const substitutionCost=a[aIdx]===b[bIdx]?0:1;this.current[j]=Math.min(this.prev[j]+1,this.current[j-1]+1,this.prev[j-1]+substitutionCost,);if((i>1)&&(j>1)&&(a[aIdx]===b[bIdx-1])&&(a[aIdx-1]===b[bIdx])){this.current[j]=Math.min(this.current[j],this.prevPrev[j-2]+1,)}}const prevPrevTmp=this.prevPrev;this.prevPrev=this.prev;this.prev=this.current;this.current=prevPrevTmp}const distance=this.prev[bLength];return distance<=limit?distance:(limit+1)},};function editDistance(a,b,limit){return editDistanceState.calculate(a,b,limit)}function isEndCharacter(c){return"=,>-])".indexOf(c)!==-1}function isSeparatorCharacter(c){return c===","||c==="="}function isReturnArrow(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="->"}function skipWhitespace(parserState){while(parserState.pos0){const c=parserState.userQuery[pos-1];if(c===lookingFor){return true}else if(c!==" "){break}pos-=1}return false}function isLastElemGeneric(elems,parserState){return(elems.length>0&&elems[elems.length-1].generics.length>0)||prevIs(parserState,">")}function getFilteredNextElem(query,parserState,elems,isInGenerics){const start=parserState.pos;if(parserState.userQuery[parserState.pos]===":"&&!isPathStart(parserState)){throw["Expected type filter before ",":"]}getNextElem(query,parserState,elems,isInGenerics);if(parserState.userQuery[parserState.pos]===":"&&!isPathStart(parserState)){if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}if(elems.length===0){throw["Expected type filter before ",":"]}else if(query.literalSearch){throw["Cannot use quotes on type filter"]}const typeFilterElem=elems.pop();checkExtraTypeFilterCharacters(start,parserState);parserState.typeFilter=typeFilterElem.name;parserState.pos+=1;parserState.totalElems-=1;query.literalSearch=false;getNextElem(query,parserState,elems,isInGenerics)}}function getItemsBefore(query,parserState,elems,endChar){let foundStopChar=true;let foundSeparator=false;const oldTypeFilter=parserState.typeFilter;parserState.typeFilter=null;const oldIsInBinding=parserState.isInBinding;parserState.isInBinding=null;let hofParameters=null;let extra="";if(endChar===">"){extra="<"}else if(endChar==="]"){extra="["}else if(endChar===")"){extra="("}else if(endChar===""){extra="->"}else{extra=endChar}while(parserState.pos"," after ","="]}hofParameters=[...elems];elems.length=0;parserState.pos+=2;foundStopChar=true;foundSeparator=false;continue}else if(c===" "){parserState.pos+=1;continue}else if(isSeparatorCharacter(c)){parserState.pos+=1;foundStopChar=true;foundSeparator=true;continue}else if(c===":"&&isPathStart(parserState)){throw["Unexpected ","::",": paths cannot start with ","::"]}else if(isEndCharacter(c)){throw["Unexpected ",c," after ",extra]}if(!foundStopChar){let extra=[];if(isLastElemGeneric(query.elems,parserState)){extra=[" after ",">"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(endChar!==""){throw["Expected ",",",", ","=",", or ",endChar,...extra,", found ",c,]}throw["Expected ",","," or ","=",...extra,", found ",c,]}const posBefore=parserState.pos;getFilteredNextElem(query,parserState,elems,endChar!=="");if(endChar!==""&&parserState.pos>=parserState.length){throw["Unclosed ",extra]}if(posBefore===parserState.pos){parserState.pos+=1}foundStopChar=false}if(parserState.pos>=parserState.length&&endChar!==""){throw["Unclosed ",extra]}parserState.pos+=1;if(hofParameters){foundSeparator=false;if([...elems,...hofParameters].some(x=>x.bindingName)||parserState.isInBinding){throw["Unexpected ","="," within ","->"]}const hofElem=makePrimitiveElement("->",{generics:hofParameters,bindings:new Map([["output",[...elems]]]),typeFilter:null,});elems.length=0;elems[0]=hofElem}parserState.typeFilter=oldTypeFilter;parserState.isInBinding=oldIsInBinding;return{foundSeparator}}function getNextElem(query,parserState,elems,isInGenerics){const generics=[];skipWhitespace(parserState);let start=parserState.pos;let end;if("[(".indexOf(parserState.userQuery[parserState.pos])!==-1){let endChar=")";let name="()";let friendlyName="tuple";if(parserState.userQuery[parserState.pos]==="["){endChar="]";name="[]";friendlyName="slice"}parserState.pos+=1;const{foundSeparator}=getItemsBefore(query,parserState,generics,endChar);const typeFilter=parserState.typeFilter;const bindingName=parserState.isInBinding;parserState.typeFilter=null;parserState.isInBinding=null;for(const gen of generics){if(gen.bindingName!==null){throw["Type parameter ","=",` cannot be within ${friendlyName} `,name]}}if(name==="()"&&!foundSeparator&&generics.length===1&&typeFilter===null){elems.push(generics[0])}else if(name==="()"&&generics.length===1&&generics[0].name==="->"){generics[0].typeFilter=typeFilter;elems.push(generics[0])}else{if(typeFilter!==null&&typeFilter!=="primitive"){throw["Invalid search type: primitive ",name," and ",typeFilter," both specified",]}parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}elems.push(makePrimitiveElement(name,{bindingName,generics}))}}else if(parserState.userQuery[parserState.pos]==="&"){if(parserState.typeFilter!==null&&parserState.typeFilter!=="primitive"){throw["Invalid search type: primitive ","&"," and ",parserState.typeFilter," both specified",]}parserState.typeFilter=null;parserState.pos+=1;let c=parserState.userQuery[parserState.pos];while(c===" "&&parserState.pos=end){throw["Found generics without a path"]}parserState.pos+=1;getItemsBefore(query,parserState,generics,">")}else if(parserState.pos=end){throw["Found generics without a path"]}if(parserState.isInBinding){throw["Unexpected ","("," after ","="]}parserState.pos+=1;const typeFilter=parserState.typeFilter;parserState.typeFilter=null;getItemsBefore(query,parserState,generics,")");skipWhitespace(parserState);if(isReturnArrow(parserState)){parserState.pos+=2;skipWhitespace(parserState);getFilteredNextElem(query,parserState,generics,isInGenerics);generics[generics.length-1].bindingName=makePrimitiveElement("output")}else{generics.push(makePrimitiveElement(null,{bindingName:makePrimitiveElement("output"),typeFilter:null,}))}parserState.typeFilter=typeFilter}if(isStringElem){skipWhitespace(parserState)}if(start>=end&&generics.length===0){return}if(parserState.userQuery[parserState.pos]==="="){if(parserState.isInBinding){throw["Cannot write ","="," twice in a binding"]}if(!isInGenerics){throw["Type parameter ","="," must be within generics list"]}const name=parserState.userQuery.slice(start,end).trim();if(name==="!"){throw["Type parameter ","="," key cannot be ","!"," never type"]}if(name.includes("!")){throw["Type parameter ","="," key cannot be ","!"," macro"]}if(name.includes("::")){throw["Type parameter ","="," key cannot contain ","::"," path"]}if(name.includes(":")){throw["Type parameter ","="," key cannot contain ",":"," type"]}parserState.isInBinding={name,generics}}else{elems.push(createQueryElement(query,parserState,parserState.userQuery.slice(start,end),generics,isInGenerics,),)}}}function checkExtraTypeFilterCharacters(start,parserState){const query=parserState.userQuery.slice(start,parserState.pos).trim();const match=query.match(REGEX_INVALID_TYPE_FILTER);if(match){throw["Unexpected ",match[0]," in type filter (before ",":",")",]}}function createQueryElement(query,parserState,name,generics,isInGenerics){const path=name.trim();if(path.length===0&&generics.length===0){throw["Unexpected ",parserState.userQuery[parserState.pos]]}if(query.literalSearch&&parserState.totalElems-parserState.genericsElems>0){throw["Cannot have more than one element if you use quotes"]}const typeFilter=parserState.typeFilter;parserState.typeFilter=null;if(name.trim()==="!"){if(typeFilter!==null&&typeFilter!=="primitive"){throw["Invalid search type: primitive never type ","!"," and ",typeFilter," both specified",]}if(generics.length!==0){throw["Never type ","!"," does not accept generic parameters",]}const bindingName=parserState.isInBinding;parserState.isInBinding=null;return makePrimitiveElement("never",{bindingName})}const quadcolon=/::\s*::/.exec(path);if(path.startsWith("::")){throw["Paths cannot start with ","::"]}else if(path.endsWith("::")){throw["Paths cannot end with ","::"]}else if(quadcolon!==null){throw["Unexpected ",quadcolon[0]]}const pathSegments=path.split(/(?:::\s*)|(?:\s+(?:::\s*)?)/);if(pathSegments.length===0||(pathSegments.length===1&&pathSegments[0]==="")){if(generics.length>0||prevIs(parserState,">")){throw["Found generics without a path"]}else{throw["Unexpected ",parserState.userQuery[parserState.pos]]}}for(const[i,pathSegment]of pathSegments.entries()){if(pathSegment==="!"){if(i!==0){throw["Never type ","!"," is not associated item"]}pathSegments[i]="never"}}parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}const bindingName=parserState.isInBinding;parserState.isInBinding=null;const bindings=new Map();const pathLast=pathSegments[pathSegments.length-1];return{name:name.trim(),id:null,fullPath:pathSegments,pathWithoutLast:pathSegments.slice(0,pathSegments.length-1),pathLast,normalizedPathLast:pathLast.replace(/_/g,""),generics:generics.filter(gen=>{if(gen.bindingName!==null){if(gen.name!==null){gen.bindingName.generics.unshift(gen)}bindings.set(gen.bindingName.name,gen.bindingName.generics);return false}return true}),bindings,typeFilter,bindingName,}}function makePrimitiveElement(name,extra){return Object.assign({name,id:null,fullPath:[name],pathWithoutLast:[],pathLast:name,normalizedPathLast:name,generics:[],bindings:new Map(),typeFilter:"primitive",bindingName:null,},extra)}function getStringElem(query,parserState,isInGenerics){if(isInGenerics){throw["Unexpected ","\""," in generics"]}else if(query.literalSearch){throw["Cannot have more than one literal search element"]}else if(parserState.totalElems-parserState.genericsElems>0){throw["Cannot use literal search when there is more than one element"]}parserState.pos+=1;const start=parserState.pos;const end=getIdentEndPosition(parserState);if(parserState.pos>=parserState.length){throw["Unclosed ","\""]}else if(parserState.userQuery[end]!=="\""){throw["Unexpected ",parserState.userQuery[end]," in a string element"]}else if(start===end){throw["Cannot have empty string element"]}parserState.pos+=1;query.literalSearch=true}function getIdentEndPosition(parserState){let afterIdent=consumeIdent(parserState);let end=parserState.pos;let macroExclamation=-1;while(parserState.pos0){throw["Unexpected ",c," after ",parserState.userQuery[parserState.pos-1]," (not a valid identifier)"]}else{throw["Unexpected ",c," (not a valid identifier)"]}parserState.pos+=1;afterIdent=consumeIdent(parserState);end=parserState.pos}if(macroExclamation!==-1){if(parserState.typeFilter===null){parserState.typeFilter="macro"}else if(parserState.typeFilter!=="macro"){throw["Invalid search type: macro ","!"," and ",parserState.typeFilter," both specified",]}end=macroExclamation}return end}function isSpecialStartCharacter(c){return"<\"".indexOf(c)!==-1}function isPathStart(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="::"}function consumeIdent(parserState){REGEX_IDENT.lastIndex=parserState.pos;const match=parserState.userQuery.match(REGEX_IDENT);if(match){parserState.pos+=match[0].length;return true}return false}function isPathSeparator(c){return c===":"||c===" "}class VlqHexDecoder{constructor(string,cons){this.string=string;this.cons=cons;this.offset=0;this.backrefQueue=[]}decodeList(){let c=this.string.charCodeAt(this.offset);const ret=[];while(c!==125){ret.push(this.decode());c=this.string.charCodeAt(this.offset)}this.offset+=1;return ret}decode(){let n=0;let c=this.string.charCodeAt(this.offset);if(c===123){this.offset+=1;return this.decodeList()}while(c<96){n=(n<<4)|(c&0xF);this.offset+=1;c=this.string.charCodeAt(this.offset)}n=(n<<4)|(c&0xF);const[sign,value]=[n&1,n>>1];this.offset+=1;return sign?-value:value}next(){const c=this.string.charCodeAt(this.offset);if(c>=48&&c<64){this.offset+=1;return this.backrefQueue[c-48]}if(c===96){this.offset+=1;return this.cons(0)}const result=this.cons(this.decode());this.backrefQueue.unshift(result);if(this.backrefQueue.length>16){this.backrefQueue.pop()}return result}}class RoaringBitmap{constructor(str){const strdecoded=atob(str);const u8array=new Uint8Array(strdecoded.length);for(let j=0;j=4){offsets=[];for(let j=0;j>3]&(1<<(j&0x7))){const runcount=(u8array[i]|(u8array[i+1]<<8));i+=2;this.containers.push(new RoaringBitmapRun(runcount,u8array.slice(i,i+(runcount*4)),));i+=runcount*4}else if(this.cardinalities[j]>=4096){this.containers.push(new RoaringBitmapBits(u8array.slice(i,i+8192)));i+=8192}else{const end=this.cardinalities[j]*2;this.containers.push(new RoaringBitmapArray(this.cardinalities[j],u8array.slice(i,i+end),));i+=end}}}contains(keyvalue){const key=keyvalue>>16;const value=keyvalue&0xFFFF;for(let i=0;i=start&&value<=(start+lenm1)){return true}}return false}}class RoaringBitmapArray{constructor(cardinality,array){this.cardinality=cardinality;this.array=array}contains(value){const l=this.cardinality*2;for(let i=0;i>3]&(1<<(value&7)))}}class DocSearch{constructor(rawSearchIndex,rootPath,searchState){this.searchIndexDeprecated=new Map();this.searchIndexEmptyDesc=new Map();this.functionTypeFingerprint=null;this.typeNameIdMap=new Map();this.ALIASES=new Map();this.rootPath=rootPath;this.searchState=searchState;this.typeNameIdOfArray=this.buildTypeMapIndex("array");this.typeNameIdOfSlice=this.buildTypeMapIndex("slice");this.typeNameIdOfArrayOrSlice=this.buildTypeMapIndex("[]");this.typeNameIdOfTuple=this.buildTypeMapIndex("tuple");this.typeNameIdOfUnit=this.buildTypeMapIndex("unit");this.typeNameIdOfTupleOrUnit=this.buildTypeMapIndex("()");this.typeNameIdOfFn=this.buildTypeMapIndex("fn");this.typeNameIdOfFnMut=this.buildTypeMapIndex("fnmut");this.typeNameIdOfFnOnce=this.buildTypeMapIndex("fnonce");this.typeNameIdOfHof=this.buildTypeMapIndex("->");this.EMPTY_BINDINGS_MAP=new Map();this.EMPTY_GENERICS_ARRAY=[];this.TYPES_POOL=new Map();this.searchIndex=this.buildIndex(rawSearchIndex)}buildTypeMapIndex(name,isAssocType){if(name===""||name===null){return null}if(this.typeNameIdMap.has(name)){const obj=this.typeNameIdMap.get(name);obj.assocOnly=isAssocType&&obj.assocOnly;return obj.id}else{const id=this.typeNameIdMap.size;this.typeNameIdMap.set(name,{id,assocOnly:isAssocType});return id}}buildItemSearchTypeAll(types,lowercasePaths){return types.length>0?types.map(type=>this.buildItemSearchType(type,lowercasePaths)):this.EMPTY_GENERICS_ARRAY}buildItemSearchType(type,lowercasePaths,isAssocType){const PATH_INDEX_DATA=0;const GENERICS_DATA=1;const BINDINGS_DATA=2;let pathIndex,generics,bindings;if(typeof type==="number"){pathIndex=type;generics=this.EMPTY_GENERICS_ARRAY;bindings=this.EMPTY_BINDINGS_MAP}else{pathIndex=type[PATH_INDEX_DATA];generics=this.buildItemSearchTypeAll(type[GENERICS_DATA],lowercasePaths,);if(type.length>BINDINGS_DATA&&type[BINDINGS_DATA].length>0){bindings=new Map(type[BINDINGS_DATA].map(binding=>{const[assocType,constraints]=binding;return[this.buildItemSearchType(assocType,lowercasePaths,true).id,this.buildItemSearchTypeAll(constraints,lowercasePaths),]}))}else{bindings=this.EMPTY_BINDINGS_MAP}}let result;if(pathIndex<0){result={id:pathIndex,ty:TY_GENERIC,path:null,exactPath:null,generics,bindings,}}else if(pathIndex===0){result={id:null,ty:null,path:null,exactPath:null,generics,bindings,}}else{const item=lowercasePaths[pathIndex-1];result={id:this.buildTypeMapIndex(item.name,isAssocType),ty:item.ty,path:item.path,exactPath:item.exactPath,generics,bindings,}}const cr=this.TYPES_POOL.get(result.id);if(cr){if(cr.generics.length===result.generics.length&&cr.generics!==result.generics&&cr.generics.every((x,i)=>result.generics[i]===x)){result.generics=cr.generics}if(cr.bindings.size===result.bindings.size&&cr.bindings!==result.bindings){let ok=true;for(const[k,v]of cr.bindings.entries()){const v2=result.bindings.get(v);if(!v2){ok=false;break}if(v!==v2&&v.length===v2.length&&v.every((x,i)=>v2[i]===x)){result.bindings.set(k,v)}else if(v!==v2){ok=false;break}}if(ok){result.bindings=cr.bindings}}if(cr.ty===result.ty&&cr.path===result.path&&cr.bindings===result.bindings&&cr.generics===result.generics&&cr.ty===result.ty){return cr}}this.TYPES_POOL.set(result.id,result);return result}buildFunctionTypeFingerprint(type,output,fps){let input=type.id;if(input===this.typeNameIdOfArray||input===this.typeNameIdOfSlice){input=this.typeNameIdOfArrayOrSlice}if(input===this.typeNameIdOfTuple||input===this.typeNameIdOfUnit){input=this.typeNameIdOfTupleOrUnit}if(input===this.typeNameIdOfFn||input===this.typeNameIdOfFnMut||input===this.typeNameIdOfFnOnce){input=this.typeNameIdOfHof}const hashint1=k=>{k=(~~k+0x7ed55d16)+(k<<12);k=(k ^ 0xc761c23c)^(k>>>19);k=(~~k+0x165667b1)+(k<<5);k=(~~k+0xd3a2646c)^(k<<9);k=(~~k+0xfd7046c5)+(k<<3);return(k ^ 0xb55a4f09)^(k>>>16)};const hashint2=k=>{k=~k+(k<<15);k ^=k>>>12;k+=k<<2;k ^=k>>>4;k=Math.imul(k,2057);return k ^(k>>16)};if(input!==null){const h0a=hashint1(input);const h0b=hashint2(input);const h1a=~~(h0a+Math.imul(h0b,2));const h1b=~~(h0a+Math.imul(h0b,3));const h2a=~~(h0a+Math.imul(h0b,4));const h2b=~~(h0a+Math.imul(h0b,5));output[0]|=(1<<(h0a%32))|(1<<(h1b%32));output[1]|=(1<<(h1a%32))|(1<<(h2b%32));output[2]|=(1<<(h2a%32))|(1<<(h0b%32));fps.add(input)}for(const g of type.generics){this.buildFunctionTypeFingerprint(g,output,fps)}const fb={id:null,ty:0,generics:this.EMPTY_GENERICS_ARRAY,bindings:this.EMPTY_BINDINGS_MAP,};for(const[k,v]of type.bindings.entries()){fb.id=k;fb.generics=v;this.buildFunctionTypeFingerprint(fb,output,fps)}output[3]=fps.size}buildIndex(rawSearchIndex){const buildFunctionSearchTypeCallback=lowercasePaths=>{return functionSearchType=>{if(functionSearchType===0){return null}const INPUTS_DATA=0;const OUTPUT_DATA=1;let inputs,output;if(typeof functionSearchType[INPUTS_DATA]==="number"){inputs=[this.buildItemSearchType(functionSearchType[INPUTS_DATA],lowercasePaths),]}else{inputs=this.buildItemSearchTypeAll(functionSearchType[INPUTS_DATA],lowercasePaths,)}if(functionSearchType.length>1){if(typeof functionSearchType[OUTPUT_DATA]==="number"){output=[this.buildItemSearchType(functionSearchType[OUTPUT_DATA],lowercasePaths,),]}else{output=this.buildItemSearchTypeAll(functionSearchType[OUTPUT_DATA],lowercasePaths,)}}else{output=[]}const where_clause=[];const l=functionSearchType.length;for(let i=2;inoop);let descShard={crate,shard:0,start:0,len:itemDescShardDecoder.next(),promise:null,resolve:null,};const descShardList=[descShard];this.searchIndexDeprecated.set(crate,new RoaringBitmap(crateCorpus.c));this.searchIndexEmptyDesc.set(crate,new RoaringBitmap(crateCorpus.e));let descIndex=0;const crateRow={crate,ty:3,name:crate,path:"",descShard,descIndex,exactPath:"",desc:crateCorpus.doc,parent:undefined,type:null,id,word:crate,normalizedName:crate.indexOf("_")===-1?crate:crate.replace(/_/g,""),bitIndex:0,implDisambiguator:null,};id+=1;searchIndex.push(crateRow);currentIndex+=1;if(!this.searchIndexEmptyDesc.get(crate).contains(0)){descIndex+=1}const itemTypes=crateCorpus.t;const itemNames=crateCorpus.n;const itemPaths=new Map(crateCorpus.q);const itemReexports=new Map(crateCorpus.r);const itemParentIdxDecoder=new VlqHexDecoder(crateCorpus.i,noop=>noop);const implDisambiguator=new Map(crateCorpus.b);const paths=crateCorpus.p;const aliases=crateCorpus.a;const lowercasePaths=[];const itemFunctionDecoder=new VlqHexDecoder(crateCorpus.f,buildFunctionSearchTypeCallback(lowercasePaths),);let len=paths.length;let lastPath=itemPaths.get(0);for(let i=0;i2){path=itemPaths.has(elem[2])?itemPaths.get(elem[2]):lastPath;lastPath=path}const exactPath=elem.length>3?itemPaths.get(elem[3]):path;lowercasePaths.push({ty,name:name.toLowerCase(),path,exactPath});paths[i]={ty,name,path,exactPath}}lastPath="";len=itemTypes.length;let lastName="";let lastWord="";for(let i=0;i=descShard.len&&!this.searchIndexEmptyDesc.get(crate).contains(bitIndex)){descShard={crate,shard:descShard.shard+1,start:descShard.start+descShard.len,len:itemDescShardDecoder.next(),promise:null,resolve:null,};descIndex=0;descShardList.push(descShard)}const name=itemNames[i]===""?lastName:itemNames[i];const word=itemNames[i]===""?lastWord:itemNames[i].toLowerCase();const path=itemPaths.has(i)?itemPaths.get(i):lastPath;const type=itemFunctionDecoder.next();if(type!==null){if(type){const fp=this.functionTypeFingerprint.subarray(id*4,(id+1)*4);const fps=new Set();for(const t of type.inputs){this.buildFunctionTypeFingerprint(t,fp,fps)}for(const t of type.output){this.buildFunctionTypeFingerprint(t,fp,fps)}for(const w of type.where_clause){for(const t of w){this.buildFunctionTypeFingerprint(t,fp,fps)}}}}const itemParentIdx=itemParentIdxDecoder.next();const row={crate,ty:itemTypes.charCodeAt(i)-65,name,path,descShard,descIndex,exactPath:itemReexports.has(i)?itemPaths.get(itemReexports.get(i)):path,parent:itemParentIdx>0?paths[itemParentIdx-1]:undefined,type,id,word,normalizedName:word.indexOf("_")===-1?word:word.replace(/_/g,""),bitIndex,implDisambiguator:implDisambiguator.has(i)?implDisambiguator.get(i):null,};id+=1;searchIndex.push(row);lastPath=row.path;if(!this.searchIndexEmptyDesc.get(crate).contains(bitIndex)){descIndex+=1}lastName=name;lastWord=word}if(aliases){const currentCrateAliases=new Map();this.ALIASES.set(crate,currentCrateAliases);for(const alias_name in aliases){if(!Object.prototype.hasOwnProperty.call(aliases,alias_name)){continue}let currentNameAliases;if(currentCrateAliases.has(alias_name)){currentNameAliases=currentCrateAliases.get(alias_name)}else{currentNameAliases=[];currentCrateAliases.set(alias_name,currentNameAliases)}for(const local_alias of aliases[alias_name]){currentNameAliases.push(local_alias+currentIndex)}}}currentIndex+=itemTypes.length;this.searchState.descShards.set(crate,descShardList)}this.TYPES_POOL=new Map();return searchIndex}static parseQuery(userQuery){function itemTypeFromName(typename){const index=itemTypes.findIndex(i=>i===typename);if(index<0){throw["Unknown type filter ",typename]}return index}function convertTypeFilterOnElem(elem){if(elem.typeFilter!==null){let typeFilter=elem.typeFilter;if(typeFilter==="const"){typeFilter="constant"}elem.typeFilter=itemTypeFromName(typeFilter)}else{elem.typeFilter=NO_TYPE_FILTER}for(const elem2 of elem.generics){convertTypeFilterOnElem(elem2)}for(const constraints of elem.bindings.values()){for(const constraint of constraints){convertTypeFilterOnElem(constraint)}}}function newParsedQuery(userQuery){return{original:userQuery,userQuery:userQuery.toLowerCase(),elems:[],returned:[],foundElems:0,totalElems:0,literalSearch:false,hasReturnArrow:false,error:null,correction:null,proposeCorrectionFrom:null,proposeCorrectionTo:null,typeFingerprint:new Uint32Array(4),}}function parseInput(query,parserState){let foundStopChar=true;while(parserState.pos"){if(isReturnArrow(parserState)){query.hasReturnArrow=true;break}throw["Unexpected ",c," (did you mean ","->","?)"]}else if(parserState.pos>0){throw["Unexpected ",c," after ",parserState.userQuery[parserState.pos-1]]}throw["Unexpected ",c]}else if(c===" "){skipWhitespace(parserState);continue}if(!foundStopChar){let extra="";if(isLastElemGeneric(query.elems,parserState)){extra=[" after ",">"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(parserState.typeFilter!==null){throw["Expected ",","," or ","->",...extra,", found ",c,]}throw["Expected ",",",", ",":"," or ","->",...extra,", found ",c,]}const before=query.elems.length;getFilteredNextElem(query,parserState,query.elems,false);if(query.elems.length===before){parserState.pos+=1}foundStopChar=false}if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}while(parserState.pos1}query.foundElems=query.elems.length+query.returned.length;query.totalElems=parserState.totalElems;return query}async execQuery(parsedQuery,filterCrates,currentCrate){const results_others=new Map(),results_in_args=new Map(),results_returned=new Map();function createQueryResults(results_in_args,results_returned,results_others,parsedQuery){return{"in_args":results_in_args,"returned":results_returned,"others":results_others,"query":parsedQuery,}}const buildHrefAndPath=item=>{let displayPath;let href;const type=itemTypes[item.ty];const name=item.name;let path=item.path;let exactPath=item.exactPath;if(type==="mod"){displayPath=path+"::";href=this.rootPath+path.replace(/::/g,"/")+"/"+name+"/index.html"}else if(type==="import"){displayPath=item.path+"::";href=this.rootPath+item.path.replace(/::/g,"/")+"/index.html#reexport."+name}else if(type==="primitive"||type==="keyword"){displayPath="";href=this.rootPath+path.replace(/::/g,"/")+"/"+type+"."+name+".html"}else if(type==="externcrate"){displayPath="";href=this.rootPath+name+"/index.html"}else if(item.parent!==undefined){const myparent=item.parent;let anchor=type+"."+name;const parentType=itemTypes[myparent.ty];let pageType=parentType;let pageName=myparent.name;exactPath=`${myparent.exactPath}::${myparent.name}`;if(parentType==="primitive"){displayPath=myparent.name+"::"}else if(type==="structfield"&&parentType==="variant"){const enumNameIdx=item.path.lastIndexOf("::");const enumName=item.path.substr(enumNameIdx+2);path=item.path.substr(0,enumNameIdx);displayPath=path+"::"+enumName+"::"+myparent.name+"::";anchor="variant."+myparent.name+".field."+name;pageType="enum";pageName=enumName}else{displayPath=path+"::"+myparent.name+"::"}if(item.implDisambiguator!==null){anchor=item.implDisambiguator+"/"+anchor}href=this.rootPath+path.replace(/::/g,"/")+"/"+pageType+"."+pageName+".html#"+anchor}else{displayPath=item.path+"::";href=this.rootPath+item.path.replace(/::/g,"/")+"/"+type+"."+name+".html"}return[displayPath,href,`${exactPath}::${name}`]};function pathSplitter(path){const tmp=""+path.replace(/::/g,"::");if(tmp.endsWith("")){return tmp.slice(0,tmp.length-6)}return tmp}const transformResults=results=>{const duplicates=new Set();const out=[];for(const result of results){if(result.id!==-1){const obj=this.searchIndex[result.id];obj.dist=result.dist;const res=buildHrefAndPath(obj);obj.displayPath=pathSplitter(res[0]);obj.fullPath=res[2]+"|"+obj.ty;if(duplicates.has(obj.fullPath)){continue}if(obj.ty===TY_IMPORT&&duplicates.has(res[2])){continue}if(duplicates.has(res[2]+"|"+TY_IMPORT)){continue}duplicates.add(obj.fullPath);duplicates.add(res[2]);obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out};const sortResults=async(results,isType,preferredCrate)=>{const userQuery=parsedQuery.userQuery;const casedUserQuery=parsedQuery.original;const isMixedCase=casedUserQuery!==userQuery;const result_list=[];for(const result of results.values()){result.item=this.searchIndex[result.id];result.word=this.searchIndex[result.id].word;result_list.push(result)}result_list.sort((aaa,bbb)=>{let a,b;if(isMixedCase){a=(aaa.item.name!==casedUserQuery);b=(bbb.item.name!==casedUserQuery);if(a!==b){return a-b}}a=(aaa.word!==userQuery);b=(bbb.word!==userQuery);if(a!==b){return a-b}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.path_dist;b=bbb.path_dist;if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}a=(aaa.dist);b=(bbb.dist);if(a!==b){return a-b}a=this.searchIndexDeprecated.get(aaa.item.crate).contains(aaa.item.bitIndex);b=this.searchIndexDeprecated.get(bbb.item.crate).contains(bbb.item.bitIndex);if(a!==b){return a-b}a=(aaa.item.crate!==preferredCrate);b=(bbb.item.crate!==preferredCrate);if(a!==b){return a-b}a=aaa.word.length;b=bbb.word.length;if(a!==b){return a-b}a=aaa.word;b=bbb.word;if(a!==b){return(a>b?+1:-1)}a=this.searchIndexEmptyDesc.get(aaa.item.crate).contains(aaa.item.bitIndex);b=this.searchIndexEmptyDesc.get(bbb.item.crate).contains(bbb.item.bitIndex);if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});return transformResults(result_list)};function unifyFunctionTypes(fnTypesIn,queryElems,whereClause,mgensIn,solutionCb,unboxingDepth,){if(unboxingDepth>=UNBOXING_LIMIT){return false}const mgens=mgensIn===null?null:new Map(mgensIn);if(queryElems.length===0){return!solutionCb||solutionCb(mgens)}if(!fnTypesIn||fnTypesIn.length===0){return false}const ql=queryElems.length;const fl=fnTypesIn.length;if(ql===1&&queryElems[0].generics.length===0&&queryElems[0].bindings.size===0){const queryElem=queryElems[0];for(const fnType of fnTypesIn){if(!unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgens)){continue}if(fnType.id<0&&queryElem.id<0){if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==queryElem.id){continue}const mgensScratch=new Map(mgens);mgensScratch.set(fnType.id,queryElem.id);if(!solutionCb||solutionCb(mgensScratch)){return true}}else if(!solutionCb||solutionCb(mgens?new Map(mgens):null)){return true}}for(const fnType of fnTypesIn){if(!unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth+1,)){continue}if(fnType.id<0){if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==0){continue}const mgensScratch=new Map(mgens);mgensScratch.set(fnType.id,0);if(unifyFunctionTypes(whereClause[(-fnType.id)-1],queryElems,whereClause,mgensScratch,solutionCb,unboxingDepth+1,)){return true}}else if(unifyFunctionTypes([...fnType.generics,...Array.from(fnType.bindings.values()).flat()],queryElems,whereClause,mgens?new Map(mgens):null,solutionCb,unboxingDepth+1,)){return true}}return false}const fnTypes=fnTypesIn.slice();const flast=fl-1;const qlast=ql-1;const queryElem=queryElems[qlast];let queryElemsTmp=null;for(let i=flast;i>=0;i-=1){const fnType=fnTypes[i];if(!unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgens)){continue}let mgensScratch;if(fnType.id<0){mgensScratch=new Map(mgens);if(mgensScratch.has(fnType.id)&&mgensScratch.get(fnType.id)!==queryElem.id){continue}mgensScratch.set(fnType.id,queryElem.id)}else{mgensScratch=mgens}fnTypes[i]=fnTypes[flast];fnTypes.length=flast;if(!queryElemsTmp){queryElemsTmp=queryElems.slice(0,qlast)}const passesUnification=unifyFunctionTypes(fnTypes,queryElemsTmp,whereClause,mgensScratch,mgensScratch=>{if(fnType.generics.length===0&&queryElem.generics.length===0&&fnType.bindings.size===0&&queryElem.bindings.size===0){return!solutionCb||solutionCb(mgensScratch)}const solution=unifyFunctionTypeCheckBindings(fnType,queryElem,whereClause,mgensScratch,unboxingDepth,);if(!solution){return false}const simplifiedGenerics=solution.simplifiedGenerics;for(const simplifiedMgens of solution.mgens){const passesUnification=unifyFunctionTypes(simplifiedGenerics,queryElem.generics,whereClause,simplifiedMgens,solutionCb,unboxingDepth,);if(passesUnification){return true}}return false},unboxingDepth,);if(passesUnification){return true}fnTypes[flast]=fnTypes[i];fnTypes[i]=fnType;fnTypes.length=fl}for(let i=flast;i>=0;i-=1){const fnType=fnTypes[i];if(!unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth+1,)){continue}let mgensScratch;if(fnType.id<0){mgensScratch=new Map(mgens);if(mgensScratch.has(fnType.id)&&mgensScratch.get(fnType.id)!==0){continue}mgensScratch.set(fnType.id,0)}else{mgensScratch=mgens}const generics=fnType.id<0?whereClause[(-fnType.id)-1]:fnType.generics;const bindings=fnType.bindings?Array.from(fnType.bindings.values()).flat():[];const passesUnification=unifyFunctionTypes(fnTypes.toSpliced(i,1,...generics,...bindings),queryElems,whereClause,mgensScratch,solutionCb,unboxingDepth+1,);if(passesUnification){return true}}return false}const unifyFunctionTypeIsMatchCandidate=(fnType,queryElem,mgensIn)=>{if(!typePassesFilter(queryElem.typeFilter,fnType.ty)){return false}if(fnType.id<0&&queryElem.id<0){if(mgensIn){if(mgensIn.has(fnType.id)&&mgensIn.get(fnType.id)!==queryElem.id){return false}for(const[fid,qid]of mgensIn.entries()){if(fnType.id!==fid&&queryElem.id===qid){return false}if(fnType.id===fid&&queryElem.id!==qid){return false}}}return true}else{if(queryElem.id===this.typeNameIdOfArrayOrSlice&&(fnType.id===this.typeNameIdOfSlice||fnType.id===this.typeNameIdOfArray)){}else if(queryElem.id===this.typeNameIdOfTupleOrUnit&&(fnType.id===this.typeNameIdOfTuple||fnType.id===this.typeNameIdOfUnit)){}else if(queryElem.id===this.typeNameIdOfHof&&(fnType.id===this.typeNameIdOfFn||fnType.id===this.typeNameIdOfFnMut||fnType.id===this.typeNameIdOfFnOnce)){}else if(fnType.id!==queryElem.id||queryElem.id===null){return false}if((fnType.generics.length+fnType.bindings.size)===0&&queryElem.generics.length!==0){return false}if(fnType.bindings.size0){const fnTypePath=fnType.path!==undefined&&fnType.path!==null?fnType.path.split("::"):[];if(queryElemPathLength>fnTypePath.length){return false}let i=0;for(const path of fnTypePath){if(path===queryElem.pathWithoutLast[i]){i+=1;if(i>=queryElemPathLength){break}}}if(i0){let mgensSolutionSet=[mgensIn];for(const[name,constraints]of queryElem.bindings.entries()){if(mgensSolutionSet.length===0){return false}if(!fnType.bindings.has(name)){return false}const fnTypeBindings=fnType.bindings.get(name);mgensSolutionSet=mgensSolutionSet.flatMap(mgens=>{const newSolutions=[];unifyFunctionTypes(fnTypeBindings,constraints,whereClause,mgens,newMgens=>{newSolutions.push(newMgens);return false},unboxingDepth,);return newSolutions})}if(mgensSolutionSet.length===0){return false}const binds=Array.from(fnType.bindings.entries()).flatMap(entry=>{const[name,constraints]=entry;if(queryElem.bindings.has(name)){return[]}else{return constraints}});if(simplifiedGenerics.length>0){simplifiedGenerics=[...simplifiedGenerics,...binds]}else{simplifiedGenerics=binds}return{simplifiedGenerics,mgens:mgensSolutionSet}}return{simplifiedGenerics,mgens:[mgensIn]}}function unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth,){if(unboxingDepth>=UNBOXING_LIMIT){return false}if(fnType.id<0&&queryElem.id>=0){if(!whereClause){return false}if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==0){return false}const mgensTmp=new Map(mgens);mgensTmp.set(fnType.id,null);return checkIfInList(whereClause[(-fnType.id)-1],queryElem,whereClause,mgensTmp,unboxingDepth,)}else if(fnType.generics.length>0||fnType.bindings.size>0){const simplifiedGenerics=[...fnType.generics,...Array.from(fnType.bindings.values()).flat(),];return checkIfInList(simplifiedGenerics,queryElem,whereClause,mgens,unboxingDepth,)}return false}function checkIfInList(list,elem,whereClause,mgens,unboxingDepth){for(const entry of list){if(checkType(entry,elem,whereClause,mgens,unboxingDepth)){return true}}return false}const checkType=(row,elem,whereClause,mgens,unboxingDepth)=>{if(unboxingDepth>=UNBOXING_LIMIT){return false}if(row.bindings.size===0&&elem.bindings.size===0){if(elem.id<0&&mgens===null){return row.id<0||checkIfInList(row.generics,elem,whereClause,mgens,unboxingDepth+1,)}if(row.id>0&&elem.id>0&&elem.pathWithoutLast.length===0&&typePassesFilter(elem.typeFilter,row.ty)&&elem.generics.length===0&&elem.id!==this.typeNameIdOfArrayOrSlice&&elem.id!==this.typeNameIdOfTupleOrUnit&&elem.id!==this.typeNameIdOfHof){return row.id===elem.id||checkIfInList(row.generics,elem,whereClause,mgens,unboxingDepth,)}}return unifyFunctionTypes([row],[elem],whereClause,mgens,null,unboxingDepth)};function checkPath(contains,ty){if(contains.length===0){return 0}const maxPathEditDistance=Math.floor(contains.reduce((acc,next)=>acc+next.length,0)/3,);let ret_dist=maxPathEditDistance+1;const path=ty.path.split("::");if(ty.parent&&ty.parent.name){path.push(ty.parent.name.toLowerCase())}const length=path.length;const clength=contains.length;pathiter:for(let i=length-clength;i>=0;i-=1){let dist_total=0;for(let x=0;xmaxPathEditDistance){continue pathiter}dist_total+=dist}}ret_dist=Math.min(ret_dist,Math.round(dist_total/clength))}return ret_dist>maxPathEditDistance?null:ret_dist}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER||filter===type)return true;const name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,descShard:item.descShard,descIndex:item.descIndex,exactPath:item.exactPath,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,bitIndex:item.bitIndex,implDisambiguator:item.implDisambiguator,}}const handleAliases=async(ret,query,filterCrates,currentCrate)=>{const lowerQuery=query.toLowerCase();const aliases=[];const crateAliases=[];if(filterCrates!==null){if(this.ALIASES.has(filterCrates)&&this.ALIASES.get(filterCrates).has(lowerQuery)){const query_aliases=this.ALIASES.get(filterCrates).get(lowerQuery);for(const alias of query_aliases){aliases.push(createAliasFromItem(this.searchIndex[alias]))}}}else{for(const[crate,crateAliasesIndex]of this.ALIASES){if(crateAliasesIndex.has(lowerQuery)){const pushTo=crate===currentCrate?crateAliases:aliases;const query_aliases=crateAliasesIndex.get(lowerQuery);for(const alias of query_aliases){pushTo.push(createAliasFromItem(this.searchIndex[alias]))}}}}const sortFunc=(aaa,bbb)=>{if(aaa.path{return this.searchIndexEmptyDesc.get(alias.crate).contains(alias.bitIndex)?"":this.searchState.loadDesc(alias)};const[crateDescs,descs]=await Promise.all([Promise.all(crateAliases.map(fetchDesc)),Promise.all(aliases.map(fetchDesc)),]);const pushFunc=alias=>{alias.alias=query;const res=buildHrefAndPath(alias);alias.displayPath=pathSplitter(res[0]);alias.fullPath=alias.displayPath+alias.name;alias.href=res[1];ret.others.unshift(alias);if(ret.others.length>MAX_RESULTS){ret.others.pop()}};aliases.forEach((alias,i)=>{alias.desc=descs[i]});aliases.forEach(pushFunc);crateAliases.forEach((alias,i)=>{alias.desc=crateDescs[i]});crateAliases.forEach(pushFunc)};function addIntoResults(results,fullId,id,index,dist,path_dist,maxEditDistance){if(dist<=maxEditDistance||index!==-1){if(results.has(fullId)){const result=results.get(fullId);if(result.dontValidate||result.dist<=dist){return}}results.set(fullId,{id:id,index:index,dontValidate:parsedQuery.literalSearch,dist:dist,path_dist:path_dist,})}}function handleSingleArg(row,pos,elem,results_others,results_in_args,results_returned,maxEditDistance,){if(!row||(filterCrates!==null&&row.crate!==filterCrates)){return}let path_dist=0;const fullId=row.id;const tfpDist=compareTypeFingerprints(fullId,parsedQuery.typeFingerprint,);if(tfpDist!==null){const in_args=row.type&&row.type.inputs&&checkIfInList(row.type.inputs,elem,row.type.where_clause,null,0);const returned=row.type&&row.type.output&&checkIfInList(row.type.output,elem,row.type.where_clause,null,0);if(in_args){results_in_args.max_dist=Math.max(results_in_args.max_dist||0,tfpDist);const maxDist=results_in_args.sizenormalizedIndex&&normalizedIndex!==-1)){index=normalizedIndex}if(elem.fullPath.length>1){path_dist=checkPath(elem.pathWithoutLast,row);if(path_dist===null){return}}if(parsedQuery.literalSearch){if(row.word===elem.pathLast){addIntoResults(results_others,fullId,pos,index,0,path_dist)}return}const dist=editDistance(row.normalizedName,elem.normalizedPathLast,maxEditDistance);if(index===-1&&dist>maxEditDistance){return}addIntoResults(results_others,fullId,pos,index,dist,path_dist,maxEditDistance)}function handleArgs(row,pos,results){if(!row||(filterCrates!==null&&row.crate!==filterCrates)||!row.type){return}const tfpDist=compareTypeFingerprints(row.id,parsedQuery.typeFingerprint,);if(tfpDist===null){return}if(results.size>=MAX_RESULTS&&tfpDist>results.max_dist){return}if(!unifyFunctionTypes(row.type.inputs,parsedQuery.elems,row.type.where_clause,null,mgens=>{return unifyFunctionTypes(row.type.output,parsedQuery.returned,row.type.where_clause,mgens,null,0,)},0,)){return}results.max_dist=Math.max(results.max_dist||0,tfpDist);addIntoResults(results,row.id,pos,0,tfpDist,0,Number.MAX_VALUE)}const compareTypeFingerprints=(fullId,queryFingerprint)=>{const fh0=this.functionTypeFingerprint[fullId*4];const fh1=this.functionTypeFingerprint[(fullId*4)+1];const fh2=this.functionTypeFingerprint[(fullId*4)+2];const[qh0,qh1,qh2]=queryFingerprint;const[in0,in1,in2]=[fh0&qh0,fh1&qh1,fh2&qh2];if((in0 ^ qh0)||(in1 ^ qh1)||(in2 ^ qh2)){return null}return this.functionTypeFingerprint[(fullId*4)+3]};const innerRunQuery=()=>{const queryLen=parsedQuery.elems.reduce((acc,next)=>acc+next.pathLast.length,0)+parsedQuery.returned.reduce((acc,next)=>acc+next.pathLast.length,0);const maxEditDistance=Math.floor(queryLen/3);const genericSymbols=new Map();const convertNameToId=(elem,isAssocType)=>{const loweredName=elem.pathLast.toLowerCase();if(this.typeNameIdMap.has(loweredName)&&(isAssocType||!this.typeNameIdMap.get(loweredName).assocOnly)){elem.id=this.typeNameIdMap.get(loweredName).id}else if(!parsedQuery.literalSearch){let match=null;let matchDist=maxEditDistance+1;let matchName="";for(const[name,{id,assocOnly}]of this.typeNameIdMap){const dist=Math.min(editDistance(name,loweredName,maxEditDistance),editDistance(name,elem.normalizedPathLast,maxEditDistance),);if(dist<=matchDist&&dist<=maxEditDistance&&(isAssocType||!assocOnly)){if(dist===matchDist&&matchName>name){continue}match=id;matchDist=dist;matchName=name}}if(match!==null){parsedQuery.correction=matchName}elem.id=match}if((elem.id===null&&parsedQuery.totalElems>1&&elem.typeFilter===-1&&elem.generics.length===0&&elem.bindings.size===0)||elem.typeFilter===TY_GENERIC){if(genericSymbols.has(elem.name)){elem.id=genericSymbols.get(elem.name)}else{elem.id=-(genericSymbols.size+1);genericSymbols.set(elem.name,elem.id)}if(elem.typeFilter===-1&&elem.name.length>=3){const maxPartDistance=Math.floor(elem.name.length/3);let matchDist=maxPartDistance+1;let matchName="";for(const name of this.typeNameIdMap.keys()){const dist=editDistance(name,elem.name,maxPartDistance);if(dist<=matchDist&&dist<=maxPartDistance){if(dist===matchDist&&matchName>name){continue}matchDist=dist;matchName=name}}if(matchName!==""){parsedQuery.proposeCorrectionFrom=elem.name;parsedQuery.proposeCorrectionTo=matchName}}elem.typeFilter=TY_GENERIC}if(elem.generics.length>0&&elem.typeFilter===TY_GENERIC){parsedQuery.error=["Generic type parameter ",elem.name," does not accept generic parameters",]}for(const elem2 of elem.generics){convertNameToId(elem2)}elem.bindings=new Map(Array.from(elem.bindings.entries()).map(entry=>{const[name,constraints]=entry;if(!this.typeNameIdMap.has(name)){parsedQuery.error=["Type parameter ",name," does not exist",];return[null,[]]}for(const elem2 of constraints){convertNameToId(elem2)}return[this.typeNameIdMap.get(name).id,constraints]}),)};const fps=new Set();for(const elem of parsedQuery.elems){convertNameToId(elem);this.buildFunctionTypeFingerprint(elem,parsedQuery.typeFingerprint,fps)}for(const elem of parsedQuery.returned){convertNameToId(elem);this.buildFunctionTypeFingerprint(elem,parsedQuery.typeFingerprint,fps)}if(parsedQuery.foundElems===1&&!parsedQuery.hasReturnArrow){if(parsedQuery.elems.length===1){const elem=parsedQuery.elems[0];const length=this.searchIndex.length;for(let i=0,nSearchIndex=length;i0){const sortQ=(a,b)=>{const ag=a.generics.length===0&&a.bindings.size===0;const bg=b.generics.length===0&&b.bindings.size===0;if(ag!==bg){return ag-bg}const ai=a.id>0;const bi=b.id>0;return ai-bi};parsedQuery.elems.sort(sortQ);parsedQuery.returned.sort(sortQ);for(let i=0,nSearchIndex=this.searchIndex.length;i{const descs=await Promise.all(list.map(result=>{return this.searchIndexEmptyDesc.get(result.crate).contains(result.bitIndex)?"":this.searchState.loadDesc(result)}));for(const[i,result]of list.entries()){result.desc=descs[i]}}));if(parsedQuery.error!==null&&ret.others.length!==0){ret.query.error=null}return ret}}let rawSearchIndex;let docSearch;const longItemTypes=["keyword","primitive type","module","extern crate","re-export","struct","enum","function","type alias","static","trait","","trait method","method","struct field","enum variant","macro","assoc type","constant","assoc const","union","foreign type","existential type","attribute macro","derive macro","trait alias",];let currentResults;function printTab(nb){let iter=0;let foundCurrentTab=false;let foundCurrentResultSet=false;onEachLazy(document.getElementById("search-tabs").childNodes,elem=>{if(nb===iter){addClass(elem,"selected");foundCurrentTab=true}else{removeClass(elem,"selected")}iter+=1});const isTypeSearch=(nb>0||iter===1);iter=0;onEachLazy(document.getElementById("results").childNodes,elem=>{if(nb===iter){addClass(elem,"active");foundCurrentResultSet=true}else{removeClass(elem,"active")}iter+=1});if(foundCurrentTab&&foundCurrentResultSet){searchState.currentTab=nb;const correctionsElem=document.getElementsByClassName("search-corrections");if(isTypeSearch){removeClass(correctionsElem[0],"hidden")}else{addClass(correctionsElem[0],"hidden")}}else if(nb!==0){printTab(0)}}function buildUrl(search,filterCrates){let extra="?search="+encodeURIComponent(search);if(filterCrates!==null){extra+="&filter-crate="+encodeURIComponent(filterCrates)}return getNakedUrl()+extra+window.location.hash}function getFilterCrates(){const elem=document.getElementById("crate-search");if(elem&&elem.value!=="all crates"&&window.searchIndex.has(elem.value)){return elem.value}return null}function nextTab(direction){const next=(searchState.currentTab+direction+3)%searchState.focusedByTab.length;searchState.focusedByTab[searchState.currentTab]=document.activeElement;printTab(next);focusSearchResult()}function focusSearchResult(){const target=searchState.focusedByTab[searchState.currentTab]||document.querySelectorAll(".search-results.active a").item(0)||document.querySelectorAll("#search-tabs button").item(searchState.currentTab);searchState.focusedByTab[searchState.currentTab]=null;if(target){target.focus()}}async function addTab(array,query,display){const extraClass=display?" active":"";const output=document.createElement("div");if(array.length>0){output.className="search-results "+extraClass;for(const item of array){const name=item.name;const type=itemTypes[item.ty];const longType=longItemTypes[item.ty];const typeName=longType.length!==0?`${longType}`:"?";const link=document.createElement("a");link.className="result-"+type;link.href=item.href;const resultName=document.createElement("div");resultName.className="result-name";resultName.insertAdjacentHTML("beforeend",`${typeName}`);link.appendChild(resultName);let alias=" ";if(item.is_alias){alias=`
    \ +${item.alias} - see \ +
    `}resultName.insertAdjacentHTML("beforeend",`
    ${alias}\ +${item.displayPath}${name}\ +
    `);const description=document.createElement("div");description.className="desc";description.insertAdjacentHTML("beforeend",item.desc);link.appendChild(description);output.appendChild(link)}}else if(query.error===null){output.className="search-failed"+extraClass;output.innerHTML="No results :(
    "+"Try on DuckDuckGo?

    "+"Or try looking in one of these:"}return[output,array.length]}function makeTabHeader(tabNb,text,nbElems){const fmtNbElems=nbElems<10?`\u{2007}(${nbElems})\u{2007}\u{2007}`:nbElems<100?`\u{2007}(${nbElems})\u{2007}`:`\u{2007}(${nbElems})`;if(searchState.currentTab===tabNb){return""}return""}async function showResults(results,go_to_first,filterCrates){const search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true")){window.onunload=()=>{};searchState.removeQueryParameters();const elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}if(results.query===undefined){results.query=DocSearch.parseQuery(searchState.input.value)}currentResults=results.query.userQuery;const[ret_others,ret_in_args,ret_returned]=await Promise.all([addTab(results.others,results.query,true),addTab(results.in_args,results.query,false),addTab(results.returned,results.query,false),]);let currentTab=searchState.currentTab;if((currentTab===0&&ret_others[1]===0)||(currentTab===1&&ret_in_args[1]===0)||(currentTab===2&&ret_returned[1]===0)){if(ret_others[1]!==0){currentTab=0}else if(ret_in_args[1]!==0){currentTab=1}else if(ret_returned[1]!==0){currentTab=2}}let crates="";if(rawSearchIndex.size>1){crates="
    in 
    "+"
    "}let output=`
    \ +

    Results

    ${crates}
    `;if(results.query.error!==null){const error=results.query.error;error.forEach((value,index)=>{value=value.split("<").join("<").split(">").join(">");if(index%2!==0){error[index]=`${value.replaceAll(" ", " ")}`}else{error[index]=value}});output+=`

    Query parser error: "${error.join("")}".

    `;output+="
    "+makeTabHeader(0,"In Names",ret_others[1])+"
    ";currentTab=0}else if(results.query.foundElems<=1&&results.query.returned.length===0){output+="
    "+makeTabHeader(0,"In Names",ret_others[1])+makeTabHeader(1,"In Parameters",ret_in_args[1])+makeTabHeader(2,"In Return Types",ret_returned[1])+"
    "}else{const signatureTabTitle=results.query.elems.length===0?"In Function Return Types":results.query.returned.length===0?"In Function Parameters":"In Function Signatures";output+="
    "+makeTabHeader(0,signatureTabTitle,ret_others[1])+"
    ";currentTab=0}if(results.query.correction!==null){const orig=results.query.returned.length>0?results.query.returned[0].name:results.query.elems[0].name;output+="

    "+`Type "${orig}" not found. `+"Showing results for closest type name "+`"${results.query.correction}" instead.

    `}if(results.query.proposeCorrectionFrom!==null){const orig=results.query.proposeCorrectionFrom;const targ=results.query.proposeCorrectionTo;output+="

    "+`Type "${orig}" not found and used as generic parameter. `+`Consider searching for "${targ}" instead.

    `}const resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others[0]);resultsElem.appendChild(ret_in_args[0]);resultsElem.appendChild(ret_returned[0]);search.innerHTML=output;if(searchState.rustdocToolbar){search.querySelector(".main-heading").appendChild(searchState.rustdocToolbar)}const crateSearch=document.getElementById("crate-search");if(crateSearch){crateSearch.addEventListener("input",updateCrate)}search.appendChild(resultsElem);searchState.showResults(search);const elems=document.getElementById("search-tabs").childNodes;searchState.focusedByTab=[];let i=0;for(const elem of elems){const j=i;elem.onclick=()=>printTab(j);searchState.focusedByTab.push(null);i+=1}printTab(currentTab)}function updateSearchHistory(url){if(!browserSupportsHistoryApi()){return}const params=searchState.getQueryStringParams();if(!history.state&&!params.search){history.pushState(null,"",url)}else{history.replaceState(null,"",url)}}async function search(forced){const query=DocSearch.parseQuery(searchState.input.value.trim());let filterCrates=getFilterCrates();if(!forced&&query.userQuery===currentResults){if(query.userQuery.length>0){putBackSearch()}return}searchState.setLoadingSearch();const params=searchState.getQueryStringParams();if(filterCrates===null&¶ms["filter-crate"]!==undefined){filterCrates=params["filter-crate"]}searchState.title="\""+query.original+"\" Search - Rust";updateSearchHistory(buildUrl(query.original,filterCrates));await showResults(await docSearch.execQuery(query,filterCrates,window.currentCrate),params.go_to_first,filterCrates)}function onSearchSubmit(e){e.preventDefault();searchState.clearInputTimeout();search()}function putBackSearch(){const search_input=searchState.input;if(!searchState.input){return}if(search_input.value!==""&&!searchState.isDisplayed()){searchState.showResults();if(browserSupportsHistoryApi()){history.replaceState(null,"",buildUrl(search_input.value,getFilterCrates()))}document.title=searchState.title}}function registerSearchEvents(){const params=searchState.getQueryStringParams();if(searchState.input.value===""){searchState.input.value=params.search||""}const searchAfter500ms=()=>{searchState.clearInputTimeout();if(searchState.input.value.length===0){searchState.hideResults()}else{searchState.timeout=setTimeout(search,500)}};searchState.input.onkeyup=searchAfter500ms;searchState.input.oninput=searchAfter500ms;document.getElementsByClassName("search-form")[0].onsubmit=onSearchSubmit;searchState.input.onchange=e=>{if(e.target!==document.activeElement){return}searchState.clearInputTimeout();setTimeout(search,0)};searchState.input.onpaste=searchState.input.onchange;searchState.outputElement().addEventListener("keydown",e=>{if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey){return}if(e.which===38){const previous=document.activeElement.previousElementSibling;if(previous){previous.focus()}else{searchState.focus()}e.preventDefault()}else if(e.which===40){const next=document.activeElement.nextElementSibling;if(next){next.focus()}const rect=document.activeElement.getBoundingClientRect();if(window.innerHeight-rect.bottom{if(e.which===40){focusSearchResult();e.preventDefault()}});searchState.input.addEventListener("focus",()=>{putBackSearch()});searchState.input.addEventListener("blur",()=>{searchState.input.placeholder=searchState.input.origPlaceholder});if(browserSupportsHistoryApi()){const previousTitle=document.title;window.addEventListener("popstate",e=>{const params=searchState.getQueryStringParams();document.title=previousTitle;currentResults=null;if(params.search&¶ms.search.length>0){searchState.input.value=params.search;e.preventDefault();search()}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=()=>{const qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}function updateCrate(ev){if(ev.target.value==="all crates"){const query=searchState.input.value.trim();updateSearchHistory(buildUrl(query,null))}currentResults=null;search(true)}function initSearch(searchIndx){rawSearchIndex=searchIndx;if(typeof window!=="undefined"){docSearch=new DocSearch(rawSearchIndex,ROOT_PATH,searchState);registerSearchEvents();if(window.searchState.getQueryStringParams().search){search()}}else if(typeof exports!=="undefined"){docSearch=new DocSearch(rawSearchIndex,ROOT_PATH,searchState);exports.docSearch=docSearch;exports.parseQuery=DocSearch.parseQuery}}if(typeof exports!=="undefined"){exports.initSearch=initSearch}if(typeof window!=="undefined"){window.initSearch=initSearch;if(window.searchIndex!==undefined){initSearch(window.searchIndex)}}else{initSearch(new Map())}})() \ No newline at end of file diff --git a/static.files/settings-74424d7eec62a23e.js b/static.files/settings-74424d7eec62a23e.js deleted file mode 100644 index 3014f75..0000000 --- a/static.files/settings-74424d7eec62a23e.js +++ /dev/null @@ -1,17 +0,0 @@ -"use strict";(function(){const isSettingsPage=window.location.pathname.endsWith("/settings.html");function changeSetting(settingName,value){if(settingName==="theme"){const useSystem=value==="system preference"?"true":"false";updateLocalStorage("use-system-theme",useSystem)}updateLocalStorage(settingName,value);switch(settingName){case"theme":case"preferred-dark-theme":case"preferred-light-theme":updateTheme();updateLightAndDark();break;case"line-numbers":if(value===true){window.rustdoc_add_line_numbers_to_examples()}else{window.rustdoc_remove_line_numbers_from_examples()}break}}function showLightAndDark(){removeClass(document.getElementById("preferred-light-theme"),"hidden");removeClass(document.getElementById("preferred-dark-theme"),"hidden")}function hideLightAndDark(){addClass(document.getElementById("preferred-light-theme"),"hidden");addClass(document.getElementById("preferred-dark-theme"),"hidden")}function updateLightAndDark(){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||(useSystem===null&&getSettingValue("theme")===null)){showLightAndDark()}else{hideLightAndDark()}}function setEvents(settingsElement){updateLightAndDark();onEachLazy(settingsElement.querySelectorAll("input[type=\"checkbox\"]"),toggle=>{const settingId=toggle.id;const settingValue=getSettingValue(settingId);if(settingValue!==null){toggle.checked=settingValue==="true"}toggle.onchange=()=>{changeSetting(toggle.id,toggle.checked)}});onEachLazy(settingsElement.querySelectorAll("input[type=\"radio\"]"),elem=>{const settingId=elem.name;let settingValue=getSettingValue(settingId);if(settingId==="theme"){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||settingValue===null){settingValue=useSystem==="false"?"light":"system preference"}}if(settingValue!==null&&settingValue!=="null"){elem.checked=settingValue===elem.value}elem.addEventListener("change",ev=>{changeSetting(ev.target.name,ev.target.value)})})}function buildSettingsPageSections(settings){let output="";for(const setting of settings){const js_data_name=setting["js_name"];const setting_name=setting["name"];if(setting["options"]!==undefined){output+=`\ -
    -
    ${setting_name}
    -
    `;onEach(setting["options"],option=>{const checked=option===setting["default"]?" checked":"";const full=`${js_data_name}-${option.replace(/ /g,"-")}`;output+=`\ - `});output+=`\ -
    -
    `}else{const checked=setting["default"]===true?" checked":"";output+=`\ -
    \ - \ -
    `}}return output}function buildSettingsPage(){const theme_names=getVar("themes").split(",").filter(t=>t);theme_names.push("light","dark","ayu");const settings=[{"name":"Theme","js_name":"theme","default":"system preference","options":theme_names.concat("system preference"),},{"name":"Preferred light theme","js_name":"preferred-light-theme","default":"light","options":theme_names,},{"name":"Preferred dark theme","js_name":"preferred-dark-theme","default":"dark","options":theme_names,},{"name":"Auto-hide item contents for large items","js_name":"auto-hide-large-items","default":true,},{"name":"Auto-hide item methods' documentation","js_name":"auto-hide-method-docs","default":false,},{"name":"Auto-hide trait implementation documentation","js_name":"auto-hide-trait-implementations","default":false,},{"name":"Directly go to item in search if there is only one result","js_name":"go-to-only-result","default":false,},{"name":"Show line numbers on code examples","js_name":"line-numbers","default":false,},{"name":"Disable keyboard shortcuts","js_name":"disable-shortcuts","default":false,},];const elementKind=isSettingsPage?"section":"div";const innerHTML=`
    ${buildSettingsPageSections(settings)}
    `;const el=document.createElement(elementKind);el.id="settings";if(!isSettingsPage){el.className="popover"}el.innerHTML=innerHTML;if(isSettingsPage){document.getElementById(MAIN_ID).appendChild(el)}else{el.setAttribute("tabindex","-1");getSettingsButton().appendChild(el)}return el}const settingsMenu=buildSettingsPage();function displaySettings(){settingsMenu.style.display=""}function settingsBlurHandler(event){blurHandler(event,getSettingsButton(),window.hidePopoverMenus)}if(isSettingsPage){getSettingsButton().onclick=event=>{event.preventDefault()}}else{const settingsButton=getSettingsButton();const settingsMenu=document.getElementById("settings");settingsButton.onclick=event=>{if(elemIsInParent(event.target,settingsMenu)){return}event.preventDefault();const shouldDisplaySettings=settingsMenu.style.display==="none";window.hideAllModals();if(shouldDisplaySettings){displaySettings()}};settingsButton.onblur=settingsBlurHandler;settingsButton.querySelector("a").onblur=settingsBlurHandler;onEachLazy(settingsMenu.querySelectorAll("input"),el=>{el.onblur=settingsBlurHandler});settingsMenu.onblur=settingsBlurHandler}setTimeout(()=>{setEvents(settingsMenu);if(!isSettingsPage){displaySettings()}removeClass(getSettingsButton(),"rotate")},0)})() \ No newline at end of file diff --git a/static.files/settings-805db61a62df4bd2.js b/static.files/settings-805db61a62df4bd2.js new file mode 100644 index 0000000..4a30479 --- /dev/null +++ b/static.files/settings-805db61a62df4bd2.js @@ -0,0 +1,17 @@ +"use strict";(function(){const isSettingsPage=window.location.pathname.endsWith("/settings.html");function changeSetting(settingName,value){if(settingName==="theme"){const useSystem=value==="system preference"?"true":"false";updateLocalStorage("use-system-theme",useSystem)}updateLocalStorage(settingName,value);switch(settingName){case"theme":case"preferred-dark-theme":case"preferred-light-theme":updateTheme();updateLightAndDark();break;case"line-numbers":if(value===true){window.rustdoc_add_line_numbers_to_examples()}else{window.rustdoc_remove_line_numbers_from_examples()}break;case"hide-sidebar":if(value===true){addClass(document.documentElement,"hide-sidebar")}else{removeClass(document.documentElement,"hide-sidebar")}break;case"hide-toc":if(value===true){addClass(document.documentElement,"hide-toc")}else{removeClass(document.documentElement,"hide-toc")}break;case"hide-modnav":if(value===true){addClass(document.documentElement,"hide-modnav")}else{removeClass(document.documentElement,"hide-modnav")}break}}function showLightAndDark(){removeClass(document.getElementById("preferred-light-theme"),"hidden");removeClass(document.getElementById("preferred-dark-theme"),"hidden")}function hideLightAndDark(){addClass(document.getElementById("preferred-light-theme"),"hidden");addClass(document.getElementById("preferred-dark-theme"),"hidden")}function updateLightAndDark(){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||(useSystem===null&&getSettingValue("theme")===null)){showLightAndDark()}else{hideLightAndDark()}}function setEvents(settingsElement){updateLightAndDark();onEachLazy(settingsElement.querySelectorAll("input[type=\"checkbox\"]"),toggle=>{const settingId=toggle.id;const settingValue=getSettingValue(settingId);if(settingValue!==null){toggle.checked=settingValue==="true"}toggle.onchange=()=>{changeSetting(toggle.id,toggle.checked)}});onEachLazy(settingsElement.querySelectorAll("input[type=\"radio\"]"),elem=>{const settingId=elem.name;let settingValue=getSettingValue(settingId);if(settingId==="theme"){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||settingValue===null){settingValue=useSystem==="false"?"light":"system preference"}}if(settingValue!==null&&settingValue!=="null"){elem.checked=settingValue===elem.value}elem.addEventListener("change",ev=>{changeSetting(ev.target.name,ev.target.value)})})}function buildSettingsPageSections(settings){let output="";for(const setting of settings){if(setting==="hr"){output+="
    ";continue}const js_data_name=setting["js_name"];const setting_name=setting["name"];if(setting["options"]!==undefined){output+=`\ +
    +
    ${setting_name}
    +
    `;onEach(setting["options"],option=>{const checked=option===setting["default"]?" checked":"";const full=`${js_data_name}-${option.replace(/ /g,"-")}`;output+=`\ + `});output+=`\ +
    +
    `}else{const checked=setting["default"]===true?" checked":"";output+=`\ +
    \ + \ +
    `}}return output}function buildSettingsPage(){const theme_names=getVar("themes").split(",").filter(t=>t);theme_names.push("light","dark","ayu");const settings=[{"name":"Theme","js_name":"theme","default":"system preference","options":theme_names.concat("system preference"),},{"name":"Preferred light theme","js_name":"preferred-light-theme","default":"light","options":theme_names,},{"name":"Preferred dark theme","js_name":"preferred-dark-theme","default":"dark","options":theme_names,},{"name":"Auto-hide item contents for large items","js_name":"auto-hide-large-items","default":true,},{"name":"Auto-hide item methods' documentation","js_name":"auto-hide-method-docs","default":false,},{"name":"Auto-hide trait implementation documentation","js_name":"auto-hide-trait-implementations","default":false,},{"name":"Directly go to item in search if there is only one result","js_name":"go-to-only-result","default":false,},{"name":"Show line numbers on code examples","js_name":"line-numbers","default":false,},{"name":"Hide persistent navigation bar","js_name":"hide-sidebar","default":false,},{"name":"Hide table of contents","js_name":"hide-toc","default":false,},{"name":"Hide module navigation","js_name":"hide-modnav","default":false,},{"name":"Disable keyboard shortcuts","js_name":"disable-shortcuts","default":false,},];const elementKind=isSettingsPage?"section":"div";const innerHTML=`
    ${buildSettingsPageSections(settings)}
    `;const el=document.createElement(elementKind);el.id="settings";if(!isSettingsPage){el.className="popover"}el.innerHTML=innerHTML;if(isSettingsPage){document.getElementById(MAIN_ID).appendChild(el)}else{el.setAttribute("tabindex","-1");getSettingsButton().appendChild(el)}return el}const settingsMenu=buildSettingsPage();function displaySettings(){settingsMenu.style.display="";onEachLazy(settingsMenu.querySelectorAll("input[type='checkbox']"),el=>{const val=getSettingValue(el.id);const checked=val==="true";if(checked!==el.checked&&val!==null){el.checked=checked}})}function settingsBlurHandler(event){if(!getHelpButton().contains(document.activeElement)&&!getHelpButton().contains(event.relatedTarget)&&!getSettingsButton().contains(document.activeElement)&&!getSettingsButton().contains(event.relatedTarget)){window.hidePopoverMenus()}}if(!isSettingsPage){const settingsButton=getSettingsButton();const settingsMenu=document.getElementById("settings");settingsButton.onclick=event=>{if(settingsMenu.contains(event.target)){return}event.preventDefault();const shouldDisplaySettings=settingsMenu.style.display==="none";window.hideAllModals();if(shouldDisplaySettings){displaySettings()}};settingsButton.onblur=settingsBlurHandler;settingsButton.querySelector("a").onblur=settingsBlurHandler;onEachLazy(settingsMenu.querySelectorAll("input"),el=>{el.onblur=settingsBlurHandler});settingsMenu.onblur=settingsBlurHandler}setTimeout(()=>{setEvents(settingsMenu);if(!isSettingsPage){displaySettings()}removeClass(getSettingsButton(),"rotate")},0)})() \ No newline at end of file diff --git a/static.files/src-script-3280b574d94e47b4.js b/static.files/src-script-3280b574d94e47b4.js deleted file mode 100644 index 9ea8892..0000000 --- a/static.files/src-script-3280b574d94e47b4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(function(){const rootPath=getVar("root-path");const NAME_OFFSET=0;const DIRS_OFFSET=1;const FILES_OFFSET=2;const RUSTDOC_MOBILE_BREAKPOINT=700;function closeSidebarIfMobile(){if(window.innerWidth"){addClass(document.documentElement,"src-sidebar-expanded");child.innerText="<";updateLocalStorage("source-sidebar-show","true")}else{removeClass(document.documentElement,"src-sidebar-expanded");child.innerText=">";updateLocalStorage("source-sidebar-show","false")}}function createSidebarToggle(){const sidebarToggle=document.createElement("div");sidebarToggle.id="src-sidebar-toggle";const inner=document.createElement("button");if(getCurrentValue("source-sidebar-show")==="true"){inner.innerText="<"}else{inner.innerText=">"}inner.onclick=toggleSidebar;sidebarToggle.appendChild(inner);return sidebarToggle}function createSrcSidebar(){const container=document.querySelector("nav.sidebar");const sidebarToggle=createSidebarToggle();container.insertBefore(sidebarToggle,container.firstChild);const sidebar=document.createElement("div");sidebar.id="src-sidebar";let hasFoundFile=false;const title=document.createElement("div");title.className="title";title.innerText="Files";sidebar.appendChild(title);Object.keys(srcIndex).forEach(key=>{srcIndex[key][NAME_OFFSET]=key;hasFoundFile=createDirEntry(srcIndex[key],sidebar,"",hasFoundFile)});container.appendChild(sidebar);const selected_elem=sidebar.getElementsByClassName("selected")[0];if(typeof selected_elem!=="undefined"){selected_elem.focus()}}const lineNumbersRegex=/^#?(\d+)(?:-(\d+))?$/;function highlightSrcLines(match){if(typeof match==="undefined"){match=window.location.hash.match(lineNumbersRegex)}if(!match){return}let from=parseInt(match[1],10);let to=from;if(typeof match[2]!=="undefined"){to=parseInt(match[2],10)}if(to{onEachLazy(e.getElementsByTagName("a"),i_e=>{removeClass(i_e,"line-highlighted")})});for(let i=from;i<=to;++i){elem=document.getElementById(i);if(!elem){break}addClass(elem,"line-highlighted")}}const handleSrcHighlight=(function(){let prev_line_id=0;const set_fragment=name=>{const x=window.scrollX,y=window.scrollY;if(browserSupportsHistoryApi()){history.replaceState(null,null,"#"+name);highlightSrcLines()}else{location.replace("#"+name)}window.scrollTo(x,y)};return ev=>{let cur_line_id=parseInt(ev.target.id,10);if(isNaN(cur_line_id)||ev.ctrlKey||ev.altKey||ev.metaKey){return}ev.preventDefault();if(ev.shiftKey&&prev_line_id){if(prev_line_id>cur_line_id){const tmp=prev_line_id;prev_line_id=cur_line_id;cur_line_id=tmp}set_fragment(prev_line_id+"-"+cur_line_id)}else{prev_line_id=cur_line_id;set_fragment(cur_line_id)}}}());window.addEventListener("hashchange",()=>{const match=window.location.hash.match(lineNumbersRegex);if(match){return highlightSrcLines(match)}});onEachLazy(document.getElementsByClassName("src-line-numbers"),el=>{el.addEventListener("click",handleSrcHighlight)});highlightSrcLines();window.createSrcSidebar=createSrcSidebar})() \ No newline at end of file diff --git a/static.files/src-script-e66d777a5a92e9b2.js b/static.files/src-script-e66d777a5a92e9b2.js new file mode 100644 index 0000000..d0aebb8 --- /dev/null +++ b/static.files/src-script-e66d777a5a92e9b2.js @@ -0,0 +1 @@ +"use strict";(function(){const rootPath=getVar("root-path");const NAME_OFFSET=0;const DIRS_OFFSET=1;const FILES_OFFSET=2;const RUSTDOC_MOBILE_BREAKPOINT=700;function closeSidebarIfMobile(){if(window.innerWidth{removeClass(document.documentElement,"src-sidebar-expanded");updateLocalStorage("source-sidebar-show","false")};window.rustdocShowSourceSidebar=()=>{addClass(document.documentElement,"src-sidebar-expanded");updateLocalStorage("source-sidebar-show","true")};window.rustdocToggleSrcSidebar=()=>{if(document.documentElement.classList.contains("src-sidebar-expanded")){window.rustdocCloseSourceSidebar()}else{window.rustdocShowSourceSidebar()}};function createSrcSidebar(){const container=document.querySelector("nav.sidebar");const sidebar=document.createElement("div");sidebar.id="src-sidebar";let hasFoundFile=false;for(const[key,source]of srcIndex){source[NAME_OFFSET]=key;hasFoundFile=createDirEntry(source,sidebar,"",hasFoundFile)}container.appendChild(sidebar);const selected_elem=sidebar.getElementsByClassName("selected")[0];if(typeof selected_elem!=="undefined"){selected_elem.focus()}}function highlightSrcLines(){const match=window.location.hash.match(/^#?(\d+)(?:-(\d+))?$/);if(!match){return}let from=parseInt(match[1],10);let to=from;if(typeof match[2]!=="undefined"){to=parseInt(match[2],10)}if(to{onEachLazy(e.getElementsByTagName("a"),i_e=>{removeClass(i_e,"line-highlighted")})});for(let i=from;i<=to;++i){elem=document.getElementById(i);if(!elem){break}addClass(elem,"line-highlighted")}}const handleSrcHighlight=(function(){let prev_line_id=0;const set_fragment=name=>{const x=window.scrollX,y=window.scrollY;if(browserSupportsHistoryApi()){history.replaceState(null,null,"#"+name);highlightSrcLines()}else{location.replace("#"+name)}window.scrollTo(x,y)};return ev=>{let cur_line_id=parseInt(ev.target.id,10);if(isNaN(cur_line_id)||ev.ctrlKey||ev.altKey||ev.metaKey){return}ev.preventDefault();if(ev.shiftKey&&prev_line_id){if(prev_line_id>cur_line_id){const tmp=prev_line_id;prev_line_id=cur_line_id;cur_line_id=tmp}set_fragment(prev_line_id+"-"+cur_line_id)}else{prev_line_id=cur_line_id;set_fragment(cur_line_id)}}}());window.addEventListener("hashchange",highlightSrcLines);onEachLazy(document.getElementsByClassName("src-line-numbers"),el=>{el.addEventListener("click",handleSrcHighlight)});highlightSrcLines();window.createSrcSidebar=createSrcSidebar})() \ No newline at end of file diff --git a/static.files/storage-1d39b6787ed640ff.js b/static.files/storage-1d39b6787ed640ff.js new file mode 100644 index 0000000..5aac776 --- /dev/null +++ b/static.files/storage-1d39b6787ed640ff.js @@ -0,0 +1,23 @@ +"use strict";const builtinThemes=["light","dark","ayu"];const darkThemes=["dark","ayu"];window.currentTheme=document.getElementById("themeStyle");const settingsDataset=(function(){const settingsElement=document.getElementById("default-settings");return settingsElement&&settingsElement.dataset?settingsElement.dataset:null})();function getSettingValue(settingName){const current=getCurrentValue(settingName);if(current===null&&settingsDataset!==null){const def=settingsDataset[settingName.replace(/-/g,"_")];if(def!==undefined){return def}}return current}const localStoredTheme=getSettingValue("theme");function hasClass(elem,className){return elem&&elem.classList&&elem.classList.contains(className)}function addClass(elem,className){if(elem&&elem.classList){elem.classList.add(className)}}function removeClass(elem,className){if(elem&&elem.classList){elem.classList.remove(className)}}function onEach(arr,func){for(const elem of arr){if(func(elem)){return true}}return false}function onEachLazy(lazyArray,func){return onEach(Array.prototype.slice.call(lazyArray),func)}function updateLocalStorage(name,value){try{window.localStorage.setItem("rustdoc-"+name,value)}catch(e){}}function getCurrentValue(name){try{return window.localStorage.getItem("rustdoc-"+name)}catch(e){return null}}const getVar=(function getVar(name){const el=document.querySelector("head > meta[name='rustdoc-vars']");return el?el.attributes["data-"+name].value:null});function switchTheme(newThemeName,saveTheme){const themeNames=getVar("themes").split(",").filter(t=>t);themeNames.push(...builtinThemes);if(themeNames.indexOf(newThemeName)===-1){return}if(saveTheme){updateLocalStorage("theme",newThemeName)}document.documentElement.setAttribute("data-theme",newThemeName);if(builtinThemes.indexOf(newThemeName)!==-1){if(window.currentTheme){window.currentTheme.parentNode.removeChild(window.currentTheme);window.currentTheme=null}}else{const newHref=getVar("root-path")+encodeURIComponent(newThemeName)+getVar("resource-suffix")+".css";if(!window.currentTheme){if(document.readyState==="loading"){document.write(``);window.currentTheme=document.getElementById("themeStyle")}else{window.currentTheme=document.createElement("link");window.currentTheme.rel="stylesheet";window.currentTheme.id="themeStyle";window.currentTheme.href=newHref;document.documentElement.appendChild(window.currentTheme)}}else if(newHref!==window.currentTheme.href){window.currentTheme.href=newHref}}}const updateTheme=(function(){const mql=window.matchMedia("(prefers-color-scheme: dark)");function updateTheme(){if(getSettingValue("use-system-theme")!=="false"){const lightTheme=getSettingValue("preferred-light-theme")||"light";const darkTheme=getSettingValue("preferred-dark-theme")||"dark";updateLocalStorage("use-system-theme","true");switchTheme(mql.matches?darkTheme:lightTheme,true)}else{switchTheme(getSettingValue("theme"),false)}}mql.addEventListener("change",updateTheme);return updateTheme})();if(getSettingValue("use-system-theme")!=="false"&&window.matchMedia){if(getSettingValue("use-system-theme")===null&&getSettingValue("preferred-dark-theme")===null&&darkThemes.indexOf(localStoredTheme)>=0){updateLocalStorage("preferred-dark-theme",localStoredTheme)}}updateTheme();if(getSettingValue("source-sidebar-show")==="true"){addClass(document.documentElement,"src-sidebar-expanded")}if(getSettingValue("hide-sidebar")==="true"){addClass(document.documentElement,"hide-sidebar")}if(getSettingValue("hide-toc")==="true"){addClass(document.documentElement,"hide-toc")}if(getSettingValue("hide-modnav")==="true"){addClass(document.documentElement,"hide-modnav")}function updateSidebarWidth(){const desktopSidebarWidth=getSettingValue("desktop-sidebar-width");if(desktopSidebarWidth&&desktopSidebarWidth!=="null"){document.documentElement.style.setProperty("--desktop-sidebar-width",desktopSidebarWidth+"px",)}const srcSidebarWidth=getSettingValue("src-sidebar-width");if(srcSidebarWidth&&srcSidebarWidth!=="null"){document.documentElement.style.setProperty("--src-sidebar-width",srcSidebarWidth+"px",)}}updateSidebarWidth();window.addEventListener("pageshow",ev=>{if(ev.persisted){setTimeout(updateTheme,0);setTimeout(updateSidebarWidth,0)}});class RustdocSearchElement extends HTMLElement{constructor(){super()}connectedCallback(){const rootPath=getVar("root-path");const currentCrate=getVar("current-crate");this.innerHTML=``}}window.customElements.define("rustdoc-search",RustdocSearchElement);class RustdocToolbarElement extends HTMLElement{constructor(){super()}connectedCallback(){if(this.firstElementChild){return}const rootPath=getVar("root-path");this.innerHTML=` +
    + Settings +
    +
    + Help +
    + `}}window.customElements.define("rustdoc-toolbar",RustdocToolbarElement) \ No newline at end of file diff --git a/static.files/storage-fec3eaa3851e447d.js b/static.files/storage-fec3eaa3851e447d.js deleted file mode 100644 index a687118..0000000 --- a/static.files/storage-fec3eaa3851e447d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";const builtinThemes=["light","dark","ayu"];const darkThemes=["dark","ayu"];window.currentTheme=document.getElementById("themeStyle");const settingsDataset=(function(){const settingsElement=document.getElementById("default-settings");return settingsElement&&settingsElement.dataset?settingsElement.dataset:null})();function getSettingValue(settingName){const current=getCurrentValue(settingName);if(current===null&&settingsDataset!==null){const def=settingsDataset[settingName.replace(/-/g,"_")];if(def!==undefined){return def}}return current}const localStoredTheme=getSettingValue("theme");function hasClass(elem,className){return elem&&elem.classList&&elem.classList.contains(className)}function addClass(elem,className){if(elem&&elem.classList){elem.classList.add(className)}}function removeClass(elem,className){if(elem&&elem.classList){elem.classList.remove(className)}}function onEach(arr,func,reversed){if(arr&&arr.length>0){if(reversed){for(let i=arr.length-1;i>=0;--i){if(func(arr[i])){return true}}}else{for(const elem of arr){if(func(elem)){return true}}}}return false}function onEachLazy(lazyArray,func,reversed){return onEach(Array.prototype.slice.call(lazyArray),func,reversed)}function updateLocalStorage(name,value){try{window.localStorage.setItem("rustdoc-"+name,value)}catch(e){}}function getCurrentValue(name){try{return window.localStorage.getItem("rustdoc-"+name)}catch(e){return null}}const getVar=(function getVar(name){const el=document.querySelector("head > meta[name='rustdoc-vars']");return el?el.attributes["data-"+name].value:null});function switchTheme(newThemeName,saveTheme){if(saveTheme){updateLocalStorage("theme",newThemeName)}document.documentElement.setAttribute("data-theme",newThemeName);if(builtinThemes.indexOf(newThemeName)!==-1){if(window.currentTheme){window.currentTheme.parentNode.removeChild(window.currentTheme);window.currentTheme=null}}else{const newHref=getVar("root-path")+newThemeName+getVar("resource-suffix")+".css";if(!window.currentTheme){if(document.readyState==="loading"){document.write(``);window.currentTheme=document.getElementById("themeStyle")}else{window.currentTheme=document.createElement("link");window.currentTheme.rel="stylesheet";window.currentTheme.id="themeStyle";window.currentTheme.href=newHref;document.documentElement.appendChild(window.currentTheme)}}else if(newHref!==window.currentTheme.href){window.currentTheme.href=newHref}}}const updateTheme=(function(){const mql=window.matchMedia("(prefers-color-scheme: dark)");function updateTheme(){if(getSettingValue("use-system-theme")!=="false"){const lightTheme=getSettingValue("preferred-light-theme")||"light";const darkTheme=getSettingValue("preferred-dark-theme")||"dark";updateLocalStorage("use-system-theme","true");switchTheme(mql.matches?darkTheme:lightTheme,true)}else{switchTheme(getSettingValue("theme"),false)}}mql.addEventListener("change",updateTheme);return updateTheme})();if(getSettingValue("use-system-theme")!=="false"&&window.matchMedia){if(getSettingValue("use-system-theme")===null&&getSettingValue("preferred-dark-theme")===null&&darkThemes.indexOf(localStoredTheme)>=0){updateLocalStorage("preferred-dark-theme",localStoredTheme)}}updateTheme();if(getSettingValue("source-sidebar-show")==="true"){addClass(document.documentElement,"src-sidebar-expanded")}window.addEventListener("pageshow",ev=>{if(ev.persisted){setTimeout(updateTheme,0)}}) \ No newline at end of file diff --git a/static.files/wheel-7b819b6101059cd0.svg b/static.files/wheel-7b819b6101059cd0.svg deleted file mode 100644 index 83c07f6..0000000 --- a/static.files/wheel-7b819b6101059cd0.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/syn/all.html b/syn/all.html index a38f6ab..7fed3dd 100644 --- a/syn/all.html +++ b/syn/all.html @@ -1 +1 @@ -List of all items in this crate

    List of all items

    Structs

    Enums

    Traits

    Macros

    Functions

    Type Aliases

    \ No newline at end of file +List of all items in this crate

    List of all items

    Structs

    Enums

    Traits

    Macros

    Functions

    Type Aliases

    \ No newline at end of file diff --git a/syn/attr/enum.NestedMeta.html b/syn/attr/enum.NestedMeta.html deleted file mode 100644 index aebdaf4..0000000 --- a/syn/attr/enum.NestedMeta.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

    Redirecting to ../../syn/enum.NestedMeta.html...

    - - - \ No newline at end of file diff --git a/syn/attr/type.AttributeArgs.html b/syn/attr/type.AttributeArgs.html deleted file mode 100644 index 2145369..0000000 --- a/syn/attr/type.AttributeArgs.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

    Redirecting to ../../syn/type.AttributeArgs.html...

    - - - \ No newline at end of file diff --git a/syn/buffer/index.html b/syn/buffer/index.html index d9026e0..1a8845e 100644 --- a/syn/buffer/index.html +++ b/syn/buffer/index.html @@ -1,6 +1,5 @@ -syn::buffer - Rust

    Module syn::buffer

    source ·
    Expand description

    A stably addressed token buffer supporting efficient traversal based on a +syn::buffer - Rust

    syn

    Module buffer

    source
    Expand description

    A stably addressed token buffer supporting efficient traversal based on a cheaply copyable cursor.

    -

    This module is available only if Syn is built with the "parsing" feature.

    -

    Structs

    • A cheaply copyable cursor into a TokenBuffer.
    • A buffer that can be efficiently traversed multiple times, unlike +

    Structs§

    • A cheaply copyable cursor into a TokenBuffer.
    • A buffer that can be efficiently traversed multiple times, unlike TokenStream which requires a deep copy in order to traverse more than once.
    \ No newline at end of file diff --git a/syn/buffer/struct.Cursor.html b/syn/buffer/struct.Cursor.html index e91d587..bbd2066 100644 --- a/syn/buffer/struct.Cursor.html +++ b/syn/buffer/struct.Cursor.html @@ -1,47 +1,50 @@ -Cursor in syn::buffer - Rust

    Struct syn::buffer::Cursor

    source ·
    pub struct Cursor<'a> { /* private fields */ }
    Expand description

    A cheaply copyable cursor into a TokenBuffer.

    +Cursor in syn::buffer - Rust
    syn::buffer

    Struct Cursor

    source
    pub struct Cursor<'a> { /* private fields */ }
    Expand description

    A cheaply copyable cursor into a TokenBuffer.

    This cursor holds a shared reference into the immutable data which is used internally to represent a TokenStream, and can be efficiently manipulated and copied around.

    An empty Cursor can be created directly, or one may create a TokenBuffer object and get a cursor to its first token with begin().

    -

    Two cursors are equal if they have the same location in the same input -stream, and have the same scope.

    -

    This type is available only if Syn is built with the "parsing" feature.

    -

    Implementations§

    source§

    impl<'a> Cursor<'a>

    source

    pub fn empty() -> Self

    Creates a cursor referencing a static empty TokenStream.

    -
    source

    pub fn eof(self) -> bool

    Checks whether the cursor is currently pointing at the end of its valid +

    Implementations§

    source§

    impl<'a> Cursor<'a>

    source

    pub fn empty() -> Self

    Creates a cursor referencing a static empty TokenStream.

    +
    source

    pub fn eof(self) -> bool

    Checks whether the cursor is currently pointing at the end of its valid scope.

    -
    source

    pub fn group(self, delim: Delimiter) -> Option<(Cursor<'a>, Span, Cursor<'a>)>

    If the cursor is pointing at a Group with the given delimiter, returns -a cursor into that group and one pointing to the next TokenTree.

    -
    source

    pub fn ident(self) -> Option<(Ident, Cursor<'a>)>

    If the cursor is pointing at a Ident, returns it along with a cursor +

    source

    pub fn ident(self) -> Option<(Ident, Cursor<'a>)>

    If the cursor is pointing at a Ident, returns it along with a cursor pointing at the next TokenTree.

    -
    source

    pub fn punct(self) -> Option<(Punct, Cursor<'a>)>

    If the cursor is pointing at a Punct, returns it along with a cursor +

    source

    pub fn punct(self) -> Option<(Punct, Cursor<'a>)>

    If the cursor is pointing at a Punct, returns it along with a cursor pointing at the next TokenTree.

    -
    source

    pub fn literal(self) -> Option<(Literal, Cursor<'a>)>

    If the cursor is pointing at a Literal, return it along with a cursor +

    source

    pub fn literal(self) -> Option<(Literal, Cursor<'a>)>

    If the cursor is pointing at a Literal, return it along with a cursor pointing at the next TokenTree.

    -
    source

    pub fn lifetime(self) -> Option<(Lifetime, Cursor<'a>)>

    If the cursor is pointing at a Lifetime, returns it along with a +

    source

    pub fn lifetime(self) -> Option<(Lifetime, Cursor<'a>)>

    If the cursor is pointing at a Lifetime, returns it along with a cursor pointing at the next TokenTree.

    -
    source

    pub fn token_stream(self) -> TokenStream

    Copies all remaining tokens visible from this cursor into a +

    source

    pub fn group( + self, + delim: Delimiter, +) -> Option<(Cursor<'a>, DelimSpan, Cursor<'a>)>

    If the cursor is pointing at a Group with the given delimiter, returns +a cursor into that group and one pointing to the next TokenTree.

    +
    source

    pub fn any_group(self) -> Option<(Cursor<'a>, Delimiter, DelimSpan, Cursor<'a>)>

    If the cursor is pointing at a Group, returns a cursor into the group +and one pointing to the next TokenTree.

    +
    source

    pub fn token_stream(self) -> TokenStream

    Copies all remaining tokens visible from this cursor into a TokenStream.

    -
    source

    pub fn token_tree(self) -> Option<(TokenTree, Cursor<'a>)>

    If the cursor is pointing at a TokenTree, returns it along with a +

    source

    pub fn token_tree(self) -> Option<(TokenTree, Cursor<'a>)>

    If the cursor is pointing at a TokenTree, returns it along with a cursor pointing at the next TokenTree.

    Returns None if the cursor has reached the end of its stream.

    This method does not treat None-delimited groups as transparent, and will return a Group(None, ..) if the cursor is looking at one.

    -
    source

    pub fn span(self) -> Span

    Returns the Span of the current token, or Span::call_site() if this +

    source

    pub fn span(self) -> Span

    Returns the Span of the current token, or Span::call_site() if this cursor points to eof.

    -

    Trait Implementations§

    source§

    impl<'a> Clone for Cursor<'a>

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a> PartialEq<Cursor<'a>> for Cursor<'a>

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialOrd<Cursor<'a>> for Cursor<'a>

    source§

    fn partial_cmp(&self, other: &Self) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    source§

    impl<'a> Copy for Cursor<'a>

    source§

    impl<'a> Eq for Cursor<'a>

    Auto Trait Implementations§

    §

    impl<'a> RefUnwindSafe for Cursor<'a>

    §

    impl<'a> !Send for Cursor<'a>

    §

    impl<'a> !Sync for Cursor<'a>

    §

    impl<'a> Unpin for Cursor<'a>

    §

    impl<'a> UnwindSafe for Cursor<'a>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl<'a> Clone for Cursor<'a>

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a> PartialEq for Cursor<'a>

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl<'a> PartialOrd for Cursor<'a>

    source§

    fn partial_cmp(&self, other: &Self) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    Tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    Tests less than or equal to (for self and other) and is used by the +<= operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    Tests greater than (for self and other) and is used by the > +operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    Tests greater than or equal to (for self and other) and is used by +the >= operator. Read more
    source§

    impl<'a> Copy for Cursor<'a>

    source§

    impl<'a> Eq for Cursor<'a>

    Auto Trait Implementations§

    §

    impl<'a> Freeze for Cursor<'a>

    §

    impl<'a> RefUnwindSafe for Cursor<'a>

    §

    impl<'a> !Send for Cursor<'a>

    §

    impl<'a> !Sync for Cursor<'a>

    §

    impl<'a> Unpin for Cursor<'a>

    §

    impl<'a> UnwindSafe for Cursor<'a>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/buffer/struct.TokenBuffer.html b/syn/buffer/struct.TokenBuffer.html index 22b1ed1..e587495 100644 --- a/syn/buffer/struct.TokenBuffer.html +++ b/syn/buffer/struct.TokenBuffer.html @@ -1,23 +1,20 @@ -TokenBuffer in syn::buffer - Rust

    Struct syn::buffer::TokenBuffer

    source ·
    pub struct TokenBuffer { /* private fields */ }
    Expand description

    A buffer that can be efficiently traversed multiple times, unlike +TokenBuffer in syn::buffer - Rust

    syn::buffer

    Struct TokenBuffer

    source
    pub struct TokenBuffer { /* private fields */ }
    Expand description

    A buffer that can be efficiently traversed multiple times, unlike TokenStream which requires a deep copy in order to traverse more than once.

    -

    This type is available only if Syn is built with the "parsing" feature.

    -

    Implementations§

    source§

    impl TokenBuffer

    source

    pub fn new(stream: TokenStream) -> Self

    Creates a TokenBuffer containing all the tokens from the input +

    Implementations§

    source§

    impl TokenBuffer

    source

    pub fn new(stream: TokenStream) -> Self

    Creates a TokenBuffer containing all the tokens from the input proc_macro::TokenStream.

    -

    This method is available only if Syn is built with both the "parsing" and -"proc-macro" features.

    -
    source

    pub fn new2(stream: TokenStream) -> Self

    Creates a TokenBuffer containing all the tokens from the input +

    source

    pub fn new2(stream: TokenStream) -> Self

    Creates a TokenBuffer containing all the tokens from the input proc_macro2::TokenStream.

    -
    source

    pub fn begin(&self) -> Cursor<'_>

    Creates a cursor referencing the first token in the buffer and able to +

    source

    pub fn begin(&self) -> Cursor<'_>

    Creates a cursor referencing the first token in the buffer and able to traverse until the end of the buffer.

    -

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/data/struct.VisCrate.html b/syn/data/struct.VisCrate.html deleted file mode 100644 index e43a5d2..0000000 --- a/syn/data/struct.VisCrate.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

    Redirecting to ../../syn/struct.VisCrate.html...

    - - - \ No newline at end of file diff --git a/syn/data/struct.VisPublic.html b/syn/data/struct.VisPublic.html deleted file mode 100644 index 81da45e..0000000 --- a/syn/data/struct.VisPublic.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

    Redirecting to ../../syn/struct.VisPublic.html...

    - - - \ No newline at end of file diff --git a/syn/enum.AttrStyle.html b/syn/enum.AttrStyle.html index 8be9767..6740f03 100644 --- a/syn/enum.AttrStyle.html +++ b/syn/enum.AttrStyle.html @@ -1,36 +1,34 @@ -AttrStyle in syn - Rust

    Enum syn::AttrStyle

    source ·
    pub enum AttrStyle {
    +AttrStyle in syn - Rust
    syn

    Enum AttrStyle

    source
    pub enum AttrStyle {
         Outer,
    -    Inner(Bang),
    +    Inner(Not),
     }
    Expand description

    Distinguishes between attributes that decorate an item and attributes that are contained within an item.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Outer attributes

    +

    §Outer attributes

    • #[repr(transparent)]
    • /// # Example
    • /** Please file an issue */
    -

    Inner attributes

    +

    §Inner attributes

    • #![feature(proc_macro)]
    • //! # Example
    • /*! Please file an issue */
    -

    Variants§

    §

    Outer

    §

    Inner(Bang)

    Trait Implementations§

    source§

    impl Clone for AttrStyle

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for AttrStyle

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for AttrStyle

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<AttrStyle> for AttrStyle

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for AttrStyle

    source§

    impl Eq for AttrStyle

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Variants§

    §

    Outer

    §

    Inner(Not)

    Trait Implementations§

    source§

    impl Clone for AttrStyle

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for AttrStyle

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for AttrStyle

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for AttrStyle

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Copy for AttrStyle

    source§

    impl Eq for AttrStyle

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/enum.BinOp.html b/syn/enum.BinOp.html index 8decfc3..e5756f6 100644 --- a/syn/enum.BinOp.html +++ b/syn/enum.BinOp.html @@ -1,9 +1,9 @@ -BinOp in syn - Rust

    Enum syn::BinOp

    source ·
    pub enum BinOp {
    -
    Show 28 variants Add(Add), - Sub(Sub), +BinOp in syn - Rust
    syn

    Enum BinOp

    source
    #[non_exhaustive]
    pub enum BinOp { +
    Show 28 variants Add(Plus), + Sub(Minus), Mul(Star), - Div(Div), - Rem(Rem), + Div(Slash), + Rem(Percent), And(AndAnd), Or(OrOr), BitXor(Caret), @@ -17,24 +17,22 @@ Ne(Ne), Ge(Ge), Gt(Gt), - AddEq(AddEq), - SubEq(SubEq), - MulEq(MulEq), - DivEq(DivEq), - RemEq(RemEq), - BitXorEq(CaretEq), - BitAndEq(AndEq), - BitOrEq(OrEq), - ShlEq(ShlEq), - ShrEq(ShrEq), + AddAssign(PlusEq), + SubAssign(MinusEq), + MulAssign(StarEq), + DivAssign(SlashEq), + RemAssign(PercentEq), + BitXorAssign(CaretEq), + BitAndAssign(AndEq), + BitOrAssign(OrEq), + ShlAssign(ShlEq), + ShrAssign(ShrEq),
    }
    Expand description

    A binary operator: +, +=, &.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Variants§

    §

    Add(Add)

    The + operator (addition)

    -
    §

    Sub(Sub)

    The - operator (subtraction)

    +

    Variants (Non-exhaustive)§

    This enum is marked as non-exhaustive
    Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
    §

    Add(Plus)

    The + operator (addition)

    +
    §

    Sub(Minus)

    The - operator (subtraction)

    §

    Mul(Star)

    The * operator (multiplication)

    -
    §

    Div(Div)

    The / operator (division)

    -
    §

    Rem(Rem)

    The % operator (modulus)

    +
    §

    Div(Slash)

    The / operator (division)

    +
    §

    Rem(Percent)

    The % operator (modulus)

    §

    And(AndAnd)

    The && operator (logical and)

    §

    Or(OrOr)

    The || operator (logical or)

    §

    BitXor(Caret)

    The ^ operator (bitwise xor)

    @@ -48,33 +46,33 @@ feature.

    §

    Ne(Ne)

    The != operator (not equal to)

    §

    Ge(Ge)

    The >= operator (greater than or equal to)

    §

    Gt(Gt)

    The > operator (greater than)

    -
    §

    AddEq(AddEq)

    The += operator

    -
    §

    SubEq(SubEq)

    The -= operator

    -
    §

    MulEq(MulEq)

    The *= operator

    -
    §

    DivEq(DivEq)

    The /= operator

    -
    §

    RemEq(RemEq)

    The %= operator

    -
    §

    BitXorEq(CaretEq)

    The ^= operator

    -
    §

    BitAndEq(AndEq)

    The &= operator

    -
    §

    BitOrEq(OrEq)

    The |= operator

    -
    §

    ShlEq(ShlEq)

    The <<= operator

    -
    §

    ShrEq(ShrEq)

    The >>= operator

    -

    Trait Implementations§

    source§

    impl Clone for BinOp

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for BinOp

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for BinOp

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for BinOp

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<BinOp> for BinOp

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for BinOp

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for BinOp

    source§

    impl Eq for BinOp

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for BinOp

    §

    impl !Send for BinOp

    §

    impl !Sync for BinOp

    §

    impl Unpin for BinOp

    §

    impl UnwindSafe for BinOp

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    §

    AddAssign(PlusEq)

    The += operator

    +
    §

    SubAssign(MinusEq)

    The -= operator

    +
    §

    MulAssign(StarEq)

    The *= operator

    +
    §

    DivAssign(SlashEq)

    The /= operator

    +
    §

    RemAssign(PercentEq)

    The %= operator

    +
    §

    BitXorAssign(CaretEq)

    The ^= operator

    +
    §

    BitAndAssign(AndEq)

    The &= operator

    +
    §

    BitOrAssign(OrEq)

    The |= operator

    +
    §

    ShlAssign(ShlEq)

    The <<= operator

    +
    §

    ShrAssign(ShrEq)

    The >>= operator

    +

    Trait Implementations§

    source§

    impl Clone for BinOp

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for BinOp

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for BinOp

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for BinOp

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for BinOp

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for BinOp

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for BinOp

    source§

    impl Eq for BinOp

    Auto Trait Implementations§

    §

    impl Freeze for BinOp

    §

    impl RefUnwindSafe for BinOp

    §

    impl !Send for BinOp

    §

    impl !Sync for BinOp

    §

    impl Unpin for BinOp

    §

    impl UnwindSafe for BinOp

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/enum.Data.html b/syn/enum.Data.html index b512bb3..02deb6f 100644 --- a/syn/enum.Data.html +++ b/syn/enum.Data.html @@ -1,28 +1,24 @@ -Data in syn - Rust

    Enum syn::Data

    source ·
    pub enum Data {
    +Data in syn - Rust
    syn

    Enum Data

    source
    pub enum Data {
         Struct(DataStruct),
         Enum(DataEnum),
         Union(DataUnion),
     }
    Expand description

    The storage of a struct, enum or union data structure.

    -

    This type is available only if Syn is built with the "derive" feature.

    -

    Syntax tree enum

    +

    §Syntax tree enum

    This type is a syntax tree enum.

    -

    Variants§

    §

    Struct(DataStruct)

    A struct input to a proc_macro_derive macro.

    -
    §

    Enum(DataEnum)

    An enum input to a proc_macro_derive macro.

    -
    §

    Union(DataUnion)

    An untagged union input to a proc_macro_derive macro.

    -

    Trait Implementations§

    source§

    impl Clone for Data

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Data

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<DataEnum> for Data

    source§

    fn from(e: DataEnum) -> Data

    Converts to this type from the input type.
    source§

    impl From<DataStruct> for Data

    source§

    fn from(e: DataStruct) -> Data

    Converts to this type from the input type.
    source§

    impl From<DataUnion> for Data

    source§

    fn from(e: DataUnion) -> Data

    Converts to this type from the input type.
    source§

    impl Hash for Data

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<Data> for Data

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for Data

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Data

    §

    impl !Send for Data

    §

    impl !Sync for Data

    §

    impl Unpin for Data

    §

    impl UnwindSafe for Data

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Variants§

    Trait Implementations§

    source§

    impl Clone for Data

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Data

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for Data

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for Data

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Eq for Data

    Auto Trait Implementations§

    §

    impl Freeze for Data

    §

    impl RefUnwindSafe for Data

    §

    impl !Send for Data

    §

    impl !Sync for Data

    §

    impl Unpin for Data

    §

    impl UnwindSafe for Data

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/enum.Expr.html b/syn/enum.Expr.html index b1a2d74..ff8d362 100644 --- a/syn/enum.Expr.html +++ b/syn/enum.Expr.html @@ -1,22 +1,22 @@ -Expr in syn - Rust

    Enum syn::Expr

    source ·
    #[non_exhaustive]
    pub enum Expr { +Expr in syn - Rust
    syn

    Enum Expr

    source
    #[non_exhaustive]
    pub enum Expr {
    Show 40 variants Array(ExprArray), Assign(ExprAssign), - AssignOp(ExprAssignOp), Async(ExprAsync), Await(ExprAwait), Binary(ExprBinary), Block(ExprBlock), - Box(ExprBox), Break(ExprBreak), Call(ExprCall), Cast(ExprCast), Closure(ExprClosure), + Const(ExprConst), Continue(ExprContinue), Field(ExprField), ForLoop(ExprForLoop), Group(ExprGroup), If(ExprIf), Index(ExprIndex), + Infer(ExprInfer), Let(ExprLet), Lit(ExprLit), Loop(ExprLoop), @@ -26,6 +26,7 @@ Paren(ExprParen), Path(ExprPath), Range(ExprRange), + RawAddr(ExprRawAddr), Reference(ExprReference), Repeat(ExprRepeat), Return(ExprReturn), @@ -33,16 +34,15 @@ Try(ExprTry), TryBlock(ExprTryBlock), Tuple(ExprTuple), - Type(ExprType), Unary(ExprUnary), Unsafe(ExprUnsafe), Verbatim(TokenStream), While(ExprWhile), Yield(ExprYield),
    }
    Expand description

    A Rust expression.

    -

    This type is available only if Syn is built with the "derive" or "full" +

    This type is available only if Syn is built with the "derive" or "full" feature, but most of the variants are not available unless “full” is enabled.

    -

    Syntax tree enums

    +

    §Syntax tree enums

    This type is a syntax tree enum. In Syn this and other syntax tree enums are designed to be traversed using the following rebinding idiom.

    @@ -80,19 +80,18 @@ be a suitable name for the complete syntax tree enum type.

    A sign that you may not be choosing the right variable names is if you see names getting repeated in your code, like accessing receiver.receiver or pat.pat or cond.cond.

    -

    Variants (Non-exhaustive)§

    This enum is marked as non-exhaustive
    Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
    §

    Array(ExprArray)

    A slice literal expression: [a, b, c, d].

    +

    Variants (Non-exhaustive)§

    This enum is marked as non-exhaustive
    Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
    §

    Array(ExprArray)

    A slice literal expression: [a, b, c, d].

    §

    Assign(ExprAssign)

    An assignment expression: a = compute().

    -
    §

    AssignOp(ExprAssignOp)

    A compound assignment expression: counter += 1.

    §

    Async(ExprAsync)

    An async block: async { ... }.

    §

    Await(ExprAwait)

    An await expression: fut.await.

    -
    §

    Binary(ExprBinary)

    A binary operation: a + b, a * b.

    +
    §

    Binary(ExprBinary)

    A binary operation: a + b, a += b.

    §

    Block(ExprBlock)

    A blocked scope: { ... }.

    -
    §

    Box(ExprBox)

    A box expression: box f.

    §

    Break(ExprBreak)

    A break, with an optional label to break and an optional expression.

    §

    Call(ExprCall)

    A function call expression: invoke(a, b).

    §

    Cast(ExprCast)

    A cast expression: foo as f64.

    §

    Closure(ExprClosure)

    A closure expression: |a, b| a + b.

    +
    §

    Const(ExprConst)

    A const block: const { ... }.

    §

    Continue(ExprContinue)

    A continue, with an optional label.

    §

    Field(ExprField)

    Access of a named struct field (obj.k) or unnamed tuple struct field (obj.0).

    @@ -105,10 +104,11 @@ of expressions and is related to None-delimited spans in a

    The else branch expression may only be an If or Block expression, not any of the other types of expression.

    §

    Index(ExprIndex)

    A square bracketed indexing expression: vector[2].

    +
    §

    Infer(ExprInfer)

    The inferred value of a const generic argument, denoted _.

    §

    Let(ExprLet)

    A let guard: let Some(x) = opt.

    -
    §

    Lit(ExprLit)

    A literal in place of an expression: 1, "foo".

    +
    §

    Lit(ExprLit)

    A literal in place of an expression: 1, "foo".

    §

    Loop(ExprLoop)

    Conditionless loop: loop { ... }.

    -
    §

    Macro(ExprMacro)

    A macro invocation expression: format!("{}", q).

    +
    §

    Macro(ExprMacro)

    A macro invocation expression: format!("{}", q).

    §

    Match(ExprMatch)

    A match expression: match n { Some(n) => {}, None => {} }.

    §

    MethodCall(ExprMethodCall)

    A method call expression: x.foo::<T>(a, b).

    §

    Paren(ExprParen)

    A parenthesized expression: (a + b).

    @@ -116,6 +116,7 @@ expression, not any of the other types of expression.

    parameters and a qualified self-type.

    A plain identifier like x is a path of length 1.

    §

    Range(ExprRange)

    A range expression: 1..2, 1.., ..2, 1..=2, ..=2.

    +
    §

    RawAddr(ExprRawAddr)

    Address-of operation: &raw const place or &raw mut place.

    §

    Reference(ExprReference)

    A referencing operation: &a or &mut a.

    §

    Repeat(ExprRepeat)

    An array literal constructed from one repeated element: [0u8; N].

    §

    Return(ExprReturn)

    A return, with an optional value to be returned.

    @@ -124,29 +125,53 @@ parameters and a qualified self-type.

    §

    Try(ExprTry)

    A try-expression: expr?.

    §

    TryBlock(ExprTryBlock)

    A try block: try { ... }.

    §

    Tuple(ExprTuple)

    A tuple expression: (a, b, c, d).

    -
    §

    Type(ExprType)

    A type ascription expression: foo: f64.

    §

    Unary(ExprUnary)

    A unary operation: !x, *x.

    §

    Unsafe(ExprUnsafe)

    An unsafe block: unsafe { ... }.

    §

    Verbatim(TokenStream)

    Tokens in expression position not interpreted by Syn.

    §

    While(ExprWhile)

    A while loop: while expr { ... }.

    §

    Yield(ExprYield)

    A yield expression: yield expr.

    -

    Trait Implementations§

    source§

    impl Clone for Expr

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Expr

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ExprArray> for Expr

    source§

    fn from(e: ExprArray) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprAssign> for Expr

    source§

    fn from(e: ExprAssign) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprAssignOp> for Expr

    source§

    fn from(e: ExprAssignOp) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprAsync> for Expr

    source§

    fn from(e: ExprAsync) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprAwait> for Expr

    source§

    fn from(e: ExprAwait) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprBinary> for Expr

    source§

    fn from(e: ExprBinary) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprBlock> for Expr

    source§

    fn from(e: ExprBlock) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprBox> for Expr

    source§

    fn from(e: ExprBox) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprBreak> for Expr

    source§

    fn from(e: ExprBreak) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprCall> for Expr

    source§

    fn from(e: ExprCall) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprCast> for Expr

    source§

    fn from(e: ExprCast) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprClosure> for Expr

    source§

    fn from(e: ExprClosure) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprContinue> for Expr

    source§

    fn from(e: ExprContinue) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprField> for Expr

    source§

    fn from(e: ExprField) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprForLoop> for Expr

    source§

    fn from(e: ExprForLoop) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprGroup> for Expr

    source§

    fn from(e: ExprGroup) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprIf> for Expr

    source§

    fn from(e: ExprIf) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprIndex> for Expr

    source§

    fn from(e: ExprIndex) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprLet> for Expr

    source§

    fn from(e: ExprLet) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprLit> for Expr

    source§

    fn from(e: ExprLit) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprLoop> for Expr

    source§

    fn from(e: ExprLoop) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprMacro> for Expr

    source§

    fn from(e: ExprMacro) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprMatch> for Expr

    source§

    fn from(e: ExprMatch) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprMethodCall> for Expr

    source§

    fn from(e: ExprMethodCall) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprParen> for Expr

    source§

    fn from(e: ExprParen) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprPath> for Expr

    source§

    fn from(e: ExprPath) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprRange> for Expr

    source§

    fn from(e: ExprRange) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprReference> for Expr

    source§

    fn from(e: ExprReference) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprRepeat> for Expr

    source§

    fn from(e: ExprRepeat) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprReturn> for Expr

    source§

    fn from(e: ExprReturn) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprStruct> for Expr

    source§

    fn from(e: ExprStruct) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprTry> for Expr

    source§

    fn from(e: ExprTry) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprTryBlock> for Expr

    source§

    fn from(e: ExprTryBlock) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprTuple> for Expr

    source§

    fn from(e: ExprTuple) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprType> for Expr

    source§

    fn from(e: ExprType) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprUnary> for Expr

    source§

    fn from(e: ExprUnary) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprUnsafe> for Expr

    source§

    fn from(e: ExprUnsafe) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprWhile> for Expr

    source§

    fn from(e: ExprWhile) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprYield> for Expr

    source§

    fn from(e: ExprYield) -> Expr

    Converts to this type from the input type.
    source§

    impl Hash for Expr

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Expr

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Expr> for Expr

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Expr

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Expr

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Expr

    §

    impl !Send for Expr

    §

    impl !Sync for Expr

    §

    impl Unpin for Expr

    §

    impl UnwindSafe for Expr

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Implementations§

    source§

    impl Expr

    source

    pub const PLACEHOLDER: Self = _

    An unspecified invalid expression.

    + +
    use quote::ToTokens;
    +use std::mem;
    +use syn::{parse_quote, Expr};
    +
    +fn unparenthesize(e: &mut Expr) {
    +    while let Expr::Paren(paren) = e {
    +        *e = mem::replace(&mut *paren.expr, Expr::PLACEHOLDER);
    +    }
    +}
    +
    +fn main() {
    +    let mut e: Expr = parse_quote! { ((1 + 1)) };
    +    unparenthesize(&mut e);
    +    assert_eq!("1 + 1", e.to_token_stream().to_string());
    +}
    +
    source

    pub fn peek(input: ParseStream<'_>) -> bool

    Returns whether the next token in the parse stream is one that might +possibly form the beginning of an expr.

    +

    This classification is a load-bearing part of the grammar of some Rust +expressions, notably return and break. For example return < … will +never parse < as a binary operator regardless of what comes after, +because < is a legal starting token for an expression and so it’s +required to be continued as a return value, such as return <Struct as Trait>::CONST. Meanwhile return > … treats the > as a binary +operator because it cannot be a starting token for any Rust expression.

    +

    Trait Implementations§

    source§

    impl Clone for Expr

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Expr

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ExprArray> for Expr

    source§

    fn from(e: ExprArray) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprAssign> for Expr

    source§

    fn from(e: ExprAssign) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprAsync> for Expr

    source§

    fn from(e: ExprAsync) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprAwait> for Expr

    source§

    fn from(e: ExprAwait) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprBinary> for Expr

    source§

    fn from(e: ExprBinary) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprBlock> for Expr

    source§

    fn from(e: ExprBlock) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprBreak> for Expr

    source§

    fn from(e: ExprBreak) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprCall> for Expr

    source§

    fn from(e: ExprCall) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprCast> for Expr

    source§

    fn from(e: ExprCast) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprClosure> for Expr

    source§

    fn from(e: ExprClosure) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprConst> for Expr

    source§

    fn from(e: ExprConst) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprContinue> for Expr

    source§

    fn from(e: ExprContinue) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprField> for Expr

    source§

    fn from(e: ExprField) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprForLoop> for Expr

    source§

    fn from(e: ExprForLoop) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprGroup> for Expr

    source§

    fn from(e: ExprGroup) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprIf> for Expr

    source§

    fn from(e: ExprIf) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprIndex> for Expr

    source§

    fn from(e: ExprIndex) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprInfer> for Expr

    source§

    fn from(e: ExprInfer) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprLet> for Expr

    source§

    fn from(e: ExprLet) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprLit> for Expr

    source§

    fn from(e: ExprLit) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprLoop> for Expr

    source§

    fn from(e: ExprLoop) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprMacro> for Expr

    source§

    fn from(e: ExprMacro) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprMatch> for Expr

    source§

    fn from(e: ExprMatch) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprMethodCall> for Expr

    source§

    fn from(e: ExprMethodCall) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprParen> for Expr

    source§

    fn from(e: ExprParen) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprPath> for Expr

    source§

    fn from(e: ExprPath) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprRange> for Expr

    source§

    fn from(e: ExprRange) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprRawAddr> for Expr

    source§

    fn from(e: ExprRawAddr) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprReference> for Expr

    source§

    fn from(e: ExprReference) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprRepeat> for Expr

    source§

    fn from(e: ExprRepeat) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprReturn> for Expr

    source§

    fn from(e: ExprReturn) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprStruct> for Expr

    source§

    fn from(e: ExprStruct) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprTry> for Expr

    source§

    fn from(e: ExprTry) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprTryBlock> for Expr

    source§

    fn from(e: ExprTryBlock) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprTuple> for Expr

    source§

    fn from(e: ExprTuple) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprUnary> for Expr

    source§

    fn from(e: ExprUnary) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprUnsafe> for Expr

    source§

    fn from(e: ExprUnsafe) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprWhile> for Expr

    source§

    fn from(e: ExprWhile) -> Expr

    Converts to this type from the input type.
    source§

    impl From<ExprYield> for Expr

    source§

    fn from(e: ExprYield) -> Expr

    Converts to this type from the input type.
    source§

    impl Hash for Expr

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Expr

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Expr

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Expr

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Expr

    Auto Trait Implementations§

    §

    impl Freeze for Expr

    §

    impl RefUnwindSafe for Expr

    §

    impl !Send for Expr

    §

    impl !Sync for Expr

    §

    impl Unpin for Expr

    §

    impl UnwindSafe for Expr

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/enum.FieldMutability.html b/syn/enum.FieldMutability.html new file mode 100644 index 0000000..de6dfbd --- /dev/null +++ b/syn/enum.FieldMutability.html @@ -0,0 +1,20 @@ +FieldMutability in syn - Rust
    syn

    Enum FieldMutability

    source
    #[non_exhaustive]
    pub enum FieldMutability { + None, +}
    Expand description

    Unused, but reserved for RFC 3323 restrictions.

    +

    Variants (Non-exhaustive)§

    This enum is marked as non-exhaustive
    Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
    §

    None

    Trait Implementations§

    source§

    impl Clone for FieldMutability

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for FieldMutability

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for FieldMutability

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for FieldMutability

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Eq for FieldMutability

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/enum.Fields.html b/syn/enum.Fields.html index a7ebd7f..6dda612 100644 --- a/syn/enum.Fields.html +++ b/syn/enum.Fields.html @@ -1,40 +1,61 @@ -Fields in syn - Rust

    Enum syn::Fields

    source ·
    pub enum Fields {
    +Fields in syn - Rust
    syn

    Enum Fields

    source
    pub enum Fields {
         Named(FieldsNamed),
         Unnamed(FieldsUnnamed),
         Unit,
     }
    Expand description

    Data stored within an enum variant or struct.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Syntax tree enum

    +

    §Syntax tree enum

    This type is a syntax tree enum.

    -

    Variants§

    §

    Named(FieldsNamed)

    Named fields of a struct or struct variant such as Point { x: f64, y: f64 }.

    +

    Variants§

    §

    Named(FieldsNamed)

    Named fields of a struct or struct variant such as Point { x: f64, y: f64 }.

    §

    Unnamed(FieldsUnnamed)

    Unnamed fields of a tuple struct or tuple variant such as Some(T).

    §

    Unit

    Unit struct or unit variant such as None.

    -

    Implementations§

    source§

    impl Fields

    source

    pub fn iter(&self) -> Iter<'_, Field>

    Get an iterator over the borrowed Field items in this object. This +

    Implementations§

    source§

    impl Fields

    source

    pub fn iter(&self) -> Iter<'_, Field>

    Get an iterator over the borrowed Field items in this object. This iterator can be used to iterate over a named or unnamed struct or variant’s fields uniformly.

    -
    source

    pub fn iter_mut(&mut self) -> IterMut<'_, Field>

    Get an iterator over the mutably borrowed Field items in this +

    source

    pub fn iter_mut(&mut self) -> IterMut<'_, Field>

    Get an iterator over the mutably borrowed Field items in this object. This iterator can be used to iterate over a named or unnamed struct or variant’s fields uniformly.

    -
    source

    pub fn len(&self) -> usize

    Returns the number of fields.

    -
    source

    pub fn is_empty(&self) -> bool

    Returns true if there are zero fields.

    -

    Trait Implementations§

    source§

    impl Clone for Fields

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Fields

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<FieldsNamed> for Fields

    source§

    fn from(e: FieldsNamed) -> Fields

    Converts to this type from the input type.
    source§

    impl From<FieldsUnnamed> for Fields

    source§

    fn from(e: FieldsUnnamed) -> Fields

    Converts to this type from the input type.
    source§

    impl Hash for Fields

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<'a> IntoIterator for &'a Fields

    §

    type Item = &'a Field

    The type of the elements being iterated over.
    §

    type IntoIter = Iter<'a, Field>

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl<'a> IntoIterator for &'a mut Fields

    §

    type Item = &'a mut Field

    The type of the elements being iterated over.
    §

    type IntoIter = IterMut<'a, Field>

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl IntoIterator for Fields

    §

    type Item = Field

    The type of the elements being iterated over.
    §

    type IntoIter = IntoIter<Field>

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl PartialEq<Fields> for Fields

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Fields

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Fields

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Fields

    §

    impl !Send for Fields

    §

    impl !Sync for Fields

    §

    impl Unpin for Fields

    §

    impl UnwindSafe for Fields

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    source

    pub fn len(&self) -> usize

    Returns the number of fields.

    +
    source

    pub fn is_empty(&self) -> bool

    Returns true if there are zero fields.

    +
    source

    pub fn members(&self) -> Members<'_>

    Get an iterator over the fields of a struct or variant as Members. +This iterator can be used to iterate over a named or unnamed struct or +variant’s fields uniformly.

    +
    §Example
    +

    The following is a simplistic Clone derive for structs. (A more +complete implementation would additionally want to infer trait bounds on +the generic type parameters.)

    + +
    fn derive_clone(input: &syn::ItemStruct) -> proc_macro2::TokenStream {
    +    let ident = &input.ident;
    +    let members = input.fields.members();
    +    let (impl_generics, ty_generics, where_clause) = input.generics.split_for_impl();
    +    quote! {
    +        impl #impl_generics Clone for #ident #ty_generics #where_clause {
    +            fn clone(&self) -> Self {
    +                Self {
    +                    #(#members: self.#members.clone()),*
    +                }
    +            }
    +        }
    +    }
    +}
    +

    For structs with named fields, it produces an expression like Self { a: self.a.clone() }. For structs with unnamed fields, Self { 0: self.0.clone() }. And for unit structs, Self {}.

    +

    Trait Implementations§

    source§

    impl Clone for Fields

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Fields

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<FieldsNamed> for Fields

    source§

    fn from(e: FieldsNamed) -> Fields

    Converts to this type from the input type.
    source§

    impl From<FieldsUnnamed> for Fields

    source§

    fn from(e: FieldsUnnamed) -> Fields

    Converts to this type from the input type.
    source§

    impl Hash for Fields

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<'a> IntoIterator for &'a Fields

    source§

    type Item = &'a Field

    The type of the elements being iterated over.
    source§

    type IntoIter = Iter<'a, Field>

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl<'a> IntoIterator for &'a mut Fields

    source§

    type Item = &'a mut Field

    The type of the elements being iterated over.
    source§

    type IntoIter = IterMut<'a, Field>

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl IntoIterator for Fields

    source§

    type Item = Field

    The type of the elements being iterated over.
    source§

    type IntoIter = IntoIter<Field>

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl PartialEq for Fields

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Fields

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Fields

    Auto Trait Implementations§

    §

    impl Freeze for Fields

    §

    impl RefUnwindSafe for Fields

    §

    impl !Send for Fields

    §

    impl !Sync for Fields

    §

    impl Unpin for Fields

    §

    impl UnwindSafe for Fields

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/enum.GenericArgument.html b/syn/enum.GenericArgument.html index 72e8431..bb21d66 100644 --- a/syn/enum.GenericArgument.html +++ b/syn/enum.GenericArgument.html @@ -1,36 +1,36 @@ -GenericArgument in syn - Rust

    Enum syn::GenericArgument

    source ·
    pub enum GenericArgument {
    +GenericArgument in syn - Rust
    syn

    Enum GenericArgument

    source
    #[non_exhaustive]
    pub enum GenericArgument { Lifetime(Lifetime), Type(Type), Const(Expr), - Binding(Binding), + AssocType(AssocType), + AssocConst(AssocConst), Constraint(Constraint), }
    Expand description

    An individual generic argument, like 'a, T, or Item = T.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Variants§

    §

    Lifetime(Lifetime)

    A lifetime argument.

    +

    Variants (Non-exhaustive)§

    This enum is marked as non-exhaustive
    Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
    §

    Lifetime(Lifetime)

    A lifetime argument.

    §

    Type(Type)

    A type argument.

    §

    Const(Expr)

    A const expression. Must be inside of a block.

    NOTE: Identity expressions are represented as Type arguments, as they are indistinguishable syntactically.

    -
    §

    Binding(Binding)

    A binding (equality constraint) on an associated type: the Item = u8 in Iterator<Item = u8>.

    +
    §

    AssocType(AssocType)

    A binding (equality constraint) on an associated type: the Item = u8 in Iterator<Item = u8>.

    +
    §

    AssocConst(AssocConst)

    An equality constraint on an associated constant: the PANIC = false in Trait<PANIC = false>.

    §

    Constraint(Constraint)

    An associated type bound: Iterator<Item: Display>.

    -

    Trait Implementations§

    source§

    impl Clone for GenericArgument

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for GenericArgument

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for GenericArgument

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for GenericArgument

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<GenericArgument> for GenericArgument

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for GenericArgument

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for GenericArgument

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for GenericArgument

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for GenericArgument

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for GenericArgument

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for GenericArgument

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for GenericArgument

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for GenericArgument

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for GenericArgument

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/enum.GenericParam.html b/syn/enum.GenericParam.html index 7a1f290..a6d459f 100644 --- a/syn/enum.GenericParam.html +++ b/syn/enum.GenericParam.html @@ -1,33 +1,31 @@ -GenericParam in syn - Rust

    Enum syn::GenericParam

    source ·
    pub enum GenericParam {
    +GenericParam in syn - Rust
    syn

    Enum GenericParam

    source
    pub enum GenericParam {
    +    Lifetime(LifetimeParam),
         Type(TypeParam),
    -    Lifetime(LifetimeDef),
         Const(ConstParam),
     }
    Expand description

    A generic type parameter, lifetime, or const generic: T: Into<String>, 'a: 'b, const LEN: usize.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Syntax tree enum

    +

    §Syntax tree enum

    This type is a syntax tree enum.

    -

    Variants§

    §

    Type(TypeParam)

    A generic type parameter: T: Into<String>.

    -
    §

    Lifetime(LifetimeDef)

    A lifetime definition: 'a: 'b + 'c + 'd.

    +

    Variants§

    §

    Lifetime(LifetimeParam)

    A lifetime parameter: 'a: 'b + 'c + 'd.

    +
    §

    Type(TypeParam)

    A generic type parameter: T: Into<String>.

    §

    Const(ConstParam)

    A const generic parameter: const LENGTH: usize.

    -

    Trait Implementations§

    source§

    impl Clone for GenericParam

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for GenericParam

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ConstParam> for GenericParam

    source§

    fn from(e: ConstParam) -> GenericParam

    Converts to this type from the input type.
    source§

    impl From<LifetimeDef> for GenericParam

    source§

    fn from(e: LifetimeDef) -> GenericParam

    Converts to this type from the input type.
    source§

    impl From<TypeParam> for GenericParam

    source§

    fn from(e: TypeParam) -> GenericParam

    Converts to this type from the input type.
    source§

    impl Hash for GenericParam

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for GenericParam

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<GenericParam> for GenericParam

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for GenericParam

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for GenericParam

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for GenericParam

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for GenericParam

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ConstParam> for GenericParam

    source§

    fn from(e: ConstParam) -> GenericParam

    Converts to this type from the input type.
    source§

    impl From<LifetimeParam> for GenericParam

    source§

    fn from(e: LifetimeParam) -> GenericParam

    Converts to this type from the input type.
    source§

    impl From<TypeParam> for GenericParam

    source§

    fn from(e: TypeParam) -> GenericParam

    Converts to this type from the input type.
    source§

    impl Hash for GenericParam

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for GenericParam

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for GenericParam

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for GenericParam

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for GenericParam

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/enum.Lit.html b/syn/enum.Lit.html index a78a380..9187db4 100644 --- a/syn/enum.Lit.html +++ b/syn/enum.Lit.html @@ -1,6 +1,7 @@ -Lit in syn - Rust

    Enum syn::Lit

    source ·
    pub enum Lit {
    +Lit in syn - Rust
    syn

    Enum Lit

    source
    #[non_exhaustive]
    pub enum Lit { Str(LitStr), ByteStr(LitByteStr), + CStr(LitCStr), Byte(LitByte), Char(LitChar), Int(LitInt), @@ -8,10 +9,11 @@ Bool(LitBool), Verbatim(Literal), }
    Expand description

    A Rust literal such as a string or integer or boolean.

    -

    Syntax tree enum

    +

    §Syntax tree enum

    This type is a syntax tree enum.

    -

    Variants§

    §

    Str(LitStr)

    A UTF-8 string literal: "foo".

    -
    §

    ByteStr(LitByteStr)

    A byte string literal: b"foo".

    +

    Variants (Non-exhaustive)§

    This enum is marked as non-exhaustive
    Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
    §

    Str(LitStr)

    A UTF-8 string literal: "foo".

    +
    §

    ByteStr(LitByteStr)

    A byte string literal: b"foo".

    +
    §

    CStr(LitCStr)

    A nul-terminated C-string literal: c"foo".

    §

    Byte(LitByte)

    A byte literal: b'f'.

    §

    Char(LitChar)

    A character literal: 'a'.

    §

    Int(LitInt)

    An integer literal: 1 or 1u16.

    @@ -19,24 +21,24 @@

    Must be finite. May not be infinite or NaN.

    §

    Bool(LitBool)

    A boolean literal: true or false.

    §

    Verbatim(Literal)

    A raw token literal not interpreted by Syn.

    -

    Implementations§

    source§

    impl Lit

    source

    pub fn new(token: Literal) -> Self

    Interpret a Syn literal from a proc-macro2 literal.

    -
    source

    pub fn suffix(&self) -> &str

    source

    pub fn span(&self) -> Span

    source

    pub fn set_span(&mut self, span: Span)

    Trait Implementations§

    source§

    impl Clone for Lit

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Lit

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Lit> for NestedMeta

    source§

    fn from(e: Lit) -> NestedMeta

    Converts to this type from the input type.
    source§

    impl From<LitBool> for Lit

    source§

    fn from(e: LitBool) -> Lit

    Converts to this type from the input type.
    source§

    impl From<LitByte> for Lit

    source§

    fn from(e: LitByte) -> Lit

    Converts to this type from the input type.
    source§

    impl From<LitByteStr> for Lit

    source§

    fn from(e: LitByteStr) -> Lit

    Converts to this type from the input type.
    source§

    impl From<LitChar> for Lit

    source§

    fn from(e: LitChar) -> Lit

    Converts to this type from the input type.
    source§

    impl From<LitFloat> for Lit

    source§

    fn from(e: LitFloat) -> Lit

    Converts to this type from the input type.
    source§

    impl From<LitInt> for Lit

    source§

    fn from(e: LitInt) -> Lit

    Converts to this type from the input type.
    source§

    impl From<LitStr> for Lit

    source§

    fn from(e: LitStr) -> Lit

    Converts to this type from the input type.
    source§

    impl Hash for Lit

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Lit

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Lit> for Lit

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Lit

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Lit

    source§

    impl Token for Lit

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Lit

    §

    impl !Send for Lit

    §

    impl !Sync for Lit

    §

    impl Unpin for Lit

    §

    impl UnwindSafe for Lit

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Implementations§

    source§

    impl Lit

    source

    pub fn new(token: Literal) -> Self

    Interpret a Syn literal from a proc-macro2 literal.

    +
    source

    pub fn suffix(&self) -> &str

    source

    pub fn span(&self) -> Span

    source

    pub fn set_span(&mut self, span: Span)

    Trait Implementations§

    source§

    impl Clone for Lit

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Lit

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<LitBool> for Lit

    source§

    fn from(e: LitBool) -> Lit

    Converts to this type from the input type.
    source§

    impl From<LitByte> for Lit

    source§

    fn from(e: LitByte) -> Lit

    Converts to this type from the input type.
    source§

    impl From<LitByteStr> for Lit

    source§

    fn from(e: LitByteStr) -> Lit

    Converts to this type from the input type.
    source§

    impl From<LitCStr> for Lit

    source§

    fn from(e: LitCStr) -> Lit

    Converts to this type from the input type.
    source§

    impl From<LitChar> for Lit

    source§

    fn from(e: LitChar) -> Lit

    Converts to this type from the input type.
    source§

    impl From<LitFloat> for Lit

    source§

    fn from(e: LitFloat) -> Lit

    Converts to this type from the input type.
    source§

    impl From<LitInt> for Lit

    source§

    fn from(e: LitInt) -> Lit

    Converts to this type from the input type.
    source§

    impl From<LitStr> for Lit

    source§

    fn from(e: LitStr) -> Lit

    Converts to this type from the input type.
    source§

    impl Hash for Lit

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Lit

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Lit

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Lit

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Lit

    source§

    impl Token for Lit

    Auto Trait Implementations§

    §

    impl Freeze for Lit

    §

    impl RefUnwindSafe for Lit

    §

    impl !Send for Lit

    §

    impl !Sync for Lit

    §

    impl Unpin for Lit

    §

    impl UnwindSafe for Lit

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/enum.MacroDelimiter.html b/syn/enum.MacroDelimiter.html index 6635dd6..67b3976 100644 --- a/syn/enum.MacroDelimiter.html +++ b/syn/enum.MacroDelimiter.html @@ -1,24 +1,22 @@ -MacroDelimiter in syn - Rust

    Enum syn::MacroDelimiter

    source ·
    pub enum MacroDelimiter {
    +MacroDelimiter in syn - Rust
    syn

    Enum MacroDelimiter

    source
    pub enum MacroDelimiter {
         Paren(Paren),
         Brace(Brace),
         Bracket(Bracket),
     }
    Expand description

    A grouping token that surrounds a macro body: m!(...) or m!{...} or m![...].

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Variants§

    §

    Paren(Paren)

    §

    Brace(Brace)

    §

    Bracket(Bracket)

    Trait Implementations§

    source§

    impl Clone for MacroDelimiter

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MacroDelimiter

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for MacroDelimiter

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<MacroDelimiter> for MacroDelimiter

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for MacroDelimiter

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Variants§

    §

    Paren(Paren)

    §

    Brace(Brace)

    §

    Bracket(Bracket)

    Implementations§

    Trait Implementations§

    source§

    impl Clone for MacroDelimiter

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MacroDelimiter

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for MacroDelimiter

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for MacroDelimiter

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Eq for MacroDelimiter

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/enum.Member.html b/syn/enum.Member.html index 9138151..f6485c7 100644 --- a/syn/enum.Member.html +++ b/syn/enum.Member.html @@ -1,28 +1,26 @@ -Member in syn - Rust

    Enum syn::Member

    source ·
    pub enum Member {
    +Member in syn - Rust
    syn

    Enum Member

    source
    pub enum Member {
         Named(Ident),
         Unnamed(Index),
     }
    Expand description

    A struct or tuple struct field accessed in a struct literal or field expression.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Variants§

    §

    Named(Ident)

    A named field like self.x.

    +

    Variants§

    §

    Named(Ident)

    A named field like self.x.

    §

    Unnamed(Index)

    An unnamed field like self.0.

    -

    Trait Implementations§

    source§

    impl Clone for Member

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Member

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Ident> for Member

    source§

    fn from(ident: Ident) -> Member

    Converts to this type from the input type.
    source§

    impl From<Index> for Member

    source§

    fn from(index: Index) -> Member

    Converts to this type from the input type.
    source§

    impl From<usize> for Member

    source§

    fn from(index: usize) -> Member

    Converts to this type from the input type.
    source§

    impl Hash for Member

    source§

    fn hash<H: Hasher>(&self, state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl IdentFragment for Member

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Format this value as an identifier fragment.
    source§

    fn span(&self) -> Option<Span>

    Span associated with this IdentFragment. Read more
    source§

    impl Parse for Member

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Member> for Member

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Member

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Member

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Member

    §

    impl !Send for Member

    §

    impl !Sync for Member

    §

    impl Unpin for Member

    §

    impl UnwindSafe for Member

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for Member

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Member

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Ident> for Member

    source§

    fn from(ident: Ident) -> Member

    Converts to this type from the input type.
    source§

    impl From<Index> for Member

    source§

    fn from(index: Index) -> Member

    Converts to this type from the input type.
    source§

    impl From<usize> for Member

    source§

    fn from(index: usize) -> Member

    Converts to this type from the input type.
    source§

    impl Hash for Member

    source§

    fn hash<H: Hasher>(&self, state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl IdentFragment for Member

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Format this value as an identifier fragment.
    source§

    fn span(&self) -> Option<Span>

    Span associated with this IdentFragment. Read more
    source§

    impl Parse for Member

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Member

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Member

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Member

    Auto Trait Implementations§

    §

    impl Freeze for Member

    §

    impl RefUnwindSafe for Member

    §

    impl !Send for Member

    §

    impl !Sync for Member

    §

    impl Unpin for Member

    §

    impl UnwindSafe for Member

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/enum.Meta.html b/syn/enum.Meta.html index 7ae692a..c882548 100644 --- a/syn/enum.Meta.html +++ b/syn/enum.Meta.html @@ -1,40 +1,41 @@ -Meta in syn - Rust

    Enum syn::Meta

    source ·
    pub enum Meta {
    +Meta in syn - Rust
    syn

    Enum Meta

    source
    pub enum Meta {
         Path(Path),
         List(MetaList),
         NameValue(MetaNameValue),
     }
    Expand description

    Content of a compile-time structured attribute.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Path

    +

    §Path

    A meta path is like the test in #[test].

    -

    List

    +

    §List

    A meta list is like the derive(Copy) in #[derive(Copy)].

    -

    NameValue

    -

    A name-value meta is like the path = "..." in #[path = "sys/windows.rs"].

    -

    Syntax tree enum

    +

    §NameValue

    +

    A name-value meta is like the path = "..." in #[path = "sys/windows.rs"].

    +

    §Syntax tree enum

    This type is a syntax tree enum.

    -

    Variants§

    §

    Path(Path)

    §

    List(MetaList)

    A structured list within an attribute, like derive(Copy, Clone).

    -
    §

    NameValue(MetaNameValue)

    A name-value pair within an attribute, like feature = "nightly".

    -

    Implementations§

    source§

    impl Meta

    source

    pub fn path(&self) -> &Path

    Returns the identifier that begins this structured meta item.

    +

    Variants§

    §

    Path(Path)

    §

    List(MetaList)

    A structured list within an attribute, like derive(Copy, Clone).

    +
    §

    NameValue(MetaNameValue)

    A name-value pair within an attribute, like feature = "nightly".

    +

    Implementations§

    source§

    impl Meta

    source

    pub fn path(&self) -> &Path

    Returns the path that begins this structured meta item.

    For example this would return the test in #[test], the derive in -#[derive(Copy)], and the path in #[path = "sys/windows.rs"].

    -

    Trait Implementations§

    source§

    impl Clone for Meta

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Meta

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Meta> for NestedMeta

    source§

    fn from(e: Meta) -> NestedMeta

    Converts to this type from the input type.
    source§

    impl From<MetaList> for Meta

    source§

    fn from(e: MetaList) -> Meta

    Converts to this type from the input type.
    source§

    impl From<MetaNameValue> for Meta

    source§

    fn from(e: MetaNameValue) -> Meta

    Converts to this type from the input type.
    source§

    impl From<Path> for Meta

    source§

    fn from(e: Path) -> Meta

    Converts to this type from the input type.
    source§

    impl Hash for Meta

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Meta

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Meta> for Meta

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Meta

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Meta

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Meta

    §

    impl !Send for Meta

    §

    impl !Sync for Meta

    §

    impl Unpin for Meta

    §

    impl UnwindSafe for Meta

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +#[derive(Copy)], and the path in #[path = "sys/windows.rs"].

    +
    source

    pub fn require_path_only(&self) -> Result<&Path>

    Error if this is a Meta::List or Meta::NameValue.

    +
    source

    pub fn require_list(&self) -> Result<&MetaList>

    Error if this is a Meta::Path or Meta::NameValue.

    +
    source

    pub fn require_name_value(&self) -> Result<&MetaNameValue>

    Error if this is a Meta::Path or Meta::List.

    +

    Trait Implementations§

    source§

    impl Clone for Meta

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Meta

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<MetaList> for Meta

    source§

    fn from(meta: MetaList) -> Meta

    Converts to this type from the input type.
    source§

    impl From<MetaNameValue> for Meta

    source§

    fn from(meta: MetaNameValue) -> Meta

    Converts to this type from the input type.
    source§

    impl From<Path> for Meta

    source§

    fn from(meta: Path) -> Meta

    Converts to this type from the input type.
    source§

    impl Hash for Meta

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Meta

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Meta

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Meta

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Meta

    Auto Trait Implementations§

    §

    impl Freeze for Meta

    §

    impl RefUnwindSafe for Meta

    §

    impl !Send for Meta

    §

    impl !Sync for Meta

    §

    impl Unpin for Meta

    §

    impl UnwindSafe for Meta

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/enum.NestedMeta.html b/syn/enum.NestedMeta.html deleted file mode 100644 index 79d45c1..0000000 --- a/syn/enum.NestedMeta.html +++ /dev/null @@ -1,29 +0,0 @@ -NestedMeta in syn - Rust

    Enum syn::NestedMeta

    source ·
    pub enum NestedMeta {
    -    Meta(Meta),
    -    Lit(Lit),
    -}
    Expand description

    Element of a compile-time attribute list.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Variants§

    §

    Meta(Meta)

    A structured meta item, like the Copy in #[derive(Copy)] which -would be a nested Meta::Path.

    -
    §

    Lit(Lit)

    A Rust literal, like the "new_name" in #[rename("new_name")].

    -

    Trait Implementations§

    source§

    impl Clone for NestedMeta

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for NestedMeta

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Lit> for NestedMeta

    source§

    fn from(e: Lit) -> NestedMeta

    Converts to this type from the input type.
    source§

    impl From<Meta> for NestedMeta

    source§

    fn from(e: Meta) -> NestedMeta

    Converts to this type from the input type.
    source§

    impl Hash for NestedMeta

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for NestedMeta

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<NestedMeta> for NestedMeta

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for NestedMeta

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for NestedMeta

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/enum.PathArguments.html b/syn/enum.PathArguments.html index 88565b2..1ae1ce2 100644 --- a/syn/enum.PathArguments.html +++ b/syn/enum.PathArguments.html @@ -1,33 +1,31 @@ -PathArguments in syn - Rust

    Enum syn::PathArguments

    source ·
    pub enum PathArguments {
    +PathArguments in syn - Rust
    syn

    Enum PathArguments

    source
    pub enum PathArguments {
         None,
         AngleBracketed(AngleBracketedGenericArguments),
         Parenthesized(ParenthesizedGenericArguments),
     }
    Expand description

    Angle bracketed or parenthesized arguments of a path segment.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Angle bracketed

    +

    §Angle bracketed

    The <'a, T> in std::slice::iter<'a, T>.

    -

    Parenthesized

    +

    §Parenthesized

    The (A, B) -> C in Fn(A, B) -> C.

    -

    Variants§

    §

    None

    §

    AngleBracketed(AngleBracketedGenericArguments)

    The <'a, T> in std::slice::iter<'a, T>.

    +

    Variants§

    §

    None

    §

    AngleBracketed(AngleBracketedGenericArguments)

    The <'a, T> in std::slice::iter<'a, T>.

    §

    Parenthesized(ParenthesizedGenericArguments)

    The (A, B) -> C in Fn(A, B) -> C.

    -

    Implementations§

    source§

    impl PathArguments

    source

    pub fn is_empty(&self) -> bool

    source

    pub fn is_none(&self) -> bool

    Trait Implementations§

    source§

    impl Clone for PathArguments

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PathArguments

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for PathArguments

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for PathArguments

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<PathArguments> for PathArguments

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for PathArguments

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for PathArguments

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Implementations§

    source§

    impl PathArguments

    source

    pub fn is_empty(&self) -> bool

    source

    pub fn is_none(&self) -> bool

    Trait Implementations§

    source§

    impl Clone for PathArguments

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PathArguments

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for PathArguments

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for PathArguments

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for PathArguments

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for PathArguments

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for PathArguments

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/enum.ReturnType.html b/syn/enum.ReturnType.html index aa72426..71255d0 100644 --- a/syn/enum.ReturnType.html +++ b/syn/enum.ReturnType.html @@ -1,29 +1,27 @@ -ReturnType in syn - Rust

    Enum syn::ReturnType

    source ·
    pub enum ReturnType {
    +ReturnType in syn - Rust
    syn

    Enum ReturnType

    source
    pub enum ReturnType {
         Default,
    -    Type(RArrow, Box<Type>),
    +    Type(RArrow, Box<Type>),
     }
    Expand description

    Return type of a function signature.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Variants§

    §

    Default

    Return type is not specified.

    +

    Variants§

    §

    Default

    Return type is not specified.

    Functions default to () and closures default to type inference.

    -
    §

    Type(RArrow, Box<Type>)

    A particular type is returned.

    -

    Implementations§

    Trait Implementations§

    source§

    impl Clone for ReturnType

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ReturnType

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for ReturnType

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for ReturnType

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<ReturnType> for ReturnType

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for ReturnType

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ReturnType

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    §

    Type(RArrow, Box<Type>)

    A particular type is returned.

    +

    Implementations§

    Trait Implementations§

    source§

    impl Clone for ReturnType

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ReturnType

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for ReturnType

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for ReturnType

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for ReturnType

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for ReturnType

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ReturnType

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/enum.StrStyle.html b/syn/enum.StrStyle.html deleted file mode 100644 index d02626a..0000000 --- a/syn/enum.StrStyle.html +++ /dev/null @@ -1,19 +0,0 @@ -StrStyle in syn - Rust

    Enum syn::StrStyle

    source ·
    pub enum StrStyle {
    -    Cooked,
    -    Raw(usize),
    -}
    Expand description

    The style of a string literal, either plain quoted or a raw string like -r##"data"##.

    -

    Variants§

    §

    Cooked

    An ordinary string like "data".

    -
    §

    Raw(usize)

    A raw string like r##"data"##.

    -

    The unsigned integer is the number of # symbols used.

    -

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/enum.TraitBoundModifier.html b/syn/enum.TraitBoundModifier.html index 1e8cfd9..d637372 100644 --- a/syn/enum.TraitBoundModifier.html +++ b/syn/enum.TraitBoundModifier.html @@ -1,27 +1,25 @@ -TraitBoundModifier in syn - Rust
    pub enum TraitBoundModifier {
    +TraitBoundModifier in syn - Rust
    syn

    Enum TraitBoundModifier

    source
    pub enum TraitBoundModifier {
         None,
         Maybe(Question),
     }
    Expand description

    A modifier on a trait bound, currently only used for the ? in ?Sized.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Variants§

    §

    None

    §

    Maybe(Question)

    Trait Implementations§

    source§

    impl Clone for TraitBoundModifier

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TraitBoundModifier

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for TraitBoundModifier

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TraitBoundModifier

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<TraitBoundModifier> for TraitBoundModifier

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for TraitBoundModifier

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for TraitBoundModifier

    source§

    impl Eq for TraitBoundModifier

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Variants§

    §

    None

    §

    Maybe(Question)

    Trait Implementations§

    source§

    impl Clone for TraitBoundModifier

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TraitBoundModifier

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for TraitBoundModifier

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TraitBoundModifier

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for TraitBoundModifier

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for TraitBoundModifier

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for TraitBoundModifier

    source§

    impl Eq for TraitBoundModifier

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/enum.Type.html b/syn/enum.Type.html index 003173c..201067e 100644 --- a/syn/enum.Type.html +++ b/syn/enum.Type.html @@ -1,4 +1,4 @@ -Type in syn - Rust

    Enum syn::Type

    source ·
    #[non_exhaustive]
    pub enum Type { +Type in syn - Rust
    syn

    Enum Type

    source
    #[non_exhaustive]
    pub enum Type {
    Show 15 variants Array(TypeArray), BareFn(TypeBareFn), Group(TypeGroup), @@ -15,11 +15,9 @@ Tuple(TypeTuple), Verbatim(TokenStream),
    }
    Expand description

    The possible types that a Rust value could have.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Syntax tree enum

    +

    §Syntax tree enum

    This type is a syntax tree enum.

    -

    Variants (Non-exhaustive)§

    This enum is marked as non-exhaustive
    Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
    §

    Array(TypeArray)

    A fixed size array type: [T; n].

    +

    Variants (Non-exhaustive)§

    This enum is marked as non-exhaustive
    Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
    §

    Array(TypeArray)

    A fixed size array type: [T; n].

    §

    BareFn(TypeBareFn)

    A bare function type: fn(usize) -> bool.

    §

    Group(TypeGroup)

    A type contained within invisible delimiters.

    §

    ImplTrait(TypeImplTrait)

    An impl Bound1 + Bound2 + Bound3 type where Bound is a trait or @@ -37,27 +35,27 @@ self-type as in <Vec<T> as SomeTrait>::Associated.

    trait or a lifetime.

    §

    Tuple(TypeTuple)

    A tuple type: (A, B, C, String).

    §

    Verbatim(TokenStream)

    Tokens in type position not interpreted by Syn.

    -

    Implementations§

    source§

    impl Type

    source

    pub fn without_plus(input: ParseStream<'_>) -> Result<Self>

    In some positions, types may not contain the + character, to +

    Implementations§

    source§

    impl Type

    source

    pub fn without_plus(input: ParseStream<'_>) -> Result<Self>

    In some positions, types may not contain the + character, to disambiguate them. For example in the expression 1 as T, T may not contain a + character.

    This parser does not allow a +, while the default parser does.

    -

    Trait Implementations§

    source§

    impl Clone for Type

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Type

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypeArray> for Type

    source§

    fn from(e: TypeArray) -> Type

    Converts to this type from the input type.
    source§

    impl From<TypeBareFn> for Type

    source§

    fn from(e: TypeBareFn) -> Type

    Converts to this type from the input type.
    source§

    impl From<TypeGroup> for Type

    source§

    fn from(e: TypeGroup) -> Type

    Converts to this type from the input type.
    source§

    impl From<TypeImplTrait> for Type

    source§

    fn from(e: TypeImplTrait) -> Type

    Converts to this type from the input type.
    source§

    impl From<TypeInfer> for Type

    source§

    fn from(e: TypeInfer) -> Type

    Converts to this type from the input type.
    source§

    impl From<TypeMacro> for Type

    source§

    fn from(e: TypeMacro) -> Type

    Converts to this type from the input type.
    source§

    impl From<TypeNever> for Type

    source§

    fn from(e: TypeNever) -> Type

    Converts to this type from the input type.
    source§

    impl From<TypeParen> for Type

    source§

    fn from(e: TypeParen) -> Type

    Converts to this type from the input type.
    source§

    impl From<TypePath> for Type

    source§

    fn from(e: TypePath) -> Type

    Converts to this type from the input type.
    source§

    impl From<TypePtr> for Type

    source§

    fn from(e: TypePtr) -> Type

    Converts to this type from the input type.
    source§

    impl From<TypeReference> for Type

    source§

    fn from(e: TypeReference) -> Type

    Converts to this type from the input type.
    source§

    impl From<TypeSlice> for Type

    source§

    fn from(e: TypeSlice) -> Type

    Converts to this type from the input type.
    source§

    impl From<TypeTraitObject> for Type

    source§

    fn from(e: TypeTraitObject) -> Type

    Converts to this type from the input type.
    source§

    impl From<TypeTuple> for Type

    source§

    fn from(e: TypeTuple) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for Type

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Type

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Type> for Type

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Type

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Type

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Type

    §

    impl !Send for Type

    §

    impl !Sync for Type

    §

    impl Unpin for Type

    §

    impl UnwindSafe for Type

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for Type

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Type

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypeArray> for Type

    source§

    fn from(e: TypeArray) -> Type

    Converts to this type from the input type.
    source§

    impl From<TypeBareFn> for Type

    source§

    fn from(e: TypeBareFn) -> Type

    Converts to this type from the input type.
    source§

    impl From<TypeGroup> for Type

    source§

    fn from(e: TypeGroup) -> Type

    Converts to this type from the input type.
    source§

    impl From<TypeImplTrait> for Type

    source§

    fn from(e: TypeImplTrait) -> Type

    Converts to this type from the input type.
    source§

    impl From<TypeInfer> for Type

    source§

    fn from(e: TypeInfer) -> Type

    Converts to this type from the input type.
    source§

    impl From<TypeMacro> for Type

    source§

    fn from(e: TypeMacro) -> Type

    Converts to this type from the input type.
    source§

    impl From<TypeNever> for Type

    source§

    fn from(e: TypeNever) -> Type

    Converts to this type from the input type.
    source§

    impl From<TypeParen> for Type

    source§

    fn from(e: TypeParen) -> Type

    Converts to this type from the input type.
    source§

    impl From<TypePath> for Type

    source§

    fn from(e: TypePath) -> Type

    Converts to this type from the input type.
    source§

    impl From<TypePtr> for Type

    source§

    fn from(e: TypePtr) -> Type

    Converts to this type from the input type.
    source§

    impl From<TypeReference> for Type

    source§

    fn from(e: TypeReference) -> Type

    Converts to this type from the input type.
    source§

    impl From<TypeSlice> for Type

    source§

    fn from(e: TypeSlice) -> Type

    Converts to this type from the input type.
    source§

    impl From<TypeTraitObject> for Type

    source§

    fn from(e: TypeTraitObject) -> Type

    Converts to this type from the input type.
    source§

    impl From<TypeTuple> for Type

    source§

    fn from(e: TypeTuple) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for Type

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Type

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Type

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Type

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Type

    Auto Trait Implementations§

    §

    impl Freeze for Type

    §

    impl RefUnwindSafe for Type

    §

    impl !Send for Type

    §

    impl !Sync for Type

    §

    impl Unpin for Type

    §

    impl UnwindSafe for Type

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/enum.TypeParamBound.html b/syn/enum.TypeParamBound.html index 9fd264c..3952b68 100644 --- a/syn/enum.TypeParamBound.html +++ b/syn/enum.TypeParamBound.html @@ -1,26 +1,26 @@ -TypeParamBound in syn - Rust

    Enum syn::TypeParamBound

    source ·
    pub enum TypeParamBound {
    +TypeParamBound in syn - Rust
    syn

    Enum TypeParamBound

    source
    #[non_exhaustive]
    pub enum TypeParamBound { Trait(TraitBound), Lifetime(Lifetime), + PreciseCapture(PreciseCapture), + Verbatim(TokenStream), }
    Expand description

    A trait or lifetime used as a bound on a type parameter.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Variants§

    §

    Trait(TraitBound)

    §

    Lifetime(Lifetime)

    Trait Implementations§

    source§

    impl Clone for TypeParamBound

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypeParamBound

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Lifetime> for TypeParamBound

    source§

    fn from(e: Lifetime) -> TypeParamBound

    Converts to this type from the input type.
    source§

    impl From<TraitBound> for TypeParamBound

    source§

    fn from(e: TraitBound) -> TypeParamBound

    Converts to this type from the input type.
    source§

    impl Hash for TypeParamBound

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypeParamBound

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<TypeParamBound> for TypeParamBound

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for TypeParamBound

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypeParamBound

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Variants (Non-exhaustive)§

    This enum is marked as non-exhaustive
    Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
    §

    Trait(TraitBound)

    §

    Lifetime(Lifetime)

    §

    PreciseCapture(PreciseCapture)

    §

    Verbatim(TokenStream)

    Trait Implementations§

    source§

    impl Clone for TypeParamBound

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypeParamBound

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Lifetime> for TypeParamBound

    source§

    fn from(e: Lifetime) -> TypeParamBound

    Converts to this type from the input type.
    source§

    impl From<TraitBound> for TypeParamBound

    source§

    fn from(e: TraitBound) -> TypeParamBound

    Converts to this type from the input type.
    source§

    impl Hash for TypeParamBound

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypeParamBound

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for TypeParamBound

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for TypeParamBound

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypeParamBound

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/enum.UnOp.html b/syn/enum.UnOp.html index b2a6746..fcc2b43 100644 --- a/syn/enum.UnOp.html +++ b/syn/enum.UnOp.html @@ -1,30 +1,28 @@ -UnOp in syn - Rust

    Enum syn::UnOp

    source ·
    pub enum UnOp {
    +UnOp in syn - Rust
    syn

    Enum UnOp

    source
    #[non_exhaustive]
    pub enum UnOp { Deref(Star), - Not(Bang), - Neg(Sub), + Not(Not), + Neg(Minus), }
    Expand description

    A unary operator: *, !, -.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Variants§

    §

    Deref(Star)

    The * operator for dereferencing

    -
    §

    Not(Bang)

    The ! operator for logical inversion

    -
    §

    Neg(Sub)

    The - operator for negation

    -

    Trait Implementations§

    source§

    impl Clone for UnOp

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for UnOp

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for UnOp

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for UnOp

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<UnOp> for UnOp

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for UnOp

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for UnOp

    source§

    impl Eq for UnOp

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for UnOp

    §

    impl !Send for UnOp

    §

    impl !Sync for UnOp

    §

    impl Unpin for UnOp

    §

    impl UnwindSafe for UnOp

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Variants (Non-exhaustive)§

    This enum is marked as non-exhaustive
    Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
    §

    Deref(Star)

    The * operator for dereferencing

    +
    §

    Not(Not)

    The ! operator for logical inversion

    +
    §

    Neg(Minus)

    The - operator for negation

    +

    Trait Implementations§

    source§

    impl Clone for UnOp

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for UnOp

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for UnOp

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for UnOp

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for UnOp

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for UnOp

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for UnOp

    source§

    impl Eq for UnOp

    Auto Trait Implementations§

    §

    impl Freeze for UnOp

    §

    impl RefUnwindSafe for UnOp

    §

    impl !Send for UnOp

    §

    impl !Sync for UnOp

    §

    impl Unpin for UnOp

    §

    impl UnwindSafe for UnOp

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/enum.Visibility.html b/syn/enum.Visibility.html index 61f0ac7..cc5b51c 100644 --- a/syn/enum.Visibility.html +++ b/syn/enum.Visibility.html @@ -1,36 +1,32 @@ -Visibility in syn - Rust

    Enum syn::Visibility

    source ·
    pub enum Visibility {
    -    Public(VisPublic),
    -    Crate(VisCrate),
    +Visibility in syn - Rust
    syn

    Enum Visibility

    source
    pub enum Visibility {
    +    Public(Pub),
         Restricted(VisRestricted),
         Inherited,
     }
    Expand description

    The visibility level of an item: inherited or pub or pub(restricted).

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Syntax tree enum

    +

    §Syntax tree enum

    This type is a syntax tree enum.

    -

    Variants§

    §

    Public(VisPublic)

    A public visibility level: pub.

    -
    §

    Crate(VisCrate)

    A crate-level visibility: crate.

    +

    Variants§

    §

    Public(Pub)

    A public visibility level: pub.

    §

    Restricted(VisRestricted)

    A visibility level restricted to some path: pub(self) or pub(super) or pub(crate) or pub(in some::module).

    §

    Inherited

    An inherited visibility, which usually means private.

    -

    Trait Implementations§

    source§

    impl Clone for Visibility

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Visibility

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<VisCrate> for Visibility

    source§

    fn from(e: VisCrate) -> Visibility

    Converts to this type from the input type.
    source§

    impl From<VisPublic> for Visibility

    source§

    fn from(e: VisPublic) -> Visibility

    Converts to this type from the input type.
    source§

    impl From<VisRestricted> for Visibility

    source§

    fn from(e: VisRestricted) -> Visibility

    Converts to this type from the input type.
    source§

    impl Hash for Visibility

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Visibility

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Visibility> for Visibility

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Visibility

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Visibility

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for Visibility

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Visibility

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for Visibility

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Visibility

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Visibility

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Visibility

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Visibility

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/enum.WherePredicate.html b/syn/enum.WherePredicate.html index 83559e1..1a47240 100644 --- a/syn/enum.WherePredicate.html +++ b/syn/enum.WherePredicate.html @@ -1,32 +1,28 @@ -WherePredicate in syn - Rust

    Enum syn::WherePredicate

    source ·
    pub enum WherePredicate {
    -    Type(PredicateType),
    +WherePredicate in syn - Rust
    syn

    Enum WherePredicate

    source
    #[non_exhaustive]
    pub enum WherePredicate { Lifetime(PredicateLifetime), - Eq(PredicateEq), + Type(PredicateType), }
    Expand description

    A single predicate in a where clause: T: Deserialize<'de>.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Syntax tree enum

    +

    §Syntax tree enum

    This type is a syntax tree enum.

    -

    Variants§

    §

    Type(PredicateType)

    A type predicate in a where clause: for<'c> Foo<'c>: Trait<'c>.

    -
    §

    Lifetime(PredicateLifetime)

    A lifetime predicate in a where clause: 'a: 'b + 'c.

    -
    §

    Eq(PredicateEq)

    An equality predicate in a where clause (unsupported).

    -

    Trait Implementations§

    source§

    impl Clone for WherePredicate

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for WherePredicate

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<PredicateEq> for WherePredicate

    source§

    fn from(e: PredicateEq) -> WherePredicate

    Converts to this type from the input type.
    source§

    impl From<PredicateLifetime> for WherePredicate

    source§

    fn from(e: PredicateLifetime) -> WherePredicate

    Converts to this type from the input type.
    source§

    impl From<PredicateType> for WherePredicate

    source§

    fn from(e: PredicateType) -> WherePredicate

    Converts to this type from the input type.
    source§

    impl Hash for WherePredicate

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for WherePredicate

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<WherePredicate> for WherePredicate

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for WherePredicate

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for WherePredicate

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Variants (Non-exhaustive)§

    This enum is marked as non-exhaustive
    Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
    §

    Lifetime(PredicateLifetime)

    A lifetime predicate in a where clause: 'a: 'b + 'c.

    +
    §

    Type(PredicateType)

    A type predicate in a where clause: for<'c> Foo<'c>: Trait<'c>.

    +

    Trait Implementations§

    source§

    impl Clone for WherePredicate

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for WherePredicate

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<PredicateLifetime> for WherePredicate

    source§

    fn from(e: PredicateLifetime) -> WherePredicate

    Converts to this type from the input type.
    source§

    impl From<PredicateType> for WherePredicate

    source§

    fn from(e: PredicateType) -> WherePredicate

    Converts to this type from the input type.
    source§

    impl Hash for WherePredicate

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for WherePredicate

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for WherePredicate

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for WherePredicate

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for WherePredicate

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/expr/struct.ExprAssignOp.html b/syn/expr/struct.ExprAssignOp.html deleted file mode 100644 index c7b2d91..0000000 --- a/syn/expr/struct.ExprAssignOp.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

    Redirecting to ../../syn/struct.ExprAssignOp.html...

    - - - \ No newline at end of file diff --git a/syn/expr/struct.ExprBox.html b/syn/expr/struct.ExprBox.html deleted file mode 100644 index b4d7742..0000000 --- a/syn/expr/struct.ExprBox.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

    Redirecting to ../../syn/struct.ExprBox.html...

    - - - \ No newline at end of file diff --git a/syn/expr/struct.ExprConst.html b/syn/expr/struct.ExprConst.html new file mode 100644 index 0000000..00b6a94 --- /dev/null +++ b/syn/expr/struct.ExprConst.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../syn/struct.ExprConst.html...

    + + + \ No newline at end of file diff --git a/syn/expr/struct.ExprInfer.html b/syn/expr/struct.ExprInfer.html new file mode 100644 index 0000000..541ec0e --- /dev/null +++ b/syn/expr/struct.ExprInfer.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../syn/struct.ExprInfer.html...

    + + + \ No newline at end of file diff --git a/syn/expr/struct.ExprRawAddr.html b/syn/expr/struct.ExprRawAddr.html new file mode 100644 index 0000000..9956915 --- /dev/null +++ b/syn/expr/struct.ExprRawAddr.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../syn/struct.ExprRawAddr.html...

    + + + \ No newline at end of file diff --git a/syn/expr/struct.ExprType.html b/syn/expr/struct.ExprType.html deleted file mode 100644 index c8568f8..0000000 --- a/syn/expr/struct.ExprType.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

    Redirecting to ../../syn/struct.ExprType.html...

    - - - \ No newline at end of file diff --git a/syn/expr/struct.FieldValue.html b/syn/expr/struct.FieldValue.html new file mode 100644 index 0000000..3e13849 --- /dev/null +++ b/syn/expr/struct.FieldValue.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../syn/struct.FieldValue.html...

    + + + \ No newline at end of file diff --git a/syn/ext/index.html b/syn/ext/index.html index d9aff1b..75d16d8 100644 --- a/syn/ext/index.html +++ b/syn/ext/index.html @@ -1,3 +1,2 @@ -syn::ext - Rust

    Module syn::ext

    source ·
    Expand description

    Extension traits to provide parsing methods on foreign types.

    -

    This module is available only if Syn is built with the "parsing" feature.

    -

    Traits

    • Additional methods for Ident not provided by proc-macro2 or libproc_macro.
    \ No newline at end of file +syn::ext - Rust
    syn

    Module ext

    source
    Expand description

    Extension traits to provide parsing methods on foreign types.

    +

    Traits§

    • Additional methods for Ident not provided by proc-macro2 or libproc_macro.
    \ No newline at end of file diff --git a/syn/ext/trait.IdentExt.html b/syn/ext/trait.IdentExt.html index 5a26d2d..d8f586e 100644 --- a/syn/ext/trait.IdentExt.html +++ b/syn/ext/trait.IdentExt.html @@ -1,4 +1,4 @@ -IdentExt in syn::ext - Rust

    Trait syn::ext::IdentExt

    source ·
    pub trait IdentExt: Sized + Sealed {
    +IdentExt in syn::ext - Rust
    syn::ext

    Trait IdentExt

    source
    pub trait IdentExt: Sized + Sealed {
         const peek_any: PeekFn = private::PeekFn;
     
         // Required methods
    @@ -7,15 +7,14 @@
     }
    Expand description

    Additional methods for Ident not provided by proc-macro2 or libproc_macro.

    This trait is sealed and cannot be implemented for types outside of Syn. It is implemented only for proc_macro2::Ident.

    -

    This trait is available only if Syn is built with the "parsing" feature.

    -

    Provided Associated Constants§

    source

    const peek_any: PeekFn = private::PeekFn

    Peeks any identifier including keywords. Usage: +

    Provided Associated Constants§

    source

    const peek_any: PeekFn = private::PeekFn

    Peeks any identifier including keywords. Usage: input.peek(Ident::peek_any)

    This is different from input.peek(Ident) which only returns true in the case of an ident which is not a Rust keyword.

    -

    Required Methods§

    source

    fn parse_any(input: ParseStream<'_>) -> Result<Self>

    Parses any identifier including keywords.

    +

    Required Methods§

    source

    fn parse_any(input: ParseStream<'_>) -> Result<Self>

    Parses any identifier including keywords.

    This is useful when parsing macro input which allows Rust keywords as identifiers.

    -
    Example
    +
    §Example
    use syn::{Error, Ident, Result, Token};
     use syn::ext::IdentExt;
     use syn::parse::ParseStream;
    @@ -37,13 +36,13 @@ identifiers.

    let name = input.call(Ident::parse_any)?; Ok(name) }
    -
    source

    fn unraw(&self) -> Ident

    Strips the raw marker r#, if any, from the beginning of an ident.

    +
    source

    fn unraw(&self) -> Ident

    Strips the raw marker r#, if any, from the beginning of an ident.

    • unraw(x) = x
    • unraw(move) = move
    • unraw(r#move) = move
    -
    Example
    +
    §Example

    In the case of interop with other languages like Python that have a different set of keywords than Rust, we might come across macro input that involves raw identifiers to refer to ordinary variables in the @@ -57,7 +56,7 @@ invalid identifiers like __pyo3_get_r#move.

    use syn::ext::IdentExt; fn ident_for_getter(variable: &Ident) -> Ident { - let getter = format!("__pyo3_get_{}", variable.unraw()); + let getter = format!("__pyo3_get_{}", variable.unraw()); Ident::new(&getter, Span::call_site()) }
    -

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/syn/fn.parse.html b/syn/fn.parse.html index 82a13f1..ef1806b 100644 --- a/syn/fn.parse.html +++ b/syn/fn.parse.html @@ -1,4 +1,4 @@ -parse in syn - Rust

    Function syn::parse

    source ·
    pub fn parse<T: Parse>(tokens: TokenStream) -> Result<T>
    Expand description

    Parse tokens of source code into the chosen syntax tree node.

    +parse in syn - Rust
    syn

    Function parse

    source
    pub fn parse<T: Parse>(tokens: TokenStream) -> Result<T>
    Expand description

    Parse tokens of source code into the chosen syntax tree node.

    This is preferred over parsing a string because tokens are able to preserve information about where in the user’s code they were originally written (the “span” of the token), possibly allowing the compiler to produce better error @@ -6,24 +6,6 @@ messages.

    This function parses a proc_macro::TokenStream which is the type used for interop with the compiler in a procedural macro. To parse a proc_macro2::TokenStream, use syn::parse2 instead.

    -

    This function is available only if Syn is built with both the "parsing" and -"proc-macro" features.

    -

    Examples

    -
    use proc_macro::TokenStream;
    -use quote::quote;
    -use syn::DeriveInput;
    -
    -#[proc_macro_derive(MyMacro)]
    -pub fn my_macro(input: TokenStream) -> TokenStream {
    -    // Parse the tokens into a syntax tree
    -    let ast: DeriveInput = syn::parse(input).unwrap();
    -
    -    // Build the output, possibly using quasi-quotation
    -    let expanded = quote! {
    -        /* ... */
    -    };
    -
    -    // Convert into a token stream and return it
    -    expanded.into()
    -}
    +

    This function enforces that the input is fully parsed. If there are any +unparsed tokens at the end of the stream, an error is returned.

    \ No newline at end of file diff --git a/syn/fn.parse2.html b/syn/fn.parse2.html index a15d65a..1769014 100644 --- a/syn/fn.parse2.html +++ b/syn/fn.parse2.html @@ -1,10 +1,9 @@ -parse2 in syn - Rust

    Function syn::parse2

    source ·
    pub fn parse2<T: Parse>(tokens: TokenStream) -> Result<T>
    Expand description

    Parse a proc-macro2 token stream into the chosen syntax tree node.

    -

    This function will check that the input is fully parsed. If there are -any unparsed tokens at the end of the stream, an error is returned.

    +parse2 in syn - Rust
    syn

    Function parse2

    source
    pub fn parse2<T: Parse>(tokens: TokenStream) -> Result<T>
    Expand description

    Parse a proc-macro2 token stream into the chosen syntax tree node.

    This function parses a proc_macro2::TokenStream which is commonly useful when the input comes from a node of the Syn syntax tree, for example the body tokens of a Macro node. When in a procedural macro parsing the proc_macro::TokenStream provided by the compiler, use syn::parse instead.

    -

    This function is available only if Syn is built with the "parsing" feature.

    +

    This function enforces that the input is fully parsed. If there are any +unparsed tokens at the end of the stream, an error is returned.

    \ No newline at end of file diff --git a/syn/fn.parse_str.html b/syn/fn.parse_str.html index 9606e1f..4c09f2c 100644 --- a/syn/fn.parse_str.html +++ b/syn/fn.parse_str.html @@ -1,15 +1,16 @@ -parse_str in syn - Rust

    Function syn::parse_str

    source ·
    pub fn parse_str<T: Parse>(s: &str) -> Result<T>
    Expand description

    Parse a string of Rust code into the chosen syntax tree node.

    -

    This function is available only if Syn is built with the "parsing" feature.

    -

    Hygiene

    +parse_str in syn - Rust
    syn

    Function parse_str

    source
    pub fn parse_str<T: Parse>(s: &str) -> Result<T>
    Expand description

    Parse a string of Rust code into the chosen syntax tree node.

    +

    This function enforces that the input is fully parsed. If there are any +unparsed tokens at the end of the stream, an error is returned.

    +

    §Hygiene

    Every span in the resulting syntax tree will be set to resolve at the macro call site.

    -

    Examples

    +

    §Examples

    use syn::{Expr, Result};
     
     fn run() -> Result<()> {
    -    let code = "assert_eq!(u8::max_value(), 255)";
    +    let code = "assert_eq!(u8::max_value(), 255)";
         let expr = syn::parse_str::<Expr>(code)?;
    -    println!("{:#?}", expr);
    +    println!("{:#?}", expr);
         Ok(())
     }
    \ No newline at end of file diff --git a/syn/gen/visit/fn.visit_assoc_const.html b/syn/gen/visit/fn.visit_assoc_const.html new file mode 100644 index 0000000..4773926 --- /dev/null +++ b/syn/gen/visit/fn.visit_assoc_const.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../../syn/visit/fn.visit_assoc_const.html...

    + + + \ No newline at end of file diff --git a/syn/gen/visit/fn.visit_assoc_type.html b/syn/gen/visit/fn.visit_assoc_type.html new file mode 100644 index 0000000..2c84abe --- /dev/null +++ b/syn/gen/visit/fn.visit_assoc_type.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../../syn/visit/fn.visit_assoc_type.html...

    + + + \ No newline at end of file diff --git a/syn/gen/visit/fn.visit_bare_variadic.html b/syn/gen/visit/fn.visit_bare_variadic.html new file mode 100644 index 0000000..5781fc5 --- /dev/null +++ b/syn/gen/visit/fn.visit_bare_variadic.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../../syn/visit/fn.visit_bare_variadic.html...

    + + + \ No newline at end of file diff --git a/syn/gen/visit/fn.visit_binding.html b/syn/gen/visit/fn.visit_binding.html deleted file mode 100644 index 5965eea..0000000 --- a/syn/gen/visit/fn.visit_binding.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

    Redirecting to ../../../syn/visit/fn.visit_binding.html...

    - - - \ No newline at end of file diff --git a/syn/gen/visit/fn.visit_expr_group.html b/syn/gen/visit/fn.visit_expr_group.html new file mode 100644 index 0000000..b1be288 --- /dev/null +++ b/syn/gen/visit/fn.visit_expr_group.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../../syn/visit/fn.visit_expr_group.html...

    + + + \ No newline at end of file diff --git a/syn/gen/visit/fn.visit_expr_macro.html b/syn/gen/visit/fn.visit_expr_macro.html new file mode 100644 index 0000000..28232c9 --- /dev/null +++ b/syn/gen/visit/fn.visit_expr_macro.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../../syn/visit/fn.visit_expr_macro.html...

    + + + \ No newline at end of file diff --git a/syn/gen/visit/fn.visit_expr_method_call.html b/syn/gen/visit/fn.visit_expr_method_call.html new file mode 100644 index 0000000..4931382 --- /dev/null +++ b/syn/gen/visit/fn.visit_expr_method_call.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../../syn/visit/fn.visit_expr_method_call.html...

    + + + \ No newline at end of file diff --git a/syn/gen/visit/fn.visit_expr_reference.html b/syn/gen/visit/fn.visit_expr_reference.html new file mode 100644 index 0000000..69ac5cb --- /dev/null +++ b/syn/gen/visit/fn.visit_expr_reference.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../../syn/visit/fn.visit_expr_reference.html...

    + + + \ No newline at end of file diff --git a/syn/gen/visit/fn.visit_expr_struct.html b/syn/gen/visit/fn.visit_expr_struct.html new file mode 100644 index 0000000..af95a2b --- /dev/null +++ b/syn/gen/visit/fn.visit_expr_struct.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../../syn/visit/fn.visit_expr_struct.html...

    + + + \ No newline at end of file diff --git a/syn/gen/visit/fn.visit_expr_tuple.html b/syn/gen/visit/fn.visit_expr_tuple.html new file mode 100644 index 0000000..847d2e3 --- /dev/null +++ b/syn/gen/visit/fn.visit_expr_tuple.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../../syn/visit/fn.visit_expr_tuple.html...

    + + + \ No newline at end of file diff --git a/syn/gen/visit/fn.visit_field_mutability.html b/syn/gen/visit/fn.visit_field_mutability.html new file mode 100644 index 0000000..978f502 --- /dev/null +++ b/syn/gen/visit/fn.visit_field_mutability.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../../syn/visit/fn.visit_field_mutability.html...

    + + + \ No newline at end of file diff --git a/syn/gen/visit/fn.visit_field_value.html b/syn/gen/visit/fn.visit_field_value.html new file mode 100644 index 0000000..d89265d --- /dev/null +++ b/syn/gen/visit/fn.visit_field_value.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../../syn/visit/fn.visit_field_value.html...

    + + + \ No newline at end of file diff --git a/syn/gen/visit/fn.visit_lifetime_def.html b/syn/gen/visit/fn.visit_lifetime_param.html similarity index 63% rename from syn/gen/visit/fn.visit_lifetime_def.html rename to syn/gen/visit/fn.visit_lifetime_param.html index 595b7d0..7e8bdd6 100644 --- a/syn/gen/visit/fn.visit_lifetime_def.html +++ b/syn/gen/visit/fn.visit_lifetime_param.html @@ -1,11 +1,11 @@ - + Redirection -

    Redirecting to ../../../syn/visit/fn.visit_lifetime_def.html...

    - +

    Redirecting to ../../../syn/visit/fn.visit_lifetime_param.html...

    + \ No newline at end of file diff --git a/syn/gen/visit/fn.visit_lit_cstr.html b/syn/gen/visit/fn.visit_lit_cstr.html new file mode 100644 index 0000000..c221b71 --- /dev/null +++ b/syn/gen/visit/fn.visit_lit_cstr.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../../syn/visit/fn.visit_lit_cstr.html...

    + + + \ No newline at end of file diff --git a/syn/gen/visit/fn.visit_nested_meta.html b/syn/gen/visit/fn.visit_nested_meta.html deleted file mode 100644 index cd098fa..0000000 --- a/syn/gen/visit/fn.visit_nested_meta.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

    Redirecting to ../../../syn/visit/fn.visit_nested_meta.html...

    - - - \ No newline at end of file diff --git a/syn/gen/visit/fn.visit_predicate_eq.html b/syn/gen/visit/fn.visit_predicate_eq.html deleted file mode 100644 index ec90a1d..0000000 --- a/syn/gen/visit/fn.visit_predicate_eq.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

    Redirecting to ../../../syn/visit/fn.visit_predicate_eq.html...

    - - - \ No newline at end of file diff --git a/syn/gen/visit/fn.visit_variadic.html b/syn/gen/visit/fn.visit_variadic.html deleted file mode 100644 index 4ffc966..0000000 --- a/syn/gen/visit/fn.visit_variadic.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

    Redirecting to ../../../syn/visit/fn.visit_variadic.html...

    - - - \ No newline at end of file diff --git a/syn/gen/visit/fn.visit_vis_crate.html b/syn/gen/visit/fn.visit_vis_crate.html deleted file mode 100644 index 7d29428..0000000 --- a/syn/gen/visit/fn.visit_vis_crate.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

    Redirecting to ../../../syn/visit/fn.visit_vis_crate.html...

    - - - \ No newline at end of file diff --git a/syn/gen/visit/fn.visit_vis_public.html b/syn/gen/visit/fn.visit_vis_public.html deleted file mode 100644 index 9dc4f5e..0000000 --- a/syn/gen/visit/fn.visit_vis_public.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

    Redirecting to ../../../syn/visit/fn.visit_vis_public.html...

    - - - \ No newline at end of file diff --git a/syn/generics/struct.LifetimeDef.html b/syn/generics/struct.LifetimeDef.html deleted file mode 100644 index efe36c7..0000000 --- a/syn/generics/struct.LifetimeDef.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

    Redirecting to ../../syn/struct.LifetimeDef.html...

    - - - \ No newline at end of file diff --git a/syn/generics/struct.LifetimeParam.html b/syn/generics/struct.LifetimeParam.html new file mode 100644 index 0000000..d605561 --- /dev/null +++ b/syn/generics/struct.LifetimeParam.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../syn/struct.LifetimeParam.html...

    + + + \ No newline at end of file diff --git a/syn/generics/struct.PredicateEq.html b/syn/generics/struct.PredicateEq.html deleted file mode 100644 index 963912e..0000000 --- a/syn/generics/struct.PredicateEq.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

    Redirecting to ../../syn/struct.PredicateEq.html...

    - - - \ No newline at end of file diff --git a/syn/index.html b/syn/index.html index 7494c08..65c9a83 100644 --- a/syn/index.html +++ b/syn/index.html @@ -1,4 +1,4 @@ -syn - Rust

    Crate syn

    source ·
    Expand description

    githubcrates-iodocs-rs

    +syn - Rust

    Crate syn

    source
    Expand description

    githubcrates-iodocs-rs


    Syn is a parsing library for parsing a stream of Rust tokens into a syntax tree of Rust source code.

    @@ -39,7 +39,7 @@ time for all the rest.


    -

    Example of a derive macro

    +

    §Example of a derive macro

    The canonical derive macro using Syn looks like this. We write an ordinary Rust function tagged with a proc_macro_derive attribute and the name of the trait we are deriving. Any time that derive appears in the user’s code, @@ -48,12 +48,11 @@ get to execute arbitrary Rust code to figure out what to do with those tokens, then hand some tokens back to the compiler to compile into the user’s crate.

    [dependencies]
    -syn = "1.0"
    +syn = "2.0"
     quote = "1.0"
     
     [lib]
    -proc-macro = true
    -
    +proc-macro = true
    use proc_macro::TokenStream;
     use quote::quote;
     use syn::{parse_macro_input, DeriveInput};
    @@ -64,7 +63,7 @@ proc-macro = true
         let input = parse_macro_input!(input as DeriveInput);
     
         // Build the output, possibly using quasi-quotation
    -    let expanded = quote! {
    +    let expanded = quote! {
             // ...
         };
     
    @@ -72,9 +71,8 @@ proc-macro = true
         TokenStream::from(expanded)
     }

    The heapsize example directory shows a complete working implementation -of a derive macro. It works on any Rust compiler 1.31+. The example derives -a HeapSize trait which computes an estimate of the amount of heap memory -owned by a value.

    +of a derive macro. The example derives a HeapSize trait which computes an +estimate of the amount of heap memory owned by a value.

    pub trait HeapSize {
         /// Total number of bytes of heap memory owned by `self`.
    @@ -84,14 +82,14 @@ owned by a value.

    structures in their program.

    #[derive(HeapSize)]
    -struct Demo<'a, T: ?Sized> {
    +struct Demo<'a, T: ?Sized> {
         a: Box<T>,
         b: u8,
    -    c: &'a str,
    +    c: &'a str,
         d: String,
     }


    -

    Spans and error reporting

    +

    §Spans and error reporting

    The token-based procedural macro API provides great control over where the compiler’s error messages are displayed in user code. Consider the error the user sees if one of their field types does not implement HeapSize.

    @@ -109,17 +107,16 @@ problem.

    --> src/main.rs:7:5 | 7 | bad: std::thread::Thread, - | ^^^^^^^^^^^^^^^^^^^^^^^^ the trait `HeapSize` is not implemented for `Thread` -

    -

    Parsing a custom syntax

    + | ^^^^^^^^^^^^^^^^^^^^^^^^ the trait `HeapSize` is not implemented for `Thread`

    +

    §Parsing a custom syntax

    The lazy-static example directory shows the implementation of a functionlike!(...) procedural macro in which the input tokens are parsed using Syn’s parsing API.

    The example reimplements the popular lazy_static crate from crates.io as a procedural macro.

    -
    lazy_static! {
    -    static ref USERNAME: Regex = Regex::new("^[a-z0-9_-]{3,16}$").unwrap();
    +
    lazy_static! {
    +    static ref USERNAME: Regex = Regex::new("^[a-z0-9_-]{3,16}$").unwrap();
     }

    The implementation shows how to trigger custom warnings and error messages on the macro input.

    @@ -127,9 +124,8 @@ on the macro input.

    --> src/main.rs:10:16 | 10 | static ref FOO: String = "lazy_static".to_owned(); - | ^^^ -

    -

    Testing

    + | ^^^

    +

    §Testing

    When testing macros, we often care not just that the macro can be used successfully but also that when the macro is provided with invalid input it produces maximally helpful error messages. Consider using the trybuild @@ -139,7 +135,7 @@ macro. Such tests help avoid regressions from later refactors that mistakenly make an error no longer trigger or be less helpful than it used to be.


    -

    Debugging

    +

    §Debugging

    When developing a procedural macro it can be helpful to look at what the generated code looks like. Use cargo rustc -- -Zunstable-options --pretty=expanded or the cargo expand subcommand.

    To show the expanded code for some crate that uses your procedural macro, @@ -149,7 +145,7 @@ argument is the name of the test file without the .rs extension.

    This write-up by Brandon W Maister discusses debugging in more detail: Debugging Rust’s new Custom Derive system.


    -

    Optional features

    +

    §Optional features

    Syn puts a lot of functionality behind optional features in order to optimize compile time for the most common use cases. The following features are available.

    @@ -173,27 +169,27 @@ types.
  • proc-macro (enabled by default) — Runtime dependency on the dynamic library libproc_macro from rustc toolchain.
  • -

    Re-exports

    • pub use crate::ident::Ident;
    • pub use crate::lifetime::Lifetime;
    • pub use crate::lifetime::Lifetime;
    • pub use crate::lit::Lit;
    • pub use crate::lit::Lit;
    • pub use crate::lit::LitBool;
    • pub use crate::lit::LitBool;
    • pub use crate::lit::LitByte;
    • pub use crate::lit::LitByte;
    • pub use crate::lit::LitByteStr;
    • pub use crate::lit::LitByteStr;
    • pub use crate::lit::LitChar;
    • pub use crate::lit::LitChar;
    • pub use crate::lit::LitFloat;
    • pub use crate::lit::LitFloat;
    • pub use crate::lit::LitInt;
    • pub use crate::lit::LitInt;
    • pub use crate::lit::LitStr;
    • pub use crate::lit::LitStr;

    Modules

    • A stably addressed token buffer supporting efficient traversal based on a -cheaply copyable cursor.
    • Extension traits to provide parsing methods on foreign types.
    • Parsing interface for parsing a token stream into a syntax tree node.
    • A punctuated sequence of syntax tree nodes separated by punctuation.
    • A trait that can provide the Span of the complete contents of a syntax -tree node.
    • Tokens representing Rust punctuation, keywords, and delimiters.
    • Syntax tree traversal to walk a shared borrow of a syntax tree.

    Macros

    • A type-macro that expands to the name of the Rust type representation of a +

      Modules§

      • A stably addressed token buffer supporting efficient traversal based on a +cheaply copyable cursor.
      • Extension traits to provide parsing methods on foreign types.
      • Facility for interpreting structured content inside of an Attribute.
      • Parsing interface for parsing a token stream into a syntax tree node.
      • A punctuated sequence of syntax tree nodes separated by punctuation.
      • A trait that can provide the Span of the complete contents of a syntax +tree node.
      • Tokens representing Rust punctuation, keywords, and delimiters.
      • Syntax tree traversal to walk a shared borrow of a syntax tree.

      Macros§

      • A type-macro that expands to the name of the Rust type representation of a given token.
      • Parse a set of curly braces and expose their content to subsequent parsers.
      • Parse a set of square brackets and expose their content to subsequent -parsers.
      • Define a type that supports parsing and printing a given identifier as if it -were a keyword.
      • Define a type that supports parsing and printing a multi-character symbol -as if it were a punctuation token.
      • Parse a set of parentheses and expose their content to subsequent parsers.
      • Parse the input TokenStream of a macro, triggering a compile error if the -tokens fail to parse.
      • Quasi-quotation macro that accepts input like the quote! macro but uses -type inference to figure out a return type for those tokens.
      • This macro is parse_quote! + quote_spanned!.

      Structs

      • The binary interface of a function: extern "C".
      • Angle bracketed arguments of a path segment: the <K, V> in HashMap<K, V>.
      • An attribute like #[repr(transparent)].
      • An argument in a function type: the usize in fn(usize) -> bool.
      • A binding (equality constraint) on an associated type: Item = u8.
      • A set of bound lifetimes: for<'a, 'b, 'c>.
      • A const generic parameter: const LENGTH: usize.
      • An associated type bound: Iterator<Item: Display>.
      • An enum input to a proc_macro_derive macro.
      • A struct input to a proc_macro_derive macro.
      • An untagged union input to a proc_macro_derive macro.
      • Data structure sent to a proc_macro_derive macro.
      • Error returned when a Syn parser cannot parse the input tokens.
      • A slice literal expression: [a, b, c, d].
      • An assignment expression: a = compute().
      • A compound assignment expression: counter += 1.
      • An async block: async { ... }.
      • An await expression: fut.await.
      • A binary operation: a + b, a * b.
      • A blocked scope: { ... }.
      • A box expression: box f.
      • A break, with an optional label to break and an optional -expression.
      • A function call expression: invoke(a, b).
      • A cast expression: foo as f64.
      • A closure expression: |a, b| a + b.
      • A continue, with an optional label.
      • Access of a named struct field (obj.k) or unnamed tuple struct -field (obj.0).
      • A for loop: for pat in expr { ... }.
      • An expression contained within invisible delimiters.
      • An if expression with an optional else block: if expr { ... } else { ... }.
      • A square bracketed indexing expression: vector[2].
      • A let guard: let Some(x) = opt.
      • A literal in place of an expression: 1, "foo".
      • Conditionless loop: loop { ... }.
      • A macro invocation expression: format!("{}", q).
      • A match expression: match n { Some(n) => {}, None => {} }.
      • A method call expression: x.foo::<T>(a, b).
      • A parenthesized expression: (a + b).
      • A path like std::mem::replace possibly containing generic -parameters and a qualified self-type.
      • A range expression: 1..2, 1.., ..2, 1..=2, ..=2.
      • A referencing operation: &a or &mut a.
      • An array literal constructed from one repeated element: [0u8; N].
      • A return, with an optional value to be returned.
      • A struct literal expression: Point { x: 1, y: 1 }.
      • A try-expression: expr?.
      • A try block: try { ... }.
      • A tuple expression: (a, b, c, d).
      • A type ascription expression: foo: f64.
      • A unary operation: !x, *x.
      • An unsafe block: unsafe { ... }.
      • A while loop: while expr { ... }.
      • A yield expression: yield expr.
      • A field of a struct or enum variant.
      • Named fields of a struct or struct variant such as Point { x: f64, y: f64 }.
      • Unnamed fields of a tuple struct or tuple variant such as Some(T).
      • Lifetimes and type parameters attached to a declaration of a function, -enum, trait, etc.
      • A word of Rust code, which may be a keyword or legal variable name.
      • Returned by Generics::split_for_impl.
      • The index of an unnamed tuple struct field.
      • A Rust lifetime: 'a.
      • A lifetime definition: 'a: 'b + 'c + 'd.
      • A boolean literal: true or false.
      • A byte literal: b'f'.
      • A byte string literal: b"foo".
      • A character literal: 'a'.
      • A floating point literal: 1f64 or 1.0e10f64.
      • An integer literal: 1 or 1u16.
      • A UTF-8 string literal: "foo".
      • A macro invocation: println!("{}", mac).
      • A structured list within an attribute, like derive(Copy, Clone).
      • A name-value pair within an attribute, like feature = "nightly".
      • Arguments of a function path segment: the (A, B) -> C in Fn(A,B) -> C.
      • A path at which a named item is exported (e.g. std::collections::HashMap).
      • A segment of a path together with any path arguments on that segment.
      • An equality predicate in a where clause (unsupported).
      • A lifetime predicate in a where clause: 'a: 'b + 'c.
      • A type predicate in a where clause: for<'c> Foo<'c>: Trait<'c>.
      • The explicit Self type in a qualified path: the T in <T as Display>::fmt.
      • A trait used as a bound on a type parameter.
      • Returned by TypeGenerics::as_turbofish.
      • A fixed size array type: [T; n].
      • A bare function type: fn(usize) -> bool.
      • Returned by Generics::split_for_impl.
      • A type contained within invisible delimiters.
      • An impl Bound1 + Bound2 + Bound3 type where Bound is a trait or -a lifetime.
      • Indication that a type should be inferred by the compiler: _.
      • A macro in the type position.
      • The never type: !.
      • A generic type parameter: T: Into<String>.
      • A parenthesized type equivalent to the inner type.
      • A path like std::slice::Iter, optionally qualified with a -self-type as in <Vec<T> as SomeTrait>::Associated.
      • A raw pointer type: *const T or *mut T.
      • A reference type: &'a T or &'a mut T.
      • A dynamically sized slice type: [T].
      • A trait object type dyn Bound1 + Bound2 + Bound3 where Bound is a -trait or a lifetime.
      • A tuple type: (A, B, C, String).
      • The variadic argument of a foreign function.
      • An enum variant.
      • A crate-level visibility: crate.
      • A public visibility level: pub.
      • A visibility level restricted to some path: pub(self) or -pub(super) or pub(crate) or pub(in some::module).
      • A where clause in a definition: where T: Deserialize<'de>, D: 'static.

      Enums

      • Distinguishes between attributes that decorate an item and attributes -that are contained within an item.
      • A binary operator: +, +=, &.
      • The storage of a struct, enum or union data structure.
      • A Rust expression.
      • Data stored within an enum variant or struct.
      • An individual generic argument, like 'a, T, or Item = T.
      • A generic type parameter, lifetime, or const generic: T: Into<String>, -'a: 'b, const LEN: usize.
      • A Rust literal such as a string or integer or boolean.
      • A grouping token that surrounds a macro body: m!(...) or m!{...} or m![...].
      • A struct or tuple struct field accessed in a struct literal or field -expression.
      • Content of a compile-time structured attribute.
      • Element of a compile-time attribute list.
      • Angle bracketed or parenthesized arguments of a path segment.
      • Return type of a function signature.
      • The style of a string literal, either plain quoted or a raw string like -r##"data"##.
      • A modifier on a trait bound, currently only used for the ? in -?Sized.
      • The possible types that a Rust value could have.
      • A trait or lifetime used as a bound on a type parameter.
      • A unary operator: *, !, -.
      • The visibility level of an item: inherited or pub or -pub(restricted).
      • A single predicate in a where clause: T: Deserialize<'de>.

      Functions

      • Parse tokens of source code into the chosen syntax tree node.
      • Parse a proc-macro2 token stream into the chosen syntax tree node.
      • Parse a string of Rust code into the chosen syntax tree node.

      Type Aliases

      • Conventional argument type associated with an invocation of an attribute -macro.
      • The result of a Syn parser.
    \ No newline at end of file +parsers.
  • Define a type that supports parsing and printing a given identifier as if it +were a keyword.
  • Define a type that supports parsing and printing a multi-character symbol +as if it were a punctuation token.
  • Parse a set of parentheses and expose their content to subsequent parsers.
  • Parse the input TokenStream of a macro, triggering a compile error if the +tokens fail to parse.
  • Quasi-quotation macro that accepts input like the quote! macro but uses +type inference to figure out a return type for those tokens.
  • This macro is parse_quote! + quote_spanned!.
  • Structs§

    • The binary interface of a function: extern "C".
    • Angle bracketed arguments of a path segment: the <K, V> in HashMap<K, V>.
    • An equality constraint on an associated constant: the PANIC = false in +Trait<PANIC = false>.
    • A binding (equality constraint) on an associated type: the Item = u8 +in Iterator<Item = u8>.
    • An attribute, like #[repr(transparent)].
    • An argument in a function type: the usize in fn(usize) -> bool.
    • The variadic argument of a function pointer like fn(usize, ...).
    • A set of bound lifetimes: for<'a, 'b, 'c>.
    • A const generic parameter: const LENGTH: usize.
    • An associated type bound: Iterator<Item: Display>.
    • An enum input to a proc_macro_derive macro.
    • A struct input to a proc_macro_derive macro.
    • An untagged union input to a proc_macro_derive macro.
    • Data structure sent to a proc_macro_derive macro.
    • Error returned when a Syn parser cannot parse the input tokens.
    • A slice literal expression: [a, b, c, d].
    • An assignment expression: a = compute().
    • An async block: async { ... }.
    • An await expression: fut.await.
    • A binary operation: a + b, a += b.
    • A blocked scope: { ... }.
    • A break, with an optional label to break and an optional +expression.
    • A function call expression: invoke(a, b).
    • A cast expression: foo as f64.
    • A closure expression: |a, b| a + b.
    • A const block: const { ... }.
    • A continue, with an optional label.
    • Access of a named struct field (obj.k) or unnamed tuple struct +field (obj.0).
    • A for loop: for pat in expr { ... }.
    • An expression contained within invisible delimiters.
    • An if expression with an optional else block: if expr { ... } else { ... }.
    • A square bracketed indexing expression: vector[2].
    • The inferred value of a const generic argument, denoted _.
    • A let guard: let Some(x) = opt.
    • A literal in place of an expression: 1, "foo".
    • Conditionless loop: loop { ... }.
    • A macro invocation expression: format!("{}", q).
    • A match expression: match n { Some(n) => {}, None => {} }.
    • A method call expression: x.foo::<T>(a, b).
    • A parenthesized expression: (a + b).
    • A path like std::mem::replace possibly containing generic +parameters and a qualified self-type.
    • A range expression: 1..2, 1.., ..2, 1..=2, ..=2.
    • Address-of operation: &raw const place or &raw mut place.
    • A referencing operation: &a or &mut a.
    • An array literal constructed from one repeated element: [0u8; N].
    • A return, with an optional value to be returned.
    • A struct literal expression: Point { x: 1, y: 1 }.
    • A try-expression: expr?.
    • A try block: try { ... }.
    • A tuple expression: (a, b, c, d).
    • A unary operation: !x, *x.
    • An unsafe block: unsafe { ... }.
    • A while loop: while expr { ... }.
    • A yield expression: yield expr.
    • A field of a struct or enum variant.
    • A field-value pair in a struct literal.
    • Named fields of a struct or struct variant such as Point { x: f64, y: f64 }.
    • Unnamed fields of a tuple struct or tuple variant such as Some(T).
    • Lifetimes and type parameters attached to a declaration of a function, +enum, trait, etc.
    • A word of Rust code, which may be a keyword or legal variable name.
    • Returned by Generics::split_for_impl.
    • The index of an unnamed tuple struct field.
    • A Rust lifetime: 'a.
    • A lifetime definition: 'a: 'b + 'c + 'd.
    • A boolean literal: true or false.
    • A byte literal: b'f'.
    • A byte string literal: b"foo".
    • A nul-terminated C-string literal: c"foo".
    • A character literal: 'a'.
    • A floating point literal: 1f64 or 1.0e10f64.
    • An integer literal: 1 or 1u16.
    • A UTF-8 string literal: "foo".
    • A macro invocation: println!("{}", mac).
    • A structured list within an attribute, like derive(Copy, Clone).
    • A name-value pair within an attribute, like feature = "nightly".
    • Arguments of a function path segment: the (A, B) -> C in Fn(A,B) -> C.
    • A path at which a named item is exported (e.g. std::collections::HashMap).
    • A segment of a path together with any path arguments on that segment.
    • A lifetime predicate in a where clause: 'a: 'b + 'c.
    • A type predicate in a where clause: for<'c> Foo<'c>: Trait<'c>.
    • The explicit Self type in a qualified path: the T in <T as Display>::fmt.
    • A trait used as a bound on a type parameter.
    • Returned by TypeGenerics::as_turbofish.
    • A fixed size array type: [T; n].
    • A bare function type: fn(usize) -> bool.
    • Returned by Generics::split_for_impl.
    • A type contained within invisible delimiters.
    • An impl Bound1 + Bound2 + Bound3 type where Bound is a trait or +a lifetime.
    • Indication that a type should be inferred by the compiler: _.
    • A macro in the type position.
    • The never type: !.
    • A generic type parameter: T: Into<String>.
    • A parenthesized type equivalent to the inner type.
    • A path like std::slice::Iter, optionally qualified with a +self-type as in <Vec<T> as SomeTrait>::Associated.
    • A raw pointer type: *const T or *mut T.
    • A reference type: &'a T or &'a mut T.
    • A dynamically sized slice type: [T].
    • A trait object type dyn Bound1 + Bound2 + Bound3 where Bound is a +trait or a lifetime.
    • A tuple type: (A, B, C, String).
    • An enum variant.
    • A visibility level restricted to some path: pub(self) or +pub(super) or pub(crate) or pub(in some::module).
    • A where clause in a definition: where T: Deserialize<'de>, D: 'static.

    Enums§

    • Distinguishes between attributes that decorate an item and attributes +that are contained within an item.
    • A binary operator: +, +=, &.
    • The storage of a struct, enum or union data structure.
    • A Rust expression.
    • Unused, but reserved for RFC 3323 restrictions.
    • Data stored within an enum variant or struct.
    • An individual generic argument, like 'a, T, or Item = T.
    • A generic type parameter, lifetime, or const generic: T: Into<String>, +'a: 'b, const LEN: usize.
    • A Rust literal such as a string or integer or boolean.
    • A grouping token that surrounds a macro body: m!(...) or m!{...} or m![...].
    • A struct or tuple struct field accessed in a struct literal or field +expression.
    • Content of a compile-time structured attribute.
    • Angle bracketed or parenthesized arguments of a path segment.
    • Return type of a function signature.
    • A modifier on a trait bound, currently only used for the ? in +?Sized.
    • The possible types that a Rust value could have.
    • A trait or lifetime used as a bound on a type parameter.
    • A unary operator: *, !, -.
    • The visibility level of an item: inherited or pub or +pub(restricted).
    • A single predicate in a where clause: T: Deserialize<'de>.

    Functions§

    • Parse tokens of source code into the chosen syntax tree node.
    • Parse a proc-macro2 token stream into the chosen syntax tree node.
    • Parse a string of Rust code into the chosen syntax tree node.

    Type Aliases§

    • The result of a Syn parser.
    \ No newline at end of file diff --git a/syn/lit/enum.StrStyle.html b/syn/lit/enum.StrStyle.html deleted file mode 100644 index c912cdc..0000000 --- a/syn/lit/enum.StrStyle.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

    Redirecting to ../../syn/enum.StrStyle.html...

    - - - \ No newline at end of file diff --git a/syn/lit/struct.LitCStr.html b/syn/lit/struct.LitCStr.html new file mode 100644 index 0000000..102f7dd --- /dev/null +++ b/syn/lit/struct.LitCStr.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../syn/struct.LitCStr.html...

    + + + \ No newline at end of file diff --git a/syn/lookahead/struct.End.html b/syn/lookahead/struct.End.html new file mode 100644 index 0000000..799d09e --- /dev/null +++ b/syn/lookahead/struct.End.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../syn/parse/struct.End.html...

    + + + \ No newline at end of file diff --git a/syn/macro.Token.html b/syn/macro.Token.html index 4b7c5af..5031897 100644 --- a/syn/macro.Token.html +++ b/syn/macro.Token.html @@ -1,4 +1,4 @@ -Token in syn - Rust

    Macro syn::Token

    source ·
    macro_rules! Token {
    +Token in syn - Rust
    syn

    Macro Token

    source
    macro_rules! Token {
         [abstract] => { ... };
         [as] => { ... };
         [async] => { ... };
    @@ -32,6 +32,7 @@
         [override] => { ... };
         [priv] => { ... };
         [pub] => { ... };
    +    [raw] => { ... };
         [ref] => { ... };
         [return] => { ... };
         [Self] => { ... };
    @@ -51,20 +52,14 @@
         [where] => { ... };
         [while] => { ... };
         [yield] => { ... };
    -    [+] => { ... };
    -    [+=] => { ... };
         [&] => { ... };
         [&&] => { ... };
         [&=] => { ... };
         [@] => { ... };
    -    [!] => { ... };
         [^] => { ... };
         [^=] => { ... };
         [:] => { ... };
    -    [::] => { ... };
         [,] => { ... };
    -    [/] => { ... };
    -    [/=] => { ... };
         [$] => { ... };
         [.] => { ... };
         [..] => { ... };
    @@ -72,33 +67,76 @@
         [..=] => { ... };
         [=] => { ... };
         [==] => { ... };
    +    [=>] => { ... };
         [>=] => { ... };
         [>] => { ... };
    +    [<-] => { ... };
         [<=] => { ... };
         [<] => { ... };
    -    [*=] => { ... };
    +    [-] => { ... };
    +    [-=] => { ... };
         [!=] => { ... };
    +    [!] => { ... };
         [|] => { ... };
         [|=] => { ... };
         [||] => { ... };
    +    [::] => { ... };
    +    [%] => { ... };
    +    [%=] => { ... };
    +    [+] => { ... };
    +    [+=] => { ... };
         [#] => { ... };
         [?] => { ... };
         [->] => { ... };
    -    [<-] => { ... };
    -    [%] => { ... };
    -    [%=] => { ... };
    -    [=>] => { ... };
         [;] => { ... };
         [<<] => { ... };
         [<<=] => { ... };
         [>>] => { ... };
         [>>=] => { ... };
    +    [/] => { ... };
    +    [/=] => { ... };
         [*] => { ... };
    -    [-] => { ... };
    -    [-=] => { ... };
    +    [*=] => { ... };
         [~] => { ... };
         [_] => { ... };
     }
    Expand description

    A type-macro that expands to the name of the Rust type representation of a given token.

    +

    As a type, Token! is commonly used in the type of struct fields, the type +of a let statement, or in turbofish for a parse function.

    + +
    use syn::{Ident, Token};
    +use syn::parse::{Parse, ParseStream, Result};
    +
    +// `struct Foo;`
    +pub struct UnitStruct {
    +    struct_token: Token![struct],
    +    ident: Ident,
    +    semi_token: Token![;],
    +}
    +
    +impl Parse for UnitStruct {
    +    fn parse(input: ParseStream) -> Result<Self> {
    +        let struct_token: Token![struct] = input.parse()?;
    +        let ident: Ident = input.parse()?;
    +        let semi_token = input.parse::<Token![;]>()?;
    +        Ok(UnitStruct { struct_token, ident, semi_token })
    +    }
    +}
    +

    As an expression, Token! is used for peeking tokens or instantiating +tokens from a span.

    + +
    fn make_unit_struct(name: Ident) -> UnitStruct {
    +    let span = name.span();
    +    UnitStruct {
    +        struct_token: Token![struct](span),
    +        ident: name,
    +        semi_token: Token![;](span),
    +    }
    +}
    +
    +if input.peek(Token![struct]) {
    +    let unit_struct: UnitStruct = input.parse()?;
    +    /* ... */
    +}

    See the token module documentation for details and examples.

    \ No newline at end of file diff --git a/syn/macro.braced.html b/syn/macro.braced.html index 96ddfe7..623132f 100644 --- a/syn/macro.braced.html +++ b/syn/macro.braced.html @@ -1,7 +1,7 @@ -braced in syn - Rust

    Macro syn::braced

    source ·
    macro_rules! braced {
    +braced in syn - Rust
    syn

    Macro braced

    source
    macro_rules! braced {
         ($content:ident in $cursor:expr) => { ... };
     }
    Expand description

    Parse a set of curly braces and expose their content to subsequent parsers.

    -

    Example

    +

    §Example

    use syn::{braced, token, Ident, Result, Token, Type};
     use syn::parse::{Parse, ParseStream};
     use syn::punctuated::Punctuated;
    @@ -32,7 +32,7 @@
                 struct_token: input.parse()?,
                 ident: input.parse()?,
                 brace_token: braced!(content in input),
    -            fields: content.parse_terminated(Field::parse)?,
    +            fields: content.parse_terminated(Field::parse, Token![,])?,
             })
         }
     }
    diff --git a/syn/macro.bracketed.html b/syn/macro.bracketed.html
    index 61d1582..219bb0c 100644
    --- a/syn/macro.bracketed.html
    +++ b/syn/macro.bracketed.html
    @@ -1,8 +1,8 @@
    -bracketed in syn - Rust

    Macro syn::bracketed

    source ·
    macro_rules! bracketed {
    +bracketed in syn - Rust
    syn

    Macro bracketed

    source
    macro_rules! bracketed {
         ($content:ident in $cursor:expr) => { ... };
     }
    Expand description

    Parse a set of square brackets and expose their content to subsequent parsers.

    -

    Example

    +

    §Example

    use proc_macro2::TokenStream;
     use syn::{bracketed, token, Result, Token};
     use syn::parse::{Parse, ParseStream};
    diff --git a/syn/macro.custom_keyword.html b/syn/macro.custom_keyword.html
    index 6c90b34..ae08db2 100644
    --- a/syn/macro.custom_keyword.html
    +++ b/syn/macro.custom_keyword.html
    @@ -1,8 +1,8 @@
    -custom_keyword in syn - Rust

    Macro syn::custom_keyword

    source ·
    macro_rules! custom_keyword {
    +custom_keyword in syn - Rust
    syn

    Macro custom_keyword

    source
    macro_rules! custom_keyword {
         ($ident:ident) => { ... };
     }
    Expand description

    Define a type that supports parsing and printing a given identifier as if it were a keyword.

    -

    Usage

    +

    §Usage

    As a convention, it is recommended that this macro be invoked within a module called kw or keyword and that the resulting parser be invoked with a kw:: or keyword:: prefix.

    @@ -29,8 +29,8 @@ any built-in keyword token.

    Field access to its span — let sp = whatever_token.span

    -

    Example

    -

    This example parses input that looks like bool = true or str = "value". +

    §Example

    +

    This example parses input that looks like bool = true or str = "value". The key must be either the identifier bool or the identifier str. If bool, the value may be either true or false. If str, the value may be any string literal.

    diff --git a/syn/macro.custom_punctuation.html b/syn/macro.custom_punctuation.html index ca21483..f46e4fb 100644 --- a/syn/macro.custom_punctuation.html +++ b/syn/macro.custom_punctuation.html @@ -1,8 +1,8 @@ -custom_punctuation in syn - Rust
    macro_rules! custom_punctuation {
    +custom_punctuation in syn - Rust
    syn

    Macro custom_punctuation

    source
    macro_rules! custom_punctuation {
         ($ident:ident, $($tt:tt)+) => { ... };
     }
    Expand description

    Define a type that supports parsing and printing a multi-character symbol as if it were a punctuation token.

    -

    Usage

    +

    §Usage

    syn::custom_punctuation!(LeftRightArrow, <=>);

    The generated syntax tree node supports the following operations just like any built-in punctuation token.

    @@ -26,7 +26,7 @@ any built-in punctuation token.

    Field access to its spans — let spans = lrarrow.spans

    -

    Example

    +

    §Example

    use proc_macro2::{TokenStream, TokenTree};
     use syn::parse::{Parse, ParseStream, Peek, Result};
     use syn::punctuated::Punctuated;
    @@ -67,7 +67,7 @@ any built-in punctuation token.

    } fn main() { - let input = r#" a::b </> c::d::e "#; + let input = r#" a::b </> c::d::e "#; let _: PathSegments = syn::parse_str(input).unwrap(); }
    \ No newline at end of file diff --git a/syn/macro.parenthesized.html b/syn/macro.parenthesized.html index 58201b1..454c671 100644 --- a/syn/macro.parenthesized.html +++ b/syn/macro.parenthesized.html @@ -1,7 +1,7 @@ -parenthesized in syn - Rust

    Macro syn::parenthesized

    source ·
    macro_rules! parenthesized {
    +parenthesized in syn - Rust
    syn

    Macro parenthesized

    source
    macro_rules! parenthesized {
         ($content:ident in $cursor:expr) => { ... };
     }
    Expand description

    Parse a set of parentheses and expose their content to subsequent parsers.

    -

    Example

    +

    §Example

    use syn::{parenthesized, token, Ident, Result, Token, Type};
     use syn::parse::{Parse, ParseStream};
     use syn::punctuated::Punctuated;
    @@ -24,7 +24,7 @@
                 struct_token: input.parse()?,
                 ident: input.parse()?,
                 paren_token: parenthesized!(content in input),
    -            fields: content.parse_terminated(Type::parse)?,
    +            fields: content.parse_terminated(Type::parse, Token![,])?,
                 semi_token: input.parse()?,
             })
         }
    diff --git a/syn/macro.parse_macro_input.html b/syn/macro.parse_macro_input.html
    index 8ee37f2..aba26a0 100644
    --- a/syn/macro.parse_macro_input.html
    +++ b/syn/macro.parse_macro_input.html
    @@ -1,4 +1,4 @@
    -parse_macro_input in syn - Rust
    macro_rules! parse_macro_input {
    +parse_macro_input in syn - Rust
    syn

    Macro parse_macro_input

    source
    macro_rules! parse_macro_input {
         ($tokenstream:ident as $ty:ty) => { ... };
         ($tokenstream:ident with $parser:path) => { ... };
         ($tokenstream:ident) => { ... };
    @@ -7,7 +7,7 @@ tokens fail to parse.

    Refer to the parse module documentation for more details about parsing in Syn.


    -

    Intended usage

    +

    §Intended usage

    This macro must be called from a function that returns proc_macro::TokenStream. Usually this will be your proc macro entry point, the function that has the #[proc_macro] / #[proc_macro_derive] / @@ -34,7 +34,7 @@ the function that has the #[proc_macro] / #[proc_macro_derive] / /* ... */ }


    -

    Usage with Parser

    +

    §Usage with Parser

    This macro can also be used with the Parser trait for types that have multiple ways that they can be parsed.

    @@ -51,7 +51,7 @@ multiple ways that they can be parsed.

    /* ... */ }

    -

    Expansion

    +

    §Expansion

    parse_macro_input!($variable as $Type) expands to something like:

    match syn::parse::<$Type>($variable) {
    diff --git a/syn/macro.parse_quote.html b/syn/macro.parse_quote.html
    index 7f948ea..9ee738a 100644
    --- a/syn/macro.parse_quote.html
    +++ b/syn/macro.parse_quote.html
    @@ -1,4 +1,4 @@
    -parse_quote in syn - Rust

    Macro syn::parse_quote

    source ·
    macro_rules! parse_quote {
    +parse_quote in syn - Rust
    syn

    Macro parse_quote

    source
    macro_rules! parse_quote {
         ($($tt:tt)*) => { ... };
     }
    Expand description

    Quasi-quotation macro that accepts input like the quote! macro but uses type inference to figure out a return type for those tokens.

    @@ -12,16 +12,15 @@ trait.

    let name = quote!(v); let ty = quote!(u8); - let stmt: Stmt = parse_quote! { + let stmt: Stmt = parse_quote! { let #name: #ty = Default::default(); }; - println!("{:#?}", stmt); + println!("{:#?}", stmt); }
    -

    This macro is available only if Syn is built with the "parsing" feature, -although interpolation of syntax tree nodes into the quoted tokens is only -supported if Syn is built with the "printing" feature as well.

    -

    Example

    +

    This macro is available only if Syn is built with both the "parsing" and +"printing" features.

    +

    §Example

    The following helper function adds a bound T: HeapSize to every type parameter T in the input generics.

    @@ -36,7 +35,7 @@ parameter T in the input generics.

    } generics }
    -

    Special cases

    +

    §Special cases

    This macro can parse the following additional types as a special case even though they do not implement the Parse trait.

      @@ -46,7 +45,7 @@ or inner like #![...] P with optional trailing punctuation
    • Vec<Stmt> — parses the same as Block::parse_within
    -

    Panics

    +

    §Panics

    Panics if the tokens fail to parse as the expected syntax tree type. The caller is responsible for ensuring that the input tokens are syntactically valid.

    diff --git a/syn/macro.parse_quote_spanned.html b/syn/macro.parse_quote_spanned.html index 603e20a..9d3c2bd 100644 --- a/syn/macro.parse_quote_spanned.html +++ b/syn/macro.parse_quote_spanned.html @@ -1,8 +1,8 @@ -parse_quote_spanned in syn - Rust
    macro_rules! parse_quote_spanned {
    +parse_quote_spanned in syn - Rust
    syn

    Macro parse_quote_spanned

    source
    macro_rules! parse_quote_spanned {
         ($span:expr=> $($tt:tt)*) => { ... };
     }
    Expand description

    This macro is parse_quote! + quote_spanned!.

    Please refer to each of their documentation.

    -

    Example

    +

    §Example

    use quote::{quote, quote_spanned};
     use syn::spanned::Spanned;
     use syn::{parse_quote_spanned, ReturnType, Signature};
    @@ -15,7 +15,7 @@
             ReturnType::Default => quote_spanned!(sig.paren_token.span=> ()),
             ReturnType::Type(_, ret) => quote!(#ret),
         };
    -    sig.output = parse_quote_spanned! {ret.span()=>
    +    sig.output = parse_quote_spanned! {ret.span()=>
             -> ::std::pin::Pin<::std::boxed::Box<dyn ::std::future::Future<Output = #ret>>>
         };
     }
    diff --git a/syn/meta/fn.parser.html b/syn/meta/fn.parser.html new file mode 100644 index 0000000..45d61a9 --- /dev/null +++ b/syn/meta/fn.parser.html @@ -0,0 +1,92 @@ +parser in syn::meta - Rust
    syn::meta

    Function parser

    source
    pub fn parser(
    +    logic: impl FnMut(ParseNestedMeta<'_>) -> Result<()>,
    +) -> impl Parser<Output = ()>
    Expand description

    Make a parser that is usable with parse_macro_input! in a +#[proc_macro_attribute] macro.

    +

    Warning: When parsing attribute args other than the +proc_macro::TokenStream input of a proc_macro_attribute, you do not +need this function. In several cases your callers will get worse error +messages if you use this function, because the surrounding delimiter’s span +is concealed from attribute macros by rustc. Use +Attribute::parse_nested_meta instead.

    +

    §Example

    +

    This example implements an attribute macro whose invocations look like this:

    + +
    #[tea(kind = "EarlGrey", hot)]
    +struct Picard {...}
    +

    The “parameters” supported by the attribute are:

    +
      +
    • kind = "..."
    • +
    • hot
    • +
    • with(sugar, milk, ...), a comma-separated list of ingredients
    • +
    + +
    use proc_macro::TokenStream;
    +use syn::{parse_macro_input, LitStr, Path};
    +
    +#[proc_macro_attribute]
    +pub fn tea(args: TokenStream, input: TokenStream) -> TokenStream {
    +    let mut kind: Option<LitStr> = None;
    +    let mut hot: bool = false;
    +    let mut with: Vec<Path> = Vec::new();
    +    let tea_parser = syn::meta::parser(|meta| {
    +        if meta.path.is_ident("kind") {
    +            kind = Some(meta.value()?.parse()?);
    +            Ok(())
    +        } else if meta.path.is_ident("hot") {
    +            hot = true;
    +            Ok(())
    +        } else if meta.path.is_ident("with") {
    +            meta.parse_nested_meta(|meta| {
    +                with.push(meta.path);
    +                Ok(())
    +            })
    +        } else {
    +            Err(meta.error("unsupported tea property"))
    +        }
    +    });
    +
    +    parse_macro_input!(args with tea_parser);
    +    eprintln!("kind={kind:?} hot={hot} with={with:?}");
    +
    +    /* ... */
    +}
    +

    The syn::meta library will take care of dealing with the commas including +trailing commas, and producing sensible error messages on unexpected input.

    +
    error: expected `,`
    + --> src/main.rs:3:37
    +  |
    +3 | #[tea(kind = "EarlGrey", with(sugar = "lol", milk))]
    +  |                                     ^

    §Example

    +

    Same as above but we factor out most of the logic into a separate function.

    + +
    use proc_macro::TokenStream;
    +use syn::meta::ParseNestedMeta;
    +use syn::parse::{Parser, Result};
    +use syn::{parse_macro_input, LitStr, Path};
    +
    +#[proc_macro_attribute]
    +pub fn tea(args: TokenStream, input: TokenStream) -> TokenStream {
    +    let mut attrs = TeaAttributes::default();
    +    let tea_parser = syn::meta::parser(|meta| attrs.parse(meta));
    +    parse_macro_input!(args with tea_parser);
    +
    +    /* ... */
    +}
    +
    +#[derive(Default)]
    +struct TeaAttributes {
    +    kind: Option<LitStr>,
    +    hot: bool,
    +    with: Vec<Path>,
    +}
    +
    +impl TeaAttributes {
    +    fn parse(&mut self, meta: ParseNestedMeta) -> Result<()> {
    +        if meta.path.is_ident("kind") {
    +            self.kind = Some(meta.value()?.parse()?);
    +            Ok(())
    +        } else /* just like in last example */
    +
    +    }
    +}
    +
    \ No newline at end of file diff --git a/syn/meta/index.html b/syn/meta/index.html new file mode 100644 index 0000000..c14a377 --- /dev/null +++ b/syn/meta/index.html @@ -0,0 +1,4 @@ +syn::meta - Rust
    syn

    Module meta

    source
    Expand description

    Facility for interpreting structured content inside of an Attribute.

    +

    Structs§

    • Context for parsing a single property in the conventional syntax for +structured attributes.

    Functions§

    • Make a parser that is usable with parse_macro_input! in a +#[proc_macro_attribute] macro.
    \ No newline at end of file diff --git a/syn/meta/sidebar-items.js b/syn/meta/sidebar-items.js new file mode 100644 index 0000000..79f286b --- /dev/null +++ b/syn/meta/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"fn":["parser"],"struct":["ParseNestedMeta"]}; \ No newline at end of file diff --git a/syn/meta/struct.ParseNestedMeta.html b/syn/meta/struct.ParseNestedMeta.html new file mode 100644 index 0000000..f7e88fb --- /dev/null +++ b/syn/meta/struct.ParseNestedMeta.html @@ -0,0 +1,173 @@ +ParseNestedMeta in syn::meta - Rust
    syn::meta

    Struct ParseNestedMeta

    source
    #[non_exhaustive]
    pub struct ParseNestedMeta<'a> { + pub path: Path, + pub input: ParseStream<'a>, +}
    Expand description

    Context for parsing a single property in the conventional syntax for +structured attributes.

    +

    §Examples

    +

    Refer to usage examples on the following two entry-points:

    +
      +
    • +

      Attribute::parse_nested_meta if you have an entire Attribute to +parse. Always use this if possible. Generally this is able to produce +better error messages because Attribute holds span information for all +of the delimiters therein.

      +
    • +
    • +

      syn::meta::parser if you are implementing a proc_macro_attribute +macro and parsing the arguments to the attribute macro, i.e. the ones +written in the same attribute that dispatched the macro invocation. Rustc +does not pass span information for the surrounding delimiters into the +attribute macro invocation in this situation, so error messages might be +less precise.

      +
    • +
    +

    Fields (Non-exhaustive)§

    This struct is marked as non-exhaustive
    Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
    §path: Path§input: ParseStream<'a>

    Implementations§

    source§

    impl<'a> ParseNestedMeta<'a>

    source

    pub fn value(&self) -> Result<ParseStream<'a>>

    Used when parsing key = "value" syntax.

    +

    All it does is advance meta.input past the = sign in the input. You +could accomplish the same effect by writing +meta.parse::<Token![=]>()?, so at most it is a minor convenience to +use meta.value()?.

    +
    §Example
    +
    use syn::{parse_quote, Attribute, LitStr};
    +
    +let attr: Attribute = parse_quote! {
    +    #[tea(kind = "EarlGrey")]
    +};
    +                                         // conceptually:
    +if attr.path().is_ident("tea") {         // this parses the `tea`
    +    attr.parse_nested_meta(|meta| {      // this parses the `(`
    +        if meta.path.is_ident("kind") {  // this parses the `kind`
    +            let value = meta.value()?;   // this parses the `=`
    +            let s: LitStr = value.parse()?;  // this parses `"EarlGrey"`
    +            if s.value() == "EarlGrey" {
    +                // ...
    +            }
    +            Ok(())
    +        } else {
    +            Err(meta.error("unsupported attribute"))
    +        }
    +    })?;
    +}
    +
    source

    pub fn parse_nested_meta( + &self, + logic: impl FnMut(ParseNestedMeta<'_>) -> Result<()>, +) -> Result<()>

    Used when parsing list(...) syntax if the content inside the +nested parentheses is also expected to conform to Rust’s structured +attribute convention.

    +
    §Example
    +
    use syn::{parse_quote, Attribute};
    +
    +let attr: Attribute = parse_quote! {
    +    #[tea(with(sugar, milk))]
    +};
    +
    +if attr.path().is_ident("tea") {
    +    attr.parse_nested_meta(|meta| {
    +        if meta.path.is_ident("with") {
    +            meta.parse_nested_meta(|meta| {  // <---
    +                if meta.path.is_ident("sugar") {
    +                    // Here we can go even deeper if needed.
    +                    Ok(())
    +                } else if meta.path.is_ident("milk") {
    +                    Ok(())
    +                } else {
    +                    Err(meta.error("unsupported ingredient"))
    +                }
    +            })
    +        } else {
    +            Err(meta.error("unsupported tea property"))
    +        }
    +    })?;
    +}
    +
    §Counterexample
    +

    If you don’t need parse_nested_meta’s help in parsing the content +written within the nested parentheses, keep in mind that you can always +just parse it yourself from the exposed ParseStream. Rust syntax permits +arbitrary tokens within those parentheses so for the crazier stuff, +parse_nested_meta is not what you want.

    + +
    use syn::{parenthesized, parse_quote, Attribute, LitInt};
    +
    +let attr: Attribute = parse_quote! {
    +    #[repr(align(32))]
    +};
    +
    +let mut align: Option<LitInt> = None;
    +if attr.path().is_ident("repr") {
    +    attr.parse_nested_meta(|meta| {
    +        if meta.path.is_ident("align") {
    +            let content;
    +            parenthesized!(content in meta.input);
    +            align = Some(content.parse()?);
    +            Ok(())
    +        } else {
    +            Err(meta.error("unsupported repr"))
    +        }
    +    })?;
    +}
    +
    source

    pub fn error(&self, msg: impl Display) -> Error

    Report that the attribute’s content did not conform to expectations.

    +

    The span of the resulting error will cover meta.path and everything +that has been parsed so far since it.

    +

    There are 2 ways you might call this. First, if meta.path is not +something you recognize:

    + +
    attr.parse_nested_meta(|meta| {
    +    if meta.path.is_ident("kind") {
    +        // ...
    +        Ok(())
    +    } else {
    +        Err(meta.error("unsupported tea property"))
    +    }
    +})?;
    +

    In this case, it behaves exactly like +syn::Error::new_spanned(&meta.path, "message...").

    +
    error: unsupported tea property
    + --> src/main.rs:3:26
    +  |
    +3 | #[tea(kind = "EarlGrey", wat = "foo")]
    +  |                          ^^^
    +

    More usefully, the second place is if you’ve already parsed a value but +have decided not to accept the value:

    + +
    use syn::Expr;
    +
    +attr.parse_nested_meta(|meta| {
    +    if meta.path.is_ident("kind") {
    +        let expr: Expr = meta.value()?.parse()?;
    +        match expr {
    +            Expr::Lit(expr) => /* ... */
    +            Expr::Path(expr) => /* ... */
    +            Expr::Macro(expr) => /* ... */
    +            _ => Err(meta.error("tea kind must be a string literal, path, or macro")),
    +        }
    +    } else /* as above */
    +
    +})?;
    +
    error: tea kind must be a string literal, path, or macro
    + --> src/main.rs:3:7
    +  |
    +3 | #[tea(kind = async { replicator.await })]
    +  |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    +

    Often you may want to use syn::Error::new_spanned even in this +situation. In the above code, that would be:

    + +
        match expr {
    +        Expr::Lit(expr) => /* ... */
    +        Expr::Path(expr) => /* ... */
    +        Expr::Macro(expr) => /* ... */
    +        _ => Err(Error::new_spanned(expr, "unsupported expression type for `kind`")),
    +    }
    +
    error: unsupported expression type for `kind`
    + --> src/main.rs:3:14
    +  |
    +3 | #[tea(kind = async { replicator.await })]
    +  |              ^^^^^^^^^^^^^^^^^^^^^^^^^^

    Auto Trait Implementations§

    §

    impl<'a> Freeze for ParseNestedMeta<'a>

    §

    impl<'a> RefUnwindSafe for ParseNestedMeta<'a>

    §

    impl<'a> !Send for ParseNestedMeta<'a>

    §

    impl<'a> !Sync for ParseNestedMeta<'a>

    §

    impl<'a> Unpin for ParseNestedMeta<'a>

    §

    impl<'a> UnwindSafe for ParseNestedMeta<'a>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/parse/discouraged/index.html b/syn/parse/discouraged/index.html index 1756d10..837c1ed 100644 --- a/syn/parse/discouraged/index.html +++ b/syn/parse/discouraged/index.html @@ -1,2 +1,3 @@ -syn::parse::discouraged - Rust

    Module syn::parse::discouraged

    source ·
    Expand description

    Extensions to the parsing API with niche applicability.

    -

    Traits

    • Extensions to the ParseStream API to support speculative parsing.
    \ No newline at end of file +syn::parse::discouraged - Rust
    syn::parse

    Module discouraged

    source
    Expand description

    Extensions to the parsing API with niche applicability.

    +

    Traits§

    • Extensions to the ParseStream API to support manipulating invisible +delimiters the same as if they were visible.
    • Extensions to the ParseStream API to support speculative parsing.
    \ No newline at end of file diff --git a/syn/parse/discouraged/sidebar-items.js b/syn/parse/discouraged/sidebar-items.js index fd622c9..77607c2 100644 --- a/syn/parse/discouraged/sidebar-items.js +++ b/syn/parse/discouraged/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"trait":["Speculative"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"trait":["AnyDelimiter","Speculative"]}; \ No newline at end of file diff --git a/syn/parse/discouraged/trait.AnyDelimiter.html b/syn/parse/discouraged/trait.AnyDelimiter.html new file mode 100644 index 0000000..7bdaddb --- /dev/null +++ b/syn/parse/discouraged/trait.AnyDelimiter.html @@ -0,0 +1,10 @@ +AnyDelimiter in syn::parse::discouraged - Rust
    syn::parse::discouraged

    Trait AnyDelimiter

    source
    pub trait AnyDelimiter {
    +    // Required method
    +    fn parse_any_delimiter(
    +        &self,
    +    ) -> Result<(Delimiter, DelimSpan, ParseBuffer<'_>)>;
    +}
    Expand description

    Extensions to the ParseStream API to support manipulating invisible +delimiters the same as if they were visible.

    +

    Required Methods§

    source

    fn parse_any_delimiter(&self) -> Result<(Delimiter, DelimSpan, ParseBuffer<'_>)>

    Returns the delimiter, the span of the delimiter token, and the nested +contents for further parsing.

    +

    Implementors§

    \ No newline at end of file diff --git a/syn/parse/discouraged/trait.Speculative.html b/syn/parse/discouraged/trait.Speculative.html index b535deb..4844e68 100644 --- a/syn/parse/discouraged/trait.Speculative.html +++ b/syn/parse/discouraged/trait.Speculative.html @@ -1,8 +1,8 @@ -Speculative in syn::parse::discouraged - Rust
    pub trait Speculative {
    +Speculative in syn::parse::discouraged - Rust
    syn::parse::discouraged

    Trait Speculative

    source
    pub trait Speculative {
         // Required method
    -    fn advance_to(&self, fork: &Self);
    +    fn advance_to(&self, fork: &Self);
     }
    Expand description

    Extensions to the ParseStream API to support speculative parsing.

    -

    Required Methods§

    source

    fn advance_to(&self, fork: &Self)

    Advance this parse stream to the position of a forked parse stream.

    +

    Required Methods§

    source

    fn advance_to(&self, fork: &Self)

    Advance this parse stream to the position of a forked parse stream.

    This is the opposite operation to ParseStream::fork. You can fork a parse stream, perform some speculative parsing, then join the original stream to the fork to “commit” the parsing from the fork to the main @@ -18,7 +18,7 @@ an A, or that the As are finished and it’s time to s parsing B* and removing the leading members of A from the repetition, bypassing the need to involve the downsides associated with speculative parsing.

    -
    Example
    +
    §Example

    There has been chatter about the possibility of making the colons in the turbofish syntax like path::to::<T> no longer required by accepting path::to<T> in expression position. Specifically, according to RFC @@ -71,20 +71,18 @@ content a second time.

    } }
    -
    Drawbacks
    +
    §Drawbacks

    The main drawback of this style of speculative parsing is in error presentation. Even if the lookahead is the “correct” parse, the error that is shown is that of the “fallback” parse. To use the same example as the turbofish above, take the following unfinished “turbofish”:

    -
    let _ = f<&'a fn(), for<'a> serde::>();
    -
    +
    let _ = f<&'a fn(), for<'a> serde::>();

    If this is parsed as generic arguments, we can provide the error message

    error: expected identifier
      --> src.rs:L:C
       |
     L | let _ = f<&'a fn(), for<'a> serde::>();
    -  |                                    ^
    -
    + | ^

    but if parsed using the above speculative parsing, it falls back to assuming that the < is a less-than when it fails to parse the generic arguments, and tries to interpret the &'a as the start of a labelled @@ -93,18 +91,17 @@ loop, resulting in the much less helpful error

    --> src.rs:L:C | L | let _ = f<&'a fn(), for<'a> serde::>(); - | ^^ -
    + | ^^

    This can be mitigated with various heuristics (two examples: show both forks’ parse errors, or show the one that consumed more tokens), but when you can control the grammar, sticking to something that can be parsed LL(3) and without the LL(*) speculative parsing this makes possible, displaying reasonable errors becomes much more simple.

    -
    Performance
    +
    §Performance

    This method performs a cheap fixed amount of work that does not depend on how far apart the two streams are positioned.

    -
    Panics
    +
    §Panics

    The forked stream in the argument of advance_to must have been obtained by forking self. Attempting to advance to any other stream will cause a panic.

    -

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/syn/parse/index.html b/syn/parse/index.html index 1725e16..0c08374 100644 --- a/syn/parse/index.html +++ b/syn/parse/index.html @@ -1,10 +1,10 @@ -syn::parse - Rust

    Module syn::parse

    source ·
    Expand description

    Parsing interface for parsing a token stream into a syntax tree node.

    +syn::parse - Rust
    syn

    Module parse

    source
    Expand description

    Parsing interface for parsing a token stream into a syntax tree node.

    Parsing in Syn is built on parser functions that take in a ParseStream and produce a Result<T> where T is some syntax tree node. Underlying these parser functions is a lower level mechanism built around the Cursor type. Cursor is a cheaply copyable cursor over a range of tokens in a token stream.

    -

    Example

    +

    §Example

    Here is a snippet of parsing code to get a feel for the style of the library. We define data structures for a subset of Rust syntax including enums (not shown) and structs, then provide implementations of the Parse @@ -52,7 +52,7 @@ pointing out the exact token that triggered the failure to parse.

    struct_token: input.parse()?, ident: input.parse()?, brace_token: braced!(content in input), - fields: content.parse_terminated(Field::parse_named)?, + fields: content.parse_terminated(Field::parse_named, Token![,])?, }) } } @@ -63,7 +63,7 @@ pointing out the exact token that triggered the failure to parse.

    /* ... */ }
    -

    The syn::parse* functions

    +

    §The syn::parse* functions

    The syn::parse, syn::parse2, and syn::parse_str functions serve as an entry point for parsing syntax tree nodes that can be parsed in an obvious default way. These functions can return any syntax tree node that @@ -71,9 +71,9 @@ implements the

    +let t: Type = syn::parse_str("std::collections::HashMap<String, Value>")?;

    The parse_quote! macro also uses this approach.

    -

    The Parser trait

    +

    §The Parser trait

    Some types can be parsed in several ways depending on context. For example an Attribute can be either “outer” like #[...] or “inner” like #![...] and parsing the wrong one would be a bug. Similarly Punctuated @@ -82,7 +82,7 @@ would either reject valid input or accept invalid input.

    The Parse trait is not implemented in these cases because there is no good behavior to consider the default.

    -
    // Can't parse `Punctuated` without knowing whether trailing punctuation
    +
    // Can't parse `Punctuated` without knowing whether trailing punctuation
     // should be allowed in this context.
     let path: Punctuated<PathSegment, Token![::]> = syn::parse(tokens)?;

    In these cases the types provide a choice of parser functions rather than a @@ -114,7 +114,5 @@ through the P Ok(()) }

    -
    -

    This module is available only if Syn is built with the "parsing" feature.

    -

    Modules

    • Extensions to the parsing API with niche applicability.

    Structs

    • Error returned when a Syn parser cannot parse the input tokens.
    • Support for checking the next token in a stream to decide how to parse.
    • An empty syntax tree node that consumes no tokens when parsed.
    • Cursor position within a buffered token stream.
    • Cursor state associated with speculative parsing.

    Traits

    • Parsing interface implemented by all types that can be parsed in a default -way from a token stream.
    • Parser that can parse Rust tokens into a particular syntax tree node.
    • Types that can be parsed by looking at just one token.

    Type Aliases

    \ No newline at end of file +

    Modules§

    • Extensions to the parsing API with niche applicability.

    Structs§

    • Pseudo-token used for peeking the end of a parse stream.
    • Error returned when a Syn parser cannot parse the input tokens.
    • Support for checking the next token in a stream to decide how to parse.
    • An empty syntax tree node that consumes no tokens when parsed.
    • Cursor position within a buffered token stream.
    • Cursor state associated with speculative parsing.

    Traits§

    • Parsing interface implemented by all types that can be parsed in a default +way from a token stream.
    • Parser that can parse Rust tokens into a particular syntax tree node.
    • Types that can be parsed by looking at just one token.

    Type Aliases§

    \ No newline at end of file diff --git a/syn/parse/sidebar-items.js b/syn/parse/sidebar-items.js index 49263f8..e5ec4d7 100644 --- a/syn/parse/sidebar-items.js +++ b/syn/parse/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"mod":["discouraged"],"struct":["Error","Lookahead1","Nothing","ParseBuffer","StepCursor"],"trait":["Parse","Parser","Peek"],"type":["ParseStream","Result"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"mod":["discouraged"],"struct":["End","Error","Lookahead1","Nothing","ParseBuffer","StepCursor"],"trait":["Parse","Parser","Peek"],"type":["ParseStream","Result"]}; \ No newline at end of file diff --git a/syn/parse/struct.End.html b/syn/parse/struct.End.html new file mode 100644 index 0000000..b3a138b --- /dev/null +++ b/syn/parse/struct.End.html @@ -0,0 +1,117 @@ +End in syn::parse - Rust
    syn::parse

    Struct End

    source
    pub struct End;
    Expand description

    Pseudo-token used for peeking the end of a parse stream.

    +

    This type is only useful as an argument to one of the following functions:

    + +

    The peek will return true if there are no remaining tokens after that +point in the parse stream.

    +

    §Example

    +

    Suppose we are parsing attributes containing core::fmt inspired formatting +arguments:

    +
      +
    • #[fmt("simple example")]
    • +
    • #[fmt("interpolation e{}ample", self.x)]
    • +
    • #[fmt("interpolation e{x}ample")]
    • +
    +

    and we want to recognize the cases where no interpolation occurs so that +more efficient code can be generated.

    +

    The following implementation uses input.peek(Token![,]) && input.peek2(End) to recognize the case of a trailing comma without +consuming the comma from the parse stream, because if it isn’t a trailing +comma, that same comma needs to be parsed as part of args.

    + +
    use proc_macro2::TokenStream;
    +use quote::quote;
    +use syn::parse::{End, Parse, ParseStream, Result};
    +use syn::{parse_quote, Attribute, LitStr, Token};
    +
    +struct FormatArgs {
    +    template: LitStr,  // "...{}..."
    +    args: TokenStream, // , self.x
    +}
    +
    +impl Parse for FormatArgs {
    +    fn parse(input: ParseStream) -> Result<Self> {
    +        let template: LitStr = input.parse()?;
    +
    +        let args = if input.is_empty()
    +            || input.peek(Token![,]) && input.peek2(End)
    +        {
    +            input.parse::<Option<Token![,]>>()?;
    +            TokenStream::new()
    +        } else {
    +            input.parse()?
    +        };
    +
    +        Ok(FormatArgs {
    +            template,
    +            args,
    +        })
    +    }
    +}
    +
    +fn main() -> Result<()> {
    +    let attrs: Vec<Attribute> = parse_quote! {
    +        #[fmt("simple example")]
    +        #[fmt("interpolation e{}ample", self.x)]
    +        #[fmt("interpolation e{x}ample")]
    +    };
    +
    +    for attr in &attrs {
    +        let FormatArgs { template, args } = attr.parse_args()?;
    +        let requires_fmt_machinery =
    +            !args.is_empty() || template.value().contains(['{', '}']);
    +        let out = if requires_fmt_machinery {
    +            quote! {
    +                ::core::write!(__formatter, #template #args)
    +            }
    +        } else {
    +            quote! {
    +                __formatter.write_str(#template)
    +            }
    +        };
    +        println!("{}", out);
    +    }
    +    Ok(())
    +}
    +

    Implementing this parsing logic without peek2(End) is more clumsy because +we’d need a parse stream actually advanced past the comma before being able +to find out whether there is anything after it. It would look something +like:

    + +
    use syn::parse::discouraged::Speculative as _;
    +
    +let ahead = input.fork();
    +ahead.parse::<Option<Token![,]>>()?;
    +let args = if ahead.is_empty() {
    +    input.advance_to(&ahead);
    +    TokenStream::new()
    +} else {
    +    input.parse()?
    +};
    +

    or:

    + +
    use quote::ToTokens as _;
    +
    +let comma: Option<Token![,]> = input.parse()?;
    +let mut args = TokenStream::new();
    +if !input.is_empty() {
    +    comma.to_tokens(&mut args);
    +    input.parse::<TokenStream>()?.to_tokens(&mut args);
    +}
    +

    Trait Implementations§

    source§

    impl Clone for End

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Copy for End

    source§

    impl Peek for End

    Auto Trait Implementations§

    §

    impl Freeze for End

    §

    impl RefUnwindSafe for End

    §

    impl Send for End

    §

    impl Sync for End

    §

    impl Unpin for End

    §

    impl UnwindSafe for End

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> Token for T
    where + T: CustomToken,

    source§

    fn peek(cursor: Cursor<'_>) -> bool

    source§

    fn display() -> &'static str

    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/parse/struct.Error.html b/syn/parse/struct.Error.html index 01dc077..0a79b36 100644 --- a/syn/parse/struct.Error.html +++ b/syn/parse/struct.Error.html @@ -1,22 +1,33 @@ -Error in syn::parse - Rust

    Struct syn::parse::Error

    source ·
    pub struct Error { /* private fields */ }
    Expand description

    Error returned when a Syn parser cannot parse the input tokens.

    -

    Error reporting in proc macros

    +Error in syn::parse - Rust
    syn::parse

    Struct Error

    source
    pub struct Error { /* private fields */ }
    Expand description

    Error returned when a Syn parser cannot parse the input tokens.

    +

    §Error reporting in proc macros

    The correct way to report errors back to the compiler from a procedural macro is by emitting an appropriately spanned invocation of -compile_error! in the generated code. This produces a better diagnostic +compile_error! in the generated code. This produces a better diagnostic message than simply panicking the macro.

    When parsing macro input, the parse_macro_input! macro handles the conversion to compile_error! automatically.

    use proc_macro::TokenStream;
    -use syn::{parse_macro_input, AttributeArgs, ItemFn};
    +use syn::parse::{Parse, ParseStream, Result};
    +use syn::{parse_macro_input, ItemFn};
     
     #[proc_macro_attribute]
     pub fn my_attr(args: TokenStream, input: TokenStream) -> TokenStream {
    -    let args = parse_macro_input!(args as AttributeArgs);
    +    let args = parse_macro_input!(args as MyAttrArgs);
         let input = parse_macro_input!(input as ItemFn);
     
         /* ... */
    -}
    +} + +struct MyAttrArgs { + ... +} + +impl Parse for MyAttrArgs { + fn parse(input: ParseStream) -> Result<Self> { + ... + } +}

    For errors that arise later than the initial parsing stage, the .to_compile_error() or .into_compile_error() methods can be used to perform an explicit conversion to compile_error!.

    @@ -30,30 +41,30 @@ perform an explicit conversion to compile_error!.

    .unwrap_or_else(syn::Error::into_compile_error) .into() }
    -

    Implementations§

    source§

    impl Error

    source

    pub fn new<T: Display>(span: Span, message: T) -> Self

    Usually the ParseStream::error method will be used instead, which +

    Implementations§

    source§

    impl Error

    source

    pub fn new<T: Display>(span: Span, message: T) -> Self

    Usually the ParseStream::error method will be used instead, which automatically uses the correct span from the current position of the parse stream.

    Use Error::new when the error needs to be triggered on some span other than where the parse stream is currently positioned.

    -
    Example
    +
    §Example
    use syn::{Error, Ident, LitStr, Result, Token};
     use syn::parse::ParseStream;
     
    -// Parses input that looks like `name = "string"` where the key must be
    +// Parses input that looks like `name = "string"` where the key must be
     // the identifier `name` and the value may be any string literal.
     // Returns the string literal.
     fn parse_name(input: ParseStream) -> Result<LitStr> {
         let name_token: Ident = input.parse()?;
    -    if name_token != "name" {
    +    if name_token != "name" {
             // Trigger an error not on the current position of the stream,
             // but on the position of the unexpected identifier.
    -        return Err(Error::new(name_token.span(), "expected `name`"));
    +        return Err(Error::new(name_token.span(), "expected `name`"));
         }
         input.parse::<Token![=]>()?;
         let s: LitStr = input.parse()?;
         Ok(s)
     }
    -
    source

    pub fn new_spanned<T: ToTokens, U: Display>(tokens: T, message: U) -> Self

    Creates an error with the specified message spanning the given syntax +

    source

    pub fn new_spanned<T: ToTokens, U: Display>(tokens: T, message: U) -> Self

    Creates an error with the specified message spanning the given syntax tree node.

    Unlike the Error::new constructor, this constructor takes an argument tokens which is a syntax tree node. This allows the resulting Error @@ -64,15 +75,15 @@ constructor, implementation limitations today mean that stable Rust.

    When in doubt it’s recommended to stick to Error::new (or ParseStream::error)!

    -
    source

    pub fn span(&self) -> Span

    The source location of the error.

    +
    source

    pub fn span(&self) -> Span

    The source location of the error.

    Spans are not thread-safe so this function returns Span::call_site() if called from a different thread than the one on which the Error was originally created.

    -
    source

    pub fn to_compile_error(&self) -> TokenStream

    Render the error as an invocation of compile_error!.

    +
    source

    pub fn to_compile_error(&self) -> TokenStream

    Render the error as an invocation of compile_error!.

    The parse_macro_input! macro provides a convenient way to invoke this method correctly in a procedural macro.

    -
    source

    pub fn into_compile_error(self) -> TokenStream

    Render the error as an invocation of compile_error!.

    -
    Example
    +
    source

    pub fn into_compile_error(self) -> TokenStream

    Render the error as an invocation of compile_error!.

    +
    §Example
    use proc_macro::TokenStream;
     use syn::{parse_macro_input, DeriveInput, Error};
     
    @@ -92,18 +103,19 @@ this method correctly in a procedural macro.

    /* ... */ } }
    -
    source

    pub fn combine(&mut self, another: Error)

    Add another error message to self such that when to_compile_error() is +

    source

    pub fn combine(&mut self, another: Error)

    Add another error message to self such that when to_compile_error() is called, both errors will be emitted together.

    -

    Trait Implementations§

    source§

    impl Clone for Error

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Error

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for Error

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for Error

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl Extend<Error> for Error

    source§

    fn extend<T: IntoIterator<Item = Error>>(&mut self, iter: T)

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, item: A)

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    source§

    impl From<LexError> for Error

    source§

    fn from(err: LexError) -> Self

    Converts to this type from the input type.
    source§

    impl<'a> IntoIterator for &'a Error

    §

    type Item = Error

    The type of the elements being iterated over.
    §

    type IntoIter = Iter<'a>

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl IntoIterator for Error

    §

    type Item = Error

    The type of the elements being iterated over.
    §

    type IntoIter = IntoIter

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Error

    §

    impl Send for Error

    §

    impl Sync for Error

    §

    impl Unpin for Error

    §

    impl UnwindSafe for Error

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for Error

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Error

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for Error

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for Error

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    Returns the lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type-based access to context intended for error reports. Read more
    source§

    impl Extend<Error> for Error

    source§

    fn extend<T: IntoIterator<Item = Error>>(&mut self, iter: T)

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, item: A)

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    source§

    impl From<LexError> for Error

    source§

    fn from(err: LexError) -> Self

    Converts to this type from the input type.
    source§

    impl<'a> IntoIterator for &'a Error

    source§

    type Item = Error

    The type of the elements being iterated over.
    source§

    type IntoIter = Iter<'a>

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl IntoIterator for Error

    source§

    type Item = Error

    The type of the elements being iterated over.
    source§

    type IntoIter = IntoIter

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more

    Auto Trait Implementations§

    §

    impl Freeze for Error

    §

    impl RefUnwindSafe for Error

    §

    impl Send for Error

    §

    impl Sync for Error

    §

    impl Unpin for Error

    §

    impl UnwindSafe for Error

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for Twhere - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/parse/struct.Lookahead1.html b/syn/parse/struct.Lookahead1.html index e660913..3681d11 100644 --- a/syn/parse/struct.Lookahead1.html +++ b/syn/parse/struct.Lookahead1.html @@ -1,4 +1,4 @@ -Lookahead1 in syn::parse - Rust

    Struct syn::parse::Lookahead1

    source ·
    pub struct Lookahead1<'a> { /* private fields */ }
    Expand description

    Support for checking the next token in a stream to decide how to parse.

    +Lookahead1 in syn::parse - Rust
    syn::parse

    Struct Lookahead1

    source
    pub struct Lookahead1<'a> { /* private fields */ }
    Expand description

    Support for checking the next token in a stream to decide how to parse.

    An important advantage over ParseStream::peek is that here we automatically construct an appropriate error message based on the token alternatives that get peeked. If you are producing your own error message, @@ -6,14 +6,14 @@ go ahead and use ParseStream::peek instead.

    Use ParseStream::lookahead1 to construct this object.

    Consuming tokens from the source stream after constructing a lookahead object does not also advance the lookahead object.

    -

    Example

    -
    use syn::{ConstParam, Ident, Lifetime, LifetimeDef, Result, Token, TypeParam};
    +

    §Example

    +
    use syn::{ConstParam, Ident, Lifetime, LifetimeParam, Result, Token, TypeParam};
     use syn::parse::{Parse, ParseStream};
     
     // A generic parameter, a single one of the comma-separated elements inside
     // angle brackets in:
     //
    -//     fn f<T: Clone, 'a, 'b: 'a, const N: usize>() { ... }
    +//     fn f<T: Clone, 'a, 'b: 'a, const N: usize>() { ... }
     //
     // On invalid input, lookahead gives us a reasonable error message.
     //
    @@ -23,7 +23,7 @@ object does not also advance the lookahead object.

    // | ^
    enum GenericParam { Type(TypeParam), - Lifetime(LifetimeDef), + Lifetime(LifetimeParam), Const(ConstParam), } @@ -41,9 +41,9 @@ object does not also advance the lookahead object.

    } } }
    -

    Implementations§

    source§

    impl<'a> Lookahead1<'a>

    source

    pub fn peek<T: Peek>(&self, token: T) -> bool

    Looks at the next token in the parse stream to determine whether it +

    Implementations§

    source§

    impl<'a> Lookahead1<'a>

    source

    pub fn peek<T: Peek>(&self, token: T) -> bool

    Looks at the next token in the parse stream to determine whether it matches the requested type of token.

    -
    Syntax
    +
    §Syntax

    Note that this method does not use turbofish syntax. Pass the peek type inside of parentheses.

      @@ -54,17 +54,17 @@ inside of parentheses.

    • input.peek(Lifetime)
    • input.peek(token::Brace)
    -
    source

    pub fn error(self) -> Error

    Triggers an error at the current position of the parse stream.

    +
    source

    pub fn error(self) -> Error

    Triggers an error at the current position of the parse stream.

    The error message will identify all of the expected token types that have been peeked against this lookahead instance.

    -

    Auto Trait Implementations§

    §

    impl<'a> !RefUnwindSafe for Lookahead1<'a>

    §

    impl<'a> !Send for Lookahead1<'a>

    §

    impl<'a> !Sync for Lookahead1<'a>

    §

    impl<'a> Unpin for Lookahead1<'a>

    §

    impl<'a> UnwindSafe for Lookahead1<'a>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Auto Trait Implementations§

    §

    impl<'a> !Freeze for Lookahead1<'a>

    §

    impl<'a> !RefUnwindSafe for Lookahead1<'a>

    §

    impl<'a> !Send for Lookahead1<'a>

    §

    impl<'a> !Sync for Lookahead1<'a>

    §

    impl<'a> Unpin for Lookahead1<'a>

    §

    impl<'a> UnwindSafe for Lookahead1<'a>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/parse/struct.Nothing.html b/syn/parse/struct.Nothing.html index 8b68685..8649ab0 100644 --- a/syn/parse/struct.Nothing.html +++ b/syn/parse/struct.Nothing.html @@ -1,4 +1,4 @@ -Nothing in syn::parse - Rust

    Struct syn::parse::Nothing

    source ·
    pub struct Nothing;
    Expand description

    An empty syntax tree node that consumes no tokens when parsed.

    +Nothing in syn::parse - Rust
    syn::parse

    Struct Nothing

    source
    pub struct Nothing;
    Expand description

    An empty syntax tree node that consumes no tokens when parsed.

    This is useful for attribute macros that want to ensure they are not provided any attribute args.

    @@ -16,19 +16,22 @@ provided any attribute args.

    --> src/main.rs:3:19 | 3 | #[my_attr(asdf)] - | ^^^^ -

    Trait Implementations§

    source§

    impl Debug for Nothing

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for Nothing

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Nothing

    source§

    fn parse(_input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Nothing> for Nothing

    source§

    fn eq(&self, _other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for Nothing

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    + | ^^^^

    Trait Implementations§

    source§

    impl Clone for Nothing

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Nothing

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for Nothing

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Nothing

    source§

    fn parse(_input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Nothing

    source§

    fn eq(&self, _other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Nothing

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Nothing

    source§

    impl Eq for Nothing

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/parse/struct.ParseBuffer.html b/syn/parse/struct.ParseBuffer.html index 2f1f349..f1f1386 100644 --- a/syn/parse/struct.ParseBuffer.html +++ b/syn/parse/struct.ParseBuffer.html @@ -1,9 +1,9 @@ -ParseBuffer in syn::parse - Rust

    Struct syn::parse::ParseBuffer

    source ·
    pub struct ParseBuffer<'a> { /* private fields */ }
    Expand description

    Cursor position within a buffered token stream.

    +ParseBuffer in syn::parse - Rust
    syn::parse

    Struct ParseBuffer

    source
    pub struct ParseBuffer<'a> { /* private fields */ }
    Expand description

    Cursor position within a buffered token stream.

    This type is more commonly used through the type alias ParseStream which is an alias for &ParseBuffer.

    ParseStream is the input type for all parser functions in Syn. They have the signature fn(ParseStream) -> Result<T>.

    -

    Calling a parser function

    +

    §Calling a parser function

    There is no public way to construct a ParseBuffer. Instead, if you are looking to invoke a parser function that requires ParseStream as input, you will need to go through one of the public parsing entry points.

    @@ -12,14 +12,14 @@ you will need to go through one of the public parsing entry points.

  • One of the syn::parse* functions; or
  • A method of the Parser trait.
  • -

    Implementations§

    source§

    impl<'a> ParseBuffer<'a>

    source

    pub fn parse<T: Parse>(&self) -> Result<T>

    Parses a syntax tree node of type T, advancing the position of our +

    Implementations§

    source§

    impl<'a> ParseBuffer<'a>

    source

    pub fn parse<T: Parse>(&self) -> Result<T>

    Parses a syntax tree node of type T, advancing the position of our parse stream past it.

    -
    source

    pub fn call<T>( +

    source

    pub fn call<T>( &self, - function: fn(_: ParseStream<'_>) -> Result<T> + function: fn(_: ParseStream<'_>) -> Result<T>, ) -> Result<T>

    Calls the given parser function to parse a syntax tree node of type T from this stream.

    -
    Example
    +
    §Example

    The parser below invokes Attribute::parse_outer to parse a vector of zero or more outer attributes.

    @@ -28,7 +28,7 @@ zero or more outer attributes.

    // Parses a unit struct with attributes. // -// #[path = "s.tmpl"] +// #[path = "s.tmpl"] // struct S; struct UnitStruct { attrs: Vec<Attribute>, @@ -47,21 +47,21 @@ zero or more outer attributes.

    }) } }
    -
    source

    pub fn peek<T: Peek>(&self, token: T) -> bool

    Looks at the next token in the parse stream to determine whether it +

    source

    pub fn peek<T: Peek>(&self, token: T) -> bool

    Looks at the next token in the parse stream to determine whether it matches the requested type of token.

    Does not advance the position of the parse stream.

    -
    Syntax
    +
    §Syntax

    Note that this method does not use turbofish syntax. Pass the peek type inside of parentheses.

    • input.peek(Token![struct])
    • input.peek(Token![==])
    • -
    • input.peek(Ident)(does not accept keywords)
    • -
    • input.peek(Ident::peek_any)
    • +
    • input.peek(syn::Ident)(does not accept keywords)
    • +
    • input.peek(syn::Ident::peek_any)
    • input.peek(Lifetime)
    • input.peek(token::Brace)
    -
    Example
    +
    §Example

    In this example we finish parsing the list of supertraits when the next token in the input is either where or an opening curly brace.

    @@ -71,7 +71,7 @@ token in the input is either where or an opening curly brace.

    // Parses a trait definition containing no associated items. // -// trait Marker<'de, T>: A + B<'de> where Box<T>: Clone {} +// trait Marker<'de, T>: A + B<'de> where Box<T>: Clone {} struct MarkerTrait { trait_token: Token![trait], ident: Ident, @@ -113,9 +113,9 @@ token in the input is either where or an opening curly brace.

    }) } }
    -
    source

    pub fn peek2<T: Peek>(&self, token: T) -> bool

    Looks at the second-next token in the parse stream.

    +
    source

    pub fn peek2<T: Peek>(&self, token: T) -> bool

    Looks at the second-next token in the parse stream.

    This is commonly useful as a way to implement contextual keywords.

    -
    Example
    +
    §Example

    This example needs to use peek2 because the symbol union is not a keyword in Rust. We can’t use just peek and decide to parse a union if the very next token is union, because someone is free to write a mod union and a macro invocation that looks like union::some_macro! { ... }. In other words union is a contextual keyword.

    @@ -140,15 +140,18 @@ the very next token is union, because someone is free to write a
    -
    source

    pub fn peek3<T: Peek>(&self, token: T) -> bool

    Looks at the third-next token in the parse stream.

    -
    source

    pub fn parse_terminated<T, P: Parse>( +

    source

    pub fn peek3<T: Peek>(&self, token: T) -> bool

    Looks at the third-next token in the parse stream.

    +
    source

    pub fn parse_terminated<T, P>( &self, - parser: fn(_: ParseStream<'_>) -> Result<T> -) -> Result<Punctuated<T, P>>

    Parses zero or more occurrences of T separated by punctuation of type + parser: fn(_: ParseStream<'_>) -> Result<T>, + separator: P, +) -> Result<Punctuated<T, P::Token>>

    where + P: Peek, + P::Token: Parse,

    Parses zero or more occurrences of T separated by punctuation of type P, with optional trailing punctuation.

    Parsing continues until the end of this parse stream. The entire content of this parse stream must consist of T and P.

    -
    Example
    +
    §Example
    use syn::{parenthesized, token, Ident, Result, Token, Type};
     use syn::parse::{Parse, ParseStream};
     use syn::punctuated::Punctuated;
    @@ -171,15 +174,56 @@ of this parse stream must consist of T and P.

    struct_token: input.parse()?, ident: input.parse()?, paren_token: parenthesized!(content in input), - fields: content.parse_terminated(Type::parse)?, + fields: content.parse_terminated(Type::parse, Token![,])?, semi_token: input.parse()?, }) } }
    -
    source

    pub fn is_empty(&self) -> bool

    Returns whether there are tokens remaining in this stream.

    -

    This method returns true at the end of the content of a set of -delimiters, as well as at the very end of the complete macro input.

    -
    Example
    +
    §See also
    +

    If your separator is anything more complicated than an invocation of the +Token! macro, this method won’t be applicable and you can instead +directly use Punctuated’s parser functions: parse_terminated, +parse_separated_nonempty etc.

    + +
    use syn::{custom_keyword, Expr, Result, Token};
    +use syn::parse::{Parse, ParseStream};
    +use syn::punctuated::Punctuated;
    +
    +mod kw {
    +    syn::custom_keyword!(fin);
    +}
    +
    +struct Fin(kw::fin, Token![;]);
    +
    +impl Parse for Fin {
    +    fn parse(input: ParseStream) -> Result<Self> {
    +        Ok(Self(input.parse()?, input.parse()?))
    +    }
    +}
    +
    +struct Thing {
    +    steps: Punctuated<Expr, Fin>,
    +}
    +
    +impl Parse for Thing {
    +    fn parse(input: ParseStream) -> Result<Self> {
    +        Ok(Thing {
    +            steps: Punctuated::parse_terminated(input)?,
    +        })
    +        // or equivalently, this means the same thing:
    +            steps: input.call(Punctuated::parse_terminated)?,
    +    }
    +}
    +
    source

    pub fn is_empty(&self) -> bool

    Returns whether there are no more tokens remaining to be parsed from +this stream.

    +

    This method returns true upon reaching the end of the content within a +set of delimiters, as well as at the end of the tokens provided to the +outermost parsing entry point.

    +

    This is equivalent to +.peek(syn::parse::End). +Use .peek2(End) or .peek3(End) to look for the end of a parse stream +further ahead than the current position.

    +
    §Example
    use syn::{braced, token, Ident, Item, Result, Token};
     use syn::parse::{Parse, ParseStream};
     
    @@ -208,16 +252,16 @@ delimiters, as well as at the very end of the complete macro input.

    }) } }
    -
    source

    pub fn lookahead1(&self) -> Lookahead1<'a>

    Constructs a helper for peeking at the next token in this stream and +

    source

    pub fn lookahead1(&self) -> Lookahead1<'a>

    Constructs a helper for peeking at the next token in this stream and building an error message if it is not one of a set of expected tokens.

    -
    Example
    -
    use syn::{ConstParam, Ident, Lifetime, LifetimeDef, Result, Token, TypeParam};
    +
    §Example
    +
    use syn::{ConstParam, Ident, Lifetime, LifetimeParam, Result, Token, TypeParam};
     use syn::parse::{Parse, ParseStream};
     
     // A generic parameter, a single one of the comma-separated elements inside
     // angle brackets in:
     //
    -//     fn f<T: Clone, 'a, 'b: 'a, const N: usize>() { ... }
    +//     fn f<T: Clone, 'a, 'b: 'a, const N: usize>() { ... }
     //
     // On invalid input, lookahead gives us a reasonable error message.
     //
    @@ -227,7 +271,7 @@ building an error message if it is not one of a set of expected tokens.

    // | ^
    enum GenericParam { Type(TypeParam), - Lifetime(LifetimeDef), + Lifetime(LifetimeParam), Const(ConstParam), } @@ -245,9 +289,9 @@ building an error message if it is not one of a set of expected tokens.

    } } }
    -
    source

    pub fn fork(&self) -> Self

    Forks a parse stream so that parsing tokens out of either the original +

    source

    pub fn fork(&self) -> Self

    Forks a parse stream so that parsing tokens out of either the original or the fork does not advance the position of the other.

    -
    Performance
    +
    §Performance

    Forking a parse stream is a cheap fixed amount of work and does not involve copying token buffers. Where you might hit performance problems is if your macro ends up parsing a large amount of content more than @@ -266,7 +310,7 @@ original stream once the fork’s parse is determined to have been successful.

    For a lower level way to perform speculative parsing at the token level, consider using ParseStream::step instead.

    -
    Example
    +
    §Example

    The parse implementation shown here parses possibly restricted pub visibilities.

      @@ -343,8 +387,8 @@ work performed against the forked parse stream.

      }) } }
    -
    source

    pub fn error<T: Display>(&self, message: T) -> Error

    Triggers an error at the current position of the parse stream.

    -
    Example
    +
    source

    pub fn error<T: Display>(&self, message: T) -> Error

    Triggers an error at the current position of the parse stream.

    +
    §Example
    use syn::{Expr, Result, Token};
     use syn::parse::{Parse, ParseStream};
     
    @@ -363,17 +407,17 @@ work performed against the forked parse stream.

    expr: input.parse()?, }) } else { - Err(input.error("expected some kind of loop")) + Err(input.error("expected some kind of loop")) } } }
    -
    source

    pub fn step<F, R>(&self, function: F) -> Result<R>where - F: for<'c> FnOnce(StepCursor<'c, 'a>) -> Result<(R, Cursor<'c>)>,

    Speculatively parses tokens from this parse stream, advancing the +

    source

    pub fn step<F, R>(&self, function: F) -> Result<R>
    where + F: for<'c> FnOnce(StepCursor<'c, 'a>) -> Result<(R, Cursor<'c>)>,

    Speculatively parses tokens from this parse stream, advancing the position of this stream only if parsing succeeds.

    This is a powerful low-level API used for defining the Parse impls of the basic built-in token types. It is not something that will be used widely outside of the Syn codebase.

    -
    Example
    +
    §Example
    use proc_macro2::TokenTree;
     use syn::Result;
     use syn::parse::ParseStream;
    @@ -386,31 +430,80 @@ widely outside of the Syn codebase.

    let mut rest = *cursor; while let Some((tt, next)) = rest.token_tree() { match &tt { - TokenTree::Punct(punct) if punct.as_char() == '@' => { + TokenTree::Punct(punct) if punct.as_char() == '@' => { return Ok(((), next)); } _ => rest = next, } } - Err(cursor.error("no `@` was found after this point")) + Err(cursor.error("no `@` was found after this point")) }) }
    -
    source

    pub fn span(&self) -> Span

    Returns the Span of the next token in the parse stream, or +

    source

    pub fn span(&self) -> Span

    Returns the Span of the next token in the parse stream, or Span::call_site() if this parse stream has completely exhausted its input TokenStream.

    -
    source

    pub fn cursor(&self) -> Cursor<'a>

    Provides low-level access to the token representation underlying this +

    source

    pub fn cursor(&self) -> Cursor<'a>

    Provides low-level access to the token representation underlying this parse stream.

    Cursors are immutable so no operations you perform against the cursor will affect the state of this parse stream.

    -

    Trait Implementations§

    source§

    impl<'a> Debug for ParseBuffer<'a>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a> Display for ParseBuffer<'a>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a> Drop for ParseBuffer<'a>

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more
    source§

    impl<'a> Speculative for ParseBuffer<'a>

    source§

    fn advance_to(&self, fork: &Self)

    Advance this parse stream to the position of a forked parse stream. Read more

    Auto Trait Implementations§

    §

    impl<'a> !RefUnwindSafe for ParseBuffer<'a>

    §

    impl<'a> !Send for ParseBuffer<'a>

    §

    impl<'a> !Sync for ParseBuffer<'a>

    §

    impl<'a> Unpin for ParseBuffer<'a>

    §

    impl<'a> !UnwindSafe for ParseBuffer<'a>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    §Example
    +
    use proc_macro2::TokenStream;
    +use syn::buffer::Cursor;
    +use syn::parse::{ParseStream, Result};
    +
    +// Run a parser that returns T, but get its output as TokenStream instead of T.
    +// This works without T needing to implement ToTokens.
    +fn recognize_token_stream<T>(
    +    recognizer: fn(ParseStream) -> Result<T>,
    +) -> impl Fn(ParseStream) -> Result<TokenStream> {
    +    move |input| {
    +        let begin = input.cursor();
    +        recognizer(input)?;
    +        let end = input.cursor();
    +        Ok(tokens_between(begin, end))
    +    }
    +}
    +
    +// Collect tokens between two cursors as a TokenStream.
    +fn tokens_between(begin: Cursor, end: Cursor) -> TokenStream {
    +    assert!(begin <= end);
    +
    +    let mut cursor = begin;
    +    let mut tokens = TokenStream::new();
    +    while cursor < end {
    +        let (token, next) = cursor.token_tree().unwrap();
    +        tokens.extend(std::iter::once(token));
    +        cursor = next;
    +    }
    +    tokens
    +}
    +
    +fn main() {
    +    use quote::quote;
    +    use syn::parse::{Parse, Parser};
    +    use syn::Token;
    +
    +    // Parse syn::Type as a TokenStream, surrounded by angle brackets.
    +    fn example(input: ParseStream) -> Result<TokenStream> {
    +        let _langle: Token![<] = input.parse()?;
    +        let ty = recognize_token_stream(syn::Type::parse)(input)?;
    +        let _rangle: Token![>] = input.parse()?;
    +        Ok(ty)
    +    }
    +
    +    let tokens = quote! { <fn() -> u8> };
    +    println!("{}", example.parse2(tokens).unwrap());
    +}
    +

    Trait Implementations§

    source§

    impl<'a> AnyDelimiter for ParseBuffer<'a>

    source§

    fn parse_any_delimiter(&self) -> Result<(Delimiter, DelimSpan, ParseBuffer<'_>)>

    Returns the delimiter, the span of the delimiter token, and the nested +contents for further parsing.
    source§

    impl<'a> Debug for ParseBuffer<'a>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a> Display for ParseBuffer<'a>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a> Drop for ParseBuffer<'a>

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more
    source§

    impl<'a> Speculative for ParseBuffer<'a>

    source§

    fn advance_to(&self, fork: &Self)

    Advance this parse stream to the position of a forked parse stream. Read more
    source§

    impl<'a> RefUnwindSafe for ParseBuffer<'a>

    source§

    impl<'a> UnwindSafe for ParseBuffer<'a>

    Auto Trait Implementations§

    §

    impl<'a> !Freeze for ParseBuffer<'a>

    §

    impl<'a> !Send for ParseBuffer<'a>

    §

    impl<'a> !Sync for ParseBuffer<'a>

    §

    impl<'a> Unpin for ParseBuffer<'a>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToString for Twhere - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/parse/struct.StepCursor.html b/syn/parse/struct.StepCursor.html index e4486b7..5248c4d 100644 --- a/syn/parse/struct.StepCursor.html +++ b/syn/parse/struct.StepCursor.html @@ -1,6 +1,6 @@ -StepCursor in syn::parse - Rust

    Struct syn::parse::StepCursor

    source ·
    pub struct StepCursor<'c, 'a> { /* private fields */ }
    Expand description

    Cursor state associated with speculative parsing.

    +StepCursor in syn::parse - Rust
    syn::parse

    Struct StepCursor

    source
    pub struct StepCursor<'c, 'a> { /* private fields */ }
    Expand description

    Cursor state associated with speculative parsing.

    This type is the input of the closure provided to ParseStream::step.

    -

    Example

    +

    §Example

    use proc_macro2::TokenTree;
     use syn::Result;
     use syn::parse::ParseStream;
    @@ -13,27 +13,28 @@
             let mut rest = *cursor;
             while let Some((tt, next)) = rest.token_tree() {
                 match &tt {
    -                TokenTree::Punct(punct) if punct.as_char() == '@' => {
    +                TokenTree::Punct(punct) if punct.as_char() == '@' => {
                         return Ok(((), next));
                     }
                     _ => rest = next,
                 }
             }
    -        Err(cursor.error("no `@` was found after this point"))
    +        Err(cursor.error("no `@` was found after this point"))
         })
     }
    -

    Implementations§

    source§

    impl<'c, 'a> StepCursor<'c, 'a>

    source

    pub fn error<T: Display>(self, message: T) -> Error

    Triggers an error at the current position of the parse stream.

    +

    Implementations§

    source§

    impl<'c, 'a> StepCursor<'c, 'a>

    source

    pub fn error<T: Display>(self, message: T) -> Error

    Triggers an error at the current position of the parse stream.

    The ParseStream::step invocation will return this same error without advancing the stream state.

    -

    Trait Implementations§

    source§

    impl<'c, 'a> Clone for StepCursor<'c, 'a>

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'c, 'a> Deref for StepCursor<'c, 'a>

    §

    type Target = Cursor<'c>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl<'c, 'a> Copy for StepCursor<'c, 'a>

    Auto Trait Implementations§

    §

    impl<'c, 'a> RefUnwindSafe for StepCursor<'c, 'a>

    §

    impl<'c, 'a> !Send for StepCursor<'c, 'a>

    §

    impl<'c, 'a> !Sync for StepCursor<'c, 'a>

    §

    impl<'c, 'a> Unpin for StepCursor<'c, 'a>

    §

    impl<'c, 'a> UnwindSafe for StepCursor<'c, 'a>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl<'c, 'a> Clone for StepCursor<'c, 'a>

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'c, 'a> Deref for StepCursor<'c, 'a>

    source§

    type Target = Cursor<'c>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl<'c, 'a> Copy for StepCursor<'c, 'a>

    Auto Trait Implementations§

    §

    impl<'c, 'a> Freeze for StepCursor<'c, 'a>

    §

    impl<'c, 'a> RefUnwindSafe for StepCursor<'c, 'a>

    §

    impl<'c, 'a> !Send for StepCursor<'c, 'a>

    §

    impl<'c, 'a> !Sync for StepCursor<'c, 'a>

    §

    impl<'c, 'a> Unpin for StepCursor<'c, 'a>

    §

    impl<'c, 'a> UnwindSafe for StepCursor<'c, 'a>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/parse/trait.Parse.html b/syn/parse/trait.Parse.html index f804e61..9c4a348 100644 --- a/syn/parse/trait.Parse.html +++ b/syn/parse/trait.Parse.html @@ -1,8 +1,8 @@ -Parse in syn::parse - Rust

    Trait syn::parse::Parse

    source ·
    pub trait Parse: Sized {
    +Parse in syn::parse - Rust
    syn::parse

    Trait Parse

    source
    pub trait Parse: Sized {
         // Required method
         fn parse(input: ParseStream<'_>) -> Result<Self>;
     }
    Expand description

    Parsing interface implemented by all types that can be parsed in a default way from a token stream.

    Refer to the module documentation for details about implementing and using the Parse trait.

    -

    Required Methods§

    source

    fn parse(input: ParseStream<'_>) -> Result<Self>

    Implementations on Foreign Types§

    source§

    impl Parse for Option<WhereClause>

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl Parse for TokenTree

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl Parse for TokenStream

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl Parse for Group

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl Parse for Option<Abi>

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl Parse for Punct

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl Parse for Literal

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl<T: Parse> Parse for Box<T>

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl<T: Parse + Token> Parse for Option<T>

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl Parse for Option<BoundLifetimes>

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    Implementors§

    source§

    impl Parse for BinOp

    source§

    impl Parse for Expr

    source§

    impl Parse for GenericArgument

    source§

    impl Parse for GenericParam

    source§

    impl Parse for Lit

    source§

    impl Parse for Member

    source§

    impl Parse for Meta

    source§

    impl Parse for NestedMeta

    source§

    impl Parse for ReturnType

    source§

    impl Parse for TraitBoundModifier

    source§

    impl Parse for syn::Type

    source§

    impl Parse for TypeParamBound

    source§

    impl Parse for UnOp

    source§

    impl Parse for Visibility

    source§

    impl Parse for WherePredicate

    source§

    impl Parse for Abi

    source§

    impl Parse for AngleBracketedGenericArguments

    source§

    impl Parse for BareFnArg

    source§

    impl Parse for Binding

    source§

    impl Parse for BoundLifetimes

    source§

    impl Parse for ConstParam

    source§

    impl Parse for DeriveInput

    source§

    impl Parse for ExprLit

    source§

    impl Parse for ExprPath

    source§

    impl Parse for FieldsNamed

    source§

    impl Parse for FieldsUnnamed

    source§

    impl Parse for Generics

    source§

    impl Parse for Ident

    source§

    impl Parse for Index

    source§

    impl Parse for Lifetime

    source§

    impl Parse for LifetimeDef

    source§

    impl Parse for LitBool

    source§

    impl Parse for LitByte

    source§

    impl Parse for LitByteStr

    source§

    impl Parse for LitChar

    source§

    impl Parse for LitFloat

    source§

    impl Parse for LitInt

    source§

    impl Parse for LitStr

    source§

    impl Parse for syn::Macro

    source§

    impl Parse for MetaList

    source§

    impl Parse for MetaNameValue

    source§

    impl Parse for ParenthesizedGenericArguments

    source§

    impl Parse for Path

    source§

    impl Parse for PathSegment

    source§

    impl Parse for TraitBound

    source§

    impl Parse for TypeArray

    source§

    impl Parse for TypeBareFn

    source§

    impl Parse for TypeGroup

    source§

    impl Parse for TypeImplTrait

    source§

    impl Parse for TypeInfer

    source§

    impl Parse for TypeMacro

    source§

    impl Parse for TypeNever

    source§

    impl Parse for TypeParam

    source§

    impl Parse for TypeParen

    source§

    impl Parse for TypePath

    source§

    impl Parse for TypePtr

    source§

    impl Parse for TypeReference

    source§

    impl Parse for TypeSlice

    source§

    impl Parse for TypeTraitObject

    source§

    impl Parse for TypeTuple

    source§

    impl Parse for Variant

    source§

    impl Parse for WhereClause

    source§

    impl Parse for Abstract

    source§

    impl Parse for Add

    source§

    impl Parse for AddEq

    source§

    impl Parse for And

    source§

    impl Parse for AndAnd

    source§

    impl Parse for AndEq

    source§

    impl Parse for As

    source§

    impl Parse for Async

    source§

    impl Parse for At

    source§

    impl Parse for Auto

    source§

    impl Parse for Await

    source§

    impl Parse for Bang

    source§

    impl Parse for Become

    source§

    impl Parse for syn::token::Box

    source§

    impl Parse for Break

    source§

    impl Parse for Caret

    source§

    impl Parse for CaretEq

    source§

    impl Parse for Colon2

    source§

    impl Parse for Colon

    source§

    impl Parse for Comma

    source§

    impl Parse for Const

    source§

    impl Parse for Continue

    source§

    impl Parse for Crate

    source§

    impl Parse for Default

    source§

    impl Parse for Div

    source§

    impl Parse for DivEq

    source§

    impl Parse for Do

    source§

    impl Parse for Dollar

    source§

    impl Parse for Dot2

    source§

    impl Parse for Dot3

    source§

    impl Parse for Dot

    source§

    impl Parse for DotDotEq

    source§

    impl Parse for Dyn

    source§

    impl Parse for Else

    source§

    impl Parse for Enum

    source§

    impl Parse for Eq

    source§

    impl Parse for EqEq

    source§

    impl Parse for Extern

    source§

    impl Parse for FatArrow

    source§

    impl Parse for Final

    source§

    impl Parse for Fn

    source§

    impl Parse for For

    source§

    impl Parse for Ge

    source§

    impl Parse for Gt

    source§

    impl Parse for If

    source§

    impl Parse for Impl

    source§

    impl Parse for In

    source§

    impl Parse for LArrow

    source§

    impl Parse for Le

    source§

    impl Parse for Let

    source§

    impl Parse for Loop

    source§

    impl Parse for Lt

    source§

    impl Parse for syn::token::Macro

    source§

    impl Parse for Match

    source§

    impl Parse for Mod

    source§

    impl Parse for Move

    source§

    impl Parse for MulEq

    source§

    impl Parse for Mut

    source§

    impl Parse for Ne

    source§

    impl Parse for Or

    source§

    impl Parse for OrEq

    source§

    impl Parse for OrOr

    source§

    impl Parse for Override

    source§

    impl Parse for Pound

    source§

    impl Parse for Priv

    source§

    impl Parse for Pub

    source§

    impl Parse for Question

    source§

    impl Parse for RArrow

    source§

    impl Parse for Ref

    source§

    impl Parse for Rem

    source§

    impl Parse for RemEq

    source§

    impl Parse for Return

    source§

    impl Parse for SelfType

    source§

    impl Parse for SelfValue

    source§

    impl Parse for Semi

    source§

    impl Parse for Shl

    source§

    impl Parse for ShlEq

    source§

    impl Parse for Shr

    source§

    impl Parse for ShrEq

    source§

    impl Parse for Star

    source§

    impl Parse for Static

    source§

    impl Parse for Struct

    source§

    impl Parse for Sub

    source§

    impl Parse for SubEq

    source§

    impl Parse for Super

    source§

    impl Parse for Tilde

    source§

    impl Parse for Trait

    source§

    impl Parse for Try

    source§

    impl Parse for syn::token::Type

    source§

    impl Parse for Typeof

    source§

    impl Parse for Underscore

    source§

    impl Parse for Union

    source§

    impl Parse for Unsafe

    source§

    impl Parse for Unsized

    source§

    impl Parse for Use

    source§

    impl Parse for Virtual

    source§

    impl Parse for Where

    source§

    impl Parse for While

    source§

    impl Parse for Yield

    source§

    impl Parse for Nothing

    \ No newline at end of file +

    Required Methods§

    source

    fn parse(input: ParseStream<'_>) -> Result<Self>

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl Parse for TokenTree

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl Parse for Option<Abi>

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl Parse for Option<BoundLifetimes>

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl Parse for Option<WhereClause>

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl Parse for Group

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl Parse for Literal

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl Parse for Punct

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl Parse for TokenStream

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl<T: Parse + Token> Parse for Option<T>

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl<T: Parse> Parse for Box<T>

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    Implementors§

    source§

    impl Parse for BinOp

    source§

    impl Parse for Expr

    source§

    impl Parse for GenericArgument

    source§

    impl Parse for GenericParam

    source§

    impl Parse for Lit

    source§

    impl Parse for Member

    source§

    impl Parse for Meta

    source§

    impl Parse for ReturnType

    source§

    impl Parse for TraitBoundModifier

    source§

    impl Parse for syn::Type

    source§

    impl Parse for TypeParamBound

    source§

    impl Parse for UnOp

    source§

    impl Parse for Visibility

    source§

    impl Parse for WherePredicate

    source§

    impl Parse for Abi

    source§

    impl Parse for AngleBracketedGenericArguments

    source§

    impl Parse for BareFnArg

    source§

    impl Parse for BoundLifetimes

    source§

    impl Parse for ConstParam

    source§

    impl Parse for DeriveInput

    source§

    impl Parse for ExprLit

    source§

    impl Parse for ExprMacro

    source§

    impl Parse for ExprPath

    source§

    impl Parse for ExprStruct

    source§

    impl Parse for FieldValue

    source§

    impl Parse for FieldsNamed

    source§

    impl Parse for FieldsUnnamed

    source§

    impl Parse for Generics

    source§

    impl Parse for Ident

    source§

    impl Parse for Index

    source§

    impl Parse for Lifetime

    source§

    impl Parse for LifetimeParam

    source§

    impl Parse for LitBool

    source§

    impl Parse for LitByte

    source§

    impl Parse for LitByteStr

    source§

    impl Parse for LitCStr

    source§

    impl Parse for LitChar

    source§

    impl Parse for LitFloat

    source§

    impl Parse for LitInt

    source§

    impl Parse for LitStr

    source§

    impl Parse for syn::Macro

    source§

    impl Parse for MetaList

    source§

    impl Parse for MetaNameValue

    source§

    impl Parse for ParenthesizedGenericArguments

    source§

    impl Parse for Path

    source§

    impl Parse for PathSegment

    source§

    impl Parse for TraitBound

    source§

    impl Parse for TypeArray

    source§

    impl Parse for TypeBareFn

    source§

    impl Parse for TypeGroup

    source§

    impl Parse for TypeImplTrait

    source§

    impl Parse for TypeInfer

    source§

    impl Parse for TypeMacro

    source§

    impl Parse for TypeNever

    source§

    impl Parse for TypeParam

    source§

    impl Parse for TypeParen

    source§

    impl Parse for TypePath

    source§

    impl Parse for TypePtr

    source§

    impl Parse for TypeReference

    source§

    impl Parse for TypeSlice

    source§

    impl Parse for TypeTraitObject

    source§

    impl Parse for TypeTuple

    source§

    impl Parse for Variant

    source§

    impl Parse for WhereClause

    source§

    impl Parse for Abstract

    source§

    impl Parse for And

    source§

    impl Parse for AndAnd

    source§

    impl Parse for AndEq

    source§

    impl Parse for As

    source§

    impl Parse for Async

    source§

    impl Parse for At

    source§

    impl Parse for Auto

    source§

    impl Parse for Await

    source§

    impl Parse for Become

    source§

    impl Parse for syn::token::Box

    source§

    impl Parse for Break

    source§

    impl Parse for Caret

    source§

    impl Parse for CaretEq

    source§

    impl Parse for Colon

    source§

    impl Parse for Comma

    source§

    impl Parse for Const

    source§

    impl Parse for Continue

    source§

    impl Parse for Crate

    source§

    impl Parse for Default

    source§

    impl Parse for Do

    source§

    impl Parse for Dollar

    source§

    impl Parse for Dot

    source§

    impl Parse for DotDot

    source§

    impl Parse for DotDotDot

    source§

    impl Parse for DotDotEq

    source§

    impl Parse for Dyn

    source§

    impl Parse for Else

    source§

    impl Parse for Enum

    source§

    impl Parse for Eq

    source§

    impl Parse for EqEq

    source§

    impl Parse for Extern

    source§

    impl Parse for FatArrow

    source§

    impl Parse for Final

    source§

    impl Parse for Fn

    source§

    impl Parse for For

    source§

    impl Parse for Ge

    source§

    impl Parse for Gt

    source§

    impl Parse for If

    source§

    impl Parse for Impl

    source§

    impl Parse for In

    source§

    impl Parse for LArrow

    source§

    impl Parse for Le

    source§

    impl Parse for Let

    source§

    impl Parse for Loop

    source§

    impl Parse for Lt

    source§

    impl Parse for syn::token::Macro

    source§

    impl Parse for Match

    source§

    impl Parse for Minus

    source§

    impl Parse for MinusEq

    source§

    impl Parse for Mod

    source§

    impl Parse for Move

    source§

    impl Parse for Mut

    source§

    impl Parse for Ne

    source§

    impl Parse for Not

    source§

    impl Parse for Or

    source§

    impl Parse for OrEq

    source§

    impl Parse for OrOr

    source§

    impl Parse for Override

    source§

    impl Parse for PathSep

    source§

    impl Parse for Percent

    source§

    impl Parse for PercentEq

    source§

    impl Parse for Plus

    source§

    impl Parse for PlusEq

    source§

    impl Parse for Pound

    source§

    impl Parse for Priv

    source§

    impl Parse for Pub

    source§

    impl Parse for Question

    source§

    impl Parse for RArrow

    source§

    impl Parse for Raw

    source§

    impl Parse for Ref

    source§

    impl Parse for Return

    source§

    impl Parse for SelfType

    source§

    impl Parse for SelfValue

    source§

    impl Parse for Semi

    source§

    impl Parse for Shl

    source§

    impl Parse for ShlEq

    source§

    impl Parse for Shr

    source§

    impl Parse for ShrEq

    source§

    impl Parse for Slash

    source§

    impl Parse for SlashEq

    source§

    impl Parse for Star

    source§

    impl Parse for StarEq

    source§

    impl Parse for Static

    source§

    impl Parse for Struct

    source§

    impl Parse for Super

    source§

    impl Parse for Tilde

    source§

    impl Parse for Trait

    source§

    impl Parse for Try

    source§

    impl Parse for syn::token::Type

    source§

    impl Parse for Typeof

    source§

    impl Parse for Underscore

    source§

    impl Parse for Union

    source§

    impl Parse for Unsafe

    source§

    impl Parse for Unsized

    source§

    impl Parse for Use

    source§

    impl Parse for Virtual

    source§

    impl Parse for Where

    source§

    impl Parse for While

    source§

    impl Parse for Yield

    source§

    impl Parse for Nothing

    \ No newline at end of file diff --git a/syn/parse/trait.Parser.html b/syn/parse/trait.Parser.html index 43c2a37..ab3bdd1 100644 --- a/syn/parse/trait.Parser.html +++ b/syn/parse/trait.Parser.html @@ -1,28 +1,25 @@ -Parser in syn::parse - Rust

    Trait syn::parse::Parser

    source ·
    pub trait Parser: Sized {
    +Parser in syn::parse - Rust
    syn::parse

    Trait Parser

    source
    pub trait Parser: Sized {
         type Output;
     
         // Required method
         fn parse2(self, tokens: TokenStream) -> Result<Self::Output>;
     
         // Provided methods
    -    fn parse(self, tokens: TokenStream) -> Result<Self::Output> { ... }
    -    fn parse_str(self, s: &str) -> Result<Self::Output> { ... }
    +    fn parse(self, tokens: TokenStream) -> Result<Self::Output> { ... }
    +    fn parse_str(self, s: &str) -> Result<Self::Output> { ... }
     }
    Expand description

    Parser that can parse Rust tokens into a particular syntax tree node.

    Refer to the module documentation for details about parsing in Syn.

    -

    This trait is available only if Syn is built with the "parsing" feature.

    -

    Required Associated Types§

    Required Methods§

    source

    fn parse2(self, tokens: TokenStream) -> Result<Self::Output>

    Parse a proc-macro2 token stream into the chosen syntax tree node.

    -

    This function will check that the input is fully parsed. If there are -any unparsed tokens at the end of the stream, an error is returned.

    -

    Provided Methods§

    source

    fn parse(self, tokens: TokenStream) -> Result<Self::Output>

    Parse tokens of source code into the chosen syntax tree node.

    -

    This function will check that the input is fully parsed. If there are -any unparsed tokens at the end of the stream, an error is returned.

    -

    This method is available only if Syn is built with both the "parsing" and -"proc-macro" features.

    -
    source

    fn parse_str(self, s: &str) -> Result<Self::Output>

    Parse a string of Rust code into the chosen syntax tree node.

    -

    This function will check that the input is fully parsed. If there are -any unparsed tokens at the end of the string, an error is returned.

    -
    Hygiene
    +

    Required Associated Types§

    Required Methods§

    source

    fn parse2(self, tokens: TokenStream) -> Result<Self::Output>

    Parse a proc-macro2 token stream into the chosen syntax tree node.

    +

    This function enforces that the input is fully parsed. If there are any +unparsed tokens at the end of the stream, an error is returned.

    +

    Provided Methods§

    source

    fn parse(self, tokens: TokenStream) -> Result<Self::Output>

    Parse tokens of source code into the chosen syntax tree node.

    +

    This function enforces that the input is fully parsed. If there are any +unparsed tokens at the end of the stream, an error is returned.

    +
    source

    fn parse_str(self, s: &str) -> Result<Self::Output>

    Parse a string of Rust code into the chosen syntax tree node.

    +

    This function enforces that the input is fully parsed. If there are any +unparsed tokens at the end of the string, an error is returned.

    +
    §Hygiene

    Every span in the resulting syntax tree will be set to resolve at the macro call site.

    -

    Implementors§

    source§

    impl<F, T> Parser for Fwhere - F: FnOnce(ParseStream<'_>) -> Result<T>,

    §

    type Output = T

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    source§

    impl<F, T> Parser for F
    where + F: FnOnce(ParseStream<'_>) -> Result<T>,

    \ No newline at end of file diff --git a/syn/parse/trait.Peek.html b/syn/parse/trait.Peek.html index 477e85e..a3cd779 100644 --- a/syn/parse/trait.Peek.html +++ b/syn/parse/trait.Peek.html @@ -1,5 +1,5 @@ -Peek in syn::parse - Rust

    Trait syn::parse::Peek

    source ·
    pub trait Peek: Sealed { }
    Expand description

    Types that can be parsed by looking at just one token.

    +Peek in syn::parse - Rust
    syn::parse

    Trait Peek

    source
    pub trait Peek: Sealed { }
    Expand description

    Types that can be parsed by looking at just one token.

    Use ParseStream::peek to peek one of these types in a parse stream without consuming it from the stream.

    This trait is sealed and cannot be implemented for types outside of Syn.

    -

    Implementors§

    source§

    impl<F: Copy + FnOnce(TokenMarker) -> T, T: Token> Peek for F

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    source§

    impl Peek for End

    source§

    impl<F: Copy + FnOnce(TokenMarker) -> T, T: Token> Peek for F

    \ No newline at end of file diff --git a/syn/parse/type.ParseStream.html b/syn/parse/type.ParseStream.html index 18ff669..1a65c1b 100644 --- a/syn/parse/type.ParseStream.html +++ b/syn/parse/type.ParseStream.html @@ -1,4 +1,4 @@ -ParseStream in syn::parse - Rust

    Type Alias syn::parse::ParseStream

    source ·
    pub type ParseStream<'a> = &'a ParseBuffer<'a>;
    Expand description

    Input to a Syn parser function.

    +ParseStream in syn::parse - Rust
    syn::parse

    Type Alias ParseStream

    source
    pub type ParseStream<'a> = &'a ParseBuffer<'a>;
    Expand description

    Input to a Syn parser function.

    See the methods of this type under the documentation of ParseBuffer. For an overview of parsing in Syn, refer to the module documentation.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/syn/parse/type.Result.html b/syn/parse/type.Result.html index 580fc96..3e5e438 100644 --- a/syn/parse/type.Result.html +++ b/syn/parse/type.Result.html @@ -1,24 +1,7 @@ -Result in syn::parse - Rust

    Type Alias syn::parse::Result

    source ·
    pub type Result<T> = Result<T, Error>;
    Expand description

    The result of a Syn parser.

    -

    Aliased Type§

    enum Result<T> {
    +Result in syn::parse - Rust
    syn::parse

    Type Alias Result

    source
    pub type Result<T> = Result<T, Error>;
    Expand description

    The result of a Syn parser.

    +

    Aliased Type§

    enum Result<T> {
         Ok(T),
         Err(Error),
    -}

    Variants§

    §1.0.0

    Ok(T)

    Contains the success value

    +}

    Variants§

    §1.0.0

    Ok(T)

    Contains the success value

    §1.0.0

    Err(Error)

    Contains the error value

    -

    Trait Implementations§

    1.0.0 · source§

    impl<T, E> Clone for Result<T, E>where - T: Clone, - E: Clone,

    source§

    fn clone(&self) -> Result<T, E>

    Returns a copy of the value. Read more
    source§

    fn clone_from(&mut self, source: &Result<T, E>)

    Performs copy-assignment from source. Read more
    1.0.0 · source§

    impl<T, E> Debug for Result<T, E>where - T: Debug, - E: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    1.0.0 · source§

    impl<T, E> Hash for Result<T, E>where - T: Hash, - E: Hash,

    source§

    fn hash<__H>(&self, state: &mut __H)where - __H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    1.0.0 · source§

    impl<T, E> PartialEq<Result<T, E>> for Result<T, E>where - T: PartialEq<T>, - E: PartialEq<E>,

    source§

    fn eq(&self, other: &Result<T, E>) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    1.0.0 · source§

    impl<T, E> Copy for Result<T, E>where - T: Copy, - E: Copy,

    1.0.0 · source§

    impl<T, E> Eq for Result<T, E>where - T: Eq, - E: Eq,

    \ No newline at end of file + \ No newline at end of file diff --git a/syn/path/struct.AssocConst.html b/syn/path/struct.AssocConst.html new file mode 100644 index 0000000..47b15b3 --- /dev/null +++ b/syn/path/struct.AssocConst.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../syn/struct.AssocConst.html...

    + + + \ No newline at end of file diff --git a/syn/path/struct.AssocType.html b/syn/path/struct.AssocType.html new file mode 100644 index 0000000..50d074b --- /dev/null +++ b/syn/path/struct.AssocType.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../syn/struct.AssocType.html...

    + + + \ No newline at end of file diff --git a/syn/path/struct.Binding.html b/syn/path/struct.Binding.html deleted file mode 100644 index a2b292e..0000000 --- a/syn/path/struct.Binding.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

    Redirecting to ../../syn/struct.Binding.html...

    - - - \ No newline at end of file diff --git a/syn/punctuated/enum.Pair.html b/syn/punctuated/enum.Pair.html index 1c2e432..8733ad4 100644 --- a/syn/punctuated/enum.Pair.html +++ b/syn/punctuated/enum.Pair.html @@ -1,52 +1,60 @@ -Pair in syn::punctuated - Rust

    Enum syn::punctuated::Pair

    source ·
    pub enum Pair<T, P> {
    +Pair in syn::punctuated - Rust
    syn::punctuated

    Enum Pair

    source
    pub enum Pair<T, P> {
         Punctuated(T, P),
         End(T),
     }
    Expand description

    A single syntax tree node of type T followed by its trailing punctuation of type P if any.

    Refer to the module documentation for details about punctuated sequences.

    -

    Variants§

    §

    Punctuated(T, P)

    §

    End(T)

    Implementations§

    source§

    impl<T, P> Pair<T, P>

    source

    pub fn into_value(self) -> T

    Extracts the syntax tree node from this punctuated pair, discarding the +

    Variants§

    §

    Punctuated(T, P)

    §

    End(T)

    Implementations§

    source§

    impl<T, P> Pair<T, P>

    source

    pub fn into_value(self) -> T

    Extracts the syntax tree node from this punctuated pair, discarding the following punctuation.

    -
    source

    pub fn value(&self) -> &T

    Borrows the syntax tree node from this punctuated pair.

    -
    source

    pub fn value_mut(&mut self) -> &mut T

    Mutably borrows the syntax tree node from this punctuated pair.

    -
    source

    pub fn punct(&self) -> Option<&P>

    Borrows the punctuation from this punctuated pair, unless this pair is +

    source

    pub fn value(&self) -> &T

    Borrows the syntax tree node from this punctuated pair.

    +
    source

    pub fn value_mut(&mut self) -> &mut T

    Mutably borrows the syntax tree node from this punctuated pair.

    +
    source

    pub fn punct(&self) -> Option<&P>

    Borrows the punctuation from this punctuated pair, unless this pair is the final one and there is no trailing punctuation.

    -
    source

    pub fn punct_mut(&mut self) -> Option<&mut P>

    Mutably borrows the punctuation from this punctuated pair, unless the +

    source

    pub fn punct_mut(&mut self) -> Option<&mut P>

    Mutably borrows the punctuation from this punctuated pair, unless the pair is the final one and there is no trailing punctuation.

    -
    Example
    -
    punctuated.insert(0, parse_quote!('lifetime));
    +
    §Example
    +
    punctuated.insert(0, parse_quote!('lifetime));
     if let Some(punct) = punctuated.pairs_mut().next().unwrap().punct_mut() {
         punct.span = span;
     }
    -
    source

    pub fn new(t: T, p: Option<P>) -> Self

    Creates a punctuated pair out of a syntax tree node and an optional +

    source

    pub fn new(t: T, p: Option<P>) -> Self

    Creates a punctuated pair out of a syntax tree node and an optional following punctuation.

    -
    source

    pub fn into_tuple(self) -> (T, Option<P>)

    Produces this punctuated pair as a tuple of syntax tree node and +

    source

    pub fn into_tuple(self) -> (T, Option<P>)

    Produces this punctuated pair as a tuple of syntax tree node and optional following punctuation.

    -

    Trait Implementations§

    source§

    impl<T, P> Clone for Pair<T, P>where - T: Clone, - P: Clone,

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T, P> Extend<Pair<T, P>> for Punctuated<T, P>

    source§

    fn extend<I: IntoIterator<Item = Pair<T, P>>>(&mut self, i: I)

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, item: A)

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    source§

    impl<T, P> FromIterator<Pair<T, P>> for Punctuated<T, P>

    source§

    fn from_iter<I: IntoIterator<Item = Pair<T, P>>>(i: I) -> Self

    Creates a value from an iterator. Read more
    source§

    impl<T, P> ToTokens for Pair<T, P>where +

    source§

    impl<T, P> Pair<&T, &P>

    source

    pub fn cloned(self) -> Pair<T, P>
    where + T: Clone, + P: Clone,

    Trait Implementations§

    source§

    impl<T, P> Clone for Pair<T, P>
    where + T: Clone, + P: Clone,

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T, P> Extend<Pair<T, P>> for Punctuated<T, P>
    where + P: Default,

    source§

    fn extend<I: IntoIterator<Item = Pair<T, P>>>(&mut self, i: I)

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, item: A)

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    source§

    impl<T, P> FromIterator<Pair<T, P>> for Punctuated<T, P>

    source§

    fn from_iter<I: IntoIterator<Item = Pair<T, P>>>(i: I) -> Self

    Creates a value from an iterator. Read more
    source§

    impl<T, P> ToTokens for Pair<T, P>
    where T: ToTokens, - P: ToTokens,

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    §

    impl<T, P> RefUnwindSafe for Pair<T, P>where - P: RefUnwindSafe, - T: RefUnwindSafe,

    §

    impl<T, P> Send for Pair<T, P>where - P: Send, - T: Send,

    §

    impl<T, P> Sync for Pair<T, P>where - P: Sync, - T: Sync,

    §

    impl<T, P> Unpin for Pair<T, P>where - P: Unpin, - T: Unpin,

    §

    impl<T, P> UnwindSafe for Pair<T, P>where - P: UnwindSafe, - T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    + P: ToTokens,
    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl<T, P> Copy for Pair<T, P>
    where + T: Copy, + P: Copy,

    Auto Trait Implementations§

    §

    impl<T, P> Freeze for Pair<T, P>
    where + T: Freeze, + P: Freeze,

    §

    impl<T, P> RefUnwindSafe for Pair<T, P>
    where + T: RefUnwindSafe, + P: RefUnwindSafe,

    §

    impl<T, P> Send for Pair<T, P>
    where + T: Send, + P: Send,

    §

    impl<T, P> Sync for Pair<T, P>
    where + T: Sync, + P: Sync,

    §

    impl<T, P> Unpin for Pair<T, P>
    where + T: Unpin, + P: Unpin,

    §

    impl<T, P> UnwindSafe for Pair<T, P>
    where + T: UnwindSafe, + P: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/punctuated/index.html b/syn/punctuated/index.html index 436a36f..65be927 100644 --- a/syn/punctuated/index.html +++ b/syn/punctuated/index.html @@ -1,4 +1,4 @@ -syn::punctuated - Rust

    Module syn::punctuated

    source ·
    Expand description

    A punctuated sequence of syntax tree nodes separated by punctuation.

    +syn::punctuated - Rust
    syn

    Module punctuated

    source
    Expand description

    A punctuated sequence of syntax tree nodes separated by punctuation.

    Lots of things in Rust are punctuated sequences.

    Structs

    • An iterator over owned values of type T.
    • An iterator over owned pairs of type Pair<T, P>.
    • An iterator over borrowed values of type &T.
    • An iterator over mutably borrowed values of type &mut T.
    • An iterator over borrowed pairs of type Pair<&T, &P>.
    • An iterator over mutably borrowed pairs of type Pair<&mut T, &mut P>.
    • A punctuated sequence of syntax tree nodes of type T separated by -punctuation of type P.

    Enums

    • A single syntax tree node of type T followed by its trailing punctuation + ~~~~^ ~~~~^ ~~~~

    Structs§

    • An iterator over owned values of type T.
    • An iterator over owned pairs of type Pair<T, P>.
    • An iterator over borrowed values of type &T.
    • An iterator over mutably borrowed values of type &mut T.
    • An iterator over borrowed pairs of type Pair<&T, &P>.
    • An iterator over mutably borrowed pairs of type Pair<&mut T, &mut P>.
    • A punctuated sequence of syntax tree nodes of type T separated by +punctuation of type P.

    Enums§

    • A single syntax tree node of type T followed by its trailing punctuation of type P if any.
    \ No newline at end of file diff --git a/syn/punctuated/struct.IntoIter.html b/syn/punctuated/struct.IntoIter.html index 211714d..6402e5c 100644 --- a/syn/punctuated/struct.IntoIter.html +++ b/syn/punctuated/struct.IntoIter.html @@ -1,216 +1,215 @@ -IntoIter in syn::punctuated - Rust

    Struct syn::punctuated::IntoIter

    source ·
    pub struct IntoIter<T> { /* private fields */ }
    Expand description

    An iterator over owned values of type T.

    +IntoIter in syn::punctuated - Rust
    syn::punctuated

    Struct IntoIter

    source
    pub struct IntoIter<T> { /* private fields */ }
    Expand description

    An iterator over owned values of type T.

    Refer to the module documentation for details about punctuated sequences.

    -

    Trait Implementations§

    source§

    impl<T> Clone for IntoIter<T>where - T: Clone,

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T> DoubleEndedIterator for IntoIter<T>

    source§

    fn next_back(&mut self) -> Option<Self::Item>

    Removes and returns an element from the end of the iterator. Read more
    source§

    fn advance_back_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator from the back by n elements. Read more
    1.37.0 · source§

    fn nth_back(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element from the end of the iterator. Read more
    1.27.0 · source§

    fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> Rwhere - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    This is the reverse version of Iterator::try_fold(): it takes -elements starting from the back of the iterator. Read more
    1.27.0 · source§

    fn rfold<B, F>(self, init: B, f: F) -> Bwhere - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    An iterator method that reduces the iterator’s elements to a single, -final value, starting from the back. Read more
    1.27.0 · source§

    fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator from the back that satisfies a predicate. Read more
    source§

    impl<T> ExactSizeIterator for IntoIter<T>

    source§

    fn len(&self) -> usize

    Returns the exact remaining length of the iterator. Read more
    source§

    fn is_empty(&self) -> bool

    🔬This is a nightly-only experimental API. (exact_size_is_empty)
    Returns true if the iterator is empty. Read more
    source§

    impl<T> Iterator for IntoIter<T>

    §

    type Item = T

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn next_chunk<const N: usize>( - &mut self -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn count(self) -> usizewhere - Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>where - Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>where - Self: Sized,

    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where - Self: Sized, - U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where - Self: Sized, - G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>where - Self: Sized, - F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each -element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)where - Self: Sized, - F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>where - Self: Sized,

    Creates an iterator which gives the current iteration count as well as -the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>where - Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods +

    Trait Implementations§

    source§

    impl<T> Clone for IntoIter<T>
    where + T: Clone,

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T> DoubleEndedIterator for IntoIter<T>

    source§

    fn next_back(&mut self) -> Option<Self::Item>

    Removes and returns an element from the end of the iterator. Read more
    source§

    fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator from the back by n elements. Read more
    1.37.0 · source§

    fn nth_back(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element from the end of the iterator. Read more
    1.27.0 · source§

    fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
    where + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

    This is the reverse version of Iterator::try_fold(): it takes +elements starting from the back of the iterator. Read more
    1.27.0 · source§

    fn rfold<B, F>(self, init: B, f: F) -> B
    where + Self: Sized, + F: FnMut(B, Self::Item) -> B,

    An iterator method that reduces the iterator’s elements to a single, +final value, starting from the back. Read more
    1.27.0 · source§

    fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator from the back that satisfies a predicate. Read more
    source§

    impl<T> ExactSizeIterator for IntoIter<T>

    source§

    fn len(&self) -> usize

    Returns the exact remaining length of the iterator. Read more
    source§

    fn is_empty(&self) -> bool

    🔬This is a nightly-only experimental API. (exact_size_is_empty)
    Returns true if the iterator is empty. Read more
    source§

    impl<T> Iterator for IntoIter<T>

    source§

    type Item = T

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn next_chunk<const N: usize>( + &mut self, +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where + Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>
    where + Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where + Self: Sized,

    Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where + Self: Sized, + U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where + Self: Sized, + G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where + Self: Sized, + F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each +element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where + Self: Sized, + F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where + Self: Sized,

    Creates an iterator which gives the current iteration count as well as +the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where + Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>where - Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>where - Self: Sized,

    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>where - Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>where - Self: Sized, - F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Selfwhere - Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> Bwhere - B: FromIterator<Self::Item>, - Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere - E: Extend<Self::Item>, - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn partition_in_place<'a, T, P>(self, predicate: P) -> usizewhere +their documentation for more information. Read more

    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where + Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where + Self: Sized,

    Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where + Self: Sized, + F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over +self and returns an iterator over the outputs of f. Like slice::windows(), +the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where + Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where + Self: Sized, + F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where + Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where + B: FromIterator<Self::Item>, + Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where + E: Extend<Self::Item>, + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn partition_in_place<'a, T, P>(self, predicate: P) -> usize
    where T: 'a, - Self: Sized + DoubleEndedIterator<Item = &'a mut T>, - P: FnMut(&T) -> bool,

    🔬This is a nightly-only experimental API. (iter_partition_in_place)
    Reorders the elements of this iterator in-place according to the given predicate, + Self: Sized + DoubleEndedIterator<Item = &'a mut T>, + P: FnMut(&T) -> bool,
    🔬This is a nightly-only experimental API. (iter_partition_in_place)
    Reorders the elements of this iterator in-place according to the given predicate, such that all those that return true precede all those that return false. -Returns the number of true elements found. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> boolwhere - Self: Sized, - P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> Rwhere - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> Bwhere - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, -returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
    source§

    fn try_reduce<F, R>( +Returns the number of true elements found. Read more

    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where + Self: Sized, + P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

    An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where + Self: Sized, + F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, +returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
    source§

    fn try_reduce<R>( &mut self, - f: F -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> R, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> boolwhere - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> boolwhere - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns -the first non-none result. Read more
    source§

    fn try_find<F, R>( + f: impl FnMut(Self::Item, Self::Item) -> R, +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where + Self: Sized, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns +the first non-none result. Read more
    source§

    fn try_find<R>( &mut self, - f: F -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere - Self: Sized, - F: FnMut(&Self::Item) -> R, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns -the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.0.0 · source§

    fn rposition<P>(&mut self, predicate: P) -> Option<usize>where - P: FnMut(Self::Item) -> bool, - Self: Sized + ExactSizeIterator + DoubleEndedIterator,

    Searches for an element in an iterator from the right, returning its -index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the -specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the -specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
    1.0.0 · source§

    fn rev(self) -> Rev<Self>where - Self: Sized + DoubleEndedIterator,

    Reverses an iterator’s direction. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> Swhere - Self: Sized, - S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> Pwhere - Self: Sized, - P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit + f: impl FnMut(&Self::Item) -> R, +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where + Self: Sized, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,
    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns +the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where + Self: Sized, + P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.0.0 · source§

    fn rposition<P>(&mut self, predicate: P) -> Option<usize>
    where + P: FnMut(Self::Item) -> bool, + Self: Sized + ExactSizeIterator + DoubleEndedIterator,

    Searches for an element in an iterator from the right, returning its +index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the +specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the +specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
    1.0.0 · source§

    fn rev(self) -> Rev<Self>
    where + Self: Sized + DoubleEndedIterator,

    Reverses an iterator’s direction. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where + Self: Sized, + S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where + Self: Sized, + P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are equal to those of -another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are not equal to those of -another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
    source§

    fn is_sorted_by<F>(self, compare: F) -> boolwhere - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    source§

    fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd<K>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

    Auto Trait Implementations§

    §

    impl<T> RefUnwindSafe for IntoIter<T>where - T: RefUnwindSafe,

    §

    impl<T> Send for IntoIter<T>where - T: Send,

    §

    impl<T> Sync for IntoIter<T>where - T: Sync,

    §

    impl<T> Unpin for IntoIter<T>where - T: Unpin,

    §

    impl<T> UnwindSafe for IntoIter<T>where - T: UnwindSafe + RefUnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are equal to those of +another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are not equal to those of +another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
    1.82.0 · source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> bool,

    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    1.82.0 · source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd,

    Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

    Auto Trait Implementations§

    §

    impl<T> Freeze for IntoIter<T>

    §

    impl<T> RefUnwindSafe for IntoIter<T>
    where + T: RefUnwindSafe,

    §

    impl<T> Send for IntoIter<T>
    where + T: Send,

    §

    impl<T> Sync for IntoIter<T>
    where + T: Sync,

    §

    impl<T> Unpin for IntoIter<T>
    where + T: Unpin,

    §

    impl<T> UnwindSafe for IntoIter<T>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<I> IntoIterator for Iwhere - I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<I> IntoIterator for I
    where + I: Iterator,

    source§

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    source§

    type IntoIter = I

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/punctuated/struct.IntoPairs.html b/syn/punctuated/struct.IntoPairs.html index b59f218..73717c3 100644 --- a/syn/punctuated/struct.IntoPairs.html +++ b/syn/punctuated/struct.IntoPairs.html @@ -1,222 +1,222 @@ -IntoPairs in syn::punctuated - Rust

    Struct syn::punctuated::IntoPairs

    source ·
    pub struct IntoPairs<T, P> { /* private fields */ }
    Expand description

    An iterator over owned pairs of type Pair<T, P>.

    +IntoPairs in syn::punctuated - Rust
    syn::punctuated

    Struct IntoPairs

    source
    pub struct IntoPairs<T, P> { /* private fields */ }
    Expand description

    An iterator over owned pairs of type Pair<T, P>.

    Refer to the module documentation for details about punctuated sequences.

    -

    Trait Implementations§

    source§

    impl<T, P> Clone for IntoPairs<T, P>where - T: Clone, - P: Clone,

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T, P> DoubleEndedIterator for IntoPairs<T, P>

    source§

    fn next_back(&mut self) -> Option<Self::Item>

    Removes and returns an element from the end of the iterator. Read more
    source§

    fn advance_back_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator from the back by n elements. Read more
    1.37.0 · source§

    fn nth_back(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element from the end of the iterator. Read more
    1.27.0 · source§

    fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> Rwhere - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    This is the reverse version of Iterator::try_fold(): it takes -elements starting from the back of the iterator. Read more
    1.27.0 · source§

    fn rfold<B, F>(self, init: B, f: F) -> Bwhere - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    An iterator method that reduces the iterator’s elements to a single, -final value, starting from the back. Read more
    1.27.0 · source§

    fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator from the back that satisfies a predicate. Read more
    source§

    impl<T, P> ExactSizeIterator for IntoPairs<T, P>

    source§

    fn len(&self) -> usize

    Returns the exact remaining length of the iterator. Read more
    source§

    fn is_empty(&self) -> bool

    🔬This is a nightly-only experimental API. (exact_size_is_empty)
    Returns true if the iterator is empty. Read more
    source§

    impl<T, P> Iterator for IntoPairs<T, P>

    §

    type Item = Pair<T, P>

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn next_chunk<const N: usize>( - &mut self -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn count(self) -> usizewhere - Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>where - Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>where - Self: Sized,

    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where - Self: Sized, - U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where - Self: Sized, - G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>where - Self: Sized, - F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each -element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)where - Self: Sized, - F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>where - Self: Sized,

    Creates an iterator which gives the current iteration count as well as -the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>where - Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods +

    Trait Implementations§

    source§

    impl<T, P> Clone for IntoPairs<T, P>
    where + T: Clone, + P: Clone,

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T, P> DoubleEndedIterator for IntoPairs<T, P>

    source§

    fn next_back(&mut self) -> Option<Self::Item>

    Removes and returns an element from the end of the iterator. Read more
    source§

    fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator from the back by n elements. Read more
    1.37.0 · source§

    fn nth_back(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element from the end of the iterator. Read more
    1.27.0 · source§

    fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
    where + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

    This is the reverse version of Iterator::try_fold(): it takes +elements starting from the back of the iterator. Read more
    1.27.0 · source§

    fn rfold<B, F>(self, init: B, f: F) -> B
    where + Self: Sized, + F: FnMut(B, Self::Item) -> B,

    An iterator method that reduces the iterator’s elements to a single, +final value, starting from the back. Read more
    1.27.0 · source§

    fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator from the back that satisfies a predicate. Read more
    source§

    impl<T, P> ExactSizeIterator for IntoPairs<T, P>

    source§

    fn len(&self) -> usize

    Returns the exact remaining length of the iterator. Read more
    source§

    fn is_empty(&self) -> bool

    🔬This is a nightly-only experimental API. (exact_size_is_empty)
    Returns true if the iterator is empty. Read more
    source§

    impl<T, P> Iterator for IntoPairs<T, P>

    source§

    type Item = Pair<T, P>

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn next_chunk<const N: usize>( + &mut self, +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where + Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>
    where + Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where + Self: Sized,

    Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where + Self: Sized, + U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where + Self: Sized, + G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where + Self: Sized, + F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each +element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where + Self: Sized, + F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where + Self: Sized,

    Creates an iterator which gives the current iteration count as well as +the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where + Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>where - Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>where - Self: Sized,

    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>where - Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>where - Self: Sized, - F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Selfwhere - Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> Bwhere - B: FromIterator<Self::Item>, - Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere - E: Extend<Self::Item>, - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn partition_in_place<'a, T, P>(self, predicate: P) -> usizewhere +their documentation for more information. Read more

    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where + Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where + Self: Sized,

    Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where + Self: Sized, + F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over +self and returns an iterator over the outputs of f. Like slice::windows(), +the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where + Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where + Self: Sized, + F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where + Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where + B: FromIterator<Self::Item>, + Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where + E: Extend<Self::Item>, + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn partition_in_place<'a, T, P>(self, predicate: P) -> usize
    where T: 'a, - Self: Sized + DoubleEndedIterator<Item = &'a mut T>, - P: FnMut(&T) -> bool,

    🔬This is a nightly-only experimental API. (iter_partition_in_place)
    Reorders the elements of this iterator in-place according to the given predicate, + Self: Sized + DoubleEndedIterator<Item = &'a mut T>, + P: FnMut(&T) -> bool,
    🔬This is a nightly-only experimental API. (iter_partition_in_place)
    Reorders the elements of this iterator in-place according to the given predicate, such that all those that return true precede all those that return false. -Returns the number of true elements found. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> boolwhere - Self: Sized, - P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> Rwhere - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> Bwhere - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, -returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
    source§

    fn try_reduce<F, R>( +Returns the number of true elements found. Read more

    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where + Self: Sized, + P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

    An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where + Self: Sized, + F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, +returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
    source§

    fn try_reduce<R>( &mut self, - f: F -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> R, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> boolwhere - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> boolwhere - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns -the first non-none result. Read more
    source§

    fn try_find<F, R>( + f: impl FnMut(Self::Item, Self::Item) -> R, +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where + Self: Sized, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns +the first non-none result. Read more
    source§

    fn try_find<R>( &mut self, - f: F -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere - Self: Sized, - F: FnMut(&Self::Item) -> R, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns -the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.0.0 · source§

    fn rposition<P>(&mut self, predicate: P) -> Option<usize>where - P: FnMut(Self::Item) -> bool, - Self: Sized + ExactSizeIterator + DoubleEndedIterator,

    Searches for an element in an iterator from the right, returning its -index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the -specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the -specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
    1.0.0 · source§

    fn rev(self) -> Rev<Self>where - Self: Sized + DoubleEndedIterator,

    Reverses an iterator’s direction. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> Swhere - Self: Sized, - S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> Pwhere - Self: Sized, - P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit + f: impl FnMut(&Self::Item) -> R, +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where + Self: Sized, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,
    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns +the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where + Self: Sized, + P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.0.0 · source§

    fn rposition<P>(&mut self, predicate: P) -> Option<usize>
    where + P: FnMut(Self::Item) -> bool, + Self: Sized + ExactSizeIterator + DoubleEndedIterator,

    Searches for an element in an iterator from the right, returning its +index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the +specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the +specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
    1.0.0 · source§

    fn rev(self) -> Rev<Self>
    where + Self: Sized + DoubleEndedIterator,

    Reverses an iterator’s direction. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where + Self: Sized, + S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where + Self: Sized, + P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are equal to those of -another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are not equal to those of -another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
    source§

    fn is_sorted_by<F>(self, compare: F) -> boolwhere - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    source§

    fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd<K>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

    Auto Trait Implementations§

    §

    impl<T, P> RefUnwindSafe for IntoPairs<T, P>where - P: RefUnwindSafe, - T: RefUnwindSafe,

    §

    impl<T, P> Send for IntoPairs<T, P>where - P: Send, - T: Send,

    §

    impl<T, P> Sync for IntoPairs<T, P>where - P: Sync, - T: Sync,

    §

    impl<T, P> Unpin for IntoPairs<T, P>where - P: Unpin, - T: Unpin,

    §

    impl<T, P> UnwindSafe for IntoPairs<T, P>where - P: UnwindSafe + RefUnwindSafe, - T: UnwindSafe + RefUnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are equal to those of +another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are not equal to those of +another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
    1.82.0 · source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> bool,

    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    1.82.0 · source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd,

    Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

    Auto Trait Implementations§

    §

    impl<T, P> Freeze for IntoPairs<T, P>
    where + T: Freeze,

    §

    impl<T, P> RefUnwindSafe for IntoPairs<T, P>
    where + T: RefUnwindSafe, + P: RefUnwindSafe,

    §

    impl<T, P> Send for IntoPairs<T, P>
    where + T: Send, + P: Send,

    §

    impl<T, P> Sync for IntoPairs<T, P>
    where + T: Sync, + P: Sync,

    §

    impl<T, P> Unpin for IntoPairs<T, P>
    where + T: Unpin, + P: Unpin,

    §

    impl<T, P> UnwindSafe for IntoPairs<T, P>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<I> IntoIterator for Iwhere - I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<I> IntoIterator for I
    where + I: Iterator,

    source§

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    source§

    type IntoIter = I

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/punctuated/struct.Iter.html b/syn/punctuated/struct.Iter.html index 91349df..0d1ad97 100644 --- a/syn/punctuated/struct.Iter.html +++ b/syn/punctuated/struct.Iter.html @@ -1,211 +1,210 @@ -Iter in syn::punctuated - Rust

    Struct syn::punctuated::Iter

    source ·
    pub struct Iter<'a, T: 'a> { /* private fields */ }
    Expand description

    An iterator over borrowed values of type &T.

    +Iter in syn::punctuated - Rust
    syn::punctuated

    Struct Iter

    source
    pub struct Iter<'a, T: 'a> { /* private fields */ }
    Expand description

    An iterator over borrowed values of type &T.

    Refer to the module documentation for details about punctuated sequences.

    -

    Trait Implementations§

    source§

    impl<'a, T> Clone for Iter<'a, T>

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a, T> DoubleEndedIterator for Iter<'a, T>

    source§

    fn next_back(&mut self) -> Option<Self::Item>

    Removes and returns an element from the end of the iterator. Read more
    source§

    fn advance_back_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator from the back by n elements. Read more
    1.37.0 · source§

    fn nth_back(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element from the end of the iterator. Read more
    1.27.0 · source§

    fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> Rwhere - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    This is the reverse version of Iterator::try_fold(): it takes -elements starting from the back of the iterator. Read more
    1.27.0 · source§

    fn rfold<B, F>(self, init: B, f: F) -> Bwhere - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    An iterator method that reduces the iterator’s elements to a single, -final value, starting from the back. Read more
    1.27.0 · source§

    fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator from the back that satisfies a predicate. Read more
    source§

    impl<'a, T> ExactSizeIterator for Iter<'a, T>

    source§

    fn len(&self) -> usize

    Returns the exact remaining length of the iterator. Read more
    source§

    fn is_empty(&self) -> bool

    🔬This is a nightly-only experimental API. (exact_size_is_empty)
    Returns true if the iterator is empty. Read more
    source§

    impl<'a, T> Iterator for Iter<'a, T>

    §

    type Item = &'a T

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn next_chunk<const N: usize>( - &mut self -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn count(self) -> usizewhere - Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>where - Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>where - Self: Sized,

    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where - Self: Sized, - U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where - Self: Sized, - G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>where - Self: Sized, - F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each -element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)where - Self: Sized, - F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>where - Self: Sized,

    Creates an iterator which gives the current iteration count as well as -the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>where - Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods +

    Trait Implementations§

    source§

    impl<'a, T> Clone for Iter<'a, T>

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a, T> DoubleEndedIterator for Iter<'a, T>

    source§

    fn next_back(&mut self) -> Option<Self::Item>

    Removes and returns an element from the end of the iterator. Read more
    source§

    fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator from the back by n elements. Read more
    1.37.0 · source§

    fn nth_back(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element from the end of the iterator. Read more
    1.27.0 · source§

    fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
    where + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

    This is the reverse version of Iterator::try_fold(): it takes +elements starting from the back of the iterator. Read more
    1.27.0 · source§

    fn rfold<B, F>(self, init: B, f: F) -> B
    where + Self: Sized, + F: FnMut(B, Self::Item) -> B,

    An iterator method that reduces the iterator’s elements to a single, +final value, starting from the back. Read more
    1.27.0 · source§

    fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator from the back that satisfies a predicate. Read more
    source§

    impl<'a, T> ExactSizeIterator for Iter<'a, T>

    source§

    fn len(&self) -> usize

    Returns the exact remaining length of the iterator. Read more
    source§

    fn is_empty(&self) -> bool

    🔬This is a nightly-only experimental API. (exact_size_is_empty)
    Returns true if the iterator is empty. Read more
    source§

    impl<'a, T> Iterator for Iter<'a, T>

    source§

    type Item = &'a T

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn next_chunk<const N: usize>( + &mut self, +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where + Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>
    where + Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where + Self: Sized,

    Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where + Self: Sized, + U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where + Self: Sized, + G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where + Self: Sized, + F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each +element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where + Self: Sized, + F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where + Self: Sized,

    Creates an iterator which gives the current iteration count as well as +the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where + Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>where - Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>where - Self: Sized,

    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>where - Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>where - Self: Sized, - F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Selfwhere - Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> Bwhere - B: FromIterator<Self::Item>, - Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere - E: Extend<Self::Item>, - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn partition_in_place<'a, T, P>(self, predicate: P) -> usizewhere +their documentation for more information. Read more

    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where + Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where + Self: Sized,

    Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where + Self: Sized, + F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over +self and returns an iterator over the outputs of f. Like slice::windows(), +the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where + Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where + Self: Sized, + F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where + Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where + B: FromIterator<Self::Item>, + Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where + E: Extend<Self::Item>, + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn partition_in_place<'a, T, P>(self, predicate: P) -> usize
    where T: 'a, - Self: Sized + DoubleEndedIterator<Item = &'a mut T>, - P: FnMut(&T) -> bool,

    🔬This is a nightly-only experimental API. (iter_partition_in_place)
    Reorders the elements of this iterator in-place according to the given predicate, + Self: Sized + DoubleEndedIterator<Item = &'a mut T>, + P: FnMut(&T) -> bool,
    🔬This is a nightly-only experimental API. (iter_partition_in_place)
    Reorders the elements of this iterator in-place according to the given predicate, such that all those that return true precede all those that return false. -Returns the number of true elements found. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> boolwhere - Self: Sized, - P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> Rwhere - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> Bwhere - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, -returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
    source§

    fn try_reduce<F, R>( +Returns the number of true elements found. Read more

    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where + Self: Sized, + P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

    An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where + Self: Sized, + F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, +returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
    source§

    fn try_reduce<R>( &mut self, - f: F -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> R, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> boolwhere - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> boolwhere - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns -the first non-none result. Read more
    source§

    fn try_find<F, R>( + f: impl FnMut(Self::Item, Self::Item) -> R, +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where + Self: Sized, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns +the first non-none result. Read more
    source§

    fn try_find<R>( &mut self, - f: F -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere - Self: Sized, - F: FnMut(&Self::Item) -> R, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns -the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.0.0 · source§

    fn rposition<P>(&mut self, predicate: P) -> Option<usize>where - P: FnMut(Self::Item) -> bool, - Self: Sized + ExactSizeIterator + DoubleEndedIterator,

    Searches for an element in an iterator from the right, returning its -index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the -specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the -specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
    1.0.0 · source§

    fn rev(self) -> Rev<Self>where - Self: Sized + DoubleEndedIterator,

    Reverses an iterator’s direction. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    1.0.0 · source§

    fn cycle(self) -> Cycle<Self>where - Self: Sized + Clone,

    Repeats an iterator endlessly. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> Swhere - Self: Sized, - S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> Pwhere - Self: Sized, - P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit + f: impl FnMut(&Self::Item) -> R, +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where + Self: Sized, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,
    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns +the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where + Self: Sized, + P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.0.0 · source§

    fn rposition<P>(&mut self, predicate: P) -> Option<usize>
    where + P: FnMut(Self::Item) -> bool, + Self: Sized + ExactSizeIterator + DoubleEndedIterator,

    Searches for an element in an iterator from the right, returning its +index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the +specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the +specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
    1.0.0 · source§

    fn rev(self) -> Rev<Self>
    where + Self: Sized + DoubleEndedIterator,

    Reverses an iterator’s direction. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    1.0.0 · source§

    fn cycle(self) -> Cycle<Self>
    where + Self: Sized + Clone,

    Repeats an iterator endlessly. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where + Self: Sized, + S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where + Self: Sized, + P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are equal to those of -another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are not equal to those of -another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
    source§

    fn is_sorted_by<F>(self, compare: F) -> boolwhere - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    source§

    fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd<K>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

    Auto Trait Implementations§

    §

    impl<'a, T> !RefUnwindSafe for Iter<'a, T>

    §

    impl<'a, T> !Send for Iter<'a, T>

    §

    impl<'a, T> !Sync for Iter<'a, T>

    §

    impl<'a, T> Unpin for Iter<'a, T>

    §

    impl<'a, T> !UnwindSafe for Iter<'a, T>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are equal to those of +another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are not equal to those of +another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
    1.82.0 · source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> bool,

    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    1.82.0 · source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd,

    Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

    Auto Trait Implementations§

    §

    impl<'a, T> Freeze for Iter<'a, T>

    §

    impl<'a, T> !RefUnwindSafe for Iter<'a, T>

    §

    impl<'a, T> !Send for Iter<'a, T>

    §

    impl<'a, T> !Sync for Iter<'a, T>

    §

    impl<'a, T> Unpin for Iter<'a, T>

    §

    impl<'a, T> !UnwindSafe for Iter<'a, T>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<I> IntoIterator for Iwhere - I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<I> IntoIterator for I
    where + I: Iterator,

    source§

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    source§

    type IntoIter = I

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/punctuated/struct.IterMut.html b/syn/punctuated/struct.IterMut.html index 49e3db3..2a622c8 100644 --- a/syn/punctuated/struct.IterMut.html +++ b/syn/punctuated/struct.IterMut.html @@ -1,209 +1,207 @@ -IterMut in syn::punctuated - Rust

    Struct syn::punctuated::IterMut

    source ·
    pub struct IterMut<'a, T: 'a> { /* private fields */ }
    Expand description

    An iterator over mutably borrowed values of type &mut T.

    +IterMut in syn::punctuated - Rust
    syn::punctuated

    Struct IterMut

    source
    pub struct IterMut<'a, T: 'a> { /* private fields */ }
    Expand description

    An iterator over mutably borrowed values of type &mut T.

    Refer to the module documentation for details about punctuated sequences.

    -

    Trait Implementations§

    source§

    impl<'a, T> DoubleEndedIterator for IterMut<'a, T>

    source§

    fn next_back(&mut self) -> Option<Self::Item>

    Removes and returns an element from the end of the iterator. Read more
    source§

    fn advance_back_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator from the back by n elements. Read more
    1.37.0 · source§

    fn nth_back(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element from the end of the iterator. Read more
    1.27.0 · source§

    fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> Rwhere - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    This is the reverse version of Iterator::try_fold(): it takes -elements starting from the back of the iterator. Read more
    1.27.0 · source§

    fn rfold<B, F>(self, init: B, f: F) -> Bwhere - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    An iterator method that reduces the iterator’s elements to a single, -final value, starting from the back. Read more
    1.27.0 · source§

    fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator from the back that satisfies a predicate. Read more
    source§

    impl<'a, T> ExactSizeIterator for IterMut<'a, T>

    source§

    fn len(&self) -> usize

    Returns the exact remaining length of the iterator. Read more
    source§

    fn is_empty(&self) -> bool

    🔬This is a nightly-only experimental API. (exact_size_is_empty)
    Returns true if the iterator is empty. Read more
    source§

    impl<'a, T> Iterator for IterMut<'a, T>

    §

    type Item = &'a mut T

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn next_chunk<const N: usize>( - &mut self -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn count(self) -> usizewhere - Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>where - Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>where - Self: Sized,

    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where - Self: Sized, - U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where - Self: Sized, - G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>where - Self: Sized, - F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each -element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)where - Self: Sized, - F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>where - Self: Sized,

    Creates an iterator which gives the current iteration count as well as -the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>where - Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods +

    Trait Implementations§

    source§

    impl<'a, T> DoubleEndedIterator for IterMut<'a, T>

    source§

    fn next_back(&mut self) -> Option<Self::Item>

    Removes and returns an element from the end of the iterator. Read more
    source§

    fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator from the back by n elements. Read more
    1.37.0 · source§

    fn nth_back(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element from the end of the iterator. Read more
    1.27.0 · source§

    fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
    where + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

    This is the reverse version of Iterator::try_fold(): it takes +elements starting from the back of the iterator. Read more
    1.27.0 · source§

    fn rfold<B, F>(self, init: B, f: F) -> B
    where + Self: Sized, + F: FnMut(B, Self::Item) -> B,

    An iterator method that reduces the iterator’s elements to a single, +final value, starting from the back. Read more
    1.27.0 · source§

    fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator from the back that satisfies a predicate. Read more
    source§

    impl<'a, T> ExactSizeIterator for IterMut<'a, T>

    source§

    fn len(&self) -> usize

    Returns the exact remaining length of the iterator. Read more
    source§

    fn is_empty(&self) -> bool

    🔬This is a nightly-only experimental API. (exact_size_is_empty)
    Returns true if the iterator is empty. Read more
    source§

    impl<'a, T> Iterator for IterMut<'a, T>

    source§

    type Item = &'a mut T

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn next_chunk<const N: usize>( + &mut self, +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where + Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>
    where + Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where + Self: Sized,

    Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where + Self: Sized, + U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where + Self: Sized, + G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where + Self: Sized, + F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each +element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where + Self: Sized, + F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where + Self: Sized,

    Creates an iterator which gives the current iteration count as well as +the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where + Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>where - Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>where - Self: Sized,

    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>where - Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>where - Self: Sized, - F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Selfwhere - Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> Bwhere - B: FromIterator<Self::Item>, - Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere - E: Extend<Self::Item>, - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn partition_in_place<'a, T, P>(self, predicate: P) -> usizewhere +their documentation for more information. Read more

    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where + Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where + Self: Sized,

    Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where + Self: Sized, + F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over +self and returns an iterator over the outputs of f. Like slice::windows(), +the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where + Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where + Self: Sized, + F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where + Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where + B: FromIterator<Self::Item>, + Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where + E: Extend<Self::Item>, + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn partition_in_place<'a, T, P>(self, predicate: P) -> usize
    where T: 'a, - Self: Sized + DoubleEndedIterator<Item = &'a mut T>, - P: FnMut(&T) -> bool,

    🔬This is a nightly-only experimental API. (iter_partition_in_place)
    Reorders the elements of this iterator in-place according to the given predicate, + Self: Sized + DoubleEndedIterator<Item = &'a mut T>, + P: FnMut(&T) -> bool,
    🔬This is a nightly-only experimental API. (iter_partition_in_place)
    Reorders the elements of this iterator in-place according to the given predicate, such that all those that return true precede all those that return false. -Returns the number of true elements found. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> boolwhere - Self: Sized, - P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> Rwhere - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> Bwhere - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, -returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
    source§

    fn try_reduce<F, R>( +Returns the number of true elements found. Read more

    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where + Self: Sized, + P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

    An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where + Self: Sized, + F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, +returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
    source§

    fn try_reduce<R>( &mut self, - f: F -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> R, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> boolwhere - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> boolwhere - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns -the first non-none result. Read more
    source§

    fn try_find<F, R>( + f: impl FnMut(Self::Item, Self::Item) -> R, +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where + Self: Sized, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns +the first non-none result. Read more
    source§

    fn try_find<R>( &mut self, - f: F -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere - Self: Sized, - F: FnMut(&Self::Item) -> R, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns -the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.0.0 · source§

    fn rposition<P>(&mut self, predicate: P) -> Option<usize>where - P: FnMut(Self::Item) -> bool, - Self: Sized + ExactSizeIterator + DoubleEndedIterator,

    Searches for an element in an iterator from the right, returning its -index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the -specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the -specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
    1.0.0 · source§

    fn rev(self) -> Rev<Self>where - Self: Sized + DoubleEndedIterator,

    Reverses an iterator’s direction. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> Swhere - Self: Sized, - S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> Pwhere - Self: Sized, - P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit + f: impl FnMut(&Self::Item) -> R, +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where + Self: Sized, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,
    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns +the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where + Self: Sized, + P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.0.0 · source§

    fn rposition<P>(&mut self, predicate: P) -> Option<usize>
    where + P: FnMut(Self::Item) -> bool, + Self: Sized + ExactSizeIterator + DoubleEndedIterator,

    Searches for an element in an iterator from the right, returning its +index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the +specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the +specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
    1.0.0 · source§

    fn rev(self) -> Rev<Self>
    where + Self: Sized + DoubleEndedIterator,

    Reverses an iterator’s direction. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where + Self: Sized, + S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where + Self: Sized, + P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are equal to those of -another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are not equal to those of -another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
    source§

    fn is_sorted_by<F>(self, compare: F) -> boolwhere - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    source§

    fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd<K>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

    Auto Trait Implementations§

    §

    impl<'a, T> !RefUnwindSafe for IterMut<'a, T>

    §

    impl<'a, T> !Send for IterMut<'a, T>

    §

    impl<'a, T> !Sync for IterMut<'a, T>

    §

    impl<'a, T> Unpin for IterMut<'a, T>

    §

    impl<'a, T> !UnwindSafe for IterMut<'a, T>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are equal to those of +another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are not equal to those of +another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
    1.82.0 · source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> bool,

    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    1.82.0 · source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd,

    Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

    Auto Trait Implementations§

    §

    impl<'a, T> Freeze for IterMut<'a, T>

    §

    impl<'a, T> !RefUnwindSafe for IterMut<'a, T>

    §

    impl<'a, T> !Send for IterMut<'a, T>

    §

    impl<'a, T> !Sync for IterMut<'a, T>

    §

    impl<'a, T> Unpin for IterMut<'a, T>

    §

    impl<'a, T> !UnwindSafe for IterMut<'a, T>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<I> IntoIterator for Iwhere - I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<I> IntoIterator for I
    where + I: Iterator,

    source§

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    source§

    type IntoIter = I

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/punctuated/struct.Pairs.html b/syn/punctuated/struct.Pairs.html index 79b5527..b5bcbad 100644 --- a/syn/punctuated/struct.Pairs.html +++ b/syn/punctuated/struct.Pairs.html @@ -1,219 +1,218 @@ -Pairs in syn::punctuated - Rust

    Struct syn::punctuated::Pairs

    source ·
    pub struct Pairs<'a, T: 'a, P: 'a> { /* private fields */ }
    Expand description

    An iterator over borrowed pairs of type Pair<&T, &P>.

    +Pairs in syn::punctuated - Rust
    syn::punctuated

    Struct Pairs

    source
    pub struct Pairs<'a, T: 'a, P: 'a> { /* private fields */ }
    Expand description

    An iterator over borrowed pairs of type Pair<&T, &P>.

    Refer to the module documentation for details about punctuated sequences.

    -

    Trait Implementations§

    source§

    impl<'a, T, P> Clone for Pairs<'a, T, P>

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a, T, P> DoubleEndedIterator for Pairs<'a, T, P>

    source§

    fn next_back(&mut self) -> Option<Self::Item>

    Removes and returns an element from the end of the iterator. Read more
    source§

    fn advance_back_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator from the back by n elements. Read more
    1.37.0 · source§

    fn nth_back(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element from the end of the iterator. Read more
    1.27.0 · source§

    fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> Rwhere - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    This is the reverse version of Iterator::try_fold(): it takes -elements starting from the back of the iterator. Read more
    1.27.0 · source§

    fn rfold<B, F>(self, init: B, f: F) -> Bwhere - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    An iterator method that reduces the iterator’s elements to a single, -final value, starting from the back. Read more
    1.27.0 · source§

    fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator from the back that satisfies a predicate. Read more
    source§

    impl<'a, T, P> ExactSizeIterator for Pairs<'a, T, P>

    source§

    fn len(&self) -> usize

    Returns the exact remaining length of the iterator. Read more
    source§

    fn is_empty(&self) -> bool

    🔬This is a nightly-only experimental API. (exact_size_is_empty)
    Returns true if the iterator is empty. Read more
    source§

    impl<'a, T, P> Iterator for Pairs<'a, T, P>

    §

    type Item = Pair<&'a T, &'a P>

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn next_chunk<const N: usize>( - &mut self -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn count(self) -> usizewhere - Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>where - Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>where - Self: Sized,

    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where - Self: Sized, - U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where - Self: Sized, - G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>where - Self: Sized, - F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each -element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)where - Self: Sized, - F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>where - Self: Sized,

    Creates an iterator which gives the current iteration count as well as -the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>where - Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods +

    Trait Implementations§

    source§

    impl<'a, T, P> Clone for Pairs<'a, T, P>

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a, T, P> DoubleEndedIterator for Pairs<'a, T, P>

    source§

    fn next_back(&mut self) -> Option<Self::Item>

    Removes and returns an element from the end of the iterator. Read more
    source§

    fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator from the back by n elements. Read more
    1.37.0 · source§

    fn nth_back(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element from the end of the iterator. Read more
    1.27.0 · source§

    fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
    where + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

    This is the reverse version of Iterator::try_fold(): it takes +elements starting from the back of the iterator. Read more
    1.27.0 · source§

    fn rfold<B, F>(self, init: B, f: F) -> B
    where + Self: Sized, + F: FnMut(B, Self::Item) -> B,

    An iterator method that reduces the iterator’s elements to a single, +final value, starting from the back. Read more
    1.27.0 · source§

    fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator from the back that satisfies a predicate. Read more
    source§

    impl<'a, T, P> ExactSizeIterator for Pairs<'a, T, P>

    source§

    fn len(&self) -> usize

    Returns the exact remaining length of the iterator. Read more
    source§

    fn is_empty(&self) -> bool

    🔬This is a nightly-only experimental API. (exact_size_is_empty)
    Returns true if the iterator is empty. Read more
    source§

    impl<'a, T, P> Iterator for Pairs<'a, T, P>

    source§

    type Item = Pair<&'a T, &'a P>

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn next_chunk<const N: usize>( + &mut self, +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where + Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>
    where + Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where + Self: Sized,

    Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where + Self: Sized, + U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where + Self: Sized, + G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where + Self: Sized, + F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each +element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where + Self: Sized, + F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where + Self: Sized,

    Creates an iterator which gives the current iteration count as well as +the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where + Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>where - Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>where - Self: Sized,

    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>where - Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>where - Self: Sized, - F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Selfwhere - Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> Bwhere - B: FromIterator<Self::Item>, - Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere - E: Extend<Self::Item>, - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn partition_in_place<'a, T, P>(self, predicate: P) -> usizewhere +their documentation for more information. Read more

    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where + Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where + Self: Sized,

    Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where + Self: Sized, + F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over +self and returns an iterator over the outputs of f. Like slice::windows(), +the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where + Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where + Self: Sized, + F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where + Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where + B: FromIterator<Self::Item>, + Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where + E: Extend<Self::Item>, + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn partition_in_place<'a, T, P>(self, predicate: P) -> usize
    where T: 'a, - Self: Sized + DoubleEndedIterator<Item = &'a mut T>, - P: FnMut(&T) -> bool,

    🔬This is a nightly-only experimental API. (iter_partition_in_place)
    Reorders the elements of this iterator in-place according to the given predicate, + Self: Sized + DoubleEndedIterator<Item = &'a mut T>, + P: FnMut(&T) -> bool,
    🔬This is a nightly-only experimental API. (iter_partition_in_place)
    Reorders the elements of this iterator in-place according to the given predicate, such that all those that return true precede all those that return false. -Returns the number of true elements found. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> boolwhere - Self: Sized, - P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> Rwhere - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> Bwhere - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, -returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
    source§

    fn try_reduce<F, R>( +Returns the number of true elements found. Read more

    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where + Self: Sized, + P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

    An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where + Self: Sized, + F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, +returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
    source§

    fn try_reduce<R>( &mut self, - f: F -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> R, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> boolwhere - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> boolwhere - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns -the first non-none result. Read more
    source§

    fn try_find<F, R>( + f: impl FnMut(Self::Item, Self::Item) -> R, +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where + Self: Sized, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns +the first non-none result. Read more
    source§

    fn try_find<R>( &mut self, - f: F -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere - Self: Sized, - F: FnMut(&Self::Item) -> R, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns -the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.0.0 · source§

    fn rposition<P>(&mut self, predicate: P) -> Option<usize>where - P: FnMut(Self::Item) -> bool, - Self: Sized + ExactSizeIterator + DoubleEndedIterator,

    Searches for an element in an iterator from the right, returning its -index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the -specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the -specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
    1.0.0 · source§

    fn rev(self) -> Rev<Self>where - Self: Sized + DoubleEndedIterator,

    Reverses an iterator’s direction. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    1.0.0 · source§

    fn cycle(self) -> Cycle<Self>where - Self: Sized + Clone,

    Repeats an iterator endlessly. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> Swhere - Self: Sized, - S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> Pwhere - Self: Sized, - P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit + f: impl FnMut(&Self::Item) -> R, +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where + Self: Sized, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,
    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns +the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where + Self: Sized, + P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.0.0 · source§

    fn rposition<P>(&mut self, predicate: P) -> Option<usize>
    where + P: FnMut(Self::Item) -> bool, + Self: Sized + ExactSizeIterator + DoubleEndedIterator,

    Searches for an element in an iterator from the right, returning its +index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the +specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the +specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
    1.0.0 · source§

    fn rev(self) -> Rev<Self>
    where + Self: Sized + DoubleEndedIterator,

    Reverses an iterator’s direction. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    1.0.0 · source§

    fn cycle(self) -> Cycle<Self>
    where + Self: Sized + Clone,

    Repeats an iterator endlessly. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where + Self: Sized, + S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where + Self: Sized, + P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are equal to those of -another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are not equal to those of -another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
    source§

    fn is_sorted_by<F>(self, compare: F) -> boolwhere - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    source§

    fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd<K>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

    Auto Trait Implementations§

    §

    impl<'a, T, P> RefUnwindSafe for Pairs<'a, T, P>where - P: RefUnwindSafe, - T: RefUnwindSafe,

    §

    impl<'a, T, P> Send for Pairs<'a, T, P>where - P: Sync, - T: Sync,

    §

    impl<'a, T, P> Sync for Pairs<'a, T, P>where - P: Sync, - T: Sync,

    §

    impl<'a, T, P> Unpin for Pairs<'a, T, P>

    §

    impl<'a, T, P> UnwindSafe for Pairs<'a, T, P>where - P: RefUnwindSafe, - T: RefUnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are equal to those of +another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are not equal to those of +another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
    1.82.0 · source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> bool,

    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    1.82.0 · source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd,

    Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

    Auto Trait Implementations§

    §

    impl<'a, T, P> Freeze for Pairs<'a, T, P>

    §

    impl<'a, T, P> RefUnwindSafe for Pairs<'a, T, P>
    where + T: RefUnwindSafe, + P: RefUnwindSafe,

    §

    impl<'a, T, P> Send for Pairs<'a, T, P>
    where + T: Sync, + P: Sync,

    §

    impl<'a, T, P> Sync for Pairs<'a, T, P>
    where + T: Sync, + P: Sync,

    §

    impl<'a, T, P> Unpin for Pairs<'a, T, P>

    §

    impl<'a, T, P> UnwindSafe for Pairs<'a, T, P>
    where + T: RefUnwindSafe, + P: RefUnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<I> IntoIterator for Iwhere - I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<I> IntoIterator for I
    where + I: Iterator,

    source§

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    source§

    type IntoIter = I

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/punctuated/struct.PairsMut.html b/syn/punctuated/struct.PairsMut.html index 8de59e2..56a42f0 100644 --- a/syn/punctuated/struct.PairsMut.html +++ b/syn/punctuated/struct.PairsMut.html @@ -1,215 +1,213 @@ -PairsMut in syn::punctuated - Rust

    Struct syn::punctuated::PairsMut

    source ·
    pub struct PairsMut<'a, T: 'a, P: 'a> { /* private fields */ }
    Expand description

    An iterator over mutably borrowed pairs of type Pair<&mut T, &mut P>.

    +PairsMut in syn::punctuated - Rust
    syn::punctuated

    Struct PairsMut

    source
    pub struct PairsMut<'a, T: 'a, P: 'a> { /* private fields */ }
    Expand description

    An iterator over mutably borrowed pairs of type Pair<&mut T, &mut P>.

    Refer to the module documentation for details about punctuated sequences.

    -

    Trait Implementations§

    source§

    impl<'a, T, P> DoubleEndedIterator for PairsMut<'a, T, P>

    source§

    fn next_back(&mut self) -> Option<Self::Item>

    Removes and returns an element from the end of the iterator. Read more
    source§

    fn advance_back_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator from the back by n elements. Read more
    1.37.0 · source§

    fn nth_back(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element from the end of the iterator. Read more
    1.27.0 · source§

    fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> Rwhere - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    This is the reverse version of Iterator::try_fold(): it takes -elements starting from the back of the iterator. Read more
    1.27.0 · source§

    fn rfold<B, F>(self, init: B, f: F) -> Bwhere - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    An iterator method that reduces the iterator’s elements to a single, -final value, starting from the back. Read more
    1.27.0 · source§

    fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator from the back that satisfies a predicate. Read more
    source§

    impl<'a, T, P> ExactSizeIterator for PairsMut<'a, T, P>

    source§

    fn len(&self) -> usize

    Returns the exact remaining length of the iterator. Read more
    source§

    fn is_empty(&self) -> bool

    🔬This is a nightly-only experimental API. (exact_size_is_empty)
    Returns true if the iterator is empty. Read more
    source§

    impl<'a, T, P> Iterator for PairsMut<'a, T, P>

    §

    type Item = Pair<&'a mut T, &'a mut P>

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn next_chunk<const N: usize>( - &mut self -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn count(self) -> usizewhere - Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>where - Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>where - Self: Sized,

    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where - Self: Sized, - U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where - Self: Sized, - G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>where - Self: Sized, - F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each -element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)where - Self: Sized, - F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>where - Self: Sized,

    Creates an iterator which gives the current iteration count as well as -the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>where - Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods +

    Trait Implementations§

    source§

    impl<'a, T, P> DoubleEndedIterator for PairsMut<'a, T, P>

    source§

    fn next_back(&mut self) -> Option<Self::Item>

    Removes and returns an element from the end of the iterator. Read more
    source§

    fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator from the back by n elements. Read more
    1.37.0 · source§

    fn nth_back(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element from the end of the iterator. Read more
    1.27.0 · source§

    fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
    where + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

    This is the reverse version of Iterator::try_fold(): it takes +elements starting from the back of the iterator. Read more
    1.27.0 · source§

    fn rfold<B, F>(self, init: B, f: F) -> B
    where + Self: Sized, + F: FnMut(B, Self::Item) -> B,

    An iterator method that reduces the iterator’s elements to a single, +final value, starting from the back. Read more
    1.27.0 · source§

    fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator from the back that satisfies a predicate. Read more
    source§

    impl<'a, T, P> ExactSizeIterator for PairsMut<'a, T, P>

    source§

    fn len(&self) -> usize

    Returns the exact remaining length of the iterator. Read more
    source§

    fn is_empty(&self) -> bool

    🔬This is a nightly-only experimental API. (exact_size_is_empty)
    Returns true if the iterator is empty. Read more
    source§

    impl<'a, T, P> Iterator for PairsMut<'a, T, P>

    source§

    type Item = Pair<&'a mut T, &'a mut P>

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn next_chunk<const N: usize>( + &mut self, +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where + Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>
    where + Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where + Self: Sized,

    Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where + Self: Sized, + U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where + Self: Sized, + G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where + Self: Sized, + F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each +element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where + Self: Sized, + F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where + Self: Sized,

    Creates an iterator which gives the current iteration count as well as +the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where + Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>where - Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>where - Self: Sized,

    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>where - Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>where - Self: Sized, - F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Selfwhere - Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> Bwhere - B: FromIterator<Self::Item>, - Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere - E: Extend<Self::Item>, - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn partition_in_place<'a, T, P>(self, predicate: P) -> usizewhere +their documentation for more information. Read more

    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where + Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where + Self: Sized,

    Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where + Self: Sized, + F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over +self and returns an iterator over the outputs of f. Like slice::windows(), +the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where + Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where + Self: Sized, + F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where + Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where + B: FromIterator<Self::Item>, + Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where + E: Extend<Self::Item>, + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn partition_in_place<'a, T, P>(self, predicate: P) -> usize
    where T: 'a, - Self: Sized + DoubleEndedIterator<Item = &'a mut T>, - P: FnMut(&T) -> bool,

    🔬This is a nightly-only experimental API. (iter_partition_in_place)
    Reorders the elements of this iterator in-place according to the given predicate, + Self: Sized + DoubleEndedIterator<Item = &'a mut T>, + P: FnMut(&T) -> bool,
    🔬This is a nightly-only experimental API. (iter_partition_in_place)
    Reorders the elements of this iterator in-place according to the given predicate, such that all those that return true precede all those that return false. -Returns the number of true elements found. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> boolwhere - Self: Sized, - P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> Rwhere - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> Bwhere - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, -returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
    source§

    fn try_reduce<F, R>( +Returns the number of true elements found. Read more

    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where + Self: Sized, + P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

    An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where + Self: Sized, + F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, +returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
    source§

    fn try_reduce<R>( &mut self, - f: F -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> R, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> boolwhere - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> boolwhere - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns -the first non-none result. Read more
    source§

    fn try_find<F, R>( + f: impl FnMut(Self::Item, Self::Item) -> R, +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where + Self: Sized, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns +the first non-none result. Read more
    source§

    fn try_find<R>( &mut self, - f: F -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere - Self: Sized, - F: FnMut(&Self::Item) -> R, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns -the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.0.0 · source§

    fn rposition<P>(&mut self, predicate: P) -> Option<usize>where - P: FnMut(Self::Item) -> bool, - Self: Sized + ExactSizeIterator + DoubleEndedIterator,

    Searches for an element in an iterator from the right, returning its -index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the -specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the -specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
    1.0.0 · source§

    fn rev(self) -> Rev<Self>where - Self: Sized + DoubleEndedIterator,

    Reverses an iterator’s direction. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> Swhere - Self: Sized, - S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> Pwhere - Self: Sized, - P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit + f: impl FnMut(&Self::Item) -> R, +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where + Self: Sized, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,
    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns +the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where + Self: Sized, + P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.0.0 · source§

    fn rposition<P>(&mut self, predicate: P) -> Option<usize>
    where + P: FnMut(Self::Item) -> bool, + Self: Sized + ExactSizeIterator + DoubleEndedIterator,

    Searches for an element in an iterator from the right, returning its +index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the +specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the +specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
    1.0.0 · source§

    fn rev(self) -> Rev<Self>
    where + Self: Sized + DoubleEndedIterator,

    Reverses an iterator’s direction. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where + Self: Sized, + S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where + Self: Sized, + P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are equal to those of -another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are not equal to those of -another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> boolwhere - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
    source§

    fn is_sorted_by<F>(self, compare: F) -> boolwhere - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    source§

    fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd<K>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

    Auto Trait Implementations§

    §

    impl<'a, T, P> RefUnwindSafe for PairsMut<'a, T, P>where - P: RefUnwindSafe, - T: RefUnwindSafe,

    §

    impl<'a, T, P> Send for PairsMut<'a, T, P>where - P: Send, - T: Send,

    §

    impl<'a, T, P> Sync for PairsMut<'a, T, P>where - P: Sync, - T: Sync,

    §

    impl<'a, T, P> Unpin for PairsMut<'a, T, P>

    §

    impl<'a, T, P> !UnwindSafe for PairsMut<'a, T, P>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are equal to those of +another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are not equal to those of +another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
    1.82.0 · source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> bool,

    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    1.82.0 · source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd,

    Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

    Auto Trait Implementations§

    §

    impl<'a, T, P> Freeze for PairsMut<'a, T, P>

    §

    impl<'a, T, P> RefUnwindSafe for PairsMut<'a, T, P>
    where + T: RefUnwindSafe, + P: RefUnwindSafe,

    §

    impl<'a, T, P> Send for PairsMut<'a, T, P>
    where + T: Send, + P: Send,

    §

    impl<'a, T, P> Sync for PairsMut<'a, T, P>
    where + T: Sync, + P: Sync,

    §

    impl<'a, T, P> Unpin for PairsMut<'a, T, P>

    §

    impl<'a, T, P> !UnwindSafe for PairsMut<'a, T, P>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<I> IntoIterator for Iwhere - I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<I> IntoIterator for I
    where + I: Iterator,

    source§

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    source§

    type IntoIter = I

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/punctuated/struct.Punctuated.html b/syn/punctuated/struct.Punctuated.html index 906db52..83f15f1 100644 --- a/syn/punctuated/struct.Punctuated.html +++ b/syn/punctuated/struct.Punctuated.html @@ -1,133 +1,130 @@ -Punctuated in syn::punctuated - Rust

    Struct syn::punctuated::Punctuated

    source ·
    pub struct Punctuated<T, P> { /* private fields */ }
    Expand description

    A punctuated sequence of syntax tree nodes of type T separated by -punctuation of type P.

    +Punctuated in syn::punctuated - Rust
    syn::punctuated

    Struct Punctuated

    source
    pub struct Punctuated<T, P> { /* private fields */ }
    Expand description

    A punctuated sequence of syntax tree nodes of type T separated by +punctuation of type P.

    Refer to the module documentation for details about punctuated sequences.

    -

    Implementations§

    source§

    impl<T, P> Punctuated<T, P>

    source

    pub const fn new() -> Self

    Creates an empty punctuated sequence.

    -
    source

    pub fn is_empty(&self) -> bool

    Determines whether this punctuated sequence is empty, meaning it +

    Implementations§

    source§

    impl<T, P> Punctuated<T, P>

    source

    pub const fn new() -> Self

    Creates an empty punctuated sequence.

    +
    source

    pub fn is_empty(&self) -> bool

    Determines whether this punctuated sequence is empty, meaning it contains no syntax tree nodes or punctuation.

    -
    source

    pub fn len(&self) -> usize

    Returns the number of syntax tree nodes in this punctuated sequence.

    +
    source

    pub fn len(&self) -> usize

    Returns the number of syntax tree nodes in this punctuated sequence.

    This is the number of nodes of type T, not counting the punctuation of type P.

    -
    source

    pub fn first(&self) -> Option<&T>

    Borrows the first element in this sequence.

    -
    source

    pub fn first_mut(&mut self) -> Option<&mut T>

    Mutably borrows the first element in this sequence.

    -
    source

    pub fn last(&self) -> Option<&T>

    Borrows the last element in this sequence.

    -
    source

    pub fn last_mut(&mut self) -> Option<&mut T>

    Mutably borrows the last element in this sequence.

    -
    source

    pub fn iter(&self) -> Iter<'_, T>

    Returns an iterator over borrowed syntax tree nodes of type &T.

    -
    source

    pub fn iter_mut(&mut self) -> IterMut<'_, T>

    Returns an iterator over mutably borrowed syntax tree nodes of type +

    source

    pub fn first(&self) -> Option<&T>

    Borrows the first element in this sequence.

    +
    source

    pub fn first_mut(&mut self) -> Option<&mut T>

    Mutably borrows the first element in this sequence.

    +
    source

    pub fn last(&self) -> Option<&T>

    Borrows the last element in this sequence.

    +
    source

    pub fn last_mut(&mut self) -> Option<&mut T>

    Mutably borrows the last element in this sequence.

    +
    source

    pub fn get(&self, index: usize) -> Option<&T>

    Borrows the element at the given index.

    +
    source

    pub fn get_mut(&mut self, index: usize) -> Option<&mut T>

    Mutably borrows the element at the given index.

    +
    source

    pub fn iter(&self) -> Iter<'_, T>

    Returns an iterator over borrowed syntax tree nodes of type &T.

    +
    source

    pub fn iter_mut(&mut self) -> IterMut<'_, T>

    Returns an iterator over mutably borrowed syntax tree nodes of type &mut T.

    -
    source

    pub fn pairs(&self) -> Pairs<'_, T, P>

    Returns an iterator over the contents of this sequence as borrowed +

    source

    pub fn pairs(&self) -> Pairs<'_, T, P>

    Returns an iterator over the contents of this sequence as borrowed punctuated pairs.

    -
    source

    pub fn pairs_mut(&mut self) -> PairsMut<'_, T, P>

    Returns an iterator over the contents of this sequence as mutably +

    source

    pub fn pairs_mut(&mut self) -> PairsMut<'_, T, P>

    Returns an iterator over the contents of this sequence as mutably borrowed punctuated pairs.

    -
    source

    pub fn into_pairs(self) -> IntoPairs<T, P>

    Returns an iterator over the contents of this sequence as owned +

    source

    pub fn into_pairs(self) -> IntoPairs<T, P>

    Returns an iterator over the contents of this sequence as owned punctuated pairs.

    -
    source

    pub fn push_value(&mut self, value: T)

    Appends a syntax tree node onto the end of this punctuated sequence. The -sequence must previously have a trailing punctuation.

    +
    source

    pub fn push_value(&mut self, value: T)

    Appends a syntax tree node onto the end of this punctuated sequence. The +sequence must already have a trailing punctuation, or be empty.

    Use push instead if the punctuated sequence may or may not already have trailing punctuation.

    -
    Panics
    -

    Panics if the sequence does not already have a trailing punctuation when -this method is called.

    -
    source

    pub fn push_punct(&mut self, punctuation: P)

    Appends a trailing punctuation onto the end of this punctuated sequence. +

    §Panics
    +

    Panics if the sequence is nonempty and does not already have a trailing +punctuation.

    +
    source

    pub fn push_punct(&mut self, punctuation: P)

    Appends a trailing punctuation onto the end of this punctuated sequence. The sequence must be non-empty and must not already have trailing punctuation.

    -
    Panics
    +
    §Panics

    Panics if the sequence is empty or already has a trailing punctuation.

    -
    source

    pub fn pop(&mut self) -> Option<Pair<T, P>>

    Removes the last punctuated pair from this sequence, or None if the +

    source

    pub fn pop(&mut self) -> Option<Pair<T, P>>

    Removes the last punctuated pair from this sequence, or None if the sequence is empty.

    -
    source

    pub fn trailing_punct(&self) -> bool

    Determines whether this punctuated sequence ends with a trailing +

    source

    pub fn pop_punct(&mut self) -> Option<P>

    Removes the trailing punctuation from this punctuated sequence, or +None if there isn’t any.

    +
    source

    pub fn trailing_punct(&self) -> bool

    Determines whether this punctuated sequence ends with a trailing punctuation.

    -
    source

    pub fn empty_or_trailing(&self) -> bool

    Returns true if either this Punctuated is empty, or it has a trailing +

    source

    pub fn empty_or_trailing(&self) -> bool

    Returns true if either this Punctuated is empty, or it has a trailing punctuation.

    Equivalent to punctuated.is_empty() || punctuated.trailing_punct().

    -
    source

    pub fn push(&mut self, value: T)where - P: Default,

    Appends a syntax tree node onto the end of this punctuated sequence.

    +
    source

    pub fn push(&mut self, value: T)
    where + P: Default,

    Appends a syntax tree node onto the end of this punctuated sequence.

    If there is not a trailing punctuation in this sequence when this method is called, the default value of punctuation type P is inserted before the given value of type T.

    -
    source

    pub fn insert(&mut self, index: usize, value: T)where - P: Default,

    Inserts an element at position index.

    -
    Panics
    +
    source

    pub fn insert(&mut self, index: usize, value: T)
    where + P: Default,

    Inserts an element at position index.

    +
    §Panics

    Panics if index is greater than the number of elements previously in this punctuated sequence.

    -
    source

    pub fn clear(&mut self)

    Clears the sequence of all values and punctuation, making it empty.

    -
    source

    pub fn parse_terminated(input: ParseStream<'_>) -> Result<Self>where +

    source

    pub fn clear(&mut self)

    Clears the sequence of all values and punctuation, making it empty.

    +
    source

    pub fn parse_terminated(input: ParseStream<'_>) -> Result<Self>
    where T: Parse, - P: Parse,

    Parses zero or more occurrences of T separated by punctuation of type + P: Parse,

    Parses zero or more occurrences of T separated by punctuation of type P, with optional trailing punctuation.

    Parsing continues until the end of this parse stream. The entire content of this parse stream must consist of T and P.

    -

    This function is available only if Syn is built with the "parsing" -feature.

    -
    source

    pub fn parse_terminated_with( +

    source

    pub fn parse_terminated_with( input: ParseStream<'_>, - parser: fn(_: ParseStream<'_>) -> Result<T> -) -> Result<Self>where - P: Parse,

    Parses zero or more occurrences of T using the given parse function, + parser: fn(_: ParseStream<'_>) -> Result<T>, +) -> Result<Self>

    where + P: Parse,

    Parses zero or more occurrences of T using the given parse function, separated by punctuation of type P, with optional trailing punctuation.

    Like parse_terminated, the entire content of this stream is expected to be parsed.

    -

    This function is available only if Syn is built with the "parsing" -feature.

    -
    source

    pub fn parse_separated_nonempty(input: ParseStream<'_>) -> Result<Self>where +

    source

    pub fn parse_separated_nonempty(input: ParseStream<'_>) -> Result<Self>
    where T: Parse, - P: Token + Parse,

    Parses one or more occurrences of T separated by punctuation of type + P: Token + Parse,

    Parses one or more occurrences of T separated by punctuation of type P, not accepting trailing punctuation.

    Parsing continues as long as punctuation P is present at the head of the stream. This method returns upon parsing a T and observing that it is not followed by a P, even if there are remaining tokens in the stream.

    -

    This function is available only if Syn is built with the "parsing" -feature.

    -
    source

    pub fn parse_separated_nonempty_with( +

    source

    pub fn parse_separated_nonempty_with( input: ParseStream<'_>, - parser: fn(_: ParseStream<'_>) -> Result<T> -) -> Result<Self>where - P: Token + Parse,

    Parses one or more occurrences of T using the given parse function, + parser: fn(_: ParseStream<'_>) -> Result<T>, +) -> Result<Self>

    where + P: Token + Parse,

    Parses one or more occurrences of T using the given parse function, separated by punctuation of type P, not accepting trailing punctuation.

    Like parse_separated_nonempty, may complete early without parsing the entire content of this stream.

    -

    This function is available only if Syn is built with the "parsing" -feature.

    -

    Trait Implementations§

    source§

    impl<T, P> Clone for Punctuated<T, P>where - T: Clone, - P: Clone,

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Debug, P: Debug> Debug for Punctuated<T, P>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T, P> Default for Punctuated<T, P>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<T, P> Extend<Pair<T, P>> for Punctuated<T, P>

    source§

    fn extend<I: IntoIterator<Item = Pair<T, P>>>(&mut self, i: I)

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, item: A)

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    source§

    impl<T, P> Extend<T> for Punctuated<T, P>where - P: Default,

    source§

    fn extend<I: IntoIterator<Item = T>>(&mut self, i: I)

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, item: A)

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    source§

    impl<T, P> FromIterator<Pair<T, P>> for Punctuated<T, P>

    source§

    fn from_iter<I: IntoIterator<Item = Pair<T, P>>>(i: I) -> Self

    Creates a value from an iterator. Read more
    source§

    impl<T, P> FromIterator<T> for Punctuated<T, P>where - P: Default,

    source§

    fn from_iter<I: IntoIterator<Item = T>>(i: I) -> Self

    Creates a value from an iterator. Read more
    source§

    impl<T, P> Hash for Punctuated<T, P>where - T: Hash, - P: Hash,

    source§

    fn hash<H: Hasher>(&self, state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<T, P> Index<usize> for Punctuated<T, P>

    §

    type Output = T

    The returned type after indexing.
    source§

    fn index(&self, index: usize) -> &Self::Output

    Performs the indexing (container[index]) operation. Read more
    source§

    impl<T, P> IndexMut<usize> for Punctuated<T, P>

    source§

    fn index_mut(&mut self, index: usize) -> &mut Self::Output

    Performs the mutable indexing (container[index]) operation. Read more
    source§

    impl<'a, T, P> IntoIterator for &'a Punctuated<T, P>

    §

    type Item = &'a T

    The type of the elements being iterated over.
    §

    type IntoIter = Iter<'a, T>

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl<'a, T, P> IntoIterator for &'a mut Punctuated<T, P>

    §

    type Item = &'a mut T

    The type of the elements being iterated over.
    §

    type IntoIter = IterMut<'a, T>

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl<T, P> IntoIterator for Punctuated<T, P>

    §

    type Item = T

    The type of the elements being iterated over.
    §

    type IntoIter = IntoIter<T>

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl<T, P> PartialEq<Punctuated<T, P>> for Punctuated<T, P>where - T: PartialEq, - P: PartialEq,

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl<T, P> ToTokens for Punctuated<T, P>where +

    Trait Implementations§

    source§

    impl<T, P> Clone for Punctuated<T, P>
    where + T: Clone, + P: Clone,

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    source§

    fn clone_from(&mut self, other: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Debug, P: Debug> Debug for Punctuated<T, P>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T, P> Default for Punctuated<T, P>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<T, P> Extend<Pair<T, P>> for Punctuated<T, P>
    where + P: Default,

    source§

    fn extend<I: IntoIterator<Item = Pair<T, P>>>(&mut self, i: I)

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, item: A)

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    source§

    impl<T, P> Extend<T> for Punctuated<T, P>
    where + P: Default,

    source§

    fn extend<I: IntoIterator<Item = T>>(&mut self, i: I)

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, item: A)

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    source§

    impl<T, P> FromIterator<Pair<T, P>> for Punctuated<T, P>

    source§

    fn from_iter<I: IntoIterator<Item = Pair<T, P>>>(i: I) -> Self

    Creates a value from an iterator. Read more
    source§

    impl<T, P> FromIterator<T> for Punctuated<T, P>
    where + P: Default,

    source§

    fn from_iter<I: IntoIterator<Item = T>>(i: I) -> Self

    Creates a value from an iterator. Read more
    source§

    impl<T, P> Hash for Punctuated<T, P>
    where + T: Hash, + P: Hash,

    source§

    fn hash<H: Hasher>(&self, state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<T, P> Index<usize> for Punctuated<T, P>

    source§

    type Output = T

    The returned type after indexing.
    source§

    fn index(&self, index: usize) -> &Self::Output

    Performs the indexing (container[index]) operation. Read more
    source§

    impl<T, P> IndexMut<usize> for Punctuated<T, P>

    source§

    fn index_mut(&mut self, index: usize) -> &mut Self::Output

    Performs the mutable indexing (container[index]) operation. Read more
    source§

    impl<'a, T, P> IntoIterator for &'a Punctuated<T, P>

    source§

    type Item = &'a T

    The type of the elements being iterated over.
    source§

    type IntoIter = Iter<'a, T>

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl<'a, T, P> IntoIterator for &'a mut Punctuated<T, P>

    source§

    type Item = &'a mut T

    The type of the elements being iterated over.
    source§

    type IntoIter = IterMut<'a, T>

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl<T, P> IntoIterator for Punctuated<T, P>

    source§

    type Item = T

    The type of the elements being iterated over.
    source§

    type IntoIter = IntoIter<T>

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl<T, P> PartialEq for Punctuated<T, P>
    where + T: PartialEq, + P: PartialEq,

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl<T, P> ToTokens for Punctuated<T, P>
    where T: ToTokens, - P: ToTokens,

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl<T, P> Eq for Punctuated<T, P>where - T: Eq, - P: Eq,

    Auto Trait Implementations§

    §

    impl<T, P> RefUnwindSafe for Punctuated<T, P>where - P: RefUnwindSafe, - T: RefUnwindSafe,

    §

    impl<T, P> Send for Punctuated<T, P>where - P: Send, - T: Send,

    §

    impl<T, P> Sync for Punctuated<T, P>where - P: Sync, - T: Sync,

    §

    impl<T, P> Unpin for Punctuated<T, P>where - P: Unpin, - T: Unpin,

    §

    impl<T, P> UnwindSafe for Punctuated<T, P>where - P: UnwindSafe, - T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    + P: ToTokens,
    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl<T, P> Eq for Punctuated<T, P>
    where + T: Eq, + P: Eq,

    Auto Trait Implementations§

    §

    impl<T, P> Freeze for Punctuated<T, P>

    §

    impl<T, P> RefUnwindSafe for Punctuated<T, P>
    where + T: RefUnwindSafe, + P: RefUnwindSafe,

    §

    impl<T, P> Send for Punctuated<T, P>
    where + T: Send, + P: Send,

    §

    impl<T, P> Sync for Punctuated<T, P>
    where + T: Sync, + P: Sync,

    §

    impl<T, P> Unpin for Punctuated<T, P>
    where + T: Unpin, + P: Unpin,

    §

    impl<T, P> UnwindSafe for Punctuated<T, P>
    where + T: UnwindSafe, + P: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/restriction/enum.FieldMutability.html b/syn/restriction/enum.FieldMutability.html new file mode 100644 index 0000000..2e39910 --- /dev/null +++ b/syn/restriction/enum.FieldMutability.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../syn/enum.FieldMutability.html...

    + + + \ No newline at end of file diff --git a/syn/data/enum.Visibility.html b/syn/restriction/enum.Visibility.html similarity index 100% rename from syn/data/enum.Visibility.html rename to syn/restriction/enum.Visibility.html diff --git a/syn/data/struct.VisRestricted.html b/syn/restriction/struct.VisRestricted.html similarity index 100% rename from syn/data/struct.VisRestricted.html rename to syn/restriction/struct.VisRestricted.html diff --git a/syn/sidebar-items.js b/syn/sidebar-items.js index 311a358..c77069d 100644 --- a/syn/sidebar-items.js +++ b/syn/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":["AttrStyle","BinOp","Data","Expr","Fields","GenericArgument","GenericParam","Lit","MacroDelimiter","Member","Meta","NestedMeta","PathArguments","ReturnType","StrStyle","TraitBoundModifier","Type","TypeParamBound","UnOp","Visibility","WherePredicate"],"fn":["parse","parse2","parse_str"],"macro":["Token","braced","bracketed","custom_keyword","custom_punctuation","parenthesized","parse_macro_input","parse_quote","parse_quote_spanned"],"mod":["buffer","ext","parse","punctuated","spanned","token","visit"],"struct":["Abi","AngleBracketedGenericArguments","Attribute","BareFnArg","Binding","BoundLifetimes","ConstParam","Constraint","DataEnum","DataStruct","DataUnion","DeriveInput","Error","ExprArray","ExprAssign","ExprAssignOp","ExprAsync","ExprAwait","ExprBinary","ExprBlock","ExprBox","ExprBreak","ExprCall","ExprCast","ExprClosure","ExprContinue","ExprField","ExprForLoop","ExprGroup","ExprIf","ExprIndex","ExprLet","ExprLit","ExprLoop","ExprMacro","ExprMatch","ExprMethodCall","ExprParen","ExprPath","ExprRange","ExprReference","ExprRepeat","ExprReturn","ExprStruct","ExprTry","ExprTryBlock","ExprTuple","ExprType","ExprUnary","ExprUnsafe","ExprWhile","ExprYield","Field","FieldsNamed","FieldsUnnamed","Generics","Ident","ImplGenerics","Index","Lifetime","LifetimeDef","LitBool","LitByte","LitByteStr","LitChar","LitFloat","LitInt","LitStr","Macro","MetaList","MetaNameValue","ParenthesizedGenericArguments","Path","PathSegment","PredicateEq","PredicateLifetime","PredicateType","QSelf","TraitBound","Turbofish","TypeArray","TypeBareFn","TypeGenerics","TypeGroup","TypeImplTrait","TypeInfer","TypeMacro","TypeNever","TypeParam","TypeParen","TypePath","TypePtr","TypeReference","TypeSlice","TypeTraitObject","TypeTuple","Variadic","Variant","VisCrate","VisPublic","VisRestricted","WhereClause"],"type":["AttributeArgs","Result"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["AttrStyle","BinOp","Data","Expr","FieldMutability","Fields","GenericArgument","GenericParam","Lit","MacroDelimiter","Member","Meta","PathArguments","ReturnType","TraitBoundModifier","Type","TypeParamBound","UnOp","Visibility","WherePredicate"],"fn":["parse","parse2","parse_str"],"macro":["Token","braced","bracketed","custom_keyword","custom_punctuation","parenthesized","parse_macro_input","parse_quote","parse_quote_spanned"],"mod":["buffer","ext","meta","parse","punctuated","spanned","token","visit"],"struct":["Abi","AngleBracketedGenericArguments","AssocConst","AssocType","Attribute","BareFnArg","BareVariadic","BoundLifetimes","ConstParam","Constraint","DataEnum","DataStruct","DataUnion","DeriveInput","Error","ExprArray","ExprAssign","ExprAsync","ExprAwait","ExprBinary","ExprBlock","ExprBreak","ExprCall","ExprCast","ExprClosure","ExprConst","ExprContinue","ExprField","ExprForLoop","ExprGroup","ExprIf","ExprIndex","ExprInfer","ExprLet","ExprLit","ExprLoop","ExprMacro","ExprMatch","ExprMethodCall","ExprParen","ExprPath","ExprRange","ExprRawAddr","ExprReference","ExprRepeat","ExprReturn","ExprStruct","ExprTry","ExprTryBlock","ExprTuple","ExprUnary","ExprUnsafe","ExprWhile","ExprYield","Field","FieldValue","FieldsNamed","FieldsUnnamed","Generics","Ident","ImplGenerics","Index","Lifetime","LifetimeParam","LitBool","LitByte","LitByteStr","LitCStr","LitChar","LitFloat","LitInt","LitStr","Macro","MetaList","MetaNameValue","ParenthesizedGenericArguments","Path","PathSegment","PredicateLifetime","PredicateType","QSelf","TraitBound","Turbofish","TypeArray","TypeBareFn","TypeGenerics","TypeGroup","TypeImplTrait","TypeInfer","TypeMacro","TypeNever","TypeParam","TypeParen","TypePath","TypePtr","TypeReference","TypeSlice","TypeTraitObject","TypeTuple","Variant","VisRestricted","WhereClause"],"type":["Result"]}; \ No newline at end of file diff --git a/syn/spanned/index.html b/syn/spanned/index.html index 596e9f1..6871740 100644 --- a/syn/spanned/index.html +++ b/syn/spanned/index.html @@ -1,11 +1,9 @@ -syn::spanned - Rust

    Module syn::spanned

    source ·
    Expand description

    A trait that can provide the Span of the complete contents of a syntax +syn::spanned - Rust

    syn

    Module spanned

    source
    Expand description

    A trait that can provide the Span of the complete contents of a syntax tree node.

    -

    This module is available only if Syn is built with both the "parsing" and -"printing" features.


    -

    Example

    +

    §Example

    Suppose in a procedural macro we have a Type that we want to assert -implements the Sync trait. Maybe this is the type of one of the fields +implements the Sync trait. Maybe this is the type of one of the fields of a struct for which we are deriving a trait implementation, and we need to be able to pass a reference to one of those fields across threads.

    If the field type does not implement Sync as required, we want the @@ -23,7 +21,7 @@ static assertion that Sync is implemented for that type.

    pub fn my_macro(input: TokenStream) -> TokenStream { /* ... */ - let assert_sync = quote_spanned! {ty.span()=> + let assert_sync = quote_spanned! {ty.span()=> struct _AssertSync where #ty: Sync; }; @@ -36,13 +34,12 @@ our macro, the user’s code will fail to compile if ty does not im --> src/main.rs:10:21 | 10 | bad_field: *const i32, - | ^^^^^^^^^^ `*const i32` cannot be shared between threads safely -
    + | ^^^^^^^^^^ `*const i32` cannot be shared between threads safely

    In this technique, using the Type’s span for the error message makes the error appear in the correct place underlining the right type.


    -

    Limitations

    -

    The underlying proc_macro::Span::join method is nightly-only. When +

    §Limitations

    +

    The underlying proc_macro::Span::join method is nightly-only. When called from within a procedural macro in a nightly compiler, Spanned will use join to produce the intended span. When not using a nightly compiler, only the span of the first token of the syntax tree node is returned.

    @@ -50,5 +47,5 @@ only the span of the first token of the syntax tree node is returned.syn::Error, consider instead using syn::Error::new_spanned which is able to span the error correctly under the complete syntax tree node without needing the unstable join.

    -

    Traits

    • A trait that can provide the Span of the complete contents of a syntax +

      Traits§

      • A trait that can provide the Span of the complete contents of a syntax tree node.
    \ No newline at end of file diff --git a/syn/spanned/trait.Spanned.html b/syn/spanned/trait.Spanned.html index 03f5a89..f05775f 100644 --- a/syn/spanned/trait.Spanned.html +++ b/syn/spanned/trait.Spanned.html @@ -1,4 +1,4 @@ -Spanned in syn::spanned - Rust

    Trait syn::spanned::Spanned

    source ·
    pub trait Spanned {
    +Spanned in syn::spanned - Rust
    syn::spanned

    Trait Spanned

    source
    pub trait Spanned: Sealed {
         // Required method
         fn span(&self) -> Span;
     }
    Expand description

    A trait that can provide the Span of the complete contents of a syntax @@ -6,8 +6,6 @@ tree node.

    This trait is automatically implemented for all types that implement ToTokens from the quote crate, as well as for Span itself.

    See the module documentation for an example.

    -

    This trait is available only if Syn is built with both the "parsing" and -"printing" features.

    -

    Required Methods§

    source

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +

    Required Methods§

    source

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree node, or Span::call_site() if this node is empty.

    -

    Implementors§

    source§

    impl<T: ?Sized + ToTokens> Spanned for T

    \ No newline at end of file +

    Implementors§

    source§

    impl Spanned for QSelf

    source§

    impl<T: ?Sized + ToTokens> Spanned for T

    \ No newline at end of file diff --git a/syn/struct.Abi.html b/syn/struct.Abi.html index 382cc37..6ca91f2 100644 --- a/syn/struct.Abi.html +++ b/syn/struct.Abi.html @@ -1,26 +1,24 @@ -Abi in syn - Rust

    Struct syn::Abi

    source ·
    pub struct Abi {
    +Abi in syn - Rust
    syn

    Struct Abi

    source
    pub struct Abi {
         pub extern_token: Extern,
    -    pub name: Option<LitStr>,
    -}
    Expand description

    The binary interface of a function: extern "C".

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Fields§

    §extern_token: Extern§name: Option<LitStr>

    Trait Implementations§

    source§

    impl Clone for Abi

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Abi

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for Abi

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Abi

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Abi> for Abi

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Abi

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Abi

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Abi

    §

    impl !Send for Abi

    §

    impl !Sync for Abi

    §

    impl Unpin for Abi

    §

    impl UnwindSafe for Abi

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    + pub name: Option<LitStr>, +}
    Expand description

    The binary interface of a function: extern "C".

    +

    Fields§

    §extern_token: Extern§name: Option<LitStr>

    Trait Implementations§

    source§

    impl Clone for Abi

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Abi

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for Abi

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Abi

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Abi

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Abi

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Abi

    Auto Trait Implementations§

    §

    impl Freeze for Abi

    §

    impl RefUnwindSafe for Abi

    §

    impl !Send for Abi

    §

    impl !Sync for Abi

    §

    impl Unpin for Abi

    §

    impl UnwindSafe for Abi

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.AngleBracketedGenericArguments.html b/syn/struct.AngleBracketedGenericArguments.html index 396572f..c571583 100644 --- a/syn/struct.AngleBracketedGenericArguments.html +++ b/syn/struct.AngleBracketedGenericArguments.html @@ -1,28 +1,26 @@ -AngleBracketedGenericArguments in syn - Rust
    pub struct AngleBracketedGenericArguments {
    -    pub colon2_token: Option<Colon2>,
    +AngleBracketedGenericArguments in syn - Rust
    syn

    Struct AngleBracketedGenericArguments

    source
    pub struct AngleBracketedGenericArguments {
    +    pub colon2_token: Option<PathSep>,
         pub lt_token: Lt,
         pub args: Punctuated<GenericArgument, Comma>,
         pub gt_token: Gt,
     }
    Expand description

    Angle bracketed arguments of a path segment: the <K, V> in HashMap<K, V>.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Fields§

    §colon2_token: Option<Colon2>§lt_token: Lt§args: Punctuated<GenericArgument, Comma>§gt_token: Gt

    Trait Implementations§

    source§

    impl Clone for AngleBracketedGenericArguments

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for AngleBracketedGenericArguments

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for AngleBracketedGenericArguments

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for AngleBracketedGenericArguments

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<AngleBracketedGenericArguments> for AngleBracketedGenericArguments

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for AngleBracketedGenericArguments

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for AngleBracketedGenericArguments

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §colon2_token: Option<PathSep>§lt_token: Lt§args: Punctuated<GenericArgument, Comma>§gt_token: Gt

    Trait Implementations§

    source§

    impl Clone for AngleBracketedGenericArguments

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for AngleBracketedGenericArguments

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for AngleBracketedGenericArguments

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for AngleBracketedGenericArguments

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for AngleBracketedGenericArguments

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for AngleBracketedGenericArguments

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for AngleBracketedGenericArguments

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.AssocConst.html b/syn/struct.AssocConst.html new file mode 100644 index 0000000..af9004a --- /dev/null +++ b/syn/struct.AssocConst.html @@ -0,0 +1,27 @@ +AssocConst in syn - Rust
    syn

    Struct AssocConst

    source
    pub struct AssocConst {
    +    pub ident: Ident,
    +    pub generics: Option<AngleBracketedGenericArguments>,
    +    pub eq_token: Eq,
    +    pub value: Expr,
    +}
    Expand description

    An equality constraint on an associated constant: the PANIC = false in +Trait<PANIC = false>.

    +

    Fields§

    §ident: Ident§generics: Option<AngleBracketedGenericArguments>§eq_token: Eq§value: Expr

    Trait Implementations§

    source§

    impl Clone for AssocConst

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for AssocConst

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for AssocConst

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for AssocConst

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for AssocConst

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for AssocConst

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.AssocType.html b/syn/struct.AssocType.html new file mode 100644 index 0000000..3789866 --- /dev/null +++ b/syn/struct.AssocType.html @@ -0,0 +1,27 @@ +AssocType in syn - Rust
    syn

    Struct AssocType

    source
    pub struct AssocType {
    +    pub ident: Ident,
    +    pub generics: Option<AngleBracketedGenericArguments>,
    +    pub eq_token: Eq,
    +    pub ty: Type,
    +}
    Expand description

    A binding (equality constraint) on an associated type: the Item = u8 +in Iterator<Item = u8>.

    +

    Fields§

    §ident: Ident§generics: Option<AngleBracketedGenericArguments>§eq_token: Eq§ty: Type

    Trait Implementations§

    source§

    impl Clone for AssocType

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for AssocType

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for AssocType

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for AssocType

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for AssocType

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for AssocType

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.Attribute.html b/syn/struct.Attribute.html index 1ac9286..da0292d 100644 --- a/syn/struct.Attribute.html +++ b/syn/struct.Attribute.html @@ -1,38 +1,69 @@ -Attribute in syn - Rust

    Struct syn::Attribute

    source ·
    pub struct Attribute {
    +Attribute in syn - Rust
    syn

    Struct Attribute

    source
    pub struct Attribute {
         pub pound_token: Pound,
         pub style: AttrStyle,
         pub bracket_token: Bracket,
    -    pub path: Path,
    -    pub tokens: TokenStream,
    -}
    Expand description

    An attribute like #[repr(transparent)].

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    + pub meta: Meta, +}
    Expand description

    An attribute, like #[repr(transparent)].


    -

    Syntax

    +

    §Syntax

    Rust has six types of attributes.

      -
    • Outer attributes like #[repr(transparent)]. These appear outside or -in front of the item they describe.
    • -
    • Inner attributes like #![feature(proc_macro)]. These appear inside -of the item they describe, usually a module.
    • -
    • Outer doc comments like /// # Example.
    • -
    • Inner doc comments like //! Please file an issue.
    • -
    • Outer block comments /** # Example */.
    • -
    • Inner block comments /*! Please file an issue */.
    • +
    • +

      Outer attributes like #[repr(transparent)]. These appear outside or +in front of the item they describe.

      +
    • +
    • +

      Inner attributes like #![feature(proc_macro)]. These appear inside +of the item they describe, usually a module.

      +
    • +
    • +

      Outer one-line doc comments like /// Example.

      +
    • +
    • +

      Inner one-line doc comments like //! Please file an issue.

      +
    • +
    • +

      Outer documentation blocks /** Example */.

      +
    • +
    • +

      Inner documentation blocks /*! Please file an issue */.

      +

    The style field of type AttrStyle distinguishes whether an attribute -is outer or inner. Doc comments and block comments are promoted to -attributes, as this is how they are processed by the compiler and by +is outer or inner.

    +

    Every attribute has a path that indicates the intended interpretation +of the rest of the attribute’s contents. The path and the optional +additional contents are represented together in the meta field of the +attribute in three possible varieties:

    +
      +
    • +

      Meta::Path — attributes whose information content conveys just a +path, for example the #[test] attribute.

      +
    • +
    • +

      Meta::List — attributes that carry arbitrary tokens after the +path, surrounded by a delimiter (parenthesis, bracket, or brace). For +example #[derive(Copy)] or #[precondition(x < 5)].

      +
    • +
    • +

      Meta::NameValue — attributes with an = sign after the path, +followed by a Rust expression. For example #[path = "sys/windows.rs"].

      +
    • +
    +

    All doc comments are represented in the NameValue style with a path of +“doc”, as this is how they are processed by the compiler and by macro_rules! macros.

    -

    The path field gives the possibly colon-delimited path against which -the attribute is resolved. It is equal to "doc" for desugared doc -comments. The tokens field contains the rest of the attribute body as -tokens.

    -
    #[derive(Copy)]      #[crate::precondition x < 5]
    -  ^^^^^^~~~~~~         ^^^^^^^^^^^^^^^^^^^ ~~~~~
    -  path  tokens                 path        tokens
    -

    -

    Parsing from tokens to Attribute

    +
    #[derive(Copy, Clone)]
    +  ~~~~~~Path
    +  ^^^^^^^^^^^^^^^^^^^Meta::List
    +
    +#[path = "sys/windows.rs"]
    +  ~~~~Path
    +  ^^^^^^^^^^^^^^^^^^^^^^^Meta::NameValue
    +
    +#[test]
    +  ^^^^Meta::Path

    +

    §Parsing from tokens to Attribute

    This type does not implement the Parse trait and thus cannot be parsed directly by ParseStream::parse. Instead use ParseStream::call with one of the two parser functions @@ -44,7 +75,7 @@ which you intend to parse.

    // Parses a unit struct with attributes. // -// #[path = "s.tmpl"] +// #[path = "s.tmpl"] // struct S; struct UnitStruct { attrs: Vec<Attribute>, @@ -64,25 +95,21 @@ which you intend to parse.

    } }


    -

    Parsing from Attribute to structured arguments

    +

    §Parsing from Attribute to structured arguments

    The grammar of attributes in Rust is very flexible, which makes the syntax tree not that useful on its own. In particular, arguments of the -attribute are held in an arbitrary tokens: TokenStream. Macros are -expected to check the path of the attribute, decide whether they -recognize it, and then parse the remaining tokens according to whatever -grammar they wish to require for that kind of attribute.

    -

    If the attribute you are parsing is expected to conform to the -conventional structured form of attribute, use parse_meta() to -obtain that structured representation. If the attribute follows some -other grammar of its own, use parse_args() to parse that into the -expected data structure.

    +Meta::List variety of attribute are held in an arbitrary tokens: TokenStream. Macros are expected to check the path of the attribute, +decide whether they recognize it, and then parse the remaining tokens +according to whatever grammar they wish to require for that kind of +attribute. Use parse_args() to parse those tokens into the expected +data structure.


    -

    Doc comments

    +

    §Doc comments

    The compiler transforms doc comments, such as /// comment and /*! comment */, into attributes before macros are expanded. Each comment is -expanded into an attribute of the form #[doc = r"comment"].

    +expanded into an attribute of the form #[doc = r"comment"].

    As an example, the following mod items are expanded identically:

    -
    let doc: ItemMod = parse_quote! {
    +
    let doc: ItemMod = parse_quote! {
         /// Single line doc comments
         /// We write so many!
         /**
    @@ -94,61 +121,182 @@ expanded into an attribute of the form #[doc = r"comment"]}
     };
    -let attr: ItemMod = parse_quote! {
    -    #[doc = r" Single line doc comments"]
    -    #[doc = r" We write so many!"]
    -    #[doc = r"
    +let attr: ItemMod = parse_quote! {
    +    #[doc = r" Single line doc comments"]
    +    #[doc = r" We write so many!"]
    +    #[doc = r"
          * Multi-line comments...
          * May span many lines
    -     "]
    +     "]
         mod example {
    -        #![doc = r" Of course, they can be inner too"]
    -        #![doc = r" And fit in a single line "]
    +        #![doc = r" Of course, they can be inner too"]
    +        #![doc = r" And fit in a single line "]
         }
     };
     assert_eq!(doc, attr);
    -

    Fields§

    §pound_token: Pound§style: AttrStyle§bracket_token: Bracket§path: Path§tokens: TokenStream

    Implementations§

    source§

    impl Attribute

    source

    pub fn parse_meta(&self) -> Result<Meta>

    Parses the content of the attribute, consisting of the path and tokens, -as a Meta if possible.

    -

    This function is available only if Syn is built with the "parsing" -feature.

    -
    source

    pub fn parse_args<T: Parse>(&self) -> Result<T>

    Parse the arguments to the attribute as a syntax tree.

    -

    This is similar to syn::parse2::<T>(attr.tokens) except that:

    -
      -
    • the surrounding delimiters are not included in the input to the -parser; and
    • -
    • the error message has a more useful span when tokens is empty.
    • -
    +

    Fields§

    §pound_token: Pound§style: AttrStyle§bracket_token: Bracket§meta: Meta

    Implementations§

    source§

    impl Attribute

    source

    pub fn path(&self) -> &Path

    Returns the path that identifies the interpretation of this attribute.

    +

    For example this would return the test in #[test], the derive in +#[derive(Copy)], and the path in #[path = "sys/windows.rs"].

    +
    source

    pub fn parse_args<T: Parse>(&self) -> Result<T>

    Parse the arguments to the attribute as a syntax tree.

    +

    This is similar to pulling out the TokenStream from Meta::List and +doing syn::parse2::<T>(meta_list.tokens), except that using +parse_args the error message has a more useful span when tokens is +empty.

    +

    The surrounding delimiters are not included in the input to the +parser.

    #[my_attr(value < 5)]
    -          ^^^^^^^^^ what gets parsed
    -
    -

    This function is available only if Syn is built with the "parsing" -feature.

    -
    source

    pub fn parse_args_with<F: Parser>(&self, parser: F) -> Result<F::Output>

    Parse the arguments to the attribute using the given parser.

    -

    This function is available only if Syn is built with the "parsing" -feature.

    -
    source

    pub fn parse_outer(input: ParseStream<'_>) -> Result<Vec<Self>>

    Parses zero or more outer attributes from the stream.

    -

    This function is available only if Syn is built with the "parsing" -feature.

    -
    source

    pub fn parse_inner(input: ParseStream<'_>) -> Result<Vec<Self>>

    Parses zero or more inner attributes from the stream.

    -

    This function is available only if Syn is built with the "parsing" -feature.

    -

    Trait Implementations§

    source§

    impl Clone for Attribute

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Attribute

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for Attribute

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<Attribute> for Attribute

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Attribute

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Attribute

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    + ^^^^^^^^^ what gets parsed
    §Example
    +
    use syn::{parse_quote, Attribute, Expr};
    +
    +let attr: Attribute = parse_quote! {
    +    #[precondition(value < 5)]
    +};
    +
    +if attr.path().is_ident("precondition") {
    +    let precondition: Expr = attr.parse_args()?;
    +    // ...
    +}
    +
    source

    pub fn parse_args_with<F: Parser>(&self, parser: F) -> Result<F::Output>

    Parse the arguments to the attribute using the given parser.

    +
    §Example
    +
    use syn::{parse_quote, Attribute};
    +
    +let attr: Attribute = parse_quote! {
    +    #[inception { #[brrrrrrraaaaawwwwrwrrrmrmrmmrmrmmmmm] }]
    +};
    +
    +let bwom = attr.parse_args_with(Attribute::parse_outer)?;
    +
    +// Attribute does not have a Parse impl, so we couldn't directly do:
    +// let bwom: Attribute = attr.parse_args()?;
    +
    source

    pub fn parse_nested_meta( + &self, + logic: impl FnMut(ParseNestedMeta<'_>) -> Result<()>, +) -> Result<()>

    Parse the arguments to the attribute, expecting it to follow the +conventional structure used by most of Rust’s built-in attributes.

    +

    The Meta Item Attribute Syntax section in the Rust reference +explains the convention in more detail. Not all attributes follow this +convention, so parse_args() is available if you +need to parse arbitrarily goofy attribute syntax.

    +
    §Example
    +

    We’ll parse a struct, and then parse some of Rust’s #[repr] attribute +syntax.

    + +
    use syn::{parenthesized, parse_quote, token, ItemStruct, LitInt};
    +
    +let input: ItemStruct = parse_quote! {
    +    #[repr(C, align(4))]
    +    pub struct MyStruct(u16, u32);
    +};
    +
    +let mut repr_c = false;
    +let mut repr_transparent = false;
    +let mut repr_align = None::<usize>;
    +let mut repr_packed = None::<usize>;
    +for attr in &input.attrs {
    +    if attr.path().is_ident("repr") {
    +        attr.parse_nested_meta(|meta| {
    +            // #[repr(C)]
    +            if meta.path.is_ident("C") {
    +                repr_c = true;
    +                return Ok(());
    +            }
    +
    +            // #[repr(transparent)]
    +            if meta.path.is_ident("transparent") {
    +                repr_transparent = true;
    +                return Ok(());
    +            }
    +
    +            // #[repr(align(N))]
    +            if meta.path.is_ident("align") {
    +                let content;
    +                parenthesized!(content in meta.input);
    +                let lit: LitInt = content.parse()?;
    +                let n: usize = lit.base10_parse()?;
    +                repr_align = Some(n);
    +                return Ok(());
    +            }
    +
    +            // #[repr(packed)] or #[repr(packed(N))], omitted N means 1
    +            if meta.path.is_ident("packed") {
    +                if meta.input.peek(token::Paren) {
    +                    let content;
    +                    parenthesized!(content in meta.input);
    +                    let lit: LitInt = content.parse()?;
    +                    let n: usize = lit.base10_parse()?;
    +                    repr_packed = Some(n);
    +                } else {
    +                    repr_packed = Some(1);
    +                }
    +                return Ok(());
    +            }
    +
    +            Err(meta.error("unrecognized repr"))
    +        })?;
    +    }
    +}
    +
    §Alternatives
    +

    In some cases, for attributes which have nested layers of structured +content, the following less flexible approach might be more convenient:

    + +
    use syn::punctuated::Punctuated;
    +use syn::{parenthesized, token, Error, LitInt, Meta, Token};
    +
    +let mut repr_c = false;
    +let mut repr_transparent = false;
    +let mut repr_align = None::<usize>;
    +let mut repr_packed = None::<usize>;
    +for attr in &input.attrs {
    +    if attr.path().is_ident("repr") {
    +        let nested = attr.parse_args_with(Punctuated::<Meta, Token![,]>::parse_terminated)?;
    +        for meta in nested {
    +            match meta {
    +                // #[repr(C)]
    +                Meta::Path(path) if path.is_ident("C") => {
    +                    repr_c = true;
    +                }
    +
    +                // #[repr(align(N))]
    +                Meta::List(meta) if meta.path.is_ident("align") => {
    +                    let lit: LitInt = meta.parse_args()?;
    +                    let n: usize = lit.base10_parse()?;
    +                    repr_align = Some(n);
    +                }
    +
    +                /* ... */
    +
    +                _ => {
    +                    return Err(Error::new_spanned(meta, "unrecognized repr"));
    +                }
    +            }
    +        }
    +    }
    +}
    +
    source

    pub fn parse_outer(input: ParseStream<'_>) -> Result<Vec<Self>>

    Parses zero or more outer attributes from the stream.

    +
    §Example
    +

    See +Parsing from tokens to Attribute.

    +
    source

    pub fn parse_inner(input: ParseStream<'_>) -> Result<Vec<Self>>

    Parses zero or more inner attributes from the stream.

    +
    §Example
    +

    See +Parsing from tokens to Attribute.

    +

    Trait Implementations§

    source§

    impl Clone for Attribute

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Attribute

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for Attribute

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for Attribute

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Attribute

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Attribute

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.BareFnArg.html b/syn/struct.BareFnArg.html index 5cc59b8..7273012 100644 --- a/syn/struct.BareFnArg.html +++ b/syn/struct.BareFnArg.html @@ -1,27 +1,25 @@ -BareFnArg in syn - Rust

    Struct syn::BareFnArg

    source ·
    pub struct BareFnArg {
    -    pub attrs: Vec<Attribute>,
    -    pub name: Option<(Ident, Colon)>,
    +BareFnArg in syn - Rust
    syn

    Struct BareFnArg

    source
    pub struct BareFnArg {
    +    pub attrs: Vec<Attribute>,
    +    pub name: Option<(Ident, Colon)>,
         pub ty: Type,
     }
    Expand description

    An argument in a function type: the usize in fn(usize) -> bool.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Fields§

    §attrs: Vec<Attribute>§name: Option<(Ident, Colon)>§ty: Type

    Trait Implementations§

    source§

    impl Clone for BareFnArg

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for BareFnArg

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for BareFnArg

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for BareFnArg

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<BareFnArg> for BareFnArg

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for BareFnArg

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for BareFnArg

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §attrs: Vec<Attribute>§name: Option<(Ident, Colon)>§ty: Type

    Trait Implementations§

    source§

    impl Clone for BareFnArg

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for BareFnArg

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for BareFnArg

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for BareFnArg

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for BareFnArg

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for BareFnArg

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for BareFnArg

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.BareVariadic.html b/syn/struct.BareVariadic.html new file mode 100644 index 0000000..157c755 --- /dev/null +++ b/syn/struct.BareVariadic.html @@ -0,0 +1,26 @@ +BareVariadic in syn - Rust
    syn

    Struct BareVariadic

    source
    pub struct BareVariadic {
    +    pub attrs: Vec<Attribute>,
    +    pub name: Option<(Ident, Colon)>,
    +    pub dots: DotDotDot,
    +    pub comma: Option<Comma>,
    +}
    Expand description

    The variadic argument of a function pointer like fn(usize, ...).

    +

    Fields§

    §attrs: Vec<Attribute>§name: Option<(Ident, Colon)>§dots: DotDotDot§comma: Option<Comma>

    Trait Implementations§

    source§

    impl Clone for BareVariadic

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for BareVariadic

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for BareVariadic

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for BareVariadic

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for BareVariadic

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for BareVariadic

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.Binding.html b/syn/struct.Binding.html deleted file mode 100644 index aace536..0000000 --- a/syn/struct.Binding.html +++ /dev/null @@ -1,27 +0,0 @@ -Binding in syn - Rust

    Struct syn::Binding

    source ·
    pub struct Binding {
    -    pub ident: Ident,
    -    pub eq_token: Eq,
    -    pub ty: Type,
    -}
    Expand description

    A binding (equality constraint) on an associated type: Item = u8.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Fields§

    §ident: Ident§eq_token: Eq§ty: Type

    Trait Implementations§

    source§

    impl Clone for Binding

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Binding

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for Binding

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Binding

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Binding> for Binding

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Binding

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Binding

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.BoundLifetimes.html b/syn/struct.BoundLifetimes.html index 4b03085..5aa5759 100644 --- a/syn/struct.BoundLifetimes.html +++ b/syn/struct.BoundLifetimes.html @@ -1,28 +1,26 @@ -BoundLifetimes in syn - Rust

    Struct syn::BoundLifetimes

    source ·
    pub struct BoundLifetimes {
    +BoundLifetimes in syn - Rust
    syn

    Struct BoundLifetimes

    source
    pub struct BoundLifetimes {
         pub for_token: For,
         pub lt_token: Lt,
    -    pub lifetimes: Punctuated<LifetimeDef, Comma>,
    +    pub lifetimes: Punctuated<GenericParam, Comma>,
         pub gt_token: Gt,
     }
    Expand description

    A set of bound lifetimes: for<'a, 'b, 'c>.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Fields§

    §for_token: For§lt_token: Lt§lifetimes: Punctuated<LifetimeDef, Comma>§gt_token: Gt

    Trait Implementations§

    source§

    impl Clone for BoundLifetimes

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for BoundLifetimes

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for BoundLifetimes

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for BoundLifetimes

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for BoundLifetimes

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<BoundLifetimes> for BoundLifetimes

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for BoundLifetimes

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for BoundLifetimes

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §for_token: For§lt_token: Lt§lifetimes: Punctuated<GenericParam, Comma>§gt_token: Gt

    Trait Implementations§

    source§

    impl Clone for BoundLifetimes

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for BoundLifetimes

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for BoundLifetimes

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for BoundLifetimes

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for BoundLifetimes

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for BoundLifetimes

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for BoundLifetimes

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for BoundLifetimes

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ConstParam.html b/syn/struct.ConstParam.html index dab5bde..6d4d34f 100644 --- a/syn/struct.ConstParam.html +++ b/syn/struct.ConstParam.html @@ -1,31 +1,29 @@ -ConstParam in syn - Rust

    Struct syn::ConstParam

    source ·
    pub struct ConstParam {
    -    pub attrs: Vec<Attribute>,
    +ConstParam in syn - Rust
    syn

    Struct ConstParam

    source
    pub struct ConstParam {
    +    pub attrs: Vec<Attribute>,
         pub const_token: Const,
         pub ident: Ident,
         pub colon_token: Colon,
         pub ty: Type,
    -    pub eq_token: Option<Eq>,
    -    pub default: Option<Expr>,
    +    pub eq_token: Option<Eq>,
    +    pub default: Option<Expr>,
     }
    Expand description

    A const generic parameter: const LENGTH: usize.

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §attrs: Vec<Attribute>§const_token: Const§ident: Ident§colon_token: Colon§ty: Type§eq_token: Option<Eq>§default: Option<Expr>

    Trait Implementations§

    source§

    impl Clone for ConstParam

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ConstParam

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ConstParam> for GenericParam

    source§

    fn from(e: ConstParam) -> GenericParam

    Converts to this type from the input type.
    source§

    impl Hash for ConstParam

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for ConstParam

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<ConstParam> for ConstParam

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for ConstParam

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ConstParam

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §attrs: Vec<Attribute>§const_token: Const§ident: Ident§colon_token: Colon§ty: Type§eq_token: Option<Eq>§default: Option<Expr>

    Trait Implementations§

    source§

    impl Clone for ConstParam

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ConstParam

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ConstParam> for GenericParam

    source§

    fn from(e: ConstParam) -> GenericParam

    Converts to this type from the input type.
    source§

    impl Hash for ConstParam

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for ConstParam

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for ConstParam

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for ConstParam

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ConstParam

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.Constraint.html b/syn/struct.Constraint.html index 5ea473f..366471c 100644 --- a/syn/struct.Constraint.html +++ b/syn/struct.Constraint.html @@ -1,27 +1,26 @@ -Constraint in syn - Rust

    Struct syn::Constraint

    source ·
    pub struct Constraint {
    +Constraint in syn - Rust
    syn

    Struct Constraint

    source
    pub struct Constraint {
         pub ident: Ident,
    +    pub generics: Option<AngleBracketedGenericArguments>,
         pub colon_token: Colon,
    -    pub bounds: Punctuated<TypeParamBound, Add>,
    +    pub bounds: Punctuated<TypeParamBound, Plus>,
     }
    Expand description

    An associated type bound: Iterator<Item: Display>.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Fields§

    §ident: Ident§colon_token: Colon§bounds: Punctuated<TypeParamBound, Add>

    Trait Implementations§

    source§

    impl Clone for Constraint

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Constraint

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for Constraint

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<Constraint> for Constraint

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Constraint

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Constraint

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §ident: Ident§generics: Option<AngleBracketedGenericArguments>§colon_token: Colon§bounds: Punctuated<TypeParamBound, Plus>

    Trait Implementations§

    source§

    impl Clone for Constraint

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Constraint

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for Constraint

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for Constraint

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Constraint

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Constraint

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.DataEnum.html b/syn/struct.DataEnum.html index 686e4b0..8b5dd0f 100644 --- a/syn/struct.DataEnum.html +++ b/syn/struct.DataEnum.html @@ -1,24 +1,22 @@ -DataEnum in syn - Rust

    Struct syn::DataEnum

    source ·
    pub struct DataEnum {
    +DataEnum in syn - Rust
    syn

    Struct DataEnum

    source
    pub struct DataEnum {
         pub enum_token: Enum,
         pub brace_token: Brace,
         pub variants: Punctuated<Variant, Comma>,
     }
    Expand description

    An enum input to a proc_macro_derive macro.

    -

    This type is available only if Syn is built with the "derive" -feature.

    -

    Fields§

    §enum_token: Enum§brace_token: Brace§variants: Punctuated<Variant, Comma>

    Trait Implementations§

    source§

    impl Clone for DataEnum

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for DataEnum

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<DataEnum> for Data

    source§

    fn from(e: DataEnum) -> Data

    Converts to this type from the input type.
    source§

    impl Hash for DataEnum

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<DataEnum> for DataEnum

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for DataEnum

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §enum_token: Enum§brace_token: Brace§variants: Punctuated<Variant, Comma>

    Trait Implementations§

    source§

    impl Clone for DataEnum

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for DataEnum

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for DataEnum

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for DataEnum

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Eq for DataEnum

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.DataStruct.html b/syn/struct.DataStruct.html index 73e18b5..135fd7c 100644 --- a/syn/struct.DataStruct.html +++ b/syn/struct.DataStruct.html @@ -1,24 +1,22 @@ -DataStruct in syn - Rust

    Struct syn::DataStruct

    source ·
    pub struct DataStruct {
    +DataStruct in syn - Rust
    syn

    Struct DataStruct

    source
    pub struct DataStruct {
         pub struct_token: Struct,
         pub fields: Fields,
    -    pub semi_token: Option<Semi>,
    +    pub semi_token: Option<Semi>,
     }
    Expand description

    A struct input to a proc_macro_derive macro.

    -

    This type is available only if Syn is built with the "derive" -feature.

    -

    Fields§

    §struct_token: Struct§fields: Fields§semi_token: Option<Semi>

    Trait Implementations§

    source§

    impl Clone for DataStruct

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for DataStruct

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<DataStruct> for Data

    source§

    fn from(e: DataStruct) -> Data

    Converts to this type from the input type.
    source§

    impl Hash for DataStruct

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<DataStruct> for DataStruct

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for DataStruct

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §struct_token: Struct§fields: Fields§semi_token: Option<Semi>

    Trait Implementations§

    source§

    impl Clone for DataStruct

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for DataStruct

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for DataStruct

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for DataStruct

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Eq for DataStruct

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.DataUnion.html b/syn/struct.DataUnion.html index d370f3b..c49aee4 100644 --- a/syn/struct.DataUnion.html +++ b/syn/struct.DataUnion.html @@ -1,23 +1,21 @@ -DataUnion in syn - Rust

    Struct syn::DataUnion

    source ·
    pub struct DataUnion {
    +DataUnion in syn - Rust
    syn

    Struct DataUnion

    source
    pub struct DataUnion {
         pub union_token: Union,
         pub fields: FieldsNamed,
     }
    Expand description

    An untagged union input to a proc_macro_derive macro.

    -

    This type is available only if Syn is built with the "derive" -feature.

    -

    Fields§

    §union_token: Union§fields: FieldsNamed

    Trait Implementations§

    source§

    impl Clone for DataUnion

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for DataUnion

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<DataUnion> for Data

    source§

    fn from(e: DataUnion) -> Data

    Converts to this type from the input type.
    source§

    impl Hash for DataUnion

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<DataUnion> for DataUnion

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for DataUnion

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §union_token: Union§fields: FieldsNamed

    Trait Implementations§

    source§

    impl Clone for DataUnion

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for DataUnion

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for DataUnion

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for DataUnion

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Eq for DataUnion

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.DeriveInput.html b/syn/struct.DeriveInput.html index d94cd4d..df80129 100644 --- a/syn/struct.DeriveInput.html +++ b/syn/struct.DeriveInput.html @@ -1,33 +1,27 @@ -DeriveInput in syn - Rust

    Struct syn::DeriveInput

    source ·
    pub struct DeriveInput {
    -    pub attrs: Vec<Attribute>,
    +DeriveInput in syn - Rust
    syn

    Struct DeriveInput

    source
    pub struct DeriveInput {
    +    pub attrs: Vec<Attribute>,
         pub vis: Visibility,
         pub ident: Ident,
         pub generics: Generics,
         pub data: Data,
     }
    Expand description

    Data structure sent to a proc_macro_derive macro.

    -

    This type is available only if Syn is built with the "derive" feature.

    -

    Fields§

    §attrs: Vec<Attribute>

    Attributes tagged on the whole struct or enum.

    -
    §vis: Visibility

    Visibility of the struct or enum.

    -
    §ident: Ident

    Name of the struct or enum.

    -
    §generics: Generics

    Generics required to complete the definition.

    -
    §data: Data

    Data within the struct or enum.

    -

    Trait Implementations§

    source§

    impl Clone for DeriveInput

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for DeriveInput

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for DeriveInput

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for DeriveInput

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<DeriveInput> for DeriveInput

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for DeriveInput

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for DeriveInput

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §attrs: Vec<Attribute>§vis: Visibility§ident: Ident§generics: Generics§data: Data

    Trait Implementations§

    source§

    impl Clone for DeriveInput

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for DeriveInput

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for DeriveInput

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for DeriveInput

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for DeriveInput

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for DeriveInput

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for DeriveInput

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.Error.html b/syn/struct.Error.html index bf12485..1cc2859 100644 --- a/syn/struct.Error.html +++ b/syn/struct.Error.html @@ -1,22 +1,33 @@ -Error in syn - Rust

    Struct syn::Error

    source ·
    pub struct Error { /* private fields */ }
    Expand description

    Error returned when a Syn parser cannot parse the input tokens.

    -

    Error reporting in proc macros

    +Error in syn - Rust
    syn

    Struct Error

    source
    pub struct Error { /* private fields */ }
    Expand description

    Error returned when a Syn parser cannot parse the input tokens.

    +

    §Error reporting in proc macros

    The correct way to report errors back to the compiler from a procedural macro is by emitting an appropriately spanned invocation of -compile_error! in the generated code. This produces a better diagnostic +compile_error! in the generated code. This produces a better diagnostic message than simply panicking the macro.

    When parsing macro input, the parse_macro_input! macro handles the conversion to compile_error! automatically.

    use proc_macro::TokenStream;
    -use syn::{parse_macro_input, AttributeArgs, ItemFn};
    +use syn::parse::{Parse, ParseStream, Result};
    +use syn::{parse_macro_input, ItemFn};
     
     #[proc_macro_attribute]
     pub fn my_attr(args: TokenStream, input: TokenStream) -> TokenStream {
    -    let args = parse_macro_input!(args as AttributeArgs);
    +    let args = parse_macro_input!(args as MyAttrArgs);
         let input = parse_macro_input!(input as ItemFn);
     
         /* ... */
    -}
    +} + +struct MyAttrArgs { + ... +} + +impl Parse for MyAttrArgs { + fn parse(input: ParseStream) -> Result<Self> { + ... + } +}

    For errors that arise later than the initial parsing stage, the .to_compile_error() or .into_compile_error() methods can be used to perform an explicit conversion to compile_error!.

    @@ -30,30 +41,30 @@ perform an explicit conversion to compile_error!.

    .unwrap_or_else(syn::Error::into_compile_error) .into() }
    -

    Implementations§

    source§

    impl Error

    source

    pub fn new<T: Display>(span: Span, message: T) -> Self

    Usually the ParseStream::error method will be used instead, which +

    Implementations§

    source§

    impl Error

    source

    pub fn new<T: Display>(span: Span, message: T) -> Self

    Usually the ParseStream::error method will be used instead, which automatically uses the correct span from the current position of the parse stream.

    Use Error::new when the error needs to be triggered on some span other than where the parse stream is currently positioned.

    -
    Example
    +
    §Example
    use syn::{Error, Ident, LitStr, Result, Token};
     use syn::parse::ParseStream;
     
    -// Parses input that looks like `name = "string"` where the key must be
    +// Parses input that looks like `name = "string"` where the key must be
     // the identifier `name` and the value may be any string literal.
     // Returns the string literal.
     fn parse_name(input: ParseStream) -> Result<LitStr> {
         let name_token: Ident = input.parse()?;
    -    if name_token != "name" {
    +    if name_token != "name" {
             // Trigger an error not on the current position of the stream,
             // but on the position of the unexpected identifier.
    -        return Err(Error::new(name_token.span(), "expected `name`"));
    +        return Err(Error::new(name_token.span(), "expected `name`"));
         }
         input.parse::<Token![=]>()?;
         let s: LitStr = input.parse()?;
         Ok(s)
     }
    -
    source

    pub fn new_spanned<T: ToTokens, U: Display>(tokens: T, message: U) -> Self

    Creates an error with the specified message spanning the given syntax +

    source

    pub fn new_spanned<T: ToTokens, U: Display>(tokens: T, message: U) -> Self

    Creates an error with the specified message spanning the given syntax tree node.

    Unlike the Error::new constructor, this constructor takes an argument tokens which is a syntax tree node. This allows the resulting Error @@ -64,15 +75,15 @@ constructor, implementation limitations today mean that stable Rust.

    When in doubt it’s recommended to stick to Error::new (or ParseStream::error)!

    -
    source

    pub fn span(&self) -> Span

    The source location of the error.

    +
    source

    pub fn span(&self) -> Span

    The source location of the error.

    Spans are not thread-safe so this function returns Span::call_site() if called from a different thread than the one on which the Error was originally created.

    -
    source

    pub fn to_compile_error(&self) -> TokenStream

    Render the error as an invocation of compile_error!.

    +
    source

    pub fn to_compile_error(&self) -> TokenStream

    Render the error as an invocation of compile_error!.

    The parse_macro_input! macro provides a convenient way to invoke this method correctly in a procedural macro.

    -
    source

    pub fn into_compile_error(self) -> TokenStream

    Render the error as an invocation of compile_error!.

    -
    Example
    +
    source

    pub fn into_compile_error(self) -> TokenStream

    Render the error as an invocation of compile_error!.

    +
    §Example
    use proc_macro::TokenStream;
     use syn::{parse_macro_input, DeriveInput, Error};
     
    @@ -92,18 +103,19 @@ this method correctly in a procedural macro.

    /* ... */ } }
    -
    source

    pub fn combine(&mut self, another: Error)

    Add another error message to self such that when to_compile_error() is +

    source

    pub fn combine(&mut self, another: Error)

    Add another error message to self such that when to_compile_error() is called, both errors will be emitted together.

    -

    Trait Implementations§

    source§

    impl Clone for Error

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Error

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for Error

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for Error

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl Extend<Error> for Error

    source§

    fn extend<T: IntoIterator<Item = Error>>(&mut self, iter: T)

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, item: A)

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    source§

    impl From<LexError> for Error

    source§

    fn from(err: LexError) -> Self

    Converts to this type from the input type.
    source§

    impl<'a> IntoIterator for &'a Error

    §

    type Item = Error

    The type of the elements being iterated over.
    §

    type IntoIter = Iter<'a>

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl IntoIterator for Error

    §

    type Item = Error

    The type of the elements being iterated over.
    §

    type IntoIter = IntoIter

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Error

    §

    impl Send for Error

    §

    impl Sync for Error

    §

    impl Unpin for Error

    §

    impl UnwindSafe for Error

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for Error

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Error

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for Error

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for Error

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    Returns the lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type-based access to context intended for error reports. Read more
    source§

    impl Extend<Error> for Error

    source§

    fn extend<T: IntoIterator<Item = Error>>(&mut self, iter: T)

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, item: A)

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    source§

    impl From<LexError> for Error

    source§

    fn from(err: LexError) -> Self

    Converts to this type from the input type.
    source§

    impl<'a> IntoIterator for &'a Error

    source§

    type Item = Error

    The type of the elements being iterated over.
    source§

    type IntoIter = Iter<'a>

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl IntoIterator for Error

    source§

    type Item = Error

    The type of the elements being iterated over.
    source§

    type IntoIter = IntoIter

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more

    Auto Trait Implementations§

    §

    impl Freeze for Error

    §

    impl RefUnwindSafe for Error

    §

    impl Send for Error

    §

    impl Sync for Error

    §

    impl Unpin for Error

    §

    impl UnwindSafe for Error

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for Twhere - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprArray.html b/syn/struct.ExprArray.html index af211e2..bb6bc72 100644 --- a/syn/struct.ExprArray.html +++ b/syn/struct.ExprArray.html @@ -1,16 +1,15 @@ -ExprArray in syn - Rust

    Struct syn::ExprArray

    source ·
    pub struct ExprArray { /* private fields */ }
    Expand description

    A slice literal expression: [a, b, c, d].

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprArray> for Expr

    source§

    fn from(e: ExprArray) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprArray

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +ExprArray in syn - Rust
    syn

    Struct ExprArray

    source
    pub struct ExprArray { /* private fields */ }
    Expand description

    A slice literal expression: [a, b, c, d].

    +

    Trait Implementations§

    source§

    impl From<ExprArray> for Expr

    source§

    fn from(e: ExprArray) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprArray

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprAssign.html b/syn/struct.ExprAssign.html index 0dafc6a..02b4be3 100644 --- a/syn/struct.ExprAssign.html +++ b/syn/struct.ExprAssign.html @@ -1,16 +1,15 @@ -ExprAssign in syn - Rust

    Struct syn::ExprAssign

    source ·
    pub struct ExprAssign { /* private fields */ }
    Expand description

    An assignment expression: a = compute().

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprAssign> for Expr

    source§

    fn from(e: ExprAssign) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprAssign

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +ExprAssign in syn - Rust
    syn

    Struct ExprAssign

    source
    pub struct ExprAssign { /* private fields */ }
    Expand description

    An assignment expression: a = compute().

    +

    Trait Implementations§

    source§

    impl From<ExprAssign> for Expr

    source§

    fn from(e: ExprAssign) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprAssign

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprAssignOp.html b/syn/struct.ExprAssignOp.html deleted file mode 100644 index 12f7836..0000000 --- a/syn/struct.ExprAssignOp.html +++ /dev/null @@ -1,16 +0,0 @@ -ExprAssignOp in syn - Rust

    Struct syn::ExprAssignOp

    source ·
    pub struct ExprAssignOp { /* private fields */ }
    Expand description

    A compound assignment expression: counter += 1.

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprAssignOp> for Expr

    source§

    fn from(e: ExprAssignOp) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprAssignOp

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprAsync.html b/syn/struct.ExprAsync.html index 071707e..2f006f9 100644 --- a/syn/struct.ExprAsync.html +++ b/syn/struct.ExprAsync.html @@ -1,16 +1,15 @@ -ExprAsync in syn - Rust

    Struct syn::ExprAsync

    source ·
    pub struct ExprAsync { /* private fields */ }
    Expand description

    An async block: async { ... }.

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprAsync> for Expr

    source§

    fn from(e: ExprAsync) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprAsync

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +ExprAsync in syn - Rust
    syn

    Struct ExprAsync

    source
    pub struct ExprAsync { /* private fields */ }
    Expand description

    An async block: async { ... }.

    +

    Trait Implementations§

    source§

    impl From<ExprAsync> for Expr

    source§

    fn from(e: ExprAsync) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprAsync

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprAwait.html b/syn/struct.ExprAwait.html index 4712970..62b6a6d 100644 --- a/syn/struct.ExprAwait.html +++ b/syn/struct.ExprAwait.html @@ -1,16 +1,15 @@ -ExprAwait in syn - Rust

    Struct syn::ExprAwait

    source ·
    pub struct ExprAwait { /* private fields */ }
    Expand description

    An await expression: fut.await.

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprAwait> for Expr

    source§

    fn from(e: ExprAwait) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprAwait

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +ExprAwait in syn - Rust
    syn

    Struct ExprAwait

    source
    pub struct ExprAwait { /* private fields */ }
    Expand description

    An await expression: fut.await.

    +

    Trait Implementations§

    source§

    impl From<ExprAwait> for Expr

    source§

    fn from(e: ExprAwait) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprAwait

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprBinary.html b/syn/struct.ExprBinary.html index 02326e4..bf497ea 100644 --- a/syn/struct.ExprBinary.html +++ b/syn/struct.ExprBinary.html @@ -1,28 +1,26 @@ -ExprBinary in syn - Rust

    Struct syn::ExprBinary

    source ·
    pub struct ExprBinary {
    -    pub attrs: Vec<Attribute>,
    -    pub left: Box<Expr>,
    +ExprBinary in syn - Rust
    syn

    Struct ExprBinary

    source
    pub struct ExprBinary {
    +    pub attrs: Vec<Attribute>,
    +    pub left: Box<Expr>,
         pub op: BinOp,
    -    pub right: Box<Expr>,
    -}
    Expand description

    A binary operation: a + b, a * b.

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §attrs: Vec<Attribute>§left: Box<Expr>§op: BinOp§right: Box<Expr>

    Trait Implementations§

    source§

    impl Clone for ExprBinary

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ExprBinary

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ExprBinary> for Expr

    source§

    fn from(e: ExprBinary) -> Expr

    Converts to this type from the input type.
    source§

    impl Hash for ExprBinary

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<ExprBinary> for ExprBinary

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for ExprBinary

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ExprBinary

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    + pub right: Box<Expr>, +}
    Expand description

    A binary operation: a + b, a += b.

    +

    Fields§

    §attrs: Vec<Attribute>§left: Box<Expr>§op: BinOp§right: Box<Expr>

    Trait Implementations§

    source§

    impl Clone for ExprBinary

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ExprBinary

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ExprBinary> for Expr

    source§

    fn from(e: ExprBinary) -> Expr

    Converts to this type from the input type.
    source§

    impl Hash for ExprBinary

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for ExprBinary

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for ExprBinary

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ExprBinary

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprBlock.html b/syn/struct.ExprBlock.html index e7ecddc..2557b75 100644 --- a/syn/struct.ExprBlock.html +++ b/syn/struct.ExprBlock.html @@ -1,16 +1,15 @@ -ExprBlock in syn - Rust

    Struct syn::ExprBlock

    source ·
    pub struct ExprBlock { /* private fields */ }
    Expand description

    A blocked scope: { ... }.

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprBlock> for Expr

    source§

    fn from(e: ExprBlock) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprBlock

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +ExprBlock in syn - Rust
    syn

    Struct ExprBlock

    source
    pub struct ExprBlock { /* private fields */ }
    Expand description

    A blocked scope: { ... }.

    +

    Trait Implementations§

    source§

    impl From<ExprBlock> for Expr

    source§

    fn from(e: ExprBlock) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprBlock

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprBox.html b/syn/struct.ExprBox.html deleted file mode 100644 index bac59c6..0000000 --- a/syn/struct.ExprBox.html +++ /dev/null @@ -1,16 +0,0 @@ -ExprBox in syn - Rust

    Struct syn::ExprBox

    source ·
    pub struct ExprBox { /* private fields */ }
    Expand description

    A box expression: box f.

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprBox> for Expr

    source§

    fn from(e: ExprBox) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprBox

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprBreak.html b/syn/struct.ExprBreak.html index 9a8d8ca..51340e3 100644 --- a/syn/struct.ExprBreak.html +++ b/syn/struct.ExprBreak.html @@ -1,17 +1,16 @@ -ExprBreak in syn - Rust

    Struct syn::ExprBreak

    source ·
    pub struct ExprBreak { /* private fields */ }
    Expand description

    A break, with an optional label to break and an optional +ExprBreak in syn - Rust

    syn

    Struct ExprBreak

    source
    pub struct ExprBreak { /* private fields */ }
    Expand description

    A break, with an optional label to break and an optional expression.

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprBreak> for Expr

    source§

    fn from(e: ExprBreak) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprBreak

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl From<ExprBreak> for Expr

    source§

    fn from(e: ExprBreak) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprBreak

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprCall.html b/syn/struct.ExprCall.html index 0597d27..db5879f 100644 --- a/syn/struct.ExprCall.html +++ b/syn/struct.ExprCall.html @@ -1,28 +1,26 @@ -ExprCall in syn - Rust

    Struct syn::ExprCall

    source ·
    pub struct ExprCall {
    -    pub attrs: Vec<Attribute>,
    -    pub func: Box<Expr>,
    +ExprCall in syn - Rust
    syn

    Struct ExprCall

    source
    pub struct ExprCall {
    +    pub attrs: Vec<Attribute>,
    +    pub func: Box<Expr>,
         pub paren_token: Paren,
         pub args: Punctuated<Expr, Comma>,
     }
    Expand description

    A function call expression: invoke(a, b).

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §attrs: Vec<Attribute>§func: Box<Expr>§paren_token: Paren§args: Punctuated<Expr, Comma>

    Trait Implementations§

    source§

    impl Clone for ExprCall

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ExprCall

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ExprCall> for Expr

    source§

    fn from(e: ExprCall) -> Expr

    Converts to this type from the input type.
    source§

    impl Hash for ExprCall

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<ExprCall> for ExprCall

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for ExprCall

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ExprCall

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §attrs: Vec<Attribute>§func: Box<Expr>§paren_token: Paren§args: Punctuated<Expr, Comma>

    Trait Implementations§

    source§

    impl Clone for ExprCall

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ExprCall

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ExprCall> for Expr

    source§

    fn from(e: ExprCall) -> Expr

    Converts to this type from the input type.
    source§

    impl Hash for ExprCall

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for ExprCall

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for ExprCall

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ExprCall

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprCast.html b/syn/struct.ExprCast.html index da69606..f199edb 100644 --- a/syn/struct.ExprCast.html +++ b/syn/struct.ExprCast.html @@ -1,28 +1,26 @@ -ExprCast in syn - Rust

    Struct syn::ExprCast

    source ·
    pub struct ExprCast {
    -    pub attrs: Vec<Attribute>,
    -    pub expr: Box<Expr>,
    +ExprCast in syn - Rust
    syn

    Struct ExprCast

    source
    pub struct ExprCast {
    +    pub attrs: Vec<Attribute>,
    +    pub expr: Box<Expr>,
         pub as_token: As,
    -    pub ty: Box<Type>,
    +    pub ty: Box<Type>,
     }
    Expand description

    A cast expression: foo as f64.

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §attrs: Vec<Attribute>§expr: Box<Expr>§as_token: As§ty: Box<Type>

    Trait Implementations§

    source§

    impl Clone for ExprCast

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ExprCast

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ExprCast> for Expr

    source§

    fn from(e: ExprCast) -> Expr

    Converts to this type from the input type.
    source§

    impl Hash for ExprCast

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<ExprCast> for ExprCast

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for ExprCast

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ExprCast

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §attrs: Vec<Attribute>§expr: Box<Expr>§as_token: As§ty: Box<Type>

    Trait Implementations§

    source§

    impl Clone for ExprCast

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ExprCast

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ExprCast> for Expr

    source§

    fn from(e: ExprCast) -> Expr

    Converts to this type from the input type.
    source§

    impl Hash for ExprCast

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for ExprCast

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for ExprCast

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ExprCast

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprClosure.html b/syn/struct.ExprClosure.html index 92bbe4a..880bfc6 100644 --- a/syn/struct.ExprClosure.html +++ b/syn/struct.ExprClosure.html @@ -1,16 +1,15 @@ -ExprClosure in syn - Rust

    Struct syn::ExprClosure

    source ·
    pub struct ExprClosure { /* private fields */ }
    Expand description

    A closure expression: |a, b| a + b.

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprClosure> for Expr

    source§

    fn from(e: ExprClosure) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprClosure

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +ExprClosure in syn - Rust
    syn

    Struct ExprClosure

    source
    pub struct ExprClosure { /* private fields */ }
    Expand description

    A closure expression: |a, b| a + b.

    +

    Trait Implementations§

    source§

    impl From<ExprClosure> for Expr

    source§

    fn from(e: ExprClosure) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprClosure

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprConst.html b/syn/struct.ExprConst.html new file mode 100644 index 0000000..f388873 --- /dev/null +++ b/syn/struct.ExprConst.html @@ -0,0 +1,15 @@ +ExprConst in syn - Rust
    syn

    Struct ExprConst

    source
    pub struct ExprConst { /* private fields */ }
    Expand description

    A const block: const { ... }.

    +

    Trait Implementations§

    source§

    impl From<ExprConst> for Expr

    source§

    fn from(e: ExprConst) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprConst

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprContinue.html b/syn/struct.ExprContinue.html index ee53d87..538307b 100644 --- a/syn/struct.ExprContinue.html +++ b/syn/struct.ExprContinue.html @@ -1,16 +1,15 @@ -ExprContinue in syn - Rust

    Struct syn::ExprContinue

    source ·
    pub struct ExprContinue { /* private fields */ }
    Expand description

    A continue, with an optional label.

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprContinue> for Expr

    source§

    fn from(e: ExprContinue) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprContinue

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +ExprContinue in syn - Rust
    syn

    Struct ExprContinue

    source
    pub struct ExprContinue { /* private fields */ }
    Expand description

    A continue, with an optional label.

    +

    Trait Implementations§

    source§

    impl From<ExprContinue> for Expr

    source§

    fn from(e: ExprContinue) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprContinue

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprField.html b/syn/struct.ExprField.html index 52d1707..ef65097 100644 --- a/syn/struct.ExprField.html +++ b/syn/struct.ExprField.html @@ -1,28 +1,27 @@ -ExprField in syn - Rust

    Struct syn::ExprField

    source ·
    pub struct ExprField {
    -    pub attrs: Vec<Attribute>,
    -    pub base: Box<Expr>,
    +ExprField in syn - Rust
    syn

    Struct ExprField

    source
    pub struct ExprField {
    +    pub attrs: Vec<Attribute>,
    +    pub base: Box<Expr>,
         pub dot_token: Dot,
         pub member: Member,
     }
    Expand description

    Access of a named struct field (obj.k) or unnamed tuple struct field (obj.0).

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Fields§

    §attrs: Vec<Attribute>§base: Box<Expr>§dot_token: Dot§member: Member

    Trait Implementations§

    source§

    impl Clone for ExprField

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ExprField

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ExprField> for Expr

    source§

    fn from(e: ExprField) -> Expr

    Converts to this type from the input type.
    source§

    impl Hash for ExprField

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<ExprField> for ExprField

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for ExprField

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ExprField

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §attrs: Vec<Attribute>§base: Box<Expr>§dot_token: Dot§member: Member

    Trait Implementations§

    source§

    impl Clone for ExprField

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ExprField

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ExprField> for Expr

    source§

    fn from(e: ExprField) -> Expr

    Converts to this type from the input type.
    source§

    impl Hash for ExprField

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for ExprField

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for ExprField

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ExprField

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprForLoop.html b/syn/struct.ExprForLoop.html index da6de78..b44bc18 100644 --- a/syn/struct.ExprForLoop.html +++ b/syn/struct.ExprForLoop.html @@ -1,16 +1,15 @@ -ExprForLoop in syn - Rust

    Struct syn::ExprForLoop

    source ·
    pub struct ExprForLoop { /* private fields */ }
    Expand description

    A for loop: for pat in expr { ... }.

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprForLoop> for Expr

    source§

    fn from(e: ExprForLoop) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprForLoop

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +ExprForLoop in syn - Rust
    syn

    Struct ExprForLoop

    source
    pub struct ExprForLoop { /* private fields */ }
    Expand description

    A for loop: for pat in expr { ... }.

    +

    Trait Implementations§

    source§

    impl From<ExprForLoop> for Expr

    source§

    fn from(e: ExprForLoop) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprForLoop

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprGroup.html b/syn/struct.ExprGroup.html index 3a1a4cb..fdadaf0 100644 --- a/syn/struct.ExprGroup.html +++ b/syn/struct.ExprGroup.html @@ -1,19 +1,28 @@ -ExprGroup in syn - Rust

    Struct syn::ExprGroup

    source ·
    pub struct ExprGroup { /* private fields */ }
    Expand description

    An expression contained within invisible delimiters.

    +ExprGroup in syn - Rust
    syn

    Struct ExprGroup

    source
    pub struct ExprGroup {
    +    pub attrs: Vec<Attribute>,
    +    pub group_token: Group,
    +    pub expr: Box<Expr>,
    +}
    Expand description

    An expression contained within invisible delimiters.

    This variant is important for faithfully representing the precedence of expressions and is related to None-delimited spans in a TokenStream.

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprGroup> for Expr

    source§

    fn from(e: ExprGroup) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprGroup

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §attrs: Vec<Attribute>§group_token: Group§expr: Box<Expr>

    Trait Implementations§

    source§

    impl Clone for ExprGroup

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ExprGroup

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ExprGroup> for Expr

    source§

    fn from(e: ExprGroup) -> Expr

    Converts to this type from the input type.
    source§

    impl Hash for ExprGroup

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for ExprGroup

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for ExprGroup

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ExprGroup

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprIf.html b/syn/struct.ExprIf.html index 33bf351..60d6eb2 100644 --- a/syn/struct.ExprIf.html +++ b/syn/struct.ExprIf.html @@ -1,18 +1,17 @@ -ExprIf in syn - Rust

    Struct syn::ExprIf

    source ·
    pub struct ExprIf { /* private fields */ }
    Expand description

    An if expression with an optional else block: if expr { ... } else { ... }.

    +ExprIf in syn - Rust
    syn

    Struct ExprIf

    source
    pub struct ExprIf { /* private fields */ }
    Expand description

    An if expression with an optional else block: if expr { ... } else { ... }.

    The else branch expression may only be an If or Block expression, not any of the other types of expression.

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprIf> for Expr

    source§

    fn from(e: ExprIf) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprIf

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for ExprIf

    §

    impl !Send for ExprIf

    §

    impl !Sync for ExprIf

    §

    impl Unpin for ExprIf

    §

    impl UnwindSafe for ExprIf

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl From<ExprIf> for Expr

    source§

    fn from(e: ExprIf) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprIf

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    §

    impl Freeze for ExprIf

    §

    impl RefUnwindSafe for ExprIf

    §

    impl !Send for ExprIf

    §

    impl !Sync for ExprIf

    §

    impl Unpin for ExprIf

    §

    impl UnwindSafe for ExprIf

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprIndex.html b/syn/struct.ExprIndex.html index 703b8b1..701e58c 100644 --- a/syn/struct.ExprIndex.html +++ b/syn/struct.ExprIndex.html @@ -1,28 +1,26 @@ -ExprIndex in syn - Rust

    Struct syn::ExprIndex

    source ·
    pub struct ExprIndex {
    -    pub attrs: Vec<Attribute>,
    -    pub expr: Box<Expr>,
    +ExprIndex in syn - Rust
    syn

    Struct ExprIndex

    source
    pub struct ExprIndex {
    +    pub attrs: Vec<Attribute>,
    +    pub expr: Box<Expr>,
         pub bracket_token: Bracket,
    -    pub index: Box<Expr>,
    +    pub index: Box<Expr>,
     }
    Expand description

    A square bracketed indexing expression: vector[2].

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §attrs: Vec<Attribute>§expr: Box<Expr>§bracket_token: Bracket§index: Box<Expr>

    Trait Implementations§

    source§

    impl Clone for ExprIndex

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ExprIndex

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ExprIndex> for Expr

    source§

    fn from(e: ExprIndex) -> Expr

    Converts to this type from the input type.
    source§

    impl Hash for ExprIndex

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<ExprIndex> for ExprIndex

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for ExprIndex

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ExprIndex

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §attrs: Vec<Attribute>§expr: Box<Expr>§bracket_token: Bracket§index: Box<Expr>

    Trait Implementations§

    source§

    impl Clone for ExprIndex

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ExprIndex

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ExprIndex> for Expr

    source§

    fn from(e: ExprIndex) -> Expr

    Converts to this type from the input type.
    source§

    impl Hash for ExprIndex

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for ExprIndex

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for ExprIndex

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ExprIndex

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprInfer.html b/syn/struct.ExprInfer.html new file mode 100644 index 0000000..ea7448f --- /dev/null +++ b/syn/struct.ExprInfer.html @@ -0,0 +1,15 @@ +ExprInfer in syn - Rust
    syn

    Struct ExprInfer

    source
    pub struct ExprInfer { /* private fields */ }
    Expand description

    The inferred value of a const generic argument, denoted _.

    +

    Trait Implementations§

    source§

    impl From<ExprInfer> for Expr

    source§

    fn from(e: ExprInfer) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprInfer

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprLet.html b/syn/struct.ExprLet.html index c92c975..dcac92f 100644 --- a/syn/struct.ExprLet.html +++ b/syn/struct.ExprLet.html @@ -1,16 +1,15 @@ -ExprLet in syn - Rust

    Struct syn::ExprLet

    source ·
    pub struct ExprLet { /* private fields */ }
    Expand description

    A let guard: let Some(x) = opt.

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprLet> for Expr

    source§

    fn from(e: ExprLet) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprLet

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +ExprLet in syn - Rust
    syn

    Struct ExprLet

    source
    pub struct ExprLet { /* private fields */ }
    Expand description

    A let guard: let Some(x) = opt.

    +

    Trait Implementations§

    source§

    impl From<ExprLet> for Expr

    source§

    fn from(e: ExprLet) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprLet

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprLit.html b/syn/struct.ExprLit.html index 3ed4557..64352c3 100644 --- a/syn/struct.ExprLit.html +++ b/syn/struct.ExprLit.html @@ -1,26 +1,24 @@ -ExprLit in syn - Rust

    Struct syn::ExprLit

    source ·
    pub struct ExprLit {
    -    pub attrs: Vec<Attribute>,
    +ExprLit in syn - Rust
    syn

    Struct ExprLit

    source
    pub struct ExprLit {
    +    pub attrs: Vec<Attribute>,
         pub lit: Lit,
    -}
    Expand description

    A literal in place of an expression: 1, "foo".

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §attrs: Vec<Attribute>§lit: Lit

    Trait Implementations§

    source§

    impl Clone for ExprLit

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ExprLit

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ExprLit> for Expr

    source§

    fn from(e: ExprLit) -> Expr

    Converts to this type from the input type.
    source§

    impl Hash for ExprLit

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for ExprLit

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<ExprLit> for ExprLit

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for ExprLit

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ExprLit

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +}
    Expand description

    A literal in place of an expression: 1, "foo".

    +

    Fields§

    §attrs: Vec<Attribute>§lit: Lit

    Trait Implementations§

    source§

    impl Clone for ExprLit

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ExprLit

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ExprLit> for Expr

    source§

    fn from(e: ExprLit) -> Expr

    Converts to this type from the input type.
    source§

    impl Hash for ExprLit

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for ExprLit

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for ExprLit

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for ExprLit

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ExprLit

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprLoop.html b/syn/struct.ExprLoop.html index 0bc130d..cb1ceec 100644 --- a/syn/struct.ExprLoop.html +++ b/syn/struct.ExprLoop.html @@ -1,16 +1,15 @@ -ExprLoop in syn - Rust

    Struct syn::ExprLoop

    source ·
    pub struct ExprLoop { /* private fields */ }
    Expand description

    Conditionless loop: loop { ... }.

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprLoop> for Expr

    source§

    fn from(e: ExprLoop) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprLoop

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +ExprLoop in syn - Rust
    syn

    Struct ExprLoop

    source
    pub struct ExprLoop { /* private fields */ }
    Expand description

    Conditionless loop: loop { ... }.

    +

    Trait Implementations§

    source§

    impl From<ExprLoop> for Expr

    source§

    fn from(e: ExprLoop) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprLoop

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprMacro.html b/syn/struct.ExprMacro.html index 24680fc..3de7286 100644 --- a/syn/struct.ExprMacro.html +++ b/syn/struct.ExprMacro.html @@ -1,16 +1,24 @@ -ExprMacro in syn - Rust

    Struct syn::ExprMacro

    source ·
    pub struct ExprMacro { /* private fields */ }
    Expand description

    A macro invocation expression: format!("{}", q).

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprMacro> for Expr

    source§

    fn from(e: ExprMacro) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprMacro

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +ExprMacro in syn - Rust
    syn

    Struct ExprMacro

    source
    pub struct ExprMacro {
    +    pub attrs: Vec<Attribute>,
    +    pub mac: Macro,
    +}
    Expand description

    A macro invocation expression: format!("{}", q).

    +

    Fields§

    §attrs: Vec<Attribute>§mac: Macro

    Trait Implementations§

    source§

    impl Clone for ExprMacro

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ExprMacro

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ExprMacro> for Expr

    source§

    fn from(e: ExprMacro) -> Expr

    Converts to this type from the input type.
    source§

    impl Hash for ExprMacro

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for ExprMacro

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for ExprMacro

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for ExprMacro

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ExprMacro

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprMatch.html b/syn/struct.ExprMatch.html index 17e3ee4..6d05290 100644 --- a/syn/struct.ExprMatch.html +++ b/syn/struct.ExprMatch.html @@ -1,16 +1,15 @@ -ExprMatch in syn - Rust

    Struct syn::ExprMatch

    source ·
    pub struct ExprMatch { /* private fields */ }
    Expand description

    A match expression: match n { Some(n) => {}, None => {} }.

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprMatch> for Expr

    source§

    fn from(e: ExprMatch) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprMatch

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +ExprMatch in syn - Rust
    syn

    Struct ExprMatch

    source
    pub struct ExprMatch { /* private fields */ }
    Expand description

    A match expression: match n { Some(n) => {}, None => {} }.

    +

    Trait Implementations§

    source§

    impl From<ExprMatch> for Expr

    source§

    fn from(e: ExprMatch) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprMatch

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprMethodCall.html b/syn/struct.ExprMethodCall.html index cf8bc24..38cc798 100644 --- a/syn/struct.ExprMethodCall.html +++ b/syn/struct.ExprMethodCall.html @@ -1,16 +1,29 @@ -ExprMethodCall in syn - Rust

    Struct syn::ExprMethodCall

    source ·
    pub struct ExprMethodCall { /* private fields */ }
    Expand description

    A method call expression: x.foo::<T>(a, b).

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprMethodCall> for Expr

    source§

    fn from(e: ExprMethodCall) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprMethodCall

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +ExprMethodCall in syn - Rust
    syn

    Struct ExprMethodCall

    source
    pub struct ExprMethodCall {
    +    pub attrs: Vec<Attribute>,
    +    pub receiver: Box<Expr>,
    +    pub dot_token: Dot,
    +    pub method: Ident,
    +    pub turbofish: Option<AngleBracketedGenericArguments>,
    +    pub paren_token: Paren,
    +    pub args: Punctuated<Expr, Comma>,
    +}
    Expand description

    A method call expression: x.foo::<T>(a, b).

    +

    Fields§

    §attrs: Vec<Attribute>§receiver: Box<Expr>§dot_token: Dot§method: Ident§turbofish: Option<AngleBracketedGenericArguments>§paren_token: Paren§args: Punctuated<Expr, Comma>

    Trait Implementations§

    source§

    impl Clone for ExprMethodCall

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ExprMethodCall

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ExprMethodCall> for Expr

    source§

    fn from(e: ExprMethodCall) -> Expr

    Converts to this type from the input type.
    source§

    impl Hash for ExprMethodCall

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for ExprMethodCall

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for ExprMethodCall

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ExprMethodCall

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprParen.html b/syn/struct.ExprParen.html index 3be9990..ff141a9 100644 --- a/syn/struct.ExprParen.html +++ b/syn/struct.ExprParen.html @@ -1,26 +1,25 @@ -ExprParen in syn - Rust

    Struct syn::ExprParen

    source ·
    pub struct ExprParen {
    -    pub attrs: Vec<Attribute>,
    +ExprParen in syn - Rust
    syn

    Struct ExprParen

    source
    pub struct ExprParen {
    +    pub attrs: Vec<Attribute>,
         pub paren_token: Paren,
    -    pub expr: Box<Expr>,
    +    pub expr: Box<Expr>,
     }
    Expand description

    A parenthesized expression: (a + b).

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Fields§

    §attrs: Vec<Attribute>§paren_token: Paren§expr: Box<Expr>

    Trait Implementations§

    source§

    impl Clone for ExprParen

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ExprParen

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ExprParen> for Expr

    source§

    fn from(e: ExprParen) -> Expr

    Converts to this type from the input type.
    source§

    impl Hash for ExprParen

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<ExprParen> for ExprParen

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for ExprParen

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ExprParen

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §attrs: Vec<Attribute>§paren_token: Paren§expr: Box<Expr>

    Trait Implementations§

    source§

    impl Clone for ExprParen

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ExprParen

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ExprParen> for Expr

    source§

    fn from(e: ExprParen) -> Expr

    Converts to this type from the input type.
    source§

    impl Hash for ExprParen

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for ExprParen

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for ExprParen

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ExprParen

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprPath.html b/syn/struct.ExprPath.html index 8cee990..08784f8 100644 --- a/syn/struct.ExprPath.html +++ b/syn/struct.ExprPath.html @@ -1,29 +1,27 @@ -ExprPath in syn - Rust

    Struct syn::ExprPath

    source ·
    pub struct ExprPath {
    -    pub attrs: Vec<Attribute>,
    -    pub qself: Option<QSelf>,
    +ExprPath in syn - Rust
    syn

    Struct ExprPath

    source
    pub struct ExprPath {
    +    pub attrs: Vec<Attribute>,
    +    pub qself: Option<QSelf>,
         pub path: Path,
     }
    Expand description

    A path like std::mem::replace possibly containing generic parameters and a qualified self-type.

    A plain identifier like x is a path of length 1.

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §attrs: Vec<Attribute>§qself: Option<QSelf>§path: Path

    Trait Implementations§

    source§

    impl Clone for ExprPath

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ExprPath

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ExprPath> for Expr

    source§

    fn from(e: ExprPath) -> Expr

    Converts to this type from the input type.
    source§

    impl Hash for ExprPath

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for ExprPath

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<ExprPath> for ExprPath

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for ExprPath

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ExprPath

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §attrs: Vec<Attribute>§qself: Option<QSelf>§path: Path

    Trait Implementations§

    source§

    impl Clone for ExprPath

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ExprPath

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ExprPath> for Expr

    source§

    fn from(e: ExprPath) -> Expr

    Converts to this type from the input type.
    source§

    impl Hash for ExprPath

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for ExprPath

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for ExprPath

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for ExprPath

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ExprPath

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprRange.html b/syn/struct.ExprRange.html index a77f9f8..913964c 100644 --- a/syn/struct.ExprRange.html +++ b/syn/struct.ExprRange.html @@ -1,16 +1,15 @@ -ExprRange in syn - Rust

    Struct syn::ExprRange

    source ·
    pub struct ExprRange { /* private fields */ }
    Expand description

    A range expression: 1..2, 1.., ..2, 1..=2, ..=2.

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprRange> for Expr

    source§

    fn from(e: ExprRange) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprRange

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +ExprRange in syn - Rust
    syn

    Struct ExprRange

    source
    pub struct ExprRange { /* private fields */ }
    Expand description

    A range expression: 1..2, 1.., ..2, 1..=2, ..=2.

    +

    Trait Implementations§

    source§

    impl From<ExprRange> for Expr

    source§

    fn from(e: ExprRange) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprRange

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprRawAddr.html b/syn/struct.ExprRawAddr.html new file mode 100644 index 0000000..142b5ad --- /dev/null +++ b/syn/struct.ExprRawAddr.html @@ -0,0 +1,15 @@ +ExprRawAddr in syn - Rust
    syn

    Struct ExprRawAddr

    source
    pub struct ExprRawAddr { /* private fields */ }
    Expand description

    Address-of operation: &raw const place or &raw mut place.

    +

    Trait Implementations§

    source§

    impl From<ExprRawAddr> for Expr

    source§

    fn from(e: ExprRawAddr) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprRawAddr

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprReference.html b/syn/struct.ExprReference.html index 55ff19a..691d60e 100644 --- a/syn/struct.ExprReference.html +++ b/syn/struct.ExprReference.html @@ -1,16 +1,26 @@ -ExprReference in syn - Rust

    Struct syn::ExprReference

    source ·
    pub struct ExprReference { /* private fields */ }
    Expand description

    A referencing operation: &a or &mut a.

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprReference> for Expr

    source§

    fn from(e: ExprReference) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprReference

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +ExprReference in syn - Rust
    syn

    Struct ExprReference

    source
    pub struct ExprReference {
    +    pub attrs: Vec<Attribute>,
    +    pub and_token: And,
    +    pub mutability: Option<Mut>,
    +    pub expr: Box<Expr>,
    +}
    Expand description

    A referencing operation: &a or &mut a.

    +

    Fields§

    §attrs: Vec<Attribute>§and_token: And§mutability: Option<Mut>§expr: Box<Expr>

    Trait Implementations§

    source§

    impl Clone for ExprReference

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ExprReference

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ExprReference> for Expr

    source§

    fn from(e: ExprReference) -> Expr

    Converts to this type from the input type.
    source§

    impl Hash for ExprReference

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for ExprReference

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for ExprReference

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ExprReference

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprRepeat.html b/syn/struct.ExprRepeat.html index 5ee7d75..b64becc 100644 --- a/syn/struct.ExprRepeat.html +++ b/syn/struct.ExprRepeat.html @@ -1,16 +1,15 @@ -ExprRepeat in syn - Rust

    Struct syn::ExprRepeat

    source ·
    pub struct ExprRepeat { /* private fields */ }
    Expand description

    An array literal constructed from one repeated element: [0u8; N].

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprRepeat> for Expr

    source§

    fn from(e: ExprRepeat) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprRepeat

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +ExprRepeat in syn - Rust
    syn

    Struct ExprRepeat

    source
    pub struct ExprRepeat { /* private fields */ }
    Expand description

    An array literal constructed from one repeated element: [0u8; N].

    +

    Trait Implementations§

    source§

    impl From<ExprRepeat> for Expr

    source§

    fn from(e: ExprRepeat) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprRepeat

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprReturn.html b/syn/struct.ExprReturn.html index 6f21109..edde234 100644 --- a/syn/struct.ExprReturn.html +++ b/syn/struct.ExprReturn.html @@ -1,16 +1,15 @@ -ExprReturn in syn - Rust

    Struct syn::ExprReturn

    source ·
    pub struct ExprReturn { /* private fields */ }
    Expand description

    A return, with an optional value to be returned.

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprReturn> for Expr

    source§

    fn from(e: ExprReturn) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprReturn

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +ExprReturn in syn - Rust
    syn

    Struct ExprReturn

    source
    pub struct ExprReturn { /* private fields */ }
    Expand description

    A return, with an optional value to be returned.

    +

    Trait Implementations§

    source§

    impl From<ExprReturn> for Expr

    source§

    fn from(e: ExprReturn) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprReturn

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprStruct.html b/syn/struct.ExprStruct.html index 89c83b3..2cf2ddd 100644 --- a/syn/struct.ExprStruct.html +++ b/syn/struct.ExprStruct.html @@ -1,17 +1,30 @@ -ExprStruct in syn - Rust

    Struct syn::ExprStruct

    source ·
    pub struct ExprStruct { /* private fields */ }
    Expand description

    A struct literal expression: Point { x: 1, y: 1 }.

    +ExprStruct in syn - Rust
    syn

    Struct ExprStruct

    source
    pub struct ExprStruct {
    +    pub attrs: Vec<Attribute>,
    +    pub qself: Option<QSelf>,
    +    pub path: Path,
    +    pub brace_token: Brace,
    +    pub fields: Punctuated<FieldValue, Comma>,
    +    pub dot2_token: Option<DotDot>,
    +    pub rest: Option<Box<Expr>>,
    +}
    Expand description

    A struct literal expression: Point { x: 1, y: 1 }.

    The rest provides the value of the remaining fields as in S { a: 1, b: 1, ..rest }.

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprStruct> for Expr

    source§

    fn from(e: ExprStruct) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprStruct

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §attrs: Vec<Attribute>§qself: Option<QSelf>§path: Path§brace_token: Brace§fields: Punctuated<FieldValue, Comma>§dot2_token: Option<DotDot>§rest: Option<Box<Expr>>

    Trait Implementations§

    source§

    impl Clone for ExprStruct

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ExprStruct

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ExprStruct> for Expr

    source§

    fn from(e: ExprStruct) -> Expr

    Converts to this type from the input type.
    source§

    impl Hash for ExprStruct

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for ExprStruct

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for ExprStruct

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for ExprStruct

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ExprStruct

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprTry.html b/syn/struct.ExprTry.html index eb0b103..5d93aa1 100644 --- a/syn/struct.ExprTry.html +++ b/syn/struct.ExprTry.html @@ -1,16 +1,15 @@ -ExprTry in syn - Rust

    Struct syn::ExprTry

    source ·
    pub struct ExprTry { /* private fields */ }
    Expand description

    A try-expression: expr?.

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprTry> for Expr

    source§

    fn from(e: ExprTry) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprTry

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +ExprTry in syn - Rust
    syn

    Struct ExprTry

    source
    pub struct ExprTry { /* private fields */ }
    Expand description

    A try-expression: expr?.

    +

    Trait Implementations§

    source§

    impl From<ExprTry> for Expr

    source§

    fn from(e: ExprTry) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprTry

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprTryBlock.html b/syn/struct.ExprTryBlock.html index 8af47ec..12c5ce5 100644 --- a/syn/struct.ExprTryBlock.html +++ b/syn/struct.ExprTryBlock.html @@ -1,16 +1,15 @@ -ExprTryBlock in syn - Rust

    Struct syn::ExprTryBlock

    source ·
    pub struct ExprTryBlock { /* private fields */ }
    Expand description

    A try block: try { ... }.

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprTryBlock> for Expr

    source§

    fn from(e: ExprTryBlock) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprTryBlock

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +ExprTryBlock in syn - Rust
    syn

    Struct ExprTryBlock

    source
    pub struct ExprTryBlock { /* private fields */ }
    Expand description

    A try block: try { ... }.

    +

    Trait Implementations§

    source§

    impl From<ExprTryBlock> for Expr

    source§

    fn from(e: ExprTryBlock) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprTryBlock

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprTuple.html b/syn/struct.ExprTuple.html index 0b61510..3d192fc 100644 --- a/syn/struct.ExprTuple.html +++ b/syn/struct.ExprTuple.html @@ -1,16 +1,25 @@ -ExprTuple in syn - Rust

    Struct syn::ExprTuple

    source ·
    pub struct ExprTuple { /* private fields */ }
    Expand description

    A tuple expression: (a, b, c, d).

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprTuple> for Expr

    source§

    fn from(e: ExprTuple) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprTuple

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +ExprTuple in syn - Rust
    syn

    Struct ExprTuple

    source
    pub struct ExprTuple {
    +    pub attrs: Vec<Attribute>,
    +    pub paren_token: Paren,
    +    pub elems: Punctuated<Expr, Comma>,
    +}
    Expand description

    A tuple expression: (a, b, c, d).

    +

    Fields§

    §attrs: Vec<Attribute>§paren_token: Paren§elems: Punctuated<Expr, Comma>

    Trait Implementations§

    source§

    impl Clone for ExprTuple

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ExprTuple

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ExprTuple> for Expr

    source§

    fn from(e: ExprTuple) -> Expr

    Converts to this type from the input type.
    source§

    impl Hash for ExprTuple

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for ExprTuple

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for ExprTuple

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ExprTuple

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprType.html b/syn/struct.ExprType.html deleted file mode 100644 index 450660e..0000000 --- a/syn/struct.ExprType.html +++ /dev/null @@ -1,16 +0,0 @@ -ExprType in syn - Rust

    Struct syn::ExprType

    source ·
    pub struct ExprType { /* private fields */ }
    Expand description

    A type ascription expression: foo: f64.

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprType> for Expr

    source§

    fn from(e: ExprType) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprType

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprUnary.html b/syn/struct.ExprUnary.html index 11e4965..df27255 100644 --- a/syn/struct.ExprUnary.html +++ b/syn/struct.ExprUnary.html @@ -1,27 +1,25 @@ -ExprUnary in syn - Rust

    Struct syn::ExprUnary

    source ·
    pub struct ExprUnary {
    -    pub attrs: Vec<Attribute>,
    +ExprUnary in syn - Rust
    syn

    Struct ExprUnary

    source
    pub struct ExprUnary {
    +    pub attrs: Vec<Attribute>,
         pub op: UnOp,
    -    pub expr: Box<Expr>,
    +    pub expr: Box<Expr>,
     }
    Expand description

    A unary operation: !x, *x.

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §attrs: Vec<Attribute>§op: UnOp§expr: Box<Expr>

    Trait Implementations§

    source§

    impl Clone for ExprUnary

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ExprUnary

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ExprUnary> for Expr

    source§

    fn from(e: ExprUnary) -> Expr

    Converts to this type from the input type.
    source§

    impl Hash for ExprUnary

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<ExprUnary> for ExprUnary

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for ExprUnary

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ExprUnary

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §attrs: Vec<Attribute>§op: UnOp§expr: Box<Expr>

    Trait Implementations§

    source§

    impl Clone for ExprUnary

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ExprUnary

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<ExprUnary> for Expr

    source§

    fn from(e: ExprUnary) -> Expr

    Converts to this type from the input type.
    source§

    impl Hash for ExprUnary

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for ExprUnary

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for ExprUnary

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ExprUnary

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprUnsafe.html b/syn/struct.ExprUnsafe.html index b1022dc..23a8c71 100644 --- a/syn/struct.ExprUnsafe.html +++ b/syn/struct.ExprUnsafe.html @@ -1,16 +1,15 @@ -ExprUnsafe in syn - Rust

    Struct syn::ExprUnsafe

    source ·
    pub struct ExprUnsafe { /* private fields */ }
    Expand description

    An unsafe block: unsafe { ... }.

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprUnsafe> for Expr

    source§

    fn from(e: ExprUnsafe) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprUnsafe

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +ExprUnsafe in syn - Rust
    syn

    Struct ExprUnsafe

    source
    pub struct ExprUnsafe { /* private fields */ }
    Expand description

    An unsafe block: unsafe { ... }.

    +

    Trait Implementations§

    source§

    impl From<ExprUnsafe> for Expr

    source§

    fn from(e: ExprUnsafe) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprUnsafe

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprWhile.html b/syn/struct.ExprWhile.html index aa5c9ea..6cb9aab 100644 --- a/syn/struct.ExprWhile.html +++ b/syn/struct.ExprWhile.html @@ -1,16 +1,15 @@ -ExprWhile in syn - Rust

    Struct syn::ExprWhile

    source ·
    pub struct ExprWhile { /* private fields */ }
    Expand description

    A while loop: while expr { ... }.

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprWhile> for Expr

    source§

    fn from(e: ExprWhile) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprWhile

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +ExprWhile in syn - Rust
    syn

    Struct ExprWhile

    source
    pub struct ExprWhile { /* private fields */ }
    Expand description

    A while loop: while expr { ... }.

    +

    Trait Implementations§

    source§

    impl From<ExprWhile> for Expr

    source§

    fn from(e: ExprWhile) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprWhile

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ExprYield.html b/syn/struct.ExprYield.html index 6d139ed..ed37017 100644 --- a/syn/struct.ExprYield.html +++ b/syn/struct.ExprYield.html @@ -1,16 +1,15 @@ -ExprYield in syn - Rust

    Struct syn::ExprYield

    source ·
    pub struct ExprYield { /* private fields */ }
    Expand description

    A yield expression: yield expr.

    -

    This type is available only if Syn is built with the "full" feature.

    -

    Trait Implementations§

    source§

    impl From<ExprYield> for Expr

    source§

    fn from(e: ExprYield) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprYield

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +ExprYield in syn - Rust
    syn

    Struct ExprYield

    source
    pub struct ExprYield { /* private fields */ }
    Expand description

    A yield expression: yield expr.

    +

    Trait Implementations§

    source§

    impl From<ExprYield> for Expr

    source§

    fn from(e: ExprYield) -> Expr

    Converts to this type from the input type.
    source§

    impl ToTokens for ExprYield

    source§

    fn to_tokens(&self, _: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.Field.html b/syn/struct.Field.html index 81ed766..2d7fd2b 100644 --- a/syn/struct.Field.html +++ b/syn/struct.Field.html @@ -1,36 +1,32 @@ -Field in syn - Rust

    Struct syn::Field

    source ·
    pub struct Field {
    -    pub attrs: Vec<Attribute>,
    +Field in syn - Rust
    syn

    Struct Field

    source
    pub struct Field {
    +    pub attrs: Vec<Attribute>,
         pub vis: Visibility,
    -    pub ident: Option<Ident>,
    -    pub colon_token: Option<Colon>,
    +    pub mutability: FieldMutability,
    +    pub ident: Option<Ident>,
    +    pub colon_token: Option<Colon>,
         pub ty: Type,
     }
    Expand description

    A field of a struct or enum variant.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Fields§

    §attrs: Vec<Attribute>

    Attributes tagged on the field.

    -
    §vis: Visibility

    Visibility of the field.

    -
    §ident: Option<Ident>

    Name of the field, if any.

    +

    Fields§

    §attrs: Vec<Attribute>§vis: Visibility§mutability: FieldMutability§ident: Option<Ident>

    Name of the field, if any.

    Fields of tuple structs have no names.

    -
    §colon_token: Option<Colon>§ty: Type

    Type of the field.

    -

    Implementations§

    source§

    impl Field

    source

    pub fn parse_named(input: ParseStream<'_>) -> Result<Self>

    Parses a named (braced struct) field.

    -
    source

    pub fn parse_unnamed(input: ParseStream<'_>) -> Result<Self>

    Parses an unnamed (tuple struct) field.

    -

    Trait Implementations§

    source§

    impl Clone for Field

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Field

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for Field

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<Field> for Field

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Field

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Field

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Field

    §

    impl !Send for Field

    §

    impl !Sync for Field

    §

    impl Unpin for Field

    §

    impl UnwindSafe for Field

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    §colon_token: Option<Colon>§ty: Type

    Implementations§

    source§

    impl Field

    source

    pub fn parse_named(input: ParseStream<'_>) -> Result<Self>

    Parses a named (braced struct) field.

    +
    source

    pub fn parse_unnamed(input: ParseStream<'_>) -> Result<Self>

    Parses an unnamed (tuple struct) field.

    +

    Trait Implementations§

    source§

    impl Clone for Field

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Field

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for Field

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for Field

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Field

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Field

    Auto Trait Implementations§

    §

    impl Freeze for Field

    §

    impl RefUnwindSafe for Field

    §

    impl !Send for Field

    §

    impl !Sync for Field

    §

    impl Unpin for Field

    §

    impl UnwindSafe for Field

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.FieldValue.html b/syn/struct.FieldValue.html new file mode 100644 index 0000000..0b4259b --- /dev/null +++ b/syn/struct.FieldValue.html @@ -0,0 +1,28 @@ +FieldValue in syn - Rust
    syn

    Struct FieldValue

    source
    pub struct FieldValue {
    +    pub attrs: Vec<Attribute>,
    +    pub member: Member,
    +    pub colon_token: Option<Colon>,
    +    pub expr: Expr,
    +}
    Expand description

    A field-value pair in a struct literal.

    +

    Fields§

    §attrs: Vec<Attribute>§member: Member§colon_token: Option<Colon>

    The colon in Struct { x: x }. If written in shorthand like +Struct { x }, there is no colon.

    +
    §expr: Expr

    Trait Implementations§

    source§

    impl Clone for FieldValue

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for FieldValue

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for FieldValue

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for FieldValue

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for FieldValue

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for FieldValue

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for FieldValue

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.FieldsNamed.html b/syn/struct.FieldsNamed.html index 2b29521..57f3025 100644 --- a/syn/struct.FieldsNamed.html +++ b/syn/struct.FieldsNamed.html @@ -1,26 +1,24 @@ -FieldsNamed in syn - Rust

    Struct syn::FieldsNamed

    source ·
    pub struct FieldsNamed {
    +FieldsNamed in syn - Rust
    syn

    Struct FieldsNamed

    source
    pub struct FieldsNamed {
         pub brace_token: Brace,
         pub named: Punctuated<Field, Comma>,
     }
    Expand description

    Named fields of a struct or struct variant such as Point { x: f64, y: f64 }.

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §brace_token: Brace§named: Punctuated<Field, Comma>

    Trait Implementations§

    source§

    impl Clone for FieldsNamed

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for FieldsNamed

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<FieldsNamed> for Fields

    source§

    fn from(e: FieldsNamed) -> Fields

    Converts to this type from the input type.
    source§

    impl Hash for FieldsNamed

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for FieldsNamed

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<FieldsNamed> for FieldsNamed

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for FieldsNamed

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for FieldsNamed

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §brace_token: Brace§named: Punctuated<Field, Comma>

    Trait Implementations§

    source§

    impl Clone for FieldsNamed

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for FieldsNamed

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<FieldsNamed> for Fields

    source§

    fn from(e: FieldsNamed) -> Fields

    Converts to this type from the input type.
    source§

    impl Hash for FieldsNamed

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for FieldsNamed

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for FieldsNamed

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for FieldsNamed

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for FieldsNamed

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.FieldsUnnamed.html b/syn/struct.FieldsUnnamed.html index 7979fbe..dc2feca 100644 --- a/syn/struct.FieldsUnnamed.html +++ b/syn/struct.FieldsUnnamed.html @@ -1,26 +1,24 @@ -FieldsUnnamed in syn - Rust

    Struct syn::FieldsUnnamed

    source ·
    pub struct FieldsUnnamed {
    +FieldsUnnamed in syn - Rust
    syn

    Struct FieldsUnnamed

    source
    pub struct FieldsUnnamed {
         pub paren_token: Paren,
         pub unnamed: Punctuated<Field, Comma>,
     }
    Expand description

    Unnamed fields of a tuple struct or tuple variant such as Some(T).

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §paren_token: Paren§unnamed: Punctuated<Field, Comma>

    Trait Implementations§

    source§

    impl Clone for FieldsUnnamed

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for FieldsUnnamed

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<FieldsUnnamed> for Fields

    source§

    fn from(e: FieldsUnnamed) -> Fields

    Converts to this type from the input type.
    source§

    impl Hash for FieldsUnnamed

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for FieldsUnnamed

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<FieldsUnnamed> for FieldsUnnamed

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for FieldsUnnamed

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for FieldsUnnamed

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §paren_token: Paren§unnamed: Punctuated<Field, Comma>

    Trait Implementations§

    source§

    impl Clone for FieldsUnnamed

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for FieldsUnnamed

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<FieldsUnnamed> for Fields

    source§

    fn from(e: FieldsUnnamed) -> Fields

    Converts to this type from the input type.
    source§

    impl Hash for FieldsUnnamed

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for FieldsUnnamed

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for FieldsUnnamed

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for FieldsUnnamed

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for FieldsUnnamed

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.Generics.html b/syn/struct.Generics.html index 279a5c2..d906ae7 100644 --- a/syn/struct.Generics.html +++ b/syn/struct.Generics.html @@ -1,85 +1,48 @@ -Generics in syn - Rust

    Struct syn::Generics

    source ·
    pub struct Generics {
    -    pub lt_token: Option<Lt>,
    +Generics in syn - Rust
    syn

    Struct Generics

    source
    pub struct Generics {
    +    pub lt_token: Option<Lt>,
         pub params: Punctuated<GenericParam, Comma>,
    -    pub gt_token: Option<Gt>,
    -    pub where_clause: Option<WhereClause>,
    +    pub gt_token: Option<Gt>,
    +    pub where_clause: Option<WhereClause>,
     }
    Expand description

    Lifetimes and type parameters attached to a declaration of a function, enum, trait, etc.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Fields§

    §lt_token: Option<Lt>§params: Punctuated<GenericParam, Comma>§gt_token: Option<Gt>§where_clause: Option<WhereClause>

    Implementations§

    source§

    impl Generics

    source

    pub fn type_params(&self) -> TypeParams<'_>

    Returns an -Iterator<Item = &TypeParam> -over the type parameters in self.params.

    -
    source

    pub fn type_params_mut(&mut self) -> TypeParamsMut<'_>

    Returns an -Iterator<Item = &mut TypeParam> -over the type parameters in self.params.

    -
    source

    pub fn lifetimes(&self) -> Lifetimes<'_>

    Returns an -Iterator<Item = &LifetimeDef> -over the lifetime parameters in self.params.

    -
    source

    pub fn lifetimes_mut(&mut self) -> LifetimesMut<'_>

    Returns an -Iterator<Item = &mut LifetimeDef> -over the lifetime parameters in self.params.

    -
    source

    pub fn const_params(&self) -> ConstParams<'_>

    Returns an -Iterator<Item = &ConstParam> -over the constant parameters in self.params.

    -
    source

    pub fn const_params_mut(&mut self) -> ConstParamsMut<'_>

    Returns an -Iterator<Item = &mut ConstParam> -over the constant parameters in self.params.

    -
    source

    pub fn make_where_clause(&mut self) -> &mut WhereClause

    Initializes an empty where-clause if there is not one present already.

    -
    source§

    impl Generics

    source

    pub fn split_for_impl( - &self -) -> (ImplGenerics<'_>, TypeGenerics<'_>, Option<&WhereClause>)

    Split a type’s generics into the pieces required for impl’ing a trait +

    This struct represents two distinct optional syntactic elements, +generic parameters and where clause. In some locations of the +grammar, there may be other tokens in between these two things.

    +

    Fields§

    §lt_token: Option<Lt>§params: Punctuated<GenericParam, Comma>§gt_token: Option<Gt>§where_clause: Option<WhereClause>

    Implementations§

    source§

    impl Generics

    source

    pub fn lifetimes(&self) -> Lifetimes<'_>

    Iterator over the lifetime parameters in self.params.

    +
    source

    pub fn lifetimes_mut(&mut self) -> LifetimesMut<'_>

    Iterator over the lifetime parameters in self.params.

    +
    source

    pub fn type_params(&self) -> TypeParams<'_>

    Iterator over the type parameters in self.params.

    +
    source

    pub fn type_params_mut(&mut self) -> TypeParamsMut<'_>

    Iterator over the type parameters in self.params.

    +
    source

    pub fn const_params(&self) -> ConstParams<'_>

    Iterator over the constant parameters in self.params.

    +
    source

    pub fn const_params_mut(&mut self) -> ConstParamsMut<'_>

    Iterator over the constant parameters in self.params.

    +
    source

    pub fn make_where_clause(&mut self) -> &mut WhereClause

    Initializes an empty where-clause if there is not one present already.

    +
    source

    pub fn split_for_impl( + &self, +) -> (ImplGenerics<'_>, TypeGenerics<'_>, Option<&WhereClause>)

    Split a type’s generics into the pieces required for impl’ing a trait for that type.

    let (impl_generics, ty_generics, where_clause) = generics.split_for_impl();
    -quote! {
    +quote! {
         impl #impl_generics MyTrait for #name #ty_generics #where_clause {
             // ...
         }
     }
    -

    This method is available only if Syn is built with the "derive" or -"full" feature and the "printing" feature.

    -

    Trait Implementations§

    source§

    impl Clone for Generics

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Generics

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Generics

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Generics

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Generics

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Generics> for Generics

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Generics

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Generics

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for Generics

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Generics

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Generics

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Generics

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Generics

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Generics

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Generics

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Generics

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.Ident.html b/syn/struct.Ident.html index 5a12224..46925f7 100644 --- a/syn/struct.Ident.html +++ b/syn/struct.Ident.html @@ -1,4 +1,4 @@ -Ident in syn - Rust

    Struct syn::Ident

    source ·
    pub struct Ident { /* private fields */ }
    Expand description

    A word of Rust code, which may be a keyword or legal variable name.

    +Ident in syn - Rust
    syn

    Struct Ident

    source
    pub struct Ident { /* private fields */ }
    Expand description

    A word of Rust code, which may be a keyword or legal variable name.

    An identifier consists of at least one Unicode code point, the first of which has the XID_Start property and the rest of which have the XID_Continue property.

    @@ -10,7 +10,7 @@ property.

    keyword, though parsing one through its Parse implementation rejects Rust keywords. Use input.call(Ident::parse_any) when parsing to match the behaviour of Ident::new.

    -

    Examples

    +

    §Examples

    A new ident can be created from a string using the Ident::new function. A span must be provided explicitly which governs the name resolution behavior of the resulting identifier.

    @@ -18,9 +18,9 @@ behavior of the resulting identifier.

    use proc_macro2::{Ident, Span};
     
     fn main() {
    -    let call_ident = Ident::new("calligraphy", Span::call_site());
    +    let call_ident = Ident::new("calligraphy", Span::call_site());
     
    -    println!("{}", call_ident);
    +    println!("{}", call_ident);
     }

    An ident can be interpolated into a token stream using the quote! macro.

    @@ -28,14 +28,14 @@ behavior of the resulting identifier.

    use quote::quote; fn main() { - let ident = Ident::new("demo", Span::call_site()); + let ident = Ident::new("demo", Span::call_site()); // Create a variable binding whose name is this ident. - let expanded = quote! { let #ident = 10; }; + let expanded = quote! { let #ident = 10; }; // Create a variable binding with a slightly different name. - let temp_ident = Ident::new(&format!("new_{}", ident), Span::call_site()); - let expanded = quote! { let #temp_ident = 10; }; + let temp_ident = Ident::new(&format!("new_{}", ident), Span::call_site()); + let expanded = quote! { let #temp_ident = 10; }; }

    A string representation of the ident is available through the to_string() method.

    @@ -43,9 +43,9 @@ method.

    // Examine the ident as a string.
     let ident_string = ident.to_string();
     if ident_string.len() > 60 {
    -    println!("Very long identifier: {}", ident_string)
    +    println!("Very long identifier: {}", ident_string)
     }
    -

    Implementations§

    source§

    impl Ident

    source

    pub fn new(string: &str, span: Span) -> Ident

    Creates a new Ident with the given string as well as the specified +

    Implementations§

    source§

    impl Ident

    source

    pub fn new(string: &str, span: Span) -> Ident

    Creates a new Ident with the given string as well as the specified span.

    The string argument must be a valid identifier permitted by the language, otherwise the function will panic.

    @@ -61,7 +61,7 @@ span will be resolved at the location of the macro definition and other code at the macro call site will not be able to refer to them.

    Due to the current importance of hygiene this constructor, unlike other tokens, requires a Span to be specified at construction.

    -
    Panics
    +
    §Panics

    Panics if the input string is neither a keyword nor a legal variable name. If you are not sure whether the string contains an identifier and need to handle an error case, use @@ -69,43 +69,43 @@ need to handle an error case, use style="padding-right:0;">syn::parse_str::<Ident> rather than Ident::new.

    -
    source

    pub fn new_raw(string: &str, span: Span) -> Ident

    Same as Ident::new, but creates a raw identifier (r#ident). The +

    source

    pub fn new_raw(string: &str, span: Span) -> Ident

    Same as Ident::new, but creates a raw identifier (r#ident). The string argument must be a valid identifier permitted by the language (including keywords, e.g. fn). Keywords which are usable in path segments (e.g. self, super) are not supported, and will cause a panic.

    -
    source

    pub fn span(&self) -> Span

    Returns the span of this Ident.

    -
    source

    pub fn set_span(&mut self, span: Span)

    Configures the span of this Ident, possibly changing its hygiene +

    source

    pub fn span(&self) -> Span

    Returns the span of this Ident.

    +
    source

    pub fn set_span(&mut self, span: Span)

    Configures the span of this Ident, possibly changing its hygiene context.

    -

    Trait Implementations§

    source§

    impl Clone for Ident

    source§

    fn clone(&self) -> Ident

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Ident

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    source§

    impl Display for Ident

    Prints the identifier as a string that should be losslessly convertible back +

    Trait Implementations§

    source§

    impl Clone for Ident

    source§

    fn clone(&self) -> Ident

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Ident

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    source§

    impl Display for Ident

    Prints the identifier as a string that should be losslessly convertible back into the same identifier.

    -
    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    source§

    impl From<Crate> for Ident

    source§

    fn from(token: Crate) -> Ident

    Converts to this type from the input type.
    source§

    impl From<Extern> for Ident

    source§

    fn from(token: Extern) -> Ident

    Converts to this type from the input type.
    source§

    impl From<Ident> for Member

    source§

    fn from(ident: Ident) -> Member

    Converts to this type from the input type.
    source§

    impl From<Ident> for TypeParam

    source§

    fn from(ident: Ident) -> Self

    Converts to this type from the input type.
    source§

    impl From<SelfType> for Ident

    source§

    fn from(token: SelfType) -> Ident

    Converts to this type from the input type.
    source§

    impl From<SelfValue> for Ident

    source§

    fn from(token: SelfValue) -> Ident

    Converts to this type from the input type.
    source§

    impl From<Super> for Ident

    source§

    fn from(token: Super) -> Ident

    Converts to this type from the input type.
    source§

    impl From<Underscore> for Ident

    source§

    fn from(token: Underscore) -> Ident

    Converts to this type from the input type.
    source§

    impl Hash for Ident

    source§

    fn hash<H>(&self, hasher: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl IdentExt for Ident

    source§

    fn parse_any(input: ParseStream<'_>) -> Result<Self>

    Parses any identifier including keywords. Read more
    source§

    fn unraw(&self) -> Ident

    Strips the raw marker r#, if any, from the beginning of an ident. Read more
    source§

    const peek_any: PeekFn = private::PeekFn

    Peeks any identifier including keywords. Usage: -input.peek(Ident::peek_any) Read more
    source§

    impl IdentFragment for Ident

    source§

    fn span(&self) -> Option<Span>

    Span associated with this IdentFragment. Read more
    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Format this value as an identifier fragment.
    source§

    impl Ord for Ident

    source§

    fn cmp(&self, other: &Ident) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere - Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Selfwhere - Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

    Restrict a value to a certain interval. Read more
    source§

    impl Parse for Ident

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Ident> for Ident

    source§

    fn eq(&self, other: &Ident) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl<T> PartialEq<T> for Identwhere - T: AsRef<str> + ?Sized,

    source§

    fn eq(&self, other: &T) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd<Ident> for Ident

    source§

    fn partial_cmp(&self, other: &Ident) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    source§

    impl ToTokens for Ident

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Ident

    source§

    impl Token for Ident

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Ident

    §

    impl !Send for Ident

    §

    impl !Sync for Ident

    §

    impl Unpin for Ident

    §

    impl UnwindSafe for Ident

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    source§

    impl From<Crate> for Ident

    source§

    fn from(token: Crate) -> Ident

    Converts to this type from the input type.
    source§

    impl From<Extern> for Ident

    source§

    fn from(token: Extern) -> Ident

    Converts to this type from the input type.
    source§

    impl From<Ident> for Member

    source§

    fn from(ident: Ident) -> Member

    Converts to this type from the input type.
    source§

    impl From<Ident> for TypeParam

    source§

    fn from(ident: Ident) -> Self

    Converts to this type from the input type.
    source§

    impl From<SelfType> for Ident

    source§

    fn from(token: SelfType) -> Ident

    Converts to this type from the input type.
    source§

    impl From<SelfValue> for Ident

    source§

    fn from(token: SelfValue) -> Ident

    Converts to this type from the input type.
    source§

    impl From<Super> for Ident

    source§

    fn from(token: Super) -> Ident

    Converts to this type from the input type.
    source§

    impl From<Underscore> for Ident

    source§

    fn from(token: Underscore) -> Ident

    Converts to this type from the input type.
    source§

    impl Hash for Ident

    source§

    fn hash<H>(&self, hasher: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl IdentExt for Ident

    source§

    fn parse_any(input: ParseStream<'_>) -> Result<Self>

    Parses any identifier including keywords. Read more
    source§

    fn unraw(&self) -> Ident

    Strips the raw marker r#, if any, from the beginning of an ident. Read more
    source§

    const peek_any: PeekFn = private::PeekFn

    Peeks any identifier including keywords. Usage: +input.peek(Ident::peek_any) Read more
    source§

    impl IdentFragment for Ident

    source§

    fn span(&self) -> Option<Span>

    Span associated with this IdentFragment. Read more
    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Format this value as an identifier fragment.
    source§

    impl Ord for Ident

    source§

    fn cmp(&self, other: &Ident) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where + Self: Sized,

    Restrict a value to a certain interval. Read more
    source§

    impl Parse for Ident

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl<T> PartialEq<T> for Ident
    where + T: AsRef<str> + ?Sized,

    source§

    fn eq(&self, other: &T) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl PartialEq for Ident

    source§

    fn eq(&self, other: &Ident) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl PartialOrd for Ident

    source§

    fn partial_cmp(&self, other: &Ident) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    Tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    Tests less than or equal to (for self and other) and is used by the +<= operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    Tests greater than (for self and other) and is used by the > +operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    Tests greater than or equal to (for self and other) and is used by +the >= operator. Read more
    source§

    impl ToTokens for Ident

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Ident

    source§

    impl Token for Ident

    Auto Trait Implementations§

    §

    impl Freeze for Ident

    §

    impl RefUnwindSafe for Ident

    §

    impl !Send for Ident

    §

    impl !Sync for Ident

    §

    impl Unpin for Ident

    §

    impl UnwindSafe for Ident

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for Twhere - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ImplGenerics.html b/syn/struct.ImplGenerics.html index 89e3a45..5dc8d7b 100644 --- a/syn/struct.ImplGenerics.html +++ b/syn/struct.ImplGenerics.html @@ -1,22 +1,20 @@ -ImplGenerics in syn - Rust

    Struct syn::ImplGenerics

    source ·
    pub struct ImplGenerics<'a>(/* private fields */);
    Expand description

    Returned by Generics::split_for_impl.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature and the "printing" feature.

    -

    Trait Implementations§

    source§

    impl<'a> Clone for ImplGenerics<'a>

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a> Debug for ImplGenerics<'a>

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a> Hash for ImplGenerics<'a>

    source§

    fn hash<H: Hasher>(&self, state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<'a> PartialEq<ImplGenerics<'a>> for ImplGenerics<'a>

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> ToTokens for ImplGenerics<'a>

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl<'a> Eq for ImplGenerics<'a>

    Auto Trait Implementations§

    §

    impl<'a> RefUnwindSafe for ImplGenerics<'a>

    §

    impl<'a> !Send for ImplGenerics<'a>

    §

    impl<'a> !Sync for ImplGenerics<'a>

    §

    impl<'a> Unpin for ImplGenerics<'a>

    §

    impl<'a> UnwindSafe for ImplGenerics<'a>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +ImplGenerics in syn - Rust
    syn

    Struct ImplGenerics

    source
    pub struct ImplGenerics<'a>(/* private fields */);
    Expand description

    Returned by Generics::split_for_impl.

    +

    Trait Implementations§

    source§

    impl<'a> Clone for ImplGenerics<'a>

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a> Debug for ImplGenerics<'a>

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a> Hash for ImplGenerics<'a>

    source§

    fn hash<H: Hasher>(&self, state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<'a> PartialEq for ImplGenerics<'a>

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl<'a> ToTokens for ImplGenerics<'a>

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl<'a> Eq for ImplGenerics<'a>

    Auto Trait Implementations§

    §

    impl<'a> Freeze for ImplGenerics<'a>

    §

    impl<'a> RefUnwindSafe for ImplGenerics<'a>

    §

    impl<'a> !Send for ImplGenerics<'a>

    §

    impl<'a> !Sync for ImplGenerics<'a>

    §

    impl<'a> Unpin for ImplGenerics<'a>

    §

    impl<'a> UnwindSafe for ImplGenerics<'a>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.Index.html b/syn/struct.Index.html index 885743e..9ca50c8 100644 --- a/syn/struct.Index.html +++ b/syn/struct.Index.html @@ -1,25 +1,23 @@ -Index in syn - Rust

    Struct syn::Index

    source ·
    pub struct Index {
    -    pub index: u32,
    +Index in syn - Rust
    syn

    Struct Index

    source
    pub struct Index {
    +    pub index: u32,
         pub span: Span,
     }
    Expand description

    The index of an unnamed tuple struct field.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Fields§

    §index: u32§span: Span

    Trait Implementations§

    source§

    impl Clone for Index

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Index

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Index> for Member

    source§

    fn from(index: Index) -> Member

    Converts to this type from the input type.
    source§

    impl From<usize> for Index

    source§

    fn from(index: usize) -> Index

    Converts to this type from the input type.
    source§

    impl Hash for Index

    source§

    fn hash<H: Hasher>(&self, state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl IdentFragment for Index

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Format this value as an identifier fragment.
    source§

    fn span(&self) -> Option<Span>

    Span associated with this IdentFragment. Read more
    source§

    impl Parse for Index

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Index> for Index

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Index

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Index

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Index

    §

    impl !Send for Index

    §

    impl !Sync for Index

    §

    impl Unpin for Index

    §

    impl UnwindSafe for Index

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §index: u32§span: Span

    Trait Implementations§

    source§

    impl Clone for Index

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Index

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Index> for Member

    source§

    fn from(index: Index) -> Member

    Converts to this type from the input type.
    source§

    impl From<usize> for Index

    source§

    fn from(index: usize) -> Index

    Converts to this type from the input type.
    source§

    impl Hash for Index

    source§

    fn hash<H: Hasher>(&self, state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl IdentFragment for Index

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Format this value as an identifier fragment.
    source§

    fn span(&self) -> Option<Span>

    Span associated with this IdentFragment. Read more
    source§

    impl Parse for Index

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Index

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Index

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Index

    Auto Trait Implementations§

    §

    impl Freeze for Index

    §

    impl RefUnwindSafe for Index

    §

    impl !Send for Index

    §

    impl !Sync for Index

    §

    impl Unpin for Index

    §

    impl UnwindSafe for Index

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.Lifetime.html b/syn/struct.Lifetime.html index eebbe02..70b8944 100644 --- a/syn/struct.Lifetime.html +++ b/syn/struct.Lifetime.html @@ -1,4 +1,4 @@ -Lifetime in syn - Rust

    Struct syn::Lifetime

    source ·
    pub struct Lifetime {
    +Lifetime in syn - Rust
    syn

    Struct Lifetime

    source
    pub struct Lifetime {
         pub apostrophe: Span,
         pub ident: Ident,
     }
    Expand description

    A Rust lifetime: 'a.

    @@ -11,32 +11,33 @@ the XID_Start property.
  • All following characters must be Unicode code points with the XID_Continue property.
  • -

    Fields§

    §apostrophe: Span§ident: Ident

    Implementations§

    source§

    impl Lifetime

    source

    pub fn new(symbol: &str, span: Span) -> Self

    Fields§

    §apostrophe: Span§ident: Ident

    Implementations§

    source§

    impl Lifetime

    source

    pub fn new(symbol: &str, span: Span) -> Self

    §Panics

    Panics if the lifetime does not conform to the bulleted rules above.

    -
    Invocation
    -
    Lifetime::new("'a", Span::call_site())
    -
    source

    pub fn span(&self) -> Span

    source

    pub fn set_span(&mut self, span: Span)

    Trait Implementations§

    source§

    impl Clone for Lifetime

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Lifetime

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for Lifetime

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Lifetime> for TypeParamBound

    source§

    fn from(e: Lifetime) -> TypeParamBound

    Converts to this type from the input type.
    source§

    impl Hash for Lifetime

    source§

    fn hash<H: Hasher>(&self, h: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Ord for Lifetime

    source§

    fn cmp(&self, other: &Lifetime) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere - Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Selfwhere - Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

    Restrict a value to a certain interval. Read more
    source§

    impl Parse for Lifetime

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Lifetime> for Lifetime

    source§

    fn eq(&self, other: &Lifetime) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd<Lifetime> for Lifetime

    source§

    fn partial_cmp(&self, other: &Lifetime) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    source§

    impl ToTokens for Lifetime

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Lifetime

    source§

    impl Token for Lifetime

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    §Invocation
    +
    Lifetime::new("'a", Span::call_site())
    +
    source

    pub fn span(&self) -> Span

    source

    pub fn set_span(&mut self, span: Span)

    Trait Implementations§

    source§

    impl Clone for Lifetime

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Lifetime

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for Lifetime

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Lifetime> for TypeParamBound

    source§

    fn from(e: Lifetime) -> TypeParamBound

    Converts to this type from the input type.
    source§

    impl Hash for Lifetime

    source§

    fn hash<H: Hasher>(&self, h: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Ord for Lifetime

    source§

    fn cmp(&self, other: &Lifetime) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where + Self: Sized,

    Restrict a value to a certain interval. Read more
    source§

    impl Parse for Lifetime

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Lifetime

    source§

    fn eq(&self, other: &Lifetime) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl PartialOrd for Lifetime

    source§

    fn partial_cmp(&self, other: &Lifetime) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    Tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    Tests less than or equal to (for self and other) and is used by the +<= operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    Tests greater than (for self and other) and is used by the > +operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    Tests greater than or equal to (for self and other) and is used by +the >= operator. Read more
    source§

    impl ToTokens for Lifetime

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Lifetime

    source§

    impl Token for Lifetime

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for Twhere - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.LifetimeDef.html b/syn/struct.LifetimeDef.html deleted file mode 100644 index 4736be1..0000000 --- a/syn/struct.LifetimeDef.html +++ /dev/null @@ -1,28 +0,0 @@ -LifetimeDef in syn - Rust

    Struct syn::LifetimeDef

    source ·
    pub struct LifetimeDef {
    -    pub attrs: Vec<Attribute>,
    -    pub lifetime: Lifetime,
    -    pub colon_token: Option<Colon>,
    -    pub bounds: Punctuated<Lifetime, Add>,
    -}
    Expand description

    A lifetime definition: 'a: 'b + 'c + 'd.

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §attrs: Vec<Attribute>§lifetime: Lifetime§colon_token: Option<Colon>§bounds: Punctuated<Lifetime, Add>

    Implementations§

    source§

    impl LifetimeDef

    source

    pub fn new(lifetime: Lifetime) -> Self

    Trait Implementations§

    source§

    impl Clone for LifetimeDef

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for LifetimeDef

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<LifetimeDef> for GenericParam

    source§

    fn from(e: LifetimeDef) -> GenericParam

    Converts to this type from the input type.
    source§

    impl Hash for LifetimeDef

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for LifetimeDef

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<LifetimeDef> for LifetimeDef

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for LifetimeDef

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for LifetimeDef

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.LifetimeParam.html b/syn/struct.LifetimeParam.html new file mode 100644 index 0000000..b0ae74f --- /dev/null +++ b/syn/struct.LifetimeParam.html @@ -0,0 +1,26 @@ +LifetimeParam in syn - Rust
    syn

    Struct LifetimeParam

    source
    pub struct LifetimeParam {
    +    pub attrs: Vec<Attribute>,
    +    pub lifetime: Lifetime,
    +    pub colon_token: Option<Colon>,
    +    pub bounds: Punctuated<Lifetime, Plus>,
    +}
    Expand description

    A lifetime definition: 'a: 'b + 'c + 'd.

    +

    Fields§

    §attrs: Vec<Attribute>§lifetime: Lifetime§colon_token: Option<Colon>§bounds: Punctuated<Lifetime, Plus>

    Implementations§

    source§

    impl LifetimeParam

    source

    pub fn new(lifetime: Lifetime) -> Self

    Trait Implementations§

    source§

    impl Clone for LifetimeParam

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for LifetimeParam

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<LifetimeParam> for GenericParam

    source§

    fn from(e: LifetimeParam) -> GenericParam

    Converts to this type from the input type.
    source§

    impl Hash for LifetimeParam

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for LifetimeParam

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for LifetimeParam

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for LifetimeParam

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for LifetimeParam

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.LitBool.html b/syn/struct.LitBool.html index 9d7055c..e757cac 100644 --- a/syn/struct.LitBool.html +++ b/syn/struct.LitBool.html @@ -1,24 +1,24 @@ -LitBool in syn - Rust

    Struct syn::LitBool

    source ·
    pub struct LitBool {
    -    pub value: bool,
    +LitBool in syn - Rust
    syn

    Struct LitBool

    source
    pub struct LitBool {
    +    pub value: bool,
         pub span: Span,
     }
    Expand description

    A boolean literal: true or false.

    -

    Fields§

    §value: bool§span: Span

    Implementations§

    source§

    impl LitBool

    source

    pub fn new(value: bool, span: Span) -> Self

    source

    pub fn value(&self) -> bool

    source

    pub fn span(&self) -> Span

    source

    pub fn set_span(&mut self, span: Span)

    source

    pub fn token(&self) -> Ident

    Trait Implementations§

    source§

    impl Clone for LitBool

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for LitBool

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<LitBool> for Lit

    source§

    fn from(e: LitBool) -> Lit

    Converts to this type from the input type.
    source§

    impl Hash for LitBool

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for LitBool

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<LitBool> for LitBool

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for LitBool

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for LitBool

    source§

    impl Token for LitBool

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §value: bool§span: Span

    Implementations§

    source§

    impl LitBool

    source

    pub fn new(value: bool, span: Span) -> Self

    source

    pub fn value(&self) -> bool

    source

    pub fn span(&self) -> Span

    source

    pub fn set_span(&mut self, span: Span)

    source

    pub fn token(&self) -> Ident

    Trait Implementations§

    source§

    impl Clone for LitBool

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for LitBool

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<LitBool> for Lit

    source§

    fn from(e: LitBool) -> Lit

    Converts to this type from the input type.
    source§

    impl Hash for LitBool

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for LitBool

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for LitBool

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for LitBool

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for LitBool

    source§

    impl Token for LitBool

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.LitByte.html b/syn/struct.LitByte.html index 862e2c5..9340d8f 100644 --- a/syn/struct.LitByte.html +++ b/syn/struct.LitByte.html @@ -1,21 +1,21 @@ -LitByte in syn - Rust

    Struct syn::LitByte

    source ·
    pub struct LitByte { /* private fields */ }
    Expand description

    A byte literal: b'f'.

    -

    Implementations§

    source§

    impl LitByte

    source

    pub fn new(value: u8, span: Span) -> Self

    source

    pub fn value(&self) -> u8

    source

    pub fn span(&self) -> Span

    source

    pub fn set_span(&mut self, span: Span)

    source

    pub fn suffix(&self) -> &str

    source

    pub fn token(&self) -> Literal

    Trait Implementations§

    source§

    impl Clone for LitByte

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for LitByte

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<LitByte> for Lit

    source§

    fn from(e: LitByte) -> Lit

    Converts to this type from the input type.
    source§

    impl Hash for LitByte

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for LitByte

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<LitByte> for LitByte

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for LitByte

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for LitByte

    source§

    impl Token for LitByte

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +LitByte in syn - Rust
    syn

    Struct LitByte

    source
    pub struct LitByte { /* private fields */ }
    Expand description

    A byte literal: b'f'.

    +

    Implementations§

    source§

    impl LitByte

    source

    pub fn new(value: u8, span: Span) -> Self

    source

    pub fn value(&self) -> u8

    source

    pub fn span(&self) -> Span

    source

    pub fn set_span(&mut self, span: Span)

    source

    pub fn suffix(&self) -> &str

    source

    pub fn token(&self) -> Literal

    Trait Implementations§

    source§

    impl Clone for LitByte

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for LitByte

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<LitByte> for Lit

    source§

    fn from(e: LitByte) -> Lit

    Converts to this type from the input type.
    source§

    impl Hash for LitByte

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for LitByte

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for LitByte

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for LitByte

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for LitByte

    source§

    impl Token for LitByte

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.LitByteStr.html b/syn/struct.LitByteStr.html index 940a382..0babaa9 100644 --- a/syn/struct.LitByteStr.html +++ b/syn/struct.LitByteStr.html @@ -1,21 +1,21 @@ -LitByteStr in syn - Rust

    Struct syn::LitByteStr

    source ·
    pub struct LitByteStr { /* private fields */ }
    Expand description

    A byte string literal: b"foo".

    -

    Implementations§

    source§

    impl LitByteStr

    source

    pub fn new(value: &[u8], span: Span) -> Self

    source

    pub fn value(&self) -> Vec<u8>

    source

    pub fn span(&self) -> Span

    source

    pub fn set_span(&mut self, span: Span)

    source

    pub fn suffix(&self) -> &str

    source

    pub fn token(&self) -> Literal

    Trait Implementations§

    source§

    impl Clone for LitByteStr

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for LitByteStr

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<LitByteStr> for Lit

    source§

    fn from(e: LitByteStr) -> Lit

    Converts to this type from the input type.
    source§

    impl Hash for LitByteStr

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for LitByteStr

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<LitByteStr> for LitByteStr

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for LitByteStr

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for LitByteStr

    source§

    impl Token for LitByteStr

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +LitByteStr in syn - Rust
    syn

    Struct LitByteStr

    source
    pub struct LitByteStr { /* private fields */ }
    Expand description

    A byte string literal: b"foo".

    +

    Implementations§

    source§

    impl LitByteStr

    source

    pub fn new(value: &[u8], span: Span) -> Self

    source

    pub fn value(&self) -> Vec<u8>

    source

    pub fn span(&self) -> Span

    source

    pub fn set_span(&mut self, span: Span)

    source

    pub fn suffix(&self) -> &str

    source

    pub fn token(&self) -> Literal

    Trait Implementations§

    source§

    impl Clone for LitByteStr

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for LitByteStr

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<LitByteStr> for Lit

    source§

    fn from(e: LitByteStr) -> Lit

    Converts to this type from the input type.
    source§

    impl Hash for LitByteStr

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for LitByteStr

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for LitByteStr

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for LitByteStr

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for LitByteStr

    source§

    impl Token for LitByteStr

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.LitCStr.html b/syn/struct.LitCStr.html new file mode 100644 index 0000000..ff048e9 --- /dev/null +++ b/syn/struct.LitCStr.html @@ -0,0 +1,21 @@ +LitCStr in syn - Rust
    syn

    Struct LitCStr

    source
    pub struct LitCStr { /* private fields */ }
    Expand description

    A nul-terminated C-string literal: c"foo".

    +

    Implementations§

    source§

    impl LitCStr

    source

    pub fn new(value: &CStr, span: Span) -> Self

    source

    pub fn value(&self) -> CString

    source

    pub fn span(&self) -> Span

    source

    pub fn set_span(&mut self, span: Span)

    source

    pub fn suffix(&self) -> &str

    source

    pub fn token(&self) -> Literal

    Trait Implementations§

    source§

    impl Clone for LitCStr

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for LitCStr

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<LitCStr> for Lit

    source§

    fn from(e: LitCStr) -> Lit

    Converts to this type from the input type.
    source§

    impl Hash for LitCStr

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for LitCStr

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for LitCStr

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for LitCStr

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for LitCStr

    source§

    impl Token for LitCStr

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.LitChar.html b/syn/struct.LitChar.html index 4cd1428..60b98fb 100644 --- a/syn/struct.LitChar.html +++ b/syn/struct.LitChar.html @@ -1,21 +1,21 @@ -LitChar in syn - Rust

    Struct syn::LitChar

    source ·
    pub struct LitChar { /* private fields */ }
    Expand description

    A character literal: 'a'.

    -

    Implementations§

    source§

    impl LitChar

    source

    pub fn new(value: char, span: Span) -> Self

    source

    pub fn value(&self) -> char

    source

    pub fn span(&self) -> Span

    source

    pub fn set_span(&mut self, span: Span)

    source

    pub fn suffix(&self) -> &str

    source

    pub fn token(&self) -> Literal

    Trait Implementations§

    source§

    impl Clone for LitChar

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for LitChar

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<LitChar> for Lit

    source§

    fn from(e: LitChar) -> Lit

    Converts to this type from the input type.
    source§

    impl Hash for LitChar

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for LitChar

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<LitChar> for LitChar

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for LitChar

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for LitChar

    source§

    impl Token for LitChar

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +LitChar in syn - Rust
    syn

    Struct LitChar

    source
    pub struct LitChar { /* private fields */ }
    Expand description

    A character literal: 'a'.

    +

    Implementations§

    source§

    impl LitChar

    source

    pub fn new(value: char, span: Span) -> Self

    source

    pub fn value(&self) -> char

    source

    pub fn span(&self) -> Span

    source

    pub fn set_span(&mut self, span: Span)

    source

    pub fn suffix(&self) -> &str

    source

    pub fn token(&self) -> Literal

    Trait Implementations§

    source§

    impl Clone for LitChar

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for LitChar

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<LitChar> for Lit

    source§

    fn from(e: LitChar) -> Lit

    Converts to this type from the input type.
    source§

    impl Hash for LitChar

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for LitChar

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for LitChar

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for LitChar

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for LitChar

    source§

    impl Token for LitChar

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.LitFloat.html b/syn/struct.LitFloat.html index ea02ceb..d940819 100644 --- a/syn/struct.LitFloat.html +++ b/syn/struct.LitFloat.html @@ -1,25 +1,25 @@ -LitFloat in syn - Rust

    Struct syn::LitFloat

    source ·
    pub struct LitFloat { /* private fields */ }
    Expand description

    A floating point literal: 1f64 or 1.0e10f64.

    +LitFloat in syn - Rust
    syn

    Struct LitFloat

    source
    pub struct LitFloat { /* private fields */ }
    Expand description

    A floating point literal: 1f64 or 1.0e10f64.

    Must be finite. May not be infinite or NaN.

    -

    Implementations§

    source§

    impl LitFloat

    source

    pub fn new(repr: &str, span: Span) -> Self

    source

    pub fn base10_digits(&self) -> &str

    source

    pub fn base10_parse<N>(&self) -> Result<N>where - N: FromStr, - N::Err: Display,

    source

    pub fn suffix(&self) -> &str

    source

    pub fn span(&self) -> Span

    source

    pub fn set_span(&mut self, span: Span)

    source

    pub fn token(&self) -> Literal

    Trait Implementations§

    source§

    impl Clone for LitFloat

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for LitFloat

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for LitFloat

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<LitFloat> for Lit

    source§

    fn from(e: LitFloat) -> Lit

    Converts to this type from the input type.
    source§

    impl From<Literal> for LitFloat

    source§

    fn from(token: Literal) -> Self

    Converts to this type from the input type.
    source§

    impl Hash for LitFloat

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for LitFloat

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<LitFloat> for LitFloat

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for LitFloat

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for LitFloat

    source§

    impl Token for LitFloat

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Implementations§

    source§

    impl LitFloat

    source

    pub fn new(repr: &str, span: Span) -> Self

    source

    pub fn base10_digits(&self) -> &str

    source

    pub fn base10_parse<N>(&self) -> Result<N>
    where + N: FromStr, + N::Err: Display,

    source

    pub fn suffix(&self) -> &str

    source

    pub fn span(&self) -> Span

    source

    pub fn set_span(&mut self, span: Span)

    source

    pub fn token(&self) -> Literal

    Trait Implementations§

    source§

    impl Clone for LitFloat

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for LitFloat

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for LitFloat

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<LitFloat> for Lit

    source§

    fn from(e: LitFloat) -> Lit

    Converts to this type from the input type.
    source§

    impl From<Literal> for LitFloat

    source§

    fn from(token: Literal) -> Self

    Converts to this type from the input type.
    source§

    impl Hash for LitFloat

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for LitFloat

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for LitFloat

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for LitFloat

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for LitFloat

    source§

    impl Token for LitFloat

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for Twhere - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.LitInt.html b/syn/struct.LitInt.html index 819c9aa..cea210b 100644 --- a/syn/struct.LitInt.html +++ b/syn/struct.LitInt.html @@ -1,7 +1,7 @@ -LitInt in syn - Rust

    Struct syn::LitInt

    source ·
    pub struct LitInt { /* private fields */ }
    Expand description

    An integer literal: 1 or 1u16.

    -

    Implementations§

    source§

    impl LitInt

    source

    pub fn new(repr: &str, span: Span) -> Self

    source

    pub fn base10_digits(&self) -> &str

    source

    pub fn base10_parse<N>(&self) -> Result<N>where - N: FromStr, - N::Err: Display,

    Parses the literal into a selected number type.

    +LitInt in syn - Rust
    syn

    Struct LitInt

    source
    pub struct LitInt { /* private fields */ }
    Expand description

    An integer literal: 1 or 1u16.

    +

    Implementations§

    source§

    impl LitInt

    source

    pub fn new(repr: &str, span: Span) -> Self

    source

    pub fn base10_digits(&self) -> &str

    source

    pub fn base10_parse<N>(&self) -> Result<N>
    where + N: FromStr, + N::Err: Display,

    Parses the literal into a selected number type.

    This is equivalent to lit.base10_digits().parse() except that the resulting errors will be correctly spanned to point to the literal token in the macro input.

    @@ -20,24 +20,24 @@ in the macro input.

    Ok(Port { value }) } }
    -
    source

    pub fn suffix(&self) -> &str

    source

    pub fn span(&self) -> Span

    source

    pub fn set_span(&mut self, span: Span)

    source

    pub fn token(&self) -> Literal

    Trait Implementations§

    source§

    impl Clone for LitInt

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for LitInt

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for LitInt

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<LitInt> for Lit

    source§

    fn from(e: LitInt) -> Lit

    Converts to this type from the input type.
    source§

    impl From<Literal> for LitInt

    source§

    fn from(token: Literal) -> Self

    Converts to this type from the input type.
    source§

    impl Hash for LitInt

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for LitInt

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<LitInt> for LitInt

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for LitInt

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for LitInt

    source§

    impl Token for LitInt

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for LitInt

    §

    impl !Send for LitInt

    §

    impl !Sync for LitInt

    §

    impl Unpin for LitInt

    §

    impl UnwindSafe for LitInt

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    source

    pub fn suffix(&self) -> &str

    source

    pub fn span(&self) -> Span

    source

    pub fn set_span(&mut self, span: Span)

    source

    pub fn token(&self) -> Literal

    Trait Implementations§

    source§

    impl Clone for LitInt

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for LitInt

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for LitInt

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<LitInt> for Lit

    source§

    fn from(e: LitInt) -> Lit

    Converts to this type from the input type.
    source§

    impl From<Literal> for LitInt

    source§

    fn from(token: Literal) -> Self

    Converts to this type from the input type.
    source§

    impl Hash for LitInt

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for LitInt

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for LitInt

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for LitInt

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for LitInt

    source§

    impl Token for LitInt

    Auto Trait Implementations§

    §

    impl Freeze for LitInt

    §

    impl RefUnwindSafe for LitInt

    §

    impl !Send for LitInt

    §

    impl !Sync for LitInt

    §

    impl Unpin for LitInt

    §

    impl UnwindSafe for LitInt

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for Twhere - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.LitStr.html b/syn/struct.LitStr.html index 0d0a64b..7f602c2 100644 --- a/syn/struct.LitStr.html +++ b/syn/struct.LitStr.html @@ -1,55 +1,55 @@ -LitStr in syn - Rust

    Struct syn::LitStr

    source ·
    pub struct LitStr { /* private fields */ }
    Expand description

    A UTF-8 string literal: "foo".

    -

    Implementations§

    source§

    impl LitStr

    source

    pub fn new(value: &str, span: Span) -> Self

    source

    pub fn value(&self) -> String

    source

    pub fn parse<T: Parse>(&self) -> Result<T>

    Parse a syntax tree node from the content of this string literal.

    +LitStr in syn - Rust
    syn

    Struct LitStr

    source
    pub struct LitStr { /* private fields */ }
    Expand description

    A UTF-8 string literal: "foo".

    +

    Implementations§

    source§

    impl LitStr

    source

    pub fn new(value: &str, span: Span) -> Self

    source

    pub fn value(&self) -> String

    source

    pub fn parse<T: Parse>(&self) -> Result<T>

    Parse a syntax tree node from the content of this string literal.

    All spans in the syntax tree will point to the span of this LitStr.

    -
    Example
    -
    use proc_macro2::Span;
    -use syn::{Attribute, Error, Ident, Lit, Meta, MetaNameValue, Path, Result};
    +
    §Example
    +
    use syn::{Attribute, Error, Expr, Lit, Meta, Path, Result};
     
     // Parses the path from an attribute that looks like:
     //
    -//     #[path = "a::b::c"]
    +//     #[path = "a::b::c"]
     //
     // or returns `None` if the input is some other attribute.
     fn get_path(attr: &Attribute) -> Result<Option<Path>> {
    -    if !attr.path.is_ident("path") {
    +    if !attr.path().is_ident("path") {
             return Ok(None);
         }
     
    -    match attr.parse_meta()? {
    -        Meta::NameValue(MetaNameValue { lit: Lit::Str(lit_str), .. }) => {
    -            lit_str.parse().map(Some)
    -        }
    -        _ => {
    -            let message = "expected #[path = \"...\"]";
    -            Err(Error::new_spanned(attr, message))
    +    if let Meta::NameValue(meta) = &attr.meta {
    +        if let Expr::Lit(expr) = &meta.value {
    +            if let Lit::Str(lit_str) = &expr.lit {
    +                return lit_str.parse().map(Some);
    +            }
             }
         }
    +
    +    let message = "expected #[path = \"...\"]";
    +    Err(Error::new_spanned(attr, message))
     }
    -
    source

    pub fn parse_with<F: Parser>(&self, parser: F) -> Result<F::Output>

    Invoke parser on the content of this string literal.

    +
    source

    pub fn parse_with<F: Parser>(&self, parser: F) -> Result<F::Output>

    Invoke parser on the content of this string literal.

    All spans in the syntax tree will point to the span of this LitStr.

    -
    Example
    +
    §Example
    let lit_str: LitStr = /* ... */;
     
    -// Parse a string literal like "a::b::c" into a Path, not allowing
    +// Parse a string literal like "a::b::c" into a Path, not allowing
     // generic arguments on any of the path segments.
     let basic_path = lit_str.parse_with(syn::Path::parse_mod_style)?;
    -
    source

    pub fn span(&self) -> Span

    source

    pub fn set_span(&mut self, span: Span)

    source

    pub fn suffix(&self) -> &str

    source

    pub fn token(&self) -> Literal

    Trait Implementations§

    source§

    impl Clone for LitStr

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for LitStr

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<LitStr> for Lit

    source§

    fn from(e: LitStr) -> Lit

    Converts to this type from the input type.
    source§

    impl Hash for LitStr

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for LitStr

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<LitStr> for LitStr

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for LitStr

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for LitStr

    source§

    impl Token for LitStr

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for LitStr

    §

    impl !Send for LitStr

    §

    impl !Sync for LitStr

    §

    impl Unpin for LitStr

    §

    impl UnwindSafe for LitStr

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    source

    pub fn span(&self) -> Span

    source

    pub fn set_span(&mut self, span: Span)

    source

    pub fn suffix(&self) -> &str

    source

    pub fn token(&self) -> Literal

    Trait Implementations§

    source§

    impl Clone for LitStr

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for LitStr

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<LitStr> for Lit

    source§

    fn from(e: LitStr) -> Lit

    Converts to this type from the input type.
    source§

    impl Hash for LitStr

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for LitStr

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for LitStr

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for LitStr

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for LitStr

    source§

    impl Token for LitStr

    Auto Trait Implementations§

    §

    impl Freeze for LitStr

    §

    impl RefUnwindSafe for LitStr

    §

    impl !Send for LitStr

    §

    impl !Sync for LitStr

    §

    impl Unpin for LitStr

    §

    impl UnwindSafe for LitStr

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.Macro.html b/syn/struct.Macro.html index 49cb309..7645b71 100644 --- a/syn/struct.Macro.html +++ b/syn/struct.Macro.html @@ -1,25 +1,23 @@ -Macro in syn - Rust

    Struct syn::Macro

    source ·
    pub struct Macro {
    +Macro in syn - Rust
    syn

    Struct Macro

    source
    pub struct Macro {
         pub path: Path,
    -    pub bang_token: Bang,
    +    pub bang_token: Not,
         pub delimiter: MacroDelimiter,
         pub tokens: TokenStream,
    -}
    Expand description

    A macro invocation: println!("{}", mac).

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Fields§

    §path: Path§bang_token: Bang§delimiter: MacroDelimiter§tokens: TokenStream

    Implementations§

    source§

    impl Macro

    source

    pub fn parse_body<T: Parse>(&self) -> Result<T>

    Parse the tokens within the macro invocation’s delimiters into a syntax +}

    Expand description

    A macro invocation: println!("{}", mac).

    +

    Fields§

    §path: Path§bang_token: Not§delimiter: MacroDelimiter§tokens: TokenStream

    Implementations§

    source§

    impl Macro

    source

    pub fn parse_body<T: Parse>(&self) -> Result<T>

    Parse the tokens within the macro invocation’s delimiters into a syntax tree.

    This is equivalent to syn::parse2::<T>(mac.tokens) except that it produces a more useful span when tokens is empty.

    -
    Example
    +
    §Example
    use syn::{parse_quote, Expr, ExprLit, Ident, Lit, LitStr, Macro, Token};
     use syn::ext::IdentExt;
     use syn::parse::{Error, Parse, ParseStream, Result};
     use syn::punctuated::Punctuated;
     
    -// The arguments expected by libcore's format_args macro, and as a
    +// The arguments expected by libcore's format_args macro, and as a
     // result most other formatting and printing macros like println.
     //
    -//     println!("{} is {number:.prec$}", "x", prec=5, number=0.01)
    +//     println!("{} is {number:.prec$}", "x", prec=5, number=0.01)
     struct FormatArgs {
         format_string: Expr,
         positional_args: Vec<Expr>,
    @@ -71,37 +69,37 @@ produces a more useful span when tokens is empty.

    other => { // First argument was not a string literal expression. // Maybe something like: println!(concat!(...), ...) - Err(Error::new_spanned(other, "format string must be a string literal")) +
    Err(Error::new_spanned(other, "format string must be a string literal")) } } } fn main() { - let invocation = parse_quote! { - println!("{:?}", Instant::now()) + let invocation = parse_quote! { + println!("{:?}", Instant::now()) }; let lit = get_format_string(&invocation).unwrap(); - assert_eq!(lit.value(), "{:?}"); + assert_eq!(lit.value(), "{:?}"); }
    source

    pub fn parse_body_with<F: Parser>(&self, parser: F) -> Result<F::Output>

    Parse the tokens within the macro invocation’s delimiters using the given parser.

    -

    Trait Implementations§

    source§

    impl Clone for Macro

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Macro

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for Macro

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Macro

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Macro> for Macro

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Macro

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Macro

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Macro

    §

    impl !Send for Macro

    §

    impl !Sync for Macro

    §

    impl Unpin for Macro

    §

    impl UnwindSafe for Macro

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for Macro

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Macro

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for Macro

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Macro

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Macro

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Macro

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Macro

    Auto Trait Implementations§

    §

    impl Freeze for Macro

    §

    impl RefUnwindSafe for Macro

    §

    impl !Send for Macro

    §

    impl !Sync for Macro

    §

    impl Unpin for Macro

    §

    impl UnwindSafe for Macro

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.MetaList.html b/syn/struct.MetaList.html index e314a0e..05c1c03 100644 --- a/syn/struct.MetaList.html +++ b/syn/struct.MetaList.html @@ -1,27 +1,31 @@ -MetaList in syn - Rust

    Struct syn::MetaList

    source ·
    pub struct MetaList {
    +MetaList in syn - Rust
    syn

    Struct MetaList

    source
    pub struct MetaList {
         pub path: Path,
    -    pub paren_token: Paren,
    -    pub nested: Punctuated<NestedMeta, Comma>,
    +    pub delimiter: MacroDelimiter,
    +    pub tokens: TokenStream,
     }
    Expand description

    A structured list within an attribute, like derive(Copy, Clone).

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §path: Path§paren_token: Paren§nested: Punctuated<NestedMeta, Comma>

    Trait Implementations§

    source§

    impl Clone for MetaList

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MetaList

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<MetaList> for Meta

    source§

    fn from(e: MetaList) -> Meta

    Converts to this type from the input type.
    source§

    impl Hash for MetaList

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for MetaList

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<MetaList> for MetaList

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for MetaList

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for MetaList

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §path: Path§delimiter: MacroDelimiter§tokens: TokenStream

    Implementations§

    source§

    impl MetaList

    source

    pub fn parse_args<T: Parse>(&self) -> Result<T>

    source

    pub fn parse_args_with<F: Parser>(&self, parser: F) -> Result<F::Output>

    source

    pub fn parse_nested_meta( + &self, + logic: impl FnMut(ParseNestedMeta<'_>) -> Result<()>, +) -> Result<()>

    Trait Implementations§

    source§

    impl Clone for MetaList

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MetaList

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<MetaList> for Meta

    source§

    fn from(meta: MetaList) -> Meta

    Converts to this type from the input type.
    source§

    impl Hash for MetaList

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for MetaList

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for MetaList

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for MetaList

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for MetaList

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.MetaNameValue.html b/syn/struct.MetaNameValue.html index 3325788..5092b2f 100644 --- a/syn/struct.MetaNameValue.html +++ b/syn/struct.MetaNameValue.html @@ -1,27 +1,25 @@ -MetaNameValue in syn - Rust

    Struct syn::MetaNameValue

    source ·
    pub struct MetaNameValue {
    +MetaNameValue in syn - Rust
    syn

    Struct MetaNameValue

    source
    pub struct MetaNameValue {
         pub path: Path,
         pub eq_token: Eq,
    -    pub lit: Lit,
    -}
    Expand description

    A name-value pair within an attribute, like feature = "nightly".

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §path: Path§eq_token: Eq§lit: Lit

    Trait Implementations§

    source§

    impl Clone for MetaNameValue

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MetaNameValue

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<MetaNameValue> for Meta

    source§

    fn from(e: MetaNameValue) -> Meta

    Converts to this type from the input type.
    source§

    impl Hash for MetaNameValue

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for MetaNameValue

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<MetaNameValue> for MetaNameValue

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for MetaNameValue

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for MetaNameValue

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    + pub value: Expr, +}
    Expand description

    A name-value pair within an attribute, like feature = "nightly".

    +

    Fields§

    §path: Path§eq_token: Eq§value: Expr

    Trait Implementations§

    source§

    impl Clone for MetaNameValue

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MetaNameValue

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<MetaNameValue> for Meta

    source§

    fn from(meta: MetaNameValue) -> Meta

    Converts to this type from the input type.
    source§

    impl Hash for MetaNameValue

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for MetaNameValue

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for MetaNameValue

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for MetaNameValue

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for MetaNameValue

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.ParenthesizedGenericArguments.html b/syn/struct.ParenthesizedGenericArguments.html index 1cb778d..1774994 100644 --- a/syn/struct.ParenthesizedGenericArguments.html +++ b/syn/struct.ParenthesizedGenericArguments.html @@ -1,29 +1,27 @@ -ParenthesizedGenericArguments in syn - Rust
    pub struct ParenthesizedGenericArguments {
    +ParenthesizedGenericArguments in syn - Rust
    syn

    Struct ParenthesizedGenericArguments

    source
    pub struct ParenthesizedGenericArguments {
         pub paren_token: Paren,
         pub inputs: Punctuated<Type, Comma>,
         pub output: ReturnType,
     }
    Expand description

    Arguments of a function path segment: the (A, B) -> C in Fn(A,B) -> C.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Fields§

    §paren_token: Paren§inputs: Punctuated<Type, Comma>

    (A, B)

    -
    §output: ReturnType

    C

    -

    Trait Implementations§

    source§

    impl Clone for ParenthesizedGenericArguments

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ParenthesizedGenericArguments

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for ParenthesizedGenericArguments

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for ParenthesizedGenericArguments

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<ParenthesizedGenericArguments> for ParenthesizedGenericArguments

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for ParenthesizedGenericArguments

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ParenthesizedGenericArguments

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §paren_token: Paren§inputs: Punctuated<Type, Comma>

    (A, B)

    +
    §output: ReturnType

    C

    +

    Trait Implementations§

    source§

    impl Clone for ParenthesizedGenericArguments

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ParenthesizedGenericArguments

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for ParenthesizedGenericArguments

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for ParenthesizedGenericArguments

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for ParenthesizedGenericArguments

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for ParenthesizedGenericArguments

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for ParenthesizedGenericArguments

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.Path.html b/syn/struct.Path.html index e80a877..150eb46 100644 --- a/syn/struct.Path.html +++ b/syn/struct.Path.html @@ -1,13 +1,9 @@ -Path in syn - Rust

    Struct syn::Path

    source ·
    pub struct Path {
    -    pub leading_colon: Option<Colon2>,
    -    pub segments: Punctuated<PathSegment, Colon2>,
    +Path in syn - Rust
    syn

    Struct Path

    source
    pub struct Path {
    +    pub leading_colon: Option<PathSep>,
    +    pub segments: Punctuated<PathSegment, PathSep>,
     }
    Expand description

    A path at which a named item is exported (e.g. std::collections::HashMap).

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Fields§

    §leading_colon: Option<Colon2>§segments: Punctuated<PathSegment, Colon2>

    Implementations§

    source§

    impl Path

    source

    pub fn parse_mod_style(input: ParseStream<'_>) -> Result<Self>

    Parse a Path containing no path arguments on any of its segments.

    -

    This function is available only if Syn is built with the "parsing" -feature.

    -
    Example
    +

    Fields§

    §leading_colon: Option<PathSep>§segments: Punctuated<PathSegment, PathSep>

    Implementations§

    source§

    impl Path

    source

    pub fn parse_mod_style(input: ParseStream<'_>) -> Result<Self>

    Parse a Path containing no path arguments on any of its segments.

    +
    §Example
    use syn::{Path, Result, Token};
     use syn::parse::{Parse, ParseStream};
     
    @@ -32,8 +28,9 @@ feature.

    }) } }
    -
    source

    pub fn is_ident<I: ?Sized>(&self, ident: &I) -> boolwhere - Ident: PartialEq<I>,

    Determines whether this is a path of length 1 equal to the given +

    source§

    impl Path

    source

    pub fn is_ident<I>(&self, ident: &I) -> bool
    where + I: ?Sized, + Ident: PartialEq<I>,

    Determines whether this is a path of length 1 equal to the given ident.

    For them to compare equal, it must be the case that:

      @@ -43,22 +40,21 @@ ident.

      path arguments, and
    • the ident of the first path segment is equal to the given one.
    -

    This function is available only if Syn is built with the "parsing" -feature.

    -
    Example
    -
    use syn::{Attribute, Error, Meta, NestedMeta, Result};
    +
    §Example
    +
    use proc_macro2::TokenStream;
    +use syn::{Attribute, Error, Meta, Result};
     
    -fn get_serde_meta_items(attr: &Attribute) -> Result<Vec<NestedMeta>> {
    -    if attr.path.is_ident("serde") {
    -        match attr.parse_meta()? {
    -            Meta::List(meta) => Ok(Vec::from_iter(meta.nested)),
    -            bad => Err(Error::new_spanned(bad, "unrecognized attribute")),
    +fn get_serde_meta_item(attr: &Attribute) -> Result<Option<&TokenStream>> {
    +    if attr.path().is_ident("serde") {
    +        match &attr.meta {
    +            Meta::List(meta) => Ok(Some(&meta.tokens)),
    +            bad => Err(Error::new_spanned(bad, "unrecognized attribute")),
             }
         } else {
    -        Ok(Vec::new())
    +        Ok(None)
         }
     }
    -
    source

    pub fn get_ident(&self) -> Option<&Ident>

    If this path consists of a single ident, returns the ident.

    +
    source

    pub fn get_ident(&self) -> Option<&Ident>

    If this path consists of a single ident, returns the ident.

    A path is considered an ident if:

    • the path has no leading colon,
    • @@ -66,26 +62,25 @@ feature.

    • the first path segment has no angle bracketed or parenthesized path arguments.
    -

    This function is available only if Syn is built with the "parsing" -feature.

    -

    Trait Implementations§

    source§

    impl Clone for Path

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Path

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Path> for Meta

    source§

    fn from(e: Path) -> Meta

    Converts to this type from the input type.
    source§

    impl<T> From<T> for Pathwhere - T: Into<PathSegment>,

    source§

    fn from(segment: T) -> Self

    Converts to this type from the input type.
    source§

    impl Hash for Path

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Path

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Path> for Path

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Path

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Path

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Path

    §

    impl !Send for Path

    §

    impl !Sync for Path

    §

    impl Unpin for Path

    §

    impl UnwindSafe for Path

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    source

    pub fn require_ident(&self) -> Result<&Ident>

    An error if this path is not a single ident, as defined in get_ident.

    +

    Trait Implementations§

    source§

    impl Clone for Path

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Path

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Path> for Meta

    source§

    fn from(meta: Path) -> Meta

    Converts to this type from the input type.
    source§

    impl<T> From<T> for Path
    where + T: Into<PathSegment>,

    source§

    fn from(segment: T) -> Self

    Converts to this type from the input type.
    source§

    impl Hash for Path

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Path

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Path

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Path

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Path

    Auto Trait Implementations§

    §

    impl Freeze for Path

    §

    impl RefUnwindSafe for Path

    §

    impl !Send for Path

    §

    impl !Sync for Path

    §

    impl Unpin for Path

    §

    impl UnwindSafe for Path

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.PathSegment.html b/syn/struct.PathSegment.html index 9e1e293..da6f0d3 100644 --- a/syn/struct.PathSegment.html +++ b/syn/struct.PathSegment.html @@ -1,27 +1,25 @@ -PathSegment in syn - Rust

    Struct syn::PathSegment

    source ·
    pub struct PathSegment {
    +PathSegment in syn - Rust
    syn

    Struct PathSegment

    source
    pub struct PathSegment {
         pub ident: Ident,
         pub arguments: PathArguments,
     }
    Expand description

    A segment of a path together with any path arguments on that segment.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Fields§

    §ident: Ident§arguments: PathArguments

    Trait Implementations§

    source§

    impl Clone for PathSegment

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PathSegment

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T> From<T> for PathSegmentwhere - T: Into<Ident>,

    source§

    fn from(ident: T) -> Self

    Converts to this type from the input type.
    source§

    impl Hash for PathSegment

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for PathSegment

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<PathSegment> for PathSegment

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for PathSegment

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for PathSegment

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §ident: Ident§arguments: PathArguments

    Trait Implementations§

    source§

    impl Clone for PathSegment

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PathSegment

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T> From<T> for PathSegment
    where + T: Into<Ident>,

    source§

    fn from(ident: T) -> Self

    Converts to this type from the input type.
    source§

    impl Hash for PathSegment

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for PathSegment

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for PathSegment

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for PathSegment

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for PathSegment

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.PredicateEq.html b/syn/struct.PredicateEq.html deleted file mode 100644 index ec9c9c7..0000000 --- a/syn/struct.PredicateEq.html +++ /dev/null @@ -1,27 +0,0 @@ -PredicateEq in syn - Rust

    Struct syn::PredicateEq

    source ·
    pub struct PredicateEq {
    -    pub lhs_ty: Type,
    -    pub eq_token: Eq,
    -    pub rhs_ty: Type,
    -}
    Expand description

    An equality predicate in a where clause (unsupported).

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §lhs_ty: Type§eq_token: Eq§rhs_ty: Type

    Trait Implementations§

    source§

    impl Clone for PredicateEq

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PredicateEq

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<PredicateEq> for WherePredicate

    source§

    fn from(e: PredicateEq) -> WherePredicate

    Converts to this type from the input type.
    source§

    impl Hash for PredicateEq

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<PredicateEq> for PredicateEq

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for PredicateEq

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for PredicateEq

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.PredicateLifetime.html b/syn/struct.PredicateLifetime.html index 376f551..1f93fed 100644 --- a/syn/struct.PredicateLifetime.html +++ b/syn/struct.PredicateLifetime.html @@ -1,27 +1,25 @@ -PredicateLifetime in syn - Rust

    Struct syn::PredicateLifetime

    source ·
    pub struct PredicateLifetime {
    +PredicateLifetime in syn - Rust
    syn

    Struct PredicateLifetime

    source
    pub struct PredicateLifetime {
         pub lifetime: Lifetime,
         pub colon_token: Colon,
    -    pub bounds: Punctuated<Lifetime, Add>,
    +    pub bounds: Punctuated<Lifetime, Plus>,
     }
    Expand description

    A lifetime predicate in a where clause: 'a: 'b + 'c.

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §lifetime: Lifetime§colon_token: Colon§bounds: Punctuated<Lifetime, Add>

    Trait Implementations§

    source§

    impl Clone for PredicateLifetime

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PredicateLifetime

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<PredicateLifetime> for WherePredicate

    source§

    fn from(e: PredicateLifetime) -> WherePredicate

    Converts to this type from the input type.
    source§

    impl Hash for PredicateLifetime

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<PredicateLifetime> for PredicateLifetime

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for PredicateLifetime

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for PredicateLifetime

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §lifetime: Lifetime§colon_token: Colon§bounds: Punctuated<Lifetime, Plus>

    Trait Implementations§

    source§

    impl Clone for PredicateLifetime

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PredicateLifetime

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<PredicateLifetime> for WherePredicate

    source§

    fn from(e: PredicateLifetime) -> WherePredicate

    Converts to this type from the input type.
    source§

    impl Hash for PredicateLifetime

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for PredicateLifetime

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for PredicateLifetime

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for PredicateLifetime

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.PredicateType.html b/syn/struct.PredicateType.html index 5976795..2304cb9 100644 --- a/syn/struct.PredicateType.html +++ b/syn/struct.PredicateType.html @@ -1,31 +1,29 @@ -PredicateType in syn - Rust

    Struct syn::PredicateType

    source ·
    pub struct PredicateType {
    -    pub lifetimes: Option<BoundLifetimes>,
    +PredicateType in syn - Rust
    syn

    Struct PredicateType

    source
    pub struct PredicateType {
    +    pub lifetimes: Option<BoundLifetimes>,
         pub bounded_ty: Type,
         pub colon_token: Colon,
    -    pub bounds: Punctuated<TypeParamBound, Add>,
    +    pub bounds: Punctuated<TypeParamBound, Plus>,
     }
    Expand description

    A type predicate in a where clause: for<'c> Foo<'c>: Trait<'c>.

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §lifetimes: Option<BoundLifetimes>

    Any lifetimes from a for binding

    -
    §bounded_ty: Type

    The type being bounded

    -
    §colon_token: Colon§bounds: Punctuated<TypeParamBound, Add>

    Trait and lifetime bounds (Clone+Send+'static)

    -

    Trait Implementations§

    source§

    impl Clone for PredicateType

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PredicateType

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<PredicateType> for WherePredicate

    source§

    fn from(e: PredicateType) -> WherePredicate

    Converts to this type from the input type.
    source§

    impl Hash for PredicateType

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<PredicateType> for PredicateType

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for PredicateType

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for PredicateType

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §lifetimes: Option<BoundLifetimes>

    Any lifetimes from a for binding

    +
    §bounded_ty: Type

    The type being bounded

    +
    §colon_token: Colon§bounds: Punctuated<TypeParamBound, Plus>

    Trait and lifetime bounds (Clone+Send+'static)

    +

    Trait Implementations§

    source§

    impl Clone for PredicateType

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PredicateType

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<PredicateType> for WherePredicate

    source§

    fn from(e: PredicateType) -> WherePredicate

    Converts to this type from the input type.
    source§

    impl Hash for PredicateType

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for PredicateType

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for PredicateType

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for PredicateType

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.QSelf.html b/syn/struct.QSelf.html index 2a07a60..b892d69 100644 --- a/syn/struct.QSelf.html +++ b/syn/struct.QSelf.html @@ -1,8 +1,8 @@ -QSelf in syn - Rust

    Struct syn::QSelf

    source ·
    pub struct QSelf {
    +QSelf in syn - Rust
    syn

    Struct QSelf

    source
    pub struct QSelf {
         pub lt_token: Lt,
    -    pub ty: Box<Type>,
    -    pub position: usize,
    -    pub as_token: Option<As>,
    +    pub ty: Box<Type>,
    +    pub position: usize,
    +    pub as_token: Option<As>,
         pub gt_token: Gt,
     }
    Expand description

    The explicit Self type in a qualified path: the T in <T as Display>::fmt.

    The actual path, including the trait and the associated item, is stored @@ -14,24 +14,21 @@ item qualified with this Self type.

    <Vec<T>>::AssociatedItem ^~~~~~ ^ - ty position = 0 -
    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Fields§

    §lt_token: Lt§ty: Box<Type>§position: usize§as_token: Option<As>§gt_token: Gt

    Trait Implementations§

    source§

    impl Clone for QSelf

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for QSelf

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for QSelf

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<QSelf> for QSelf

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for QSelf

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for QSelf

    §

    impl !Send for QSelf

    §

    impl !Sync for QSelf

    §

    impl Unpin for QSelf

    §

    impl UnwindSafe for QSelf

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    + ty position = 0

    Fields§

    §lt_token: Lt§ty: Box<Type>§position: usize§as_token: Option<As>§gt_token: Gt

    Trait Implementations§

    source§

    impl Clone for QSelf

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for QSelf

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for QSelf

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for QSelf

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Spanned for QSelf

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl Eq for QSelf

    Auto Trait Implementations§

    §

    impl Freeze for QSelf

    §

    impl RefUnwindSafe for QSelf

    §

    impl !Send for QSelf

    §

    impl !Sync for QSelf

    §

    impl Unpin for QSelf

    §

    impl UnwindSafe for QSelf

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.TraitBound.html b/syn/struct.TraitBound.html index 2fbf692..1b8a52f 100644 --- a/syn/struct.TraitBound.html +++ b/syn/struct.TraitBound.html @@ -1,30 +1,28 @@ -TraitBound in syn - Rust

    Struct syn::TraitBound

    source ·
    pub struct TraitBound {
    -    pub paren_token: Option<Paren>,
    +TraitBound in syn - Rust
    syn

    Struct TraitBound

    source
    pub struct TraitBound {
    +    pub paren_token: Option<Paren>,
         pub modifier: TraitBoundModifier,
    -    pub lifetimes: Option<BoundLifetimes>,
    +    pub lifetimes: Option<BoundLifetimes>,
         pub path: Path,
     }
    Expand description

    A trait used as a bound on a type parameter.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Fields§

    §paren_token: Option<Paren>§modifier: TraitBoundModifier§lifetimes: Option<BoundLifetimes>

    The for<'a> in for<'a> Foo<&'a T>

    -
    §path: Path

    The Foo<&'a T> in for<'a> Foo<&'a T>

    -

    Trait Implementations§

    source§

    impl Clone for TraitBound

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TraitBound

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TraitBound> for TypeParamBound

    source§

    fn from(e: TraitBound) -> TypeParamBound

    Converts to this type from the input type.
    source§

    impl Hash for TraitBound

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TraitBound

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<TraitBound> for TraitBound

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for TraitBound

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TraitBound

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §paren_token: Option<Paren>§modifier: TraitBoundModifier§lifetimes: Option<BoundLifetimes>

    The for<'a> in for<'a> Foo<&'a T>

    +
    §path: Path

    The Foo<&'a T> in for<'a> Foo<&'a T>

    +

    Trait Implementations§

    source§

    impl Clone for TraitBound

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TraitBound

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TraitBound> for TypeParamBound

    source§

    fn from(e: TraitBound) -> TypeParamBound

    Converts to this type from the input type.
    source§

    impl Hash for TraitBound

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TraitBound

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for TraitBound

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for TraitBound

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TraitBound

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.Turbofish.html b/syn/struct.Turbofish.html index a7ed2fb..f4b32a3 100644 --- a/syn/struct.Turbofish.html +++ b/syn/struct.Turbofish.html @@ -1,22 +1,20 @@ -Turbofish in syn - Rust

    Struct syn::Turbofish

    source ·
    pub struct Turbofish<'a>(/* private fields */);
    Expand description

    Returned by TypeGenerics::as_turbofish.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature and the "printing" feature.

    -

    Trait Implementations§

    source§

    impl<'a> Clone for Turbofish<'a>

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a> Debug for Turbofish<'a>

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a> Hash for Turbofish<'a>

    source§

    fn hash<H: Hasher>(&self, state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<'a> PartialEq<Turbofish<'a>> for Turbofish<'a>

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> ToTokens for Turbofish<'a>

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl<'a> Eq for Turbofish<'a>

    Auto Trait Implementations§

    §

    impl<'a> RefUnwindSafe for Turbofish<'a>

    §

    impl<'a> !Send for Turbofish<'a>

    §

    impl<'a> !Sync for Turbofish<'a>

    §

    impl<'a> Unpin for Turbofish<'a>

    §

    impl<'a> UnwindSafe for Turbofish<'a>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +Turbofish in syn - Rust
    syn

    Struct Turbofish

    source
    pub struct Turbofish<'a>(/* private fields */);
    Expand description

    Returned by TypeGenerics::as_turbofish.

    +

    Trait Implementations§

    source§

    impl<'a> Clone for Turbofish<'a>

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a> Debug for Turbofish<'a>

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a> Hash for Turbofish<'a>

    source§

    fn hash<H: Hasher>(&self, state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<'a> PartialEq for Turbofish<'a>

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl<'a> ToTokens for Turbofish<'a>

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl<'a> Eq for Turbofish<'a>

    Auto Trait Implementations§

    §

    impl<'a> Freeze for Turbofish<'a>

    §

    impl<'a> RefUnwindSafe for Turbofish<'a>

    §

    impl<'a> !Send for Turbofish<'a>

    §

    impl<'a> !Sync for Turbofish<'a>

    §

    impl<'a> Unpin for Turbofish<'a>

    §

    impl<'a> UnwindSafe for Turbofish<'a>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.TypeArray.html b/syn/struct.TypeArray.html index c9bedc5..ef2c558 100644 --- a/syn/struct.TypeArray.html +++ b/syn/struct.TypeArray.html @@ -1,28 +1,26 @@ -TypeArray in syn - Rust

    Struct syn::TypeArray

    source ·
    pub struct TypeArray {
    +TypeArray in syn - Rust
    syn

    Struct TypeArray

    source
    pub struct TypeArray {
         pub bracket_token: Bracket,
    -    pub elem: Box<Type>,
    +    pub elem: Box<Type>,
         pub semi_token: Semi,
         pub len: Expr,
     }
    Expand description

    A fixed size array type: [T; n].

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §bracket_token: Bracket§elem: Box<Type>§semi_token: Semi§len: Expr

    Trait Implementations§

    source§

    impl Clone for TypeArray

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypeArray

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypeArray> for Type

    source§

    fn from(e: TypeArray) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for TypeArray

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypeArray

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<TypeArray> for TypeArray

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for TypeArray

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypeArray

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §bracket_token: Bracket§elem: Box<Type>§semi_token: Semi§len: Expr

    Trait Implementations§

    source§

    impl Clone for TypeArray

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypeArray

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypeArray> for Type

    source§

    fn from(e: TypeArray) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for TypeArray

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypeArray

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for TypeArray

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for TypeArray

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypeArray

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.TypeBareFn.html b/syn/struct.TypeBareFn.html index b74d60b..e574647 100644 --- a/syn/struct.TypeBareFn.html +++ b/syn/struct.TypeBareFn.html @@ -1,32 +1,30 @@ -TypeBareFn in syn - Rust

    Struct syn::TypeBareFn

    source ·
    pub struct TypeBareFn {
    -    pub lifetimes: Option<BoundLifetimes>,
    -    pub unsafety: Option<Unsafe>,
    -    pub abi: Option<Abi>,
    +TypeBareFn in syn - Rust
    syn

    Struct TypeBareFn

    source
    pub struct TypeBareFn {
    +    pub lifetimes: Option<BoundLifetimes>,
    +    pub unsafety: Option<Unsafe>,
    +    pub abi: Option<Abi>,
         pub fn_token: Fn,
         pub paren_token: Paren,
         pub inputs: Punctuated<BareFnArg, Comma>,
    -    pub variadic: Option<Variadic>,
    +    pub variadic: Option<BareVariadic>,
         pub output: ReturnType,
     }
    Expand description

    A bare function type: fn(usize) -> bool.

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §lifetimes: Option<BoundLifetimes>§unsafety: Option<Unsafe>§abi: Option<Abi>§fn_token: Fn§paren_token: Paren§inputs: Punctuated<BareFnArg, Comma>§variadic: Option<Variadic>§output: ReturnType

    Trait Implementations§

    source§

    impl Clone for TypeBareFn

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypeBareFn

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypeBareFn> for Type

    source§

    fn from(e: TypeBareFn) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for TypeBareFn

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypeBareFn

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<TypeBareFn> for TypeBareFn

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for TypeBareFn

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypeBareFn

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §lifetimes: Option<BoundLifetimes>§unsafety: Option<Unsafe>§abi: Option<Abi>§fn_token: Fn§paren_token: Paren§inputs: Punctuated<BareFnArg, Comma>§variadic: Option<BareVariadic>§output: ReturnType

    Trait Implementations§

    source§

    impl Clone for TypeBareFn

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypeBareFn

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypeBareFn> for Type

    source§

    fn from(e: TypeBareFn) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for TypeBareFn

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypeBareFn

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for TypeBareFn

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for TypeBareFn

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypeBareFn

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.TypeGenerics.html b/syn/struct.TypeGenerics.html index d3e65bc..c6c85b7 100644 --- a/syn/struct.TypeGenerics.html +++ b/syn/struct.TypeGenerics.html @@ -1,25 +1,21 @@ -TypeGenerics in syn - Rust

    Struct syn::TypeGenerics

    source ·
    pub struct TypeGenerics<'a>(/* private fields */);
    Expand description

    Returned by Generics::split_for_impl.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature and the "printing" feature.

    -

    Implementations§

    source§

    impl<'a> TypeGenerics<'a>

    source

    pub fn as_turbofish(&self) -> Turbofish<'_>

    Turn a type’s generics like <X, Y> into a turbofish like ::<X, Y>.

    -

    This method is available only if Syn is built with the "derive" or -"full" feature and the "printing" feature.

    -

    Trait Implementations§

    source§

    impl<'a> Clone for TypeGenerics<'a>

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a> Debug for TypeGenerics<'a>

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a> Hash for TypeGenerics<'a>

    source§

    fn hash<H: Hasher>(&self, state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<'a> PartialEq<TypeGenerics<'a>> for TypeGenerics<'a>

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> ToTokens for TypeGenerics<'a>

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl<'a> Eq for TypeGenerics<'a>

    Auto Trait Implementations§

    §

    impl<'a> RefUnwindSafe for TypeGenerics<'a>

    §

    impl<'a> !Send for TypeGenerics<'a>

    §

    impl<'a> !Sync for TypeGenerics<'a>

    §

    impl<'a> Unpin for TypeGenerics<'a>

    §

    impl<'a> UnwindSafe for TypeGenerics<'a>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +TypeGenerics in syn - Rust
    syn

    Struct TypeGenerics

    source
    pub struct TypeGenerics<'a>(/* private fields */);
    Expand description

    Returned by Generics::split_for_impl.

    +

    Implementations§

    source§

    impl<'a> TypeGenerics<'a>

    source

    pub fn as_turbofish(&self) -> Turbofish<'_>

    Turn a type’s generics like <X, Y> into a turbofish like ::<X, Y>.

    +

    Trait Implementations§

    source§

    impl<'a> Clone for TypeGenerics<'a>

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a> Debug for TypeGenerics<'a>

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a> Hash for TypeGenerics<'a>

    source§

    fn hash<H: Hasher>(&self, state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<'a> PartialEq for TypeGenerics<'a>

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl<'a> ToTokens for TypeGenerics<'a>

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl<'a> Eq for TypeGenerics<'a>

    Auto Trait Implementations§

    §

    impl<'a> Freeze for TypeGenerics<'a>

    §

    impl<'a> RefUnwindSafe for TypeGenerics<'a>

    §

    impl<'a> !Send for TypeGenerics<'a>

    §

    impl<'a> !Sync for TypeGenerics<'a>

    §

    impl<'a> Unpin for TypeGenerics<'a>

    §

    impl<'a> UnwindSafe for TypeGenerics<'a>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.TypeGroup.html b/syn/struct.TypeGroup.html index 703a33b..b898dc9 100644 --- a/syn/struct.TypeGroup.html +++ b/syn/struct.TypeGroup.html @@ -1,26 +1,24 @@ -TypeGroup in syn - Rust

    Struct syn::TypeGroup

    source ·
    pub struct TypeGroup {
    +TypeGroup in syn - Rust
    syn

    Struct TypeGroup

    source
    pub struct TypeGroup {
         pub group_token: Group,
    -    pub elem: Box<Type>,
    +    pub elem: Box<Type>,
     }
    Expand description

    A type contained within invisible delimiters.

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §group_token: Group§elem: Box<Type>

    Trait Implementations§

    source§

    impl Clone for TypeGroup

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypeGroup

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypeGroup> for Type

    source§

    fn from(e: TypeGroup) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for TypeGroup

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypeGroup

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<TypeGroup> for TypeGroup

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for TypeGroup

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypeGroup

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §group_token: Group§elem: Box<Type>

    Trait Implementations§

    source§

    impl Clone for TypeGroup

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypeGroup

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypeGroup> for Type

    source§

    fn from(e: TypeGroup) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for TypeGroup

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypeGroup

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for TypeGroup

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for TypeGroup

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypeGroup

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.TypeImplTrait.html b/syn/struct.TypeImplTrait.html index 5450fa6..a458b24 100644 --- a/syn/struct.TypeImplTrait.html +++ b/syn/struct.TypeImplTrait.html @@ -1,27 +1,25 @@ -TypeImplTrait in syn - Rust

    Struct syn::TypeImplTrait

    source ·
    pub struct TypeImplTrait {
    +TypeImplTrait in syn - Rust
    syn

    Struct TypeImplTrait

    source
    pub struct TypeImplTrait {
         pub impl_token: Impl,
    -    pub bounds: Punctuated<TypeParamBound, Add>,
    +    pub bounds: Punctuated<TypeParamBound, Plus>,
     }
    Expand description

    An impl Bound1 + Bound2 + Bound3 type where Bound is a trait or a lifetime.

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §impl_token: Impl§bounds: Punctuated<TypeParamBound, Add>

    Implementations§

    Trait Implementations§

    source§

    impl Clone for TypeImplTrait

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypeImplTrait

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypeImplTrait> for Type

    source§

    fn from(e: TypeImplTrait) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for TypeImplTrait

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypeImplTrait

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<TypeImplTrait> for TypeImplTrait

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for TypeImplTrait

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypeImplTrait

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §impl_token: Impl§bounds: Punctuated<TypeParamBound, Plus>

    Implementations§

    Trait Implementations§

    source§

    impl Clone for TypeImplTrait

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypeImplTrait

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypeImplTrait> for Type

    source§

    fn from(e: TypeImplTrait) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for TypeImplTrait

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypeImplTrait

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for TypeImplTrait

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for TypeImplTrait

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypeImplTrait

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.TypeInfer.html b/syn/struct.TypeInfer.html index 0e56842..7423694 100644 --- a/syn/struct.TypeInfer.html +++ b/syn/struct.TypeInfer.html @@ -1,25 +1,23 @@ -TypeInfer in syn - Rust

    Struct syn::TypeInfer

    source ·
    pub struct TypeInfer {
    +TypeInfer in syn - Rust
    syn

    Struct TypeInfer

    source
    pub struct TypeInfer {
         pub underscore_token: Underscore,
     }
    Expand description

    Indication that a type should be inferred by the compiler: _.

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §underscore_token: Underscore

    Trait Implementations§

    source§

    impl Clone for TypeInfer

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypeInfer

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypeInfer> for Type

    source§

    fn from(e: TypeInfer) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for TypeInfer

    source§

    fn hash<H>(&self, _state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypeInfer

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<TypeInfer> for TypeInfer

    source§

    fn eq(&self, _other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for TypeInfer

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypeInfer

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §underscore_token: Underscore

    Trait Implementations§

    source§

    impl Clone for TypeInfer

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypeInfer

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypeInfer> for Type

    source§

    fn from(e: TypeInfer) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for TypeInfer

    source§

    fn hash<H>(&self, _state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypeInfer

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for TypeInfer

    source§

    fn eq(&self, _other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for TypeInfer

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypeInfer

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.TypeMacro.html b/syn/struct.TypeMacro.html index 38dca30..d32dda8 100644 --- a/syn/struct.TypeMacro.html +++ b/syn/struct.TypeMacro.html @@ -1,25 +1,23 @@ -TypeMacro in syn - Rust

    Struct syn::TypeMacro

    source ·
    pub struct TypeMacro {
    +TypeMacro in syn - Rust
    syn

    Struct TypeMacro

    source
    pub struct TypeMacro {
         pub mac: Macro,
     }
    Expand description

    A macro in the type position.

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §mac: Macro

    Trait Implementations§

    source§

    impl Clone for TypeMacro

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypeMacro

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypeMacro> for Type

    source§

    fn from(e: TypeMacro) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for TypeMacro

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypeMacro

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<TypeMacro> for TypeMacro

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for TypeMacro

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypeMacro

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §mac: Macro

    Trait Implementations§

    source§

    impl Clone for TypeMacro

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypeMacro

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypeMacro> for Type

    source§

    fn from(e: TypeMacro) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for TypeMacro

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypeMacro

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for TypeMacro

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for TypeMacro

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypeMacro

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.TypeNever.html b/syn/struct.TypeNever.html index a61c29a..abf323f 100644 --- a/syn/struct.TypeNever.html +++ b/syn/struct.TypeNever.html @@ -1,25 +1,23 @@ -TypeNever in syn - Rust

    Struct syn::TypeNever

    source ·
    pub struct TypeNever {
    -    pub bang_token: Bang,
    +TypeNever in syn - Rust
    syn

    Struct TypeNever

    source
    pub struct TypeNever {
    +    pub bang_token: Not,
     }
    Expand description

    The never type: !.

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §bang_token: Bang

    Trait Implementations§

    source§

    impl Clone for TypeNever

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypeNever

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypeNever> for Type

    source§

    fn from(e: TypeNever) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for TypeNever

    source§

    fn hash<H>(&self, _state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypeNever

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<TypeNever> for TypeNever

    source§

    fn eq(&self, _other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for TypeNever

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypeNever

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §bang_token: Not

    Trait Implementations§

    source§

    impl Clone for TypeNever

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypeNever

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypeNever> for Type

    source§

    fn from(e: TypeNever) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for TypeNever

    source§

    fn hash<H>(&self, _state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypeNever

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for TypeNever

    source§

    fn eq(&self, _other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for TypeNever

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypeNever

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.TypeParam.html b/syn/struct.TypeParam.html index a44b58f..5757ad0 100644 --- a/syn/struct.TypeParam.html +++ b/syn/struct.TypeParam.html @@ -1,30 +1,28 @@ -TypeParam in syn - Rust

    Struct syn::TypeParam

    source ·
    pub struct TypeParam {
    -    pub attrs: Vec<Attribute>,
    +TypeParam in syn - Rust
    syn

    Struct TypeParam

    source
    pub struct TypeParam {
    +    pub attrs: Vec<Attribute>,
         pub ident: Ident,
    -    pub colon_token: Option<Colon>,
    -    pub bounds: Punctuated<TypeParamBound, Add>,
    -    pub eq_token: Option<Eq>,
    -    pub default: Option<Type>,
    +    pub colon_token: Option<Colon>,
    +    pub bounds: Punctuated<TypeParamBound, Plus>,
    +    pub eq_token: Option<Eq>,
    +    pub default: Option<Type>,
     }
    Expand description

    A generic type parameter: T: Into<String>.

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §attrs: Vec<Attribute>§ident: Ident§colon_token: Option<Colon>§bounds: Punctuated<TypeParamBound, Add>§eq_token: Option<Eq>§default: Option<Type>

    Trait Implementations§

    source§

    impl Clone for TypeParam

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypeParam

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Ident> for TypeParam

    source§

    fn from(ident: Ident) -> Self

    Converts to this type from the input type.
    source§

    impl From<TypeParam> for GenericParam

    source§

    fn from(e: TypeParam) -> GenericParam

    Converts to this type from the input type.
    source§

    impl Hash for TypeParam

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypeParam

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<TypeParam> for TypeParam

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for TypeParam

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypeParam

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §attrs: Vec<Attribute>§ident: Ident§colon_token: Option<Colon>§bounds: Punctuated<TypeParamBound, Plus>§eq_token: Option<Eq>§default: Option<Type>

    Trait Implementations§

    source§

    impl Clone for TypeParam

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypeParam

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Ident> for TypeParam

    source§

    fn from(ident: Ident) -> Self

    Converts to this type from the input type.
    source§

    impl From<TypeParam> for GenericParam

    source§

    fn from(e: TypeParam) -> GenericParam

    Converts to this type from the input type.
    source§

    impl Hash for TypeParam

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypeParam

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for TypeParam

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for TypeParam

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypeParam

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.TypeParen.html b/syn/struct.TypeParen.html index f641b3b..3cba2e2 100644 --- a/syn/struct.TypeParen.html +++ b/syn/struct.TypeParen.html @@ -1,26 +1,24 @@ -TypeParen in syn - Rust

    Struct syn::TypeParen

    source ·
    pub struct TypeParen {
    +TypeParen in syn - Rust
    syn

    Struct TypeParen

    source
    pub struct TypeParen {
         pub paren_token: Paren,
    -    pub elem: Box<Type>,
    +    pub elem: Box<Type>,
     }
    Expand description

    A parenthesized type equivalent to the inner type.

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §paren_token: Paren§elem: Box<Type>

    Trait Implementations§

    source§

    impl Clone for TypeParen

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypeParen

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypeParen> for Type

    source§

    fn from(e: TypeParen) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for TypeParen

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypeParen

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<TypeParen> for TypeParen

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for TypeParen

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypeParen

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §paren_token: Paren§elem: Box<Type>

    Trait Implementations§

    source§

    impl Clone for TypeParen

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypeParen

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypeParen> for Type

    source§

    fn from(e: TypeParen) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for TypeParen

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypeParen

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for TypeParen

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for TypeParen

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypeParen

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.TypePath.html b/syn/struct.TypePath.html index dfb77db..fb299f4 100644 --- a/syn/struct.TypePath.html +++ b/syn/struct.TypePath.html @@ -1,27 +1,25 @@ -TypePath in syn - Rust

    Struct syn::TypePath

    source ·
    pub struct TypePath {
    -    pub qself: Option<QSelf>,
    +TypePath in syn - Rust
    syn

    Struct TypePath

    source
    pub struct TypePath {
    +    pub qself: Option<QSelf>,
         pub path: Path,
     }
    Expand description

    A path like std::slice::Iter, optionally qualified with a self-type as in <Vec<T> as SomeTrait>::Associated.

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §qself: Option<QSelf>§path: Path

    Trait Implementations§

    source§

    impl Clone for TypePath

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypePath

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypePath> for Type

    source§

    fn from(e: TypePath) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for TypePath

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypePath

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<TypePath> for TypePath

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for TypePath

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypePath

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §qself: Option<QSelf>§path: Path

    Trait Implementations§

    source§

    impl Clone for TypePath

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypePath

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypePath> for Type

    source§

    fn from(e: TypePath) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for TypePath

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypePath

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for TypePath

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for TypePath

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypePath

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.TypePtr.html b/syn/struct.TypePtr.html index 472a509..aa2afe9 100644 --- a/syn/struct.TypePtr.html +++ b/syn/struct.TypePtr.html @@ -1,28 +1,26 @@ -TypePtr in syn - Rust

    Struct syn::TypePtr

    source ·
    pub struct TypePtr {
    +TypePtr in syn - Rust
    syn

    Struct TypePtr

    source
    pub struct TypePtr {
         pub star_token: Star,
    -    pub const_token: Option<Const>,
    -    pub mutability: Option<Mut>,
    -    pub elem: Box<Type>,
    +    pub const_token: Option<Const>,
    +    pub mutability: Option<Mut>,
    +    pub elem: Box<Type>,
     }
    Expand description

    A raw pointer type: *const T or *mut T.

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §star_token: Star§const_token: Option<Const>§mutability: Option<Mut>§elem: Box<Type>

    Trait Implementations§

    source§

    impl Clone for TypePtr

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypePtr

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypePtr> for Type

    source§

    fn from(e: TypePtr) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for TypePtr

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypePtr

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<TypePtr> for TypePtr

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for TypePtr

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypePtr

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §star_token: Star§const_token: Option<Const>§mutability: Option<Mut>§elem: Box<Type>

    Trait Implementations§

    source§

    impl Clone for TypePtr

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypePtr

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypePtr> for Type

    source§

    fn from(e: TypePtr) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for TypePtr

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypePtr

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for TypePtr

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for TypePtr

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypePtr

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.TypeReference.html b/syn/struct.TypeReference.html index ec9fa90..7860065 100644 --- a/syn/struct.TypeReference.html +++ b/syn/struct.TypeReference.html @@ -1,28 +1,26 @@ -TypeReference in syn - Rust

    Struct syn::TypeReference

    source ·
    pub struct TypeReference {
    +TypeReference in syn - Rust
    syn

    Struct TypeReference

    source
    pub struct TypeReference {
         pub and_token: And,
    -    pub lifetime: Option<Lifetime>,
    -    pub mutability: Option<Mut>,
    -    pub elem: Box<Type>,
    +    pub lifetime: Option<Lifetime>,
    +    pub mutability: Option<Mut>,
    +    pub elem: Box<Type>,
     }
    Expand description

    A reference type: &'a T or &'a mut T.

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §and_token: And§lifetime: Option<Lifetime>§mutability: Option<Mut>§elem: Box<Type>

    Trait Implementations§

    source§

    impl Clone for TypeReference

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypeReference

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypeReference> for Type

    source§

    fn from(e: TypeReference) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for TypeReference

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypeReference

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<TypeReference> for TypeReference

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for TypeReference

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypeReference

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §and_token: And§lifetime: Option<Lifetime>§mutability: Option<Mut>§elem: Box<Type>

    Trait Implementations§

    source§

    impl Clone for TypeReference

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypeReference

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypeReference> for Type

    source§

    fn from(e: TypeReference) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for TypeReference

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypeReference

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for TypeReference

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for TypeReference

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypeReference

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.TypeSlice.html b/syn/struct.TypeSlice.html index dc630aa..c333a33 100644 --- a/syn/struct.TypeSlice.html +++ b/syn/struct.TypeSlice.html @@ -1,26 +1,24 @@ -TypeSlice in syn - Rust

    Struct syn::TypeSlice

    source ·
    pub struct TypeSlice {
    +TypeSlice in syn - Rust
    syn

    Struct TypeSlice

    source
    pub struct TypeSlice {
         pub bracket_token: Bracket,
    -    pub elem: Box<Type>,
    +    pub elem: Box<Type>,
     }
    Expand description

    A dynamically sized slice type: [T].

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §bracket_token: Bracket§elem: Box<Type>

    Trait Implementations§

    source§

    impl Clone for TypeSlice

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypeSlice

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypeSlice> for Type

    source§

    fn from(e: TypeSlice) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for TypeSlice

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypeSlice

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<TypeSlice> for TypeSlice

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for TypeSlice

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypeSlice

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §bracket_token: Bracket§elem: Box<Type>

    Trait Implementations§

    source§

    impl Clone for TypeSlice

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypeSlice

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypeSlice> for Type

    source§

    fn from(e: TypeSlice) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for TypeSlice

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypeSlice

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for TypeSlice

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for TypeSlice

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypeSlice

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.TypeTraitObject.html b/syn/struct.TypeTraitObject.html index a569441..c93e986 100644 --- a/syn/struct.TypeTraitObject.html +++ b/syn/struct.TypeTraitObject.html @@ -1,27 +1,25 @@ -TypeTraitObject in syn - Rust

    Struct syn::TypeTraitObject

    source ·
    pub struct TypeTraitObject {
    -    pub dyn_token: Option<Dyn>,
    -    pub bounds: Punctuated<TypeParamBound, Add>,
    +TypeTraitObject in syn - Rust
    syn

    Struct TypeTraitObject

    source
    pub struct TypeTraitObject {
    +    pub dyn_token: Option<Dyn>,
    +    pub bounds: Punctuated<TypeParamBound, Plus>,
     }
    Expand description

    A trait object type dyn Bound1 + Bound2 + Bound3 where Bound is a trait or a lifetime.

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §dyn_token: Option<Dyn>§bounds: Punctuated<TypeParamBound, Add>

    Implementations§

    Trait Implementations§

    source§

    impl Clone for TypeTraitObject

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypeTraitObject

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypeTraitObject> for Type

    source§

    fn from(e: TypeTraitObject) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for TypeTraitObject

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypeTraitObject

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<TypeTraitObject> for TypeTraitObject

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for TypeTraitObject

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypeTraitObject

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §dyn_token: Option<Dyn>§bounds: Punctuated<TypeParamBound, Plus>

    Implementations§

    Trait Implementations§

    source§

    impl Clone for TypeTraitObject

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypeTraitObject

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypeTraitObject> for Type

    source§

    fn from(e: TypeTraitObject) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for TypeTraitObject

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypeTraitObject

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for TypeTraitObject

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for TypeTraitObject

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypeTraitObject

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.TypeTuple.html b/syn/struct.TypeTuple.html index b789c08..f1f498a 100644 --- a/syn/struct.TypeTuple.html +++ b/syn/struct.TypeTuple.html @@ -1,26 +1,24 @@ -TypeTuple in syn - Rust

    Struct syn::TypeTuple

    source ·
    pub struct TypeTuple {
    +TypeTuple in syn - Rust
    syn

    Struct TypeTuple

    source
    pub struct TypeTuple {
         pub paren_token: Paren,
         pub elems: Punctuated<Type, Comma>,
     }
    Expand description

    A tuple type: (A, B, C, String).

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §paren_token: Paren§elems: Punctuated<Type, Comma>

    Trait Implementations§

    source§

    impl Clone for TypeTuple

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypeTuple

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypeTuple> for Type

    source§

    fn from(e: TypeTuple) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for TypeTuple

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypeTuple

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<TypeTuple> for TypeTuple

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for TypeTuple

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypeTuple

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §paren_token: Paren§elems: Punctuated<Type, Comma>

    Trait Implementations§

    source§

    impl Clone for TypeTuple

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TypeTuple

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<TypeTuple> for Type

    source§

    fn from(e: TypeTuple) -> Type

    Converts to this type from the input type.
    source§

    impl Hash for TypeTuple

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for TypeTuple

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for TypeTuple

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for TypeTuple

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for TypeTuple

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.Variadic.html b/syn/struct.Variadic.html deleted file mode 100644 index 7fffcce..0000000 --- a/syn/struct.Variadic.html +++ /dev/null @@ -1,31 +0,0 @@ -Variadic in syn - Rust

    Struct syn::Variadic

    source ·
    pub struct Variadic {
    -    pub attrs: Vec<Attribute>,
    -    pub dots: Dot3,
    -}
    Expand description

    The variadic argument of a foreign function.

    - -
    extern "C" {
    -    fn printf(format: *const c_char, ...) -> c_int;
    -    //                               ^^^
    -}
    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Fields§

    §attrs: Vec<Attribute>§dots: Dot3

    Trait Implementations§

    source§

    impl Clone for Variadic

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Variadic

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for Variadic

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<Variadic> for Variadic

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Variadic

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Variadic

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.Variant.html b/syn/struct.Variant.html index fb0e9ee..9791461 100644 --- a/syn/struct.Variant.html +++ b/syn/struct.Variant.html @@ -1,32 +1,29 @@ -Variant in syn - Rust

    Struct syn::Variant

    source ·
    pub struct Variant {
    -    pub attrs: Vec<Attribute>,
    +Variant in syn - Rust
    syn

    Struct Variant

    source
    pub struct Variant {
    +    pub attrs: Vec<Attribute>,
         pub ident: Ident,
         pub fields: Fields,
    -    pub discriminant: Option<(Eq, Expr)>,
    +    pub discriminant: Option<(Eq, Expr)>,
     }
    Expand description

    An enum variant.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Fields§

    §attrs: Vec<Attribute>

    Attributes tagged on the variant.

    -
    §ident: Ident

    Name of the variant.

    -
    §fields: Fields

    Content stored in the variant.

    -
    §discriminant: Option<(Eq, Expr)>

    Explicit discriminant: Variant = 1

    -

    Trait Implementations§

    source§

    impl Clone for Variant

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Variant

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for Variant

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Variant

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Variant> for Variant

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Variant

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Variant

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §attrs: Vec<Attribute>§ident: Ident

    Name of the variant.

    +
    §fields: Fields

    Content stored in the variant.

    +
    §discriminant: Option<(Eq, Expr)>

    Explicit discriminant: Variant = 1

    +

    Trait Implementations§

    source§

    impl Clone for Variant

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Variant

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for Variant

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Variant

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Variant

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Variant

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for Variant

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.VisCrate.html b/syn/struct.VisCrate.html deleted file mode 100644 index 7ecb679..0000000 --- a/syn/struct.VisCrate.html +++ /dev/null @@ -1,25 +0,0 @@ -VisCrate in syn - Rust

    Struct syn::VisCrate

    source ·
    pub struct VisCrate {
    -    pub crate_token: Crate,
    -}
    Expand description

    A crate-level visibility: crate.

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §crate_token: Crate

    Trait Implementations§

    source§

    impl Clone for VisCrate

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for VisCrate

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<VisCrate> for Visibility

    source§

    fn from(e: VisCrate) -> Visibility

    Converts to this type from the input type.
    source§

    impl Hash for VisCrate

    source§

    fn hash<H>(&self, _state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<VisCrate> for VisCrate

    source§

    fn eq(&self, _other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for VisCrate

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for VisCrate

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.VisPublic.html b/syn/struct.VisPublic.html deleted file mode 100644 index e7d0c85..0000000 --- a/syn/struct.VisPublic.html +++ /dev/null @@ -1,25 +0,0 @@ -VisPublic in syn - Rust

    Struct syn::VisPublic

    source ·
    pub struct VisPublic {
    -    pub pub_token: Pub,
    -}
    Expand description

    A public visibility level: pub.

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §pub_token: Pub

    Trait Implementations§

    source§

    impl Clone for VisPublic

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for VisPublic

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<VisPublic> for Visibility

    source§

    fn from(e: VisPublic) -> Visibility

    Converts to this type from the input type.
    source§

    impl Hash for VisPublic

    source§

    fn hash<H>(&self, _state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<VisPublic> for VisPublic

    source§

    fn eq(&self, _other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for VisPublic

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for VisPublic

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.VisRestricted.html b/syn/struct.VisRestricted.html index 19633e4..2445cbe 100644 --- a/syn/struct.VisRestricted.html +++ b/syn/struct.VisRestricted.html @@ -1,29 +1,27 @@ -VisRestricted in syn - Rust

    Struct syn::VisRestricted

    source ·
    pub struct VisRestricted {
    +VisRestricted in syn - Rust
    syn

    Struct VisRestricted

    source
    pub struct VisRestricted {
         pub pub_token: Pub,
         pub paren_token: Paren,
    -    pub in_token: Option<In>,
    -    pub path: Box<Path>,
    +    pub in_token: Option<In>,
    +    pub path: Box<Path>,
     }
    Expand description

    A visibility level restricted to some path: pub(self) or pub(super) or pub(crate) or pub(in some::module).

    -

    This type is available only if Syn is built with the "derive" or -"full" feature.

    -

    Fields§

    §pub_token: Pub§paren_token: Paren§in_token: Option<In>§path: Box<Path>

    Trait Implementations§

    source§

    impl Clone for VisRestricted

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for VisRestricted

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<VisRestricted> for Visibility

    source§

    fn from(e: VisRestricted) -> Visibility

    Converts to this type from the input type.
    source§

    impl Hash for VisRestricted

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<VisRestricted> for VisRestricted

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for VisRestricted

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for VisRestricted

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §pub_token: Pub§paren_token: Paren§in_token: Option<In>§path: Box<Path>

    Trait Implementations§

    source§

    impl Clone for VisRestricted

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for VisRestricted

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for VisRestricted

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for VisRestricted

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for VisRestricted

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for VisRestricted

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/struct.WhereClause.html b/syn/struct.WhereClause.html index 5680886..1742ddf 100644 --- a/syn/struct.WhereClause.html +++ b/syn/struct.WhereClause.html @@ -1,26 +1,24 @@ -WhereClause in syn - Rust

    Struct syn::WhereClause

    source ·
    pub struct WhereClause {
    +WhereClause in syn - Rust
    syn

    Struct WhereClause

    source
    pub struct WhereClause {
         pub where_token: Where,
         pub predicates: Punctuated<WherePredicate, Comma>,
     }
    Expand description

    A where clause in a definition: where T: Deserialize<'de>, D: 'static.

    -

    This type is available only if Syn is built with the "derive" or "full" -feature.

    -

    Fields§

    §where_token: Where§predicates: Punctuated<WherePredicate, Comma>

    Trait Implementations§

    source§

    impl Clone for WhereClause

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for WhereClause

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for WhereClause

    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for WhereClause

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<WhereClause> for WhereClause

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for WhereClause

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for WhereClause

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §where_token: Where§predicates: Punctuated<WherePredicate, Comma>

    Trait Implementations§

    source§

    impl Clone for WhereClause

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for WhereClause

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for WhereClause

    source§

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for WhereClause

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for WhereClause

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for WhereClause

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Eq for WhereClause

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/index.html b/syn/token/index.html index f58f2f0..2a0e1ef 100644 --- a/syn/token/index.html +++ b/syn/token/index.html @@ -1,8 +1,8 @@ -syn::token - Rust

    Module syn::token

    source ·
    Expand description

    Tokens representing Rust punctuation, keywords, and delimiters.

    +syn::token - Rust
    syn

    Module token

    source
    Expand description

    Tokens representing Rust punctuation, keywords, and delimiters.

    The type names in this module can be difficult to keep straight, so we prefer to use the Token! macro instead. This is a type-macro that expands to the token type of the given token.

    -

    Example

    +

    §Example

    The ItemStatic syntax tree node is defined like this.

    pub struct ItemStatic {
    @@ -17,7 +17,7 @@ expands to the token type of the given token.

    pub expr: Box<Expr>, pub semi_token: Token![;], }
    -

    Parsing

    +

    §Parsing

    Keywords and punctuation can be parsed through the ParseStream::parse method. Delimiter tokens are parsed using the parenthesized!, bracketed! and braced! macros.

    @@ -42,7 +42,7 @@ method. Delimiter tokens are parsed using the Other operations +

    §Other operations

    Every keyword and punctuation token supports the following operations.

    \ No newline at end of file +

    Structs§

    Traits§

    • Marker trait for types that represent single tokens.
    \ No newline at end of file diff --git a/syn/token/sidebar-items.js b/syn/token/sidebar-items.js index 0f01ab7..7d59812 100644 --- a/syn/token/sidebar-items.js +++ b/syn/token/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"struct":["Abstract","Add","AddEq","And","AndAnd","AndEq","As","Async","At","Auto","Await","Bang","Become","Box","Brace","Bracket","Break","Caret","CaretEq","Colon","Colon2","Comma","Const","Continue","Crate","Default","Div","DivEq","Do","Dollar","Dot","Dot2","Dot3","DotDotEq","Dyn","Else","Enum","Eq","EqEq","Extern","FatArrow","Final","Fn","For","Ge","Group","Gt","If","Impl","In","LArrow","Le","Let","Loop","Lt","Macro","Match","Mod","Move","MulEq","Mut","Ne","Or","OrEq","OrOr","Override","Paren","Pound","Priv","Pub","Question","RArrow","Ref","Rem","RemEq","Return","SelfType","SelfValue","Semi","Shl","ShlEq","Shr","ShrEq","Star","Static","Struct","Sub","SubEq","Super","Tilde","Trait","Try","Type","Typeof","Underscore","Union","Unsafe","Unsized","Use","Virtual","Where","While","Yield"],"trait":["Token"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"struct":["Abstract","And","AndAnd","AndEq","As","Async","At","Auto","Await","Become","Box","Brace","Bracket","Break","Caret","CaretEq","Colon","Comma","Const","Continue","Crate","Default","Do","Dollar","Dot","DotDot","DotDotDot","DotDotEq","Dyn","Else","Enum","Eq","EqEq","Extern","FatArrow","Final","Fn","For","Ge","Group","Gt","If","Impl","In","LArrow","Le","Let","Loop","Lt","Macro","Match","Minus","MinusEq","Mod","Move","Mut","Ne","Not","Or","OrEq","OrOr","Override","Paren","PathSep","Percent","PercentEq","Plus","PlusEq","Pound","Priv","Pub","Question","RArrow","Raw","Ref","Return","SelfType","SelfValue","Semi","Shl","ShlEq","Shr","ShrEq","Slash","SlashEq","Star","StarEq","Static","Struct","Super","Tilde","Trait","Try","Type","Typeof","Underscore","Union","Unsafe","Unsized","Use","Virtual","Where","While","Yield"],"trait":["Token"]}; \ No newline at end of file diff --git a/syn/token/struct.Abstract.html b/syn/token/struct.Abstract.html index 5f53f20..7831388 100644 --- a/syn/token/struct.Abstract.html +++ b/syn/token/struct.Abstract.html @@ -1,24 +1,24 @@ -Abstract in syn::token - Rust

    Struct syn::token::Abstract

    source ·
    pub struct Abstract {
    +Abstract in syn::token - Rust
    syn::token

    Struct Abstract

    source
    pub struct Abstract {
         pub span: Span,
     }
    Expand description

    abstract

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Abstract

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Abstract

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Abstract

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Abstract

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Abstract

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Abstract> for Abstract

    source§

    fn eq(&self, _other: &Abstract) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Abstract

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Abstract

    source§

    impl Eq for Abstract

    source§

    impl Token for Abstract

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Abstract

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Abstract

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Abstract

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Abstract

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Abstract

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Abstract

    source§

    fn eq(&self, _other: &Abstract) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Abstract

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Abstract

    source§

    impl Eq for Abstract

    source§

    impl Token for Abstract

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Add.html b/syn/token/struct.Add.html deleted file mode 100644 index be82370..0000000 --- a/syn/token/struct.Add.html +++ /dev/null @@ -1,24 +0,0 @@ -Add in syn::token - Rust

    Struct syn::token::Add

    source ·
    #[repr(C)]
    pub struct Add { - pub spans: [Span; 1], -}
    Expand description

    +

    -

    Don’t try to remember the name of this type — use the -Token! macro instead.

    -

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Add

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Add

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Add

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Add

    §

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Add

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Add

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Add

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Add> for Add

    source§

    fn eq(&self, _other: &Add) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Add

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Add

    source§

    impl Eq for Add

    source§

    impl Token for Add

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Add

    §

    impl !Send for Add

    §

    impl !Sync for Add

    §

    impl Unpin for Add

    §

    impl UnwindSafe for Add

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.AddEq.html b/syn/token/struct.AddEq.html deleted file mode 100644 index 149f26c..0000000 --- a/syn/token/struct.AddEq.html +++ /dev/null @@ -1,24 +0,0 @@ -AddEq in syn::token - Rust

    Struct syn::token::AddEq

    source ·
    #[repr(C)]
    pub struct AddEq { - pub spans: [Span; 2], -}
    Expand description

    +=

    -

    Don’t try to remember the name of this type — use the -Token! macro instead.

    -

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for AddEq

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for AddEq

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for AddEq

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for AddEq

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for AddEq

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<AddEq> for AddEq

    source§

    fn eq(&self, _other: &AddEq) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for AddEq

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for AddEq

    source§

    impl Eq for AddEq

    source§

    impl Token for AddEq

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for AddEq

    §

    impl !Send for AddEq

    §

    impl !Sync for AddEq

    §

    impl Unpin for AddEq

    §

    impl UnwindSafe for AddEq

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.And.html b/syn/token/struct.And.html index e6a7fab..1dbc279 100644 --- a/syn/token/struct.And.html +++ b/syn/token/struct.And.html @@ -1,24 +1,26 @@ -And in syn::token - Rust

    Struct syn::token::And

    source ·
    #[repr(C)]
    pub struct And { - pub spans: [Span; 1], +And in syn::token - Rust
    syn::token

    Struct And

    source
    pub struct And {
    +    pub spans: [Span; 1],
     }
    Expand description

    &

    +

    Usage: +bitwise and logical AND, borrow, references, reference patterns.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for And

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for And

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for And

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for And

    §

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for And

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for And

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for And

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<And> for And

    source§

    fn eq(&self, _other: &And) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for And

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for And

    source§

    impl Eq for And

    source§

    impl Token for And

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for And

    §

    impl !Send for And

    §

    impl !Sync for And

    §

    impl Unpin for And

    §

    impl UnwindSafe for And

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for And

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for And

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for And

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for And

    source§

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for And

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for And

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for And

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for And

    source§

    fn eq(&self, _other: &And) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for And

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for And

    source§

    impl Eq for And

    source§

    impl Token for And

    Auto Trait Implementations§

    §

    impl Freeze for And

    §

    impl RefUnwindSafe for And

    §

    impl !Send for And

    §

    impl !Sync for And

    §

    impl Unpin for And

    §

    impl UnwindSafe for And

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.AndAnd.html b/syn/token/struct.AndAnd.html index 5dcf9d0..6ccf452 100644 --- a/syn/token/struct.AndAnd.html +++ b/syn/token/struct.AndAnd.html @@ -1,24 +1,26 @@ -AndAnd in syn::token - Rust

    Struct syn::token::AndAnd

    source ·
    #[repr(C)]
    pub struct AndAnd { - pub spans: [Span; 2], +AndAnd in syn::token - Rust
    syn::token

    Struct AndAnd

    source
    pub struct AndAnd {
    +    pub spans: [Span; 2],
     }
    Expand description

    &&

    +

    Usage: +lazy AND, borrow, references, reference patterns.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for AndAnd

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for AndAnd

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for AndAnd

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for AndAnd

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for AndAnd

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<AndAnd> for AndAnd

    source§

    fn eq(&self, _other: &AndAnd) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for AndAnd

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for AndAnd

    source§

    impl Eq for AndAnd

    source§

    impl Token for AndAnd

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for AndAnd

    §

    impl !Send for AndAnd

    §

    impl !Sync for AndAnd

    §

    impl Unpin for AndAnd

    §

    impl UnwindSafe for AndAnd

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for AndAnd

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for AndAnd

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for AndAnd

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for AndAnd

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for AndAnd

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for AndAnd

    source§

    fn eq(&self, _other: &AndAnd) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for AndAnd

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for AndAnd

    source§

    impl Eq for AndAnd

    source§

    impl Token for AndAnd

    Auto Trait Implementations§

    §

    impl Freeze for AndAnd

    §

    impl RefUnwindSafe for AndAnd

    §

    impl !Send for AndAnd

    §

    impl !Sync for AndAnd

    §

    impl Unpin for AndAnd

    §

    impl UnwindSafe for AndAnd

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.AndEq.html b/syn/token/struct.AndEq.html index d93608e..1ee0857 100644 --- a/syn/token/struct.AndEq.html +++ b/syn/token/struct.AndEq.html @@ -1,24 +1,26 @@ -AndEq in syn::token - Rust

    Struct syn::token::AndEq

    source ·
    #[repr(C)]
    pub struct AndEq { - pub spans: [Span; 2], +AndEq in syn::token - Rust
    syn::token

    Struct AndEq

    source
    pub struct AndEq {
    +    pub spans: [Span; 2],
     }
    Expand description

    &=

    +

    Usage: +bitwise AND assignment.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for AndEq

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for AndEq

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for AndEq

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for AndEq

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for AndEq

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<AndEq> for AndEq

    source§

    fn eq(&self, _other: &AndEq) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for AndEq

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for AndEq

    source§

    impl Eq for AndEq

    source§

    impl Token for AndEq

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for AndEq

    §

    impl !Send for AndEq

    §

    impl !Sync for AndEq

    §

    impl Unpin for AndEq

    §

    impl UnwindSafe for AndEq

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for AndEq

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for AndEq

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for AndEq

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for AndEq

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for AndEq

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for AndEq

    source§

    fn eq(&self, _other: &AndEq) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for AndEq

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for AndEq

    source§

    impl Eq for AndEq

    source§

    impl Token for AndEq

    Auto Trait Implementations§

    §

    impl Freeze for AndEq

    §

    impl RefUnwindSafe for AndEq

    §

    impl !Send for AndEq

    §

    impl !Sync for AndEq

    §

    impl Unpin for AndEq

    §

    impl UnwindSafe for AndEq

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.As.html b/syn/token/struct.As.html index 3365c04..e60cc14 100644 --- a/syn/token/struct.As.html +++ b/syn/token/struct.As.html @@ -1,24 +1,24 @@ -As in syn::token - Rust

    Struct syn::token::As

    source ·
    pub struct As {
    +As in syn::token - Rust
    syn::token

    Struct As

    source
    pub struct As {
         pub span: Span,
     }
    Expand description

    as

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for As

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for As

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for As

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for As

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for As

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<As> for As

    source§

    fn eq(&self, _other: &As) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for As

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for As

    source§

    impl Eq for As

    source§

    impl Token for As

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for As

    §

    impl !Send for As

    §

    impl !Sync for As

    §

    impl Unpin for As

    §

    impl UnwindSafe for As

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for As

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for As

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for As

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for As

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for As

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for As

    source§

    fn eq(&self, _other: &As) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for As

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for As

    source§

    impl Eq for As

    source§

    impl Token for As

    Auto Trait Implementations§

    §

    impl Freeze for As

    §

    impl RefUnwindSafe for As

    §

    impl !Send for As

    §

    impl !Sync for As

    §

    impl Unpin for As

    §

    impl UnwindSafe for As

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Async.html b/syn/token/struct.Async.html index 16cae41..c7edadb 100644 --- a/syn/token/struct.Async.html +++ b/syn/token/struct.Async.html @@ -1,24 +1,24 @@ -Async in syn::token - Rust

    Struct syn::token::Async

    source ·
    pub struct Async {
    +Async in syn::token - Rust
    syn::token

    Struct Async

    source
    pub struct Async {
         pub span: Span,
     }
    Expand description

    async

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Async

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Async

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Async

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Async

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Async

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Async> for Async

    source§

    fn eq(&self, _other: &Async) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Async

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Async

    source§

    impl Eq for Async

    source§

    impl Token for Async

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Async

    §

    impl !Send for Async

    §

    impl !Sync for Async

    §

    impl Unpin for Async

    §

    impl UnwindSafe for Async

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Async

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Async

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Async

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Async

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Async

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Async

    source§

    fn eq(&self, _other: &Async) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Async

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Async

    source§

    impl Eq for Async

    source§

    impl Token for Async

    Auto Trait Implementations§

    §

    impl Freeze for Async

    §

    impl RefUnwindSafe for Async

    §

    impl !Send for Async

    §

    impl !Sync for Async

    §

    impl Unpin for Async

    §

    impl UnwindSafe for Async

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.At.html b/syn/token/struct.At.html index 745b575..66a447a 100644 --- a/syn/token/struct.At.html +++ b/syn/token/struct.At.html @@ -1,24 +1,26 @@ -At in syn::token - Rust

    Struct syn::token::At

    source ·
    #[repr(C)]
    pub struct At { - pub spans: [Span; 1], +At in syn::token - Rust
    syn::token

    Struct At

    source
    pub struct At {
    +    pub spans: [Span; 1],
     }
    Expand description

    @

    +

    Usage: +subpattern binding.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for At

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for At

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for At

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for At

    §

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for At

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for At

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for At

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<At> for At

    source§

    fn eq(&self, _other: &At) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for At

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for At

    source§

    impl Eq for At

    source§

    impl Token for At

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for At

    §

    impl !Send for At

    §

    impl !Sync for At

    §

    impl Unpin for At

    §

    impl UnwindSafe for At

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for At

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for At

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for At

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for At

    source§

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for At

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for At

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for At

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for At

    source§

    fn eq(&self, _other: &At) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for At

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for At

    source§

    impl Eq for At

    source§

    impl Token for At

    Auto Trait Implementations§

    §

    impl Freeze for At

    §

    impl RefUnwindSafe for At

    §

    impl !Send for At

    §

    impl !Sync for At

    §

    impl Unpin for At

    §

    impl UnwindSafe for At

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Auto.html b/syn/token/struct.Auto.html index 8cf3447..70cadc1 100644 --- a/syn/token/struct.Auto.html +++ b/syn/token/struct.Auto.html @@ -1,24 +1,24 @@ -Auto in syn::token - Rust

    Struct syn::token::Auto

    source ·
    pub struct Auto {
    +Auto in syn::token - Rust
    syn::token

    Struct Auto

    source
    pub struct Auto {
         pub span: Span,
     }
    Expand description

    auto

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Auto

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Auto

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Auto

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Auto

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Auto

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Auto> for Auto

    source§

    fn eq(&self, _other: &Auto) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Auto

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Auto

    source§

    impl Eq for Auto

    source§

    impl Token for Auto

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Auto

    §

    impl !Send for Auto

    §

    impl !Sync for Auto

    §

    impl Unpin for Auto

    §

    impl UnwindSafe for Auto

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Auto

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Auto

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Auto

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Auto

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Auto

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Auto

    source§

    fn eq(&self, _other: &Auto) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Auto

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Auto

    source§

    impl Eq for Auto

    source§

    impl Token for Auto

    Auto Trait Implementations§

    §

    impl Freeze for Auto

    §

    impl RefUnwindSafe for Auto

    §

    impl !Send for Auto

    §

    impl !Sync for Auto

    §

    impl Unpin for Auto

    §

    impl UnwindSafe for Auto

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Await.html b/syn/token/struct.Await.html index 70aa957..c952038 100644 --- a/syn/token/struct.Await.html +++ b/syn/token/struct.Await.html @@ -1,24 +1,24 @@ -Await in syn::token - Rust

    Struct syn::token::Await

    source ·
    pub struct Await {
    +Await in syn::token - Rust
    syn::token

    Struct Await

    source
    pub struct Await {
         pub span: Span,
     }
    Expand description

    await

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Await

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Await

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Await

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Await

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Await

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Await> for Await

    source§

    fn eq(&self, _other: &Await) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Await

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Await

    source§

    impl Eq for Await

    source§

    impl Token for Await

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Await

    §

    impl !Send for Await

    §

    impl !Sync for Await

    §

    impl Unpin for Await

    §

    impl UnwindSafe for Await

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Await

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Await

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Await

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Await

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Await

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Await

    source§

    fn eq(&self, _other: &Await) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Await

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Await

    source§

    impl Eq for Await

    source§

    impl Token for Await

    Auto Trait Implementations§

    §

    impl Freeze for Await

    §

    impl RefUnwindSafe for Await

    §

    impl !Send for Await

    §

    impl !Sync for Await

    §

    impl Unpin for Await

    §

    impl UnwindSafe for Await

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Bang.html b/syn/token/struct.Bang.html deleted file mode 100644 index 29f586f..0000000 --- a/syn/token/struct.Bang.html +++ /dev/null @@ -1,24 +0,0 @@ -Bang in syn::token - Rust

    Struct syn::token::Bang

    source ·
    #[repr(C)]
    pub struct Bang { - pub spans: [Span; 1], -}
    Expand description

    !

    -

    Don’t try to remember the name of this type — use the -Token! macro instead.

    -

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Bang

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Bang

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Bang

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Bang

    §

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Bang

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Bang

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Bang

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Bang> for Bang

    source§

    fn eq(&self, _other: &Bang) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Bang

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Bang

    source§

    impl Eq for Bang

    source§

    impl Token for Bang

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Bang

    §

    impl !Send for Bang

    §

    impl !Sync for Bang

    §

    impl Unpin for Bang

    §

    impl UnwindSafe for Bang

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Become.html b/syn/token/struct.Become.html index 7852339..3a18232 100644 --- a/syn/token/struct.Become.html +++ b/syn/token/struct.Become.html @@ -1,24 +1,24 @@ -Become in syn::token - Rust

    Struct syn::token::Become

    source ·
    pub struct Become {
    +Become in syn::token - Rust
    syn::token

    Struct Become

    source
    pub struct Become {
         pub span: Span,
     }
    Expand description

    become

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Become

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Become

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Become

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Become

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Become

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Become> for Become

    source§

    fn eq(&self, _other: &Become) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Become

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Become

    source§

    impl Eq for Become

    source§

    impl Token for Become

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Become

    §

    impl !Send for Become

    §

    impl !Sync for Become

    §

    impl Unpin for Become

    §

    impl UnwindSafe for Become

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Become

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Become

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Become

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Become

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Become

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Become

    source§

    fn eq(&self, _other: &Become) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Become

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Become

    source§

    impl Eq for Become

    source§

    impl Token for Become

    Auto Trait Implementations§

    §

    impl Freeze for Become

    §

    impl RefUnwindSafe for Become

    §

    impl !Send for Become

    §

    impl !Sync for Become

    §

    impl Unpin for Become

    §

    impl UnwindSafe for Become

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Box.html b/syn/token/struct.Box.html index ad98548..0652dc9 100644 --- a/syn/token/struct.Box.html +++ b/syn/token/struct.Box.html @@ -1,24 +1,24 @@ -Box in syn::token - Rust

    Struct syn::token::Box

    source ·
    pub struct Box {
    +Box in syn::token - Rust
    syn::token

    Struct Box

    source
    pub struct Box {
         pub span: Span,
     }
    Expand description

    box

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Box

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Box

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Box

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Box

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Box

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Box> for Box

    source§

    fn eq(&self, _other: &Box) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Box

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Box

    source§

    impl Eq for Box

    source§

    impl Token for Box

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Box

    §

    impl !Send for Box

    §

    impl !Sync for Box

    §

    impl Unpin for Box

    §

    impl UnwindSafe for Box

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Box

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Box

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Box

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Box

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Box

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Box

    source§

    fn eq(&self, _other: &Box) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Box

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Box

    source§

    impl Eq for Box

    source§

    impl Token for Box

    Auto Trait Implementations§

    §

    impl Freeze for Box

    §

    impl RefUnwindSafe for Box

    §

    impl !Send for Box

    §

    impl !Sync for Box

    §

    impl Unpin for Box

    §

    impl UnwindSafe for Box

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Brace.html b/syn/token/struct.Brace.html index 6a7341f..815ac42 100644 --- a/syn/token/struct.Brace.html +++ b/syn/token/struct.Brace.html @@ -1,20 +1,20 @@ -Brace in syn::token - Rust

    Struct syn::token::Brace

    source ·
    pub struct Brace {
    -    pub span: Span,
    -}
    Expand description

    {...}

    -

    Fields§

    §span: Span

    Implementations§

    source§

    impl Brace

    source

    pub fn surround<F>(&self, tokens: &mut TokenStream, f: F)where - F: FnOnce(&mut TokenStream),

    Trait Implementations§

    source§

    impl Clone for Brace

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Brace

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Brace

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Brace

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<Brace> for Brace

    source§

    fn eq(&self, _other: &Brace) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for Brace

    source§

    impl Eq for Brace

    source§

    impl Token for Brace

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Brace

    §

    impl !Send for Brace

    §

    impl !Sync for Brace

    §

    impl Unpin for Brace

    §

    impl UnwindSafe for Brace

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +Brace in syn::token - Rust
    syn::token

    Struct Brace

    source
    pub struct Brace {
    +    pub span: DelimSpan,
    +}
    Expand description

    {}

    +

    Fields§

    §span: DelimSpan

    Implementations§

    source§

    impl Brace

    source

    pub fn surround<F>(&self, tokens: &mut TokenStream, f: F)
    where + F: FnOnce(&mut TokenStream),

    Trait Implementations§

    source§

    impl Clone for Brace

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Brace

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Brace

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Brace

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for Brace

    source§

    fn eq(&self, _other: &Brace) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Copy for Brace

    source§

    impl Eq for Brace

    source§

    impl Token for Brace

    Auto Trait Implementations§

    §

    impl Freeze for Brace

    §

    impl RefUnwindSafe for Brace

    §

    impl !Send for Brace

    §

    impl !Sync for Brace

    §

    impl Unpin for Brace

    §

    impl UnwindSafe for Brace

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Bracket.html b/syn/token/struct.Bracket.html index b714e32..2716c1b 100644 --- a/syn/token/struct.Bracket.html +++ b/syn/token/struct.Bracket.html @@ -1,20 +1,20 @@ -Bracket in syn::token - Rust

    Struct syn::token::Bracket

    source ·
    pub struct Bracket {
    -    pub span: Span,
    -}
    Expand description

    [...]

    -

    Fields§

    §span: Span

    Implementations§

    source§

    impl Bracket

    source

    pub fn surround<F>(&self, tokens: &mut TokenStream, f: F)where - F: FnOnce(&mut TokenStream),

    Trait Implementations§

    source§

    impl Clone for Bracket

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Bracket

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Bracket

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Bracket

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<Bracket> for Bracket

    source§

    fn eq(&self, _other: &Bracket) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for Bracket

    source§

    impl Eq for Bracket

    source§

    impl Token for Bracket

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +Bracket in syn::token - Rust
    syn::token

    Struct Bracket

    source
    pub struct Bracket {
    +    pub span: DelimSpan,
    +}
    Expand description

    []

    +

    Fields§

    §span: DelimSpan

    Implementations§

    source§

    impl Bracket

    source

    pub fn surround<F>(&self, tokens: &mut TokenStream, f: F)
    where + F: FnOnce(&mut TokenStream),

    Trait Implementations§

    source§

    impl Clone for Bracket

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Bracket

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Bracket

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Bracket

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for Bracket

    source§

    fn eq(&self, _other: &Bracket) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Copy for Bracket

    source§

    impl Eq for Bracket

    source§

    impl Token for Bracket

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Break.html b/syn/token/struct.Break.html index f6316fd..70b0786 100644 --- a/syn/token/struct.Break.html +++ b/syn/token/struct.Break.html @@ -1,24 +1,24 @@ -Break in syn::token - Rust

    Struct syn::token::Break

    source ·
    pub struct Break {
    +Break in syn::token - Rust
    syn::token

    Struct Break

    source
    pub struct Break {
         pub span: Span,
     }
    Expand description

    break

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Break

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Break

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Break

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Break

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Break

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Break> for Break

    source§

    fn eq(&self, _other: &Break) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Break

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Break

    source§

    impl Eq for Break

    source§

    impl Token for Break

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Break

    §

    impl !Send for Break

    §

    impl !Sync for Break

    §

    impl Unpin for Break

    §

    impl UnwindSafe for Break

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Break

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Break

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Break

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Break

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Break

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Break

    source§

    fn eq(&self, _other: &Break) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Break

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Break

    source§

    impl Eq for Break

    source§

    impl Token for Break

    Auto Trait Implementations§

    §

    impl Freeze for Break

    §

    impl RefUnwindSafe for Break

    §

    impl !Send for Break

    §

    impl !Sync for Break

    §

    impl Unpin for Break

    §

    impl UnwindSafe for Break

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Caret.html b/syn/token/struct.Caret.html index a07b436..e953ea2 100644 --- a/syn/token/struct.Caret.html +++ b/syn/token/struct.Caret.html @@ -1,24 +1,26 @@ -Caret in syn::token - Rust

    Struct syn::token::Caret

    source ·
    #[repr(C)]
    pub struct Caret { - pub spans: [Span; 1], +Caret in syn::token - Rust
    syn::token

    Struct Caret

    source
    pub struct Caret {
    +    pub spans: [Span; 1],
     }
    Expand description

    ^

    +

    Usage: +bitwise and logical XOR.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Caret

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Caret

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Caret

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Caret

    §

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Caret

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Caret

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Caret

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Caret> for Caret

    source§

    fn eq(&self, _other: &Caret) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Caret

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Caret

    source§

    impl Eq for Caret

    source§

    impl Token for Caret

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Caret

    §

    impl !Send for Caret

    §

    impl !Sync for Caret

    §

    impl Unpin for Caret

    §

    impl UnwindSafe for Caret

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Caret

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Caret

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Caret

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Caret

    source§

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Caret

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Caret

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Caret

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Caret

    source§

    fn eq(&self, _other: &Caret) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Caret

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Caret

    source§

    impl Eq for Caret

    source§

    impl Token for Caret

    Auto Trait Implementations§

    §

    impl Freeze for Caret

    §

    impl RefUnwindSafe for Caret

    §

    impl !Send for Caret

    §

    impl !Sync for Caret

    §

    impl Unpin for Caret

    §

    impl UnwindSafe for Caret

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.CaretEq.html b/syn/token/struct.CaretEq.html index 70290ca..e731e0a 100644 --- a/syn/token/struct.CaretEq.html +++ b/syn/token/struct.CaretEq.html @@ -1,24 +1,26 @@ -CaretEq in syn::token - Rust

    Struct syn::token::CaretEq

    source ·
    #[repr(C)]
    pub struct CaretEq { - pub spans: [Span; 2], +CaretEq in syn::token - Rust
    syn::token

    Struct CaretEq

    source
    pub struct CaretEq {
    +    pub spans: [Span; 2],
     }
    Expand description

    ^=

    +

    Usage: +bitwise XOR assignment.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for CaretEq

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for CaretEq

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for CaretEq

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for CaretEq

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for CaretEq

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<CaretEq> for CaretEq

    source§

    fn eq(&self, _other: &CaretEq) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for CaretEq

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for CaretEq

    source§

    impl Eq for CaretEq

    source§

    impl Token for CaretEq

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for CaretEq

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for CaretEq

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for CaretEq

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for CaretEq

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for CaretEq

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for CaretEq

    source§

    fn eq(&self, _other: &CaretEq) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for CaretEq

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for CaretEq

    source§

    impl Eq for CaretEq

    source§

    impl Token for CaretEq

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Colon.html b/syn/token/struct.Colon.html index fca56cb..048f9d3 100644 --- a/syn/token/struct.Colon.html +++ b/syn/token/struct.Colon.html @@ -1,24 +1,26 @@ -Colon in syn::token - Rust

    Struct syn::token::Colon

    source ·
    #[repr(C)]
    pub struct Colon { - pub spans: [Span; 1], +Colon in syn::token - Rust
    syn::token

    Struct Colon

    source
    pub struct Colon {
    +    pub spans: [Span; 1],
     }
    Expand description

    :

    +

    Usage: +various separators.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Colon

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Colon

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Colon

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Colon

    §

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Colon

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Colon

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Colon

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Colon> for Colon

    source§

    fn eq(&self, _other: &Colon) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Colon

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Colon

    source§

    impl Eq for Colon

    source§

    impl Token for Colon

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Colon

    §

    impl !Send for Colon

    §

    impl !Sync for Colon

    §

    impl Unpin for Colon

    §

    impl UnwindSafe for Colon

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Colon

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Colon

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Colon

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Colon

    source§

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Colon

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Colon

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Colon

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Colon

    source§

    fn eq(&self, _other: &Colon) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Colon

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Colon

    source§

    impl Eq for Colon

    source§

    impl Token for Colon

    Auto Trait Implementations§

    §

    impl Freeze for Colon

    §

    impl RefUnwindSafe for Colon

    §

    impl !Send for Colon

    §

    impl !Sync for Colon

    §

    impl Unpin for Colon

    §

    impl UnwindSafe for Colon

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Colon2.html b/syn/token/struct.Colon2.html deleted file mode 100644 index 287dfb9..0000000 --- a/syn/token/struct.Colon2.html +++ /dev/null @@ -1,24 +0,0 @@ -Colon2 in syn::token - Rust

    Struct syn::token::Colon2

    source ·
    #[repr(C)]
    pub struct Colon2 { - pub spans: [Span; 2], -}
    Expand description

    ::

    -

    Don’t try to remember the name of this type — use the -Token! macro instead.

    -

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for Colon2

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Colon2

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Colon2

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Colon2

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Colon2

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Colon2> for Colon2

    source§

    fn eq(&self, _other: &Colon2) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Colon2

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Colon2

    source§

    impl Eq for Colon2

    source§

    impl Token for Colon2

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Colon2

    §

    impl !Send for Colon2

    §

    impl !Sync for Colon2

    §

    impl Unpin for Colon2

    §

    impl UnwindSafe for Colon2

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Comma.html b/syn/token/struct.Comma.html index 8b3932f..aabeca1 100644 --- a/syn/token/struct.Comma.html +++ b/syn/token/struct.Comma.html @@ -1,24 +1,26 @@ -Comma in syn::token - Rust

    Struct syn::token::Comma

    source ·
    #[repr(C)]
    pub struct Comma { - pub spans: [Span; 1], +Comma in syn::token - Rust
    syn::token

    Struct Comma

    source
    pub struct Comma {
    +    pub spans: [Span; 1],
     }
    Expand description

    ,

    +

    Usage: +various separators.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Comma

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Comma

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Comma

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Comma

    §

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Comma

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Comma

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Comma

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Comma> for Comma

    source§

    fn eq(&self, _other: &Comma) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Comma

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Comma

    source§

    impl Eq for Comma

    source§

    impl Token for Comma

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Comma

    §

    impl !Send for Comma

    §

    impl !Sync for Comma

    §

    impl Unpin for Comma

    §

    impl UnwindSafe for Comma

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Comma

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Comma

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Comma

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Comma

    source§

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Comma

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Comma

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Comma

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Comma

    source§

    fn eq(&self, _other: &Comma) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Comma

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Comma

    source§

    impl Eq for Comma

    source§

    impl Token for Comma

    Auto Trait Implementations§

    §

    impl Freeze for Comma

    §

    impl RefUnwindSafe for Comma

    §

    impl !Send for Comma

    §

    impl !Sync for Comma

    §

    impl Unpin for Comma

    §

    impl UnwindSafe for Comma

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Const.html b/syn/token/struct.Const.html index 61c53f4..707787b 100644 --- a/syn/token/struct.Const.html +++ b/syn/token/struct.Const.html @@ -1,24 +1,24 @@ -Const in syn::token - Rust

    Struct syn::token::Const

    source ·
    pub struct Const {
    +Const in syn::token - Rust
    syn::token

    Struct Const

    source
    pub struct Const {
         pub span: Span,
     }
    Expand description

    const

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Const

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Const

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Const

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Const

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Const

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Const> for Const

    source§

    fn eq(&self, _other: &Const) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Const

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Const

    source§

    impl Eq for Const

    source§

    impl Token for Const

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Const

    §

    impl !Send for Const

    §

    impl !Sync for Const

    §

    impl Unpin for Const

    §

    impl UnwindSafe for Const

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Const

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Const

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Const

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Const

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Const

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Const

    source§

    fn eq(&self, _other: &Const) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Const

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Const

    source§

    impl Eq for Const

    source§

    impl Token for Const

    Auto Trait Implementations§

    §

    impl Freeze for Const

    §

    impl RefUnwindSafe for Const

    §

    impl !Send for Const

    §

    impl !Sync for Const

    §

    impl Unpin for Const

    §

    impl UnwindSafe for Const

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Continue.html b/syn/token/struct.Continue.html index 50c92b0..96d7a9a 100644 --- a/syn/token/struct.Continue.html +++ b/syn/token/struct.Continue.html @@ -1,24 +1,24 @@ -Continue in syn::token - Rust

    Struct syn::token::Continue

    source ·
    pub struct Continue {
    +Continue in syn::token - Rust
    syn::token

    Struct Continue

    source
    pub struct Continue {
         pub span: Span,
     }
    Expand description

    continue

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Continue

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Continue

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Continue

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Continue

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Continue

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Continue> for Continue

    source§

    fn eq(&self, _other: &Continue) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Continue

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Continue

    source§

    impl Eq for Continue

    source§

    impl Token for Continue

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Continue

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Continue

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Continue

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Continue

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Continue

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Continue

    source§

    fn eq(&self, _other: &Continue) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Continue

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Continue

    source§

    impl Eq for Continue

    source§

    impl Token for Continue

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Crate.html b/syn/token/struct.Crate.html index 6d40dc2..90a19d3 100644 --- a/syn/token/struct.Crate.html +++ b/syn/token/struct.Crate.html @@ -1,24 +1,24 @@ -Crate in syn::token - Rust

    Struct syn::token::Crate

    source ·
    pub struct Crate {
    +Crate in syn::token - Rust
    syn::token

    Struct Crate

    source
    pub struct Crate {
         pub span: Span,
     }
    Expand description

    crate

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Crate

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Crate

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Crate

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl From<Crate> for Ident

    source§

    fn from(token: Crate) -> Ident

    Converts to this type from the input type.
    source§

    impl Hash for Crate

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Crate

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Crate> for Crate

    source§

    fn eq(&self, _other: &Crate) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Crate

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Crate

    source§

    impl Eq for Crate

    source§

    impl Token for Crate

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Crate

    §

    impl !Send for Crate

    §

    impl !Sync for Crate

    §

    impl Unpin for Crate

    §

    impl UnwindSafe for Crate

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Crate

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Crate

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Crate

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl From<Crate> for Ident

    source§

    fn from(token: Crate) -> Ident

    Converts to this type from the input type.
    source§

    impl Hash for Crate

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Crate

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Crate

    source§

    fn eq(&self, _other: &Crate) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Crate

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Crate

    source§

    impl Eq for Crate

    source§

    impl Token for Crate

    Auto Trait Implementations§

    §

    impl Freeze for Crate

    §

    impl RefUnwindSafe for Crate

    §

    impl !Send for Crate

    §

    impl !Sync for Crate

    §

    impl Unpin for Crate

    §

    impl UnwindSafe for Crate

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Default.html b/syn/token/struct.Default.html index 56e85f5..e74c60a 100644 --- a/syn/token/struct.Default.html +++ b/syn/token/struct.Default.html @@ -1,24 +1,24 @@ -Default in syn::token - Rust

    Struct syn::token::Default

    source ·
    pub struct Default {
    +Default in syn::token - Rust
    syn::token

    Struct Default

    source
    pub struct Default {
         pub span: Span,
     }
    Expand description

    default

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Default

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Default

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Default

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Default

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Default

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Default> for Default

    source§

    fn eq(&self, _other: &Default) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Default

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Default

    source§

    impl Eq for Default

    source§

    impl Token for Default

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Default

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Default

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Default

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Default

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Default

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Default

    source§

    fn eq(&self, _other: &Default) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Default

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Default

    source§

    impl Eq for Default

    source§

    impl Token for Default

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Div.html b/syn/token/struct.Div.html deleted file mode 100644 index 0c97f10..0000000 --- a/syn/token/struct.Div.html +++ /dev/null @@ -1,24 +0,0 @@ -Div in syn::token - Rust

    Struct syn::token::Div

    source ·
    #[repr(C)]
    pub struct Div { - pub spans: [Span; 1], -}
    Expand description

    /

    -

    Don’t try to remember the name of this type — use the -Token! macro instead.

    -

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Div

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Div

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Div

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Div

    §

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Div

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Div

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Div

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Div> for Div

    source§

    fn eq(&self, _other: &Div) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Div

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Div

    source§

    impl Eq for Div

    source§

    impl Token for Div

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Div

    §

    impl !Send for Div

    §

    impl !Sync for Div

    §

    impl Unpin for Div

    §

    impl UnwindSafe for Div

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.DivEq.html b/syn/token/struct.DivEq.html deleted file mode 100644 index 3bdb6a5..0000000 --- a/syn/token/struct.DivEq.html +++ /dev/null @@ -1,24 +0,0 @@ -DivEq in syn::token - Rust

    Struct syn::token::DivEq

    source ·
    #[repr(C)]
    pub struct DivEq { - pub spans: [Span; 2], -}
    Expand description

    /=

    -

    Don’t try to remember the name of this type — use the -Token! macro instead.

    -

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for DivEq

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for DivEq

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for DivEq

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for DivEq

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for DivEq

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<DivEq> for DivEq

    source§

    fn eq(&self, _other: &DivEq) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for DivEq

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for DivEq

    source§

    impl Eq for DivEq

    source§

    impl Token for DivEq

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for DivEq

    §

    impl !Send for DivEq

    §

    impl !Sync for DivEq

    §

    impl Unpin for DivEq

    §

    impl UnwindSafe for DivEq

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Do.html b/syn/token/struct.Do.html index d833749..df0dc68 100644 --- a/syn/token/struct.Do.html +++ b/syn/token/struct.Do.html @@ -1,24 +1,24 @@ -Do in syn::token - Rust

    Struct syn::token::Do

    source ·
    pub struct Do {
    +Do in syn::token - Rust
    syn::token

    Struct Do

    source
    pub struct Do {
         pub span: Span,
     }
    Expand description

    do

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Do

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Do

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Do

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Do

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Do

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Do> for Do

    source§

    fn eq(&self, _other: &Do) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Do

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Do

    source§

    impl Eq for Do

    source§

    impl Token for Do

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Do

    §

    impl !Send for Do

    §

    impl !Sync for Do

    §

    impl Unpin for Do

    §

    impl UnwindSafe for Do

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Do

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Do

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Do

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Do

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Do

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Do

    source§

    fn eq(&self, _other: &Do) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Do

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Do

    source§

    impl Eq for Do

    source§

    impl Token for Do

    Auto Trait Implementations§

    §

    impl Freeze for Do

    §

    impl RefUnwindSafe for Do

    §

    impl !Send for Do

    §

    impl !Sync for Do

    §

    impl Unpin for Do

    §

    impl UnwindSafe for Do

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Dollar.html b/syn/token/struct.Dollar.html index ff81f75..4960866 100644 --- a/syn/token/struct.Dollar.html +++ b/syn/token/struct.Dollar.html @@ -1,24 +1,26 @@ -Dollar in syn::token - Rust

    Struct syn::token::Dollar

    source ·
    #[repr(C)]
    pub struct Dollar { - pub spans: [Span; 1], +Dollar in syn::token - Rust
    syn::token

    Struct Dollar

    source
    pub struct Dollar {
    +    pub spans: [Span; 1],
     }
    Expand description

    $

    +

    Usage: +macros.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Dollar

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Dollar

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Dollar

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Dollar

    §

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Dollar

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Dollar

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Dollar

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Dollar> for Dollar

    source§

    fn eq(&self, _other: &Dollar) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Dollar

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Dollar

    source§

    impl Eq for Dollar

    source§

    impl Token for Dollar

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Dollar

    §

    impl !Send for Dollar

    §

    impl !Sync for Dollar

    §

    impl Unpin for Dollar

    §

    impl UnwindSafe for Dollar

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Dollar

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Dollar

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Dollar

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Dollar

    source§

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Dollar

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Dollar

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Dollar

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Dollar

    source§

    fn eq(&self, _other: &Dollar) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Dollar

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Dollar

    source§

    impl Eq for Dollar

    source§

    impl Token for Dollar

    Auto Trait Implementations§

    §

    impl Freeze for Dollar

    §

    impl RefUnwindSafe for Dollar

    §

    impl !Send for Dollar

    §

    impl !Sync for Dollar

    §

    impl Unpin for Dollar

    §

    impl UnwindSafe for Dollar

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Dot.html b/syn/token/struct.Dot.html index cc547f9..239bbad 100644 --- a/syn/token/struct.Dot.html +++ b/syn/token/struct.Dot.html @@ -1,24 +1,26 @@ -Dot in syn::token - Rust

    Struct syn::token::Dot

    source ·
    #[repr(C)]
    pub struct Dot { - pub spans: [Span; 1], +Dot in syn::token - Rust
    syn::token

    Struct Dot

    source
    pub struct Dot {
    +    pub spans: [Span; 1],
     }
    Expand description

    .

    +

    Usage: +field access, tuple index.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Dot

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Dot

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Dot

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Dot

    §

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Dot

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Dot

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Dot

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Dot> for Dot

    source§

    fn eq(&self, _other: &Dot) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Dot

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Dot

    source§

    impl Eq for Dot

    source§

    impl Token for Dot

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Dot

    §

    impl !Send for Dot

    §

    impl !Sync for Dot

    §

    impl Unpin for Dot

    §

    impl UnwindSafe for Dot

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Dot

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Dot

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Dot

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Dot

    source§

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Dot

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Dot

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Dot

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Dot

    source§

    fn eq(&self, _other: &Dot) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Dot

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Dot

    source§

    impl Eq for Dot

    source§

    impl Token for Dot

    Auto Trait Implementations§

    §

    impl Freeze for Dot

    §

    impl RefUnwindSafe for Dot

    §

    impl !Send for Dot

    §

    impl !Sync for Dot

    §

    impl Unpin for Dot

    §

    impl UnwindSafe for Dot

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Dot2.html b/syn/token/struct.Dot2.html deleted file mode 100644 index 07d8159..0000000 --- a/syn/token/struct.Dot2.html +++ /dev/null @@ -1,24 +0,0 @@ -Dot2 in syn::token - Rust

    Struct syn::token::Dot2

    source ·
    #[repr(C)]
    pub struct Dot2 { - pub spans: [Span; 2], -}
    Expand description

    ..

    -

    Don’t try to remember the name of this type — use the -Token! macro instead.

    -

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for Dot2

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Dot2

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Dot2

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Dot2

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Dot2

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Dot2> for Dot2

    source§

    fn eq(&self, _other: &Dot2) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Dot2

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Dot2

    source§

    impl Eq for Dot2

    source§

    impl Token for Dot2

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Dot2

    §

    impl !Send for Dot2

    §

    impl !Sync for Dot2

    §

    impl Unpin for Dot2

    §

    impl UnwindSafe for Dot2

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Dot3.html b/syn/token/struct.Dot3.html deleted file mode 100644 index 68ad642..0000000 --- a/syn/token/struct.Dot3.html +++ /dev/null @@ -1,24 +0,0 @@ -Dot3 in syn::token - Rust

    Struct syn::token::Dot3

    source ·
    #[repr(C)]
    pub struct Dot3 { - pub spans: [Span; 3], -}
    Expand description

    ...

    -

    Don’t try to remember the name of this type — use the -Token! macro instead.

    -

    Fields§

    §spans: [Span; 3]

    Trait Implementations§

    source§

    impl Clone for Dot3

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Dot3

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Dot3

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Dot3

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Dot3

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Dot3> for Dot3

    source§

    fn eq(&self, _other: &Dot3) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Dot3

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Dot3

    source§

    impl Eq for Dot3

    source§

    impl Token for Dot3

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Dot3

    §

    impl !Send for Dot3

    §

    impl !Sync for Dot3

    §

    impl Unpin for Dot3

    §

    impl UnwindSafe for Dot3

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.DotDot.html b/syn/token/struct.DotDot.html new file mode 100644 index 0000000..9b136c5 --- /dev/null +++ b/syn/token/struct.DotDot.html @@ -0,0 +1,26 @@ +DotDot in syn::token - Rust
    syn::token

    Struct DotDot

    source
    pub struct DotDot {
    +    pub spans: [Span; 2],
    +}
    Expand description

    ..

    +

    Usage: +range, struct expressions, patterns, range patterns.

    +

    Don’t try to remember the name of this type — use the +Token! macro instead.

    +

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for DotDot

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for DotDot

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for DotDot

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for DotDot

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for DotDot

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for DotDot

    source§

    fn eq(&self, _other: &DotDot) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for DotDot

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for DotDot

    source§

    impl Eq for DotDot

    source§

    impl Token for DotDot

    Auto Trait Implementations§

    §

    impl Freeze for DotDot

    §

    impl RefUnwindSafe for DotDot

    §

    impl !Send for DotDot

    §

    impl !Sync for DotDot

    §

    impl Unpin for DotDot

    §

    impl UnwindSafe for DotDot

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.DotDotDot.html b/syn/token/struct.DotDotDot.html new file mode 100644 index 0000000..366551b --- /dev/null +++ b/syn/token/struct.DotDotDot.html @@ -0,0 +1,26 @@ +DotDotDot in syn::token - Rust
    syn::token

    Struct DotDotDot

    source
    pub struct DotDotDot {
    +    pub spans: [Span; 3],
    +}
    Expand description

    ...

    +

    Usage: +variadic functions, range patterns.

    +

    Don’t try to remember the name of this type — use the +Token! macro instead.

    +

    Fields§

    §spans: [Span; 3]

    Trait Implementations§

    source§

    impl Clone for DotDotDot

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for DotDotDot

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for DotDotDot

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for DotDotDot

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for DotDotDot

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for DotDotDot

    source§

    fn eq(&self, _other: &DotDotDot) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for DotDotDot

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for DotDotDot

    source§

    impl Eq for DotDotDot

    source§

    impl Token for DotDotDot

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.DotDotEq.html b/syn/token/struct.DotDotEq.html index 5172a00..5eb578b 100644 --- a/syn/token/struct.DotDotEq.html +++ b/syn/token/struct.DotDotEq.html @@ -1,24 +1,26 @@ -DotDotEq in syn::token - Rust

    Struct syn::token::DotDotEq

    source ·
    #[repr(C)]
    pub struct DotDotEq { - pub spans: [Span; 3], +DotDotEq in syn::token - Rust
    syn::token

    Struct DotDotEq

    source
    pub struct DotDotEq {
    +    pub spans: [Span; 3],
     }
    Expand description

    ..=

    +

    Usage: +inclusive range, range patterns.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 3]

    Trait Implementations§

    source§

    impl Clone for DotDotEq

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for DotDotEq

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for DotDotEq

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for DotDotEq

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for DotDotEq

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<DotDotEq> for DotDotEq

    source§

    fn eq(&self, _other: &DotDotEq) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for DotDotEq

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for DotDotEq

    source§

    impl Eq for DotDotEq

    source§

    impl Token for DotDotEq

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 3]

    Trait Implementations§

    source§

    impl Clone for DotDotEq

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for DotDotEq

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for DotDotEq

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for DotDotEq

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for DotDotEq

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for DotDotEq

    source§

    fn eq(&self, _other: &DotDotEq) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for DotDotEq

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for DotDotEq

    source§

    impl Eq for DotDotEq

    source§

    impl Token for DotDotEq

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Dyn.html b/syn/token/struct.Dyn.html index cdd7e72..9de1ad1 100644 --- a/syn/token/struct.Dyn.html +++ b/syn/token/struct.Dyn.html @@ -1,24 +1,24 @@ -Dyn in syn::token - Rust

    Struct syn::token::Dyn

    source ·
    pub struct Dyn {
    +Dyn in syn::token - Rust
    syn::token

    Struct Dyn

    source
    pub struct Dyn {
         pub span: Span,
     }
    Expand description

    dyn

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Dyn

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Dyn

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Dyn

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Dyn

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Dyn

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Dyn> for Dyn

    source§

    fn eq(&self, _other: &Dyn) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Dyn

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Dyn

    source§

    impl Eq for Dyn

    source§

    impl Token for Dyn

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Dyn

    §

    impl !Send for Dyn

    §

    impl !Sync for Dyn

    §

    impl Unpin for Dyn

    §

    impl UnwindSafe for Dyn

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Dyn

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Dyn

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Dyn

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Dyn

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Dyn

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Dyn

    source§

    fn eq(&self, _other: &Dyn) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Dyn

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Dyn

    source§

    impl Eq for Dyn

    source§

    impl Token for Dyn

    Auto Trait Implementations§

    §

    impl Freeze for Dyn

    §

    impl RefUnwindSafe for Dyn

    §

    impl !Send for Dyn

    §

    impl !Sync for Dyn

    §

    impl Unpin for Dyn

    §

    impl UnwindSafe for Dyn

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Else.html b/syn/token/struct.Else.html index 3d7efae..53d9afa 100644 --- a/syn/token/struct.Else.html +++ b/syn/token/struct.Else.html @@ -1,24 +1,24 @@ -Else in syn::token - Rust

    Struct syn::token::Else

    source ·
    pub struct Else {
    +Else in syn::token - Rust
    syn::token

    Struct Else

    source
    pub struct Else {
         pub span: Span,
     }
    Expand description

    else

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Else

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Else

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Else

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Else

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Else

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Else> for Else

    source§

    fn eq(&self, _other: &Else) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Else

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Else

    source§

    impl Eq for Else

    source§

    impl Token for Else

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Else

    §

    impl !Send for Else

    §

    impl !Sync for Else

    §

    impl Unpin for Else

    §

    impl UnwindSafe for Else

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Else

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Else

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Else

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Else

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Else

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Else

    source§

    fn eq(&self, _other: &Else) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Else

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Else

    source§

    impl Eq for Else

    source§

    impl Token for Else

    Auto Trait Implementations§

    §

    impl Freeze for Else

    §

    impl RefUnwindSafe for Else

    §

    impl !Send for Else

    §

    impl !Sync for Else

    §

    impl Unpin for Else

    §

    impl UnwindSafe for Else

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Enum.html b/syn/token/struct.Enum.html index 6d70536..ae0588f 100644 --- a/syn/token/struct.Enum.html +++ b/syn/token/struct.Enum.html @@ -1,24 +1,24 @@ -Enum in syn::token - Rust

    Struct syn::token::Enum

    source ·
    pub struct Enum {
    +Enum in syn::token - Rust
    syn::token

    Struct Enum

    source
    pub struct Enum {
         pub span: Span,
     }
    Expand description

    enum

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Enum

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Enum

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Enum

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Enum

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Enum

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Enum> for Enum

    source§

    fn eq(&self, _other: &Enum) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Enum

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Enum

    source§

    impl Eq for Enum

    source§

    impl Token for Enum

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Enum

    §

    impl !Send for Enum

    §

    impl !Sync for Enum

    §

    impl Unpin for Enum

    §

    impl UnwindSafe for Enum

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Enum

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Enum

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Enum

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Enum

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Enum

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Enum

    source§

    fn eq(&self, _other: &Enum) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Enum

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Enum

    source§

    impl Eq for Enum

    source§

    impl Token for Enum

    Auto Trait Implementations§

    §

    impl Freeze for Enum

    §

    impl RefUnwindSafe for Enum

    §

    impl !Send for Enum

    §

    impl !Sync for Enum

    §

    impl Unpin for Enum

    §

    impl UnwindSafe for Enum

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Eq.html b/syn/token/struct.Eq.html index eaffb0f..0edf01d 100644 --- a/syn/token/struct.Eq.html +++ b/syn/token/struct.Eq.html @@ -1,24 +1,26 @@ -Eq in syn::token - Rust

    Struct syn::token::Eq

    source ·
    #[repr(C)]
    pub struct Eq { - pub spans: [Span; 1], +Eq in syn::token - Rust
    syn::token

    Struct Eq

    source
    pub struct Eq {
    +    pub spans: [Span; 1],
     }
    Expand description

    =

    +

    Usage: +assignment, attributes, various type definitions.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Eq

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Eq

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Eq

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Eq

    §

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Eq

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Eq

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Eq

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Eq> for Eq

    source§

    fn eq(&self, _other: &Eq) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Eq

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Eq

    source§

    impl Eq for Eq

    source§

    impl Token for Eq

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Eq

    §

    impl !Send for Eq

    §

    impl !Sync for Eq

    §

    impl Unpin for Eq

    §

    impl UnwindSafe for Eq

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Eq

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Eq

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Eq

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Eq

    source§

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Eq

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Eq

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Eq

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Eq

    source§

    fn eq(&self, _other: &Eq) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Eq

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Eq

    source§

    impl Eq for Eq

    source§

    impl Token for Eq

    Auto Trait Implementations§

    §

    impl Freeze for Eq

    §

    impl RefUnwindSafe for Eq

    §

    impl !Send for Eq

    §

    impl !Sync for Eq

    §

    impl Unpin for Eq

    §

    impl UnwindSafe for Eq

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.EqEq.html b/syn/token/struct.EqEq.html index 037c9a1..a0efa7f 100644 --- a/syn/token/struct.EqEq.html +++ b/syn/token/struct.EqEq.html @@ -1,24 +1,26 @@ -EqEq in syn::token - Rust

    Struct syn::token::EqEq

    source ·
    #[repr(C)]
    pub struct EqEq { - pub spans: [Span; 2], +EqEq in syn::token - Rust
    syn::token

    Struct EqEq

    source
    pub struct EqEq {
    +    pub spans: [Span; 2],
     }
    Expand description

    ==

    +

    Usage: +equal.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for EqEq

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for EqEq

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for EqEq

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for EqEq

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for EqEq

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<EqEq> for EqEq

    source§

    fn eq(&self, _other: &EqEq) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for EqEq

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for EqEq

    source§

    impl Eq for EqEq

    source§

    impl Token for EqEq

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for EqEq

    §

    impl !Send for EqEq

    §

    impl !Sync for EqEq

    §

    impl Unpin for EqEq

    §

    impl UnwindSafe for EqEq

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for EqEq

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for EqEq

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for EqEq

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for EqEq

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for EqEq

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for EqEq

    source§

    fn eq(&self, _other: &EqEq) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for EqEq

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for EqEq

    source§

    impl Eq for EqEq

    source§

    impl Token for EqEq

    Auto Trait Implementations§

    §

    impl Freeze for EqEq

    §

    impl RefUnwindSafe for EqEq

    §

    impl !Send for EqEq

    §

    impl !Sync for EqEq

    §

    impl Unpin for EqEq

    §

    impl UnwindSafe for EqEq

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Extern.html b/syn/token/struct.Extern.html index 0849978..d811c30 100644 --- a/syn/token/struct.Extern.html +++ b/syn/token/struct.Extern.html @@ -1,24 +1,24 @@ -Extern in syn::token - Rust

    Struct syn::token::Extern

    source ·
    pub struct Extern {
    +Extern in syn::token - Rust
    syn::token

    Struct Extern

    source
    pub struct Extern {
         pub span: Span,
     }
    Expand description

    extern

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Extern

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Extern

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Extern

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl From<Extern> for Ident

    source§

    fn from(token: Extern) -> Ident

    Converts to this type from the input type.
    source§

    impl Hash for Extern

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Extern

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Extern> for Extern

    source§

    fn eq(&self, _other: &Extern) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Extern

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Extern

    source§

    impl Eq for Extern

    source§

    impl Token for Extern

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Extern

    §

    impl !Send for Extern

    §

    impl !Sync for Extern

    §

    impl Unpin for Extern

    §

    impl UnwindSafe for Extern

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Extern

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Extern

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Extern

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl From<Extern> for Ident

    source§

    fn from(token: Extern) -> Ident

    Converts to this type from the input type.
    source§

    impl Hash for Extern

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Extern

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Extern

    source§

    fn eq(&self, _other: &Extern) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Extern

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Extern

    source§

    impl Eq for Extern

    source§

    impl Token for Extern

    Auto Trait Implementations§

    §

    impl Freeze for Extern

    §

    impl RefUnwindSafe for Extern

    §

    impl !Send for Extern

    §

    impl !Sync for Extern

    §

    impl Unpin for Extern

    §

    impl UnwindSafe for Extern

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.FatArrow.html b/syn/token/struct.FatArrow.html index ec2b85b..4436e1a 100644 --- a/syn/token/struct.FatArrow.html +++ b/syn/token/struct.FatArrow.html @@ -1,24 +1,26 @@ -FatArrow in syn::token - Rust

    Struct syn::token::FatArrow

    source ·
    #[repr(C)]
    pub struct FatArrow { - pub spans: [Span; 2], +FatArrow in syn::token - Rust
    syn::token

    Struct FatArrow

    source
    pub struct FatArrow {
    +    pub spans: [Span; 2],
     }
    Expand description

    =>

    +

    Usage: +match arms, macros.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for FatArrow

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for FatArrow

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for FatArrow

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for FatArrow

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for FatArrow

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<FatArrow> for FatArrow

    source§

    fn eq(&self, _other: &FatArrow) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for FatArrow

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for FatArrow

    source§

    impl Eq for FatArrow

    source§

    impl Token for FatArrow

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for FatArrow

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for FatArrow

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for FatArrow

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for FatArrow

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for FatArrow

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for FatArrow

    source§

    fn eq(&self, _other: &FatArrow) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for FatArrow

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for FatArrow

    source§

    impl Eq for FatArrow

    source§

    impl Token for FatArrow

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Final.html b/syn/token/struct.Final.html index a54605e..fd62be0 100644 --- a/syn/token/struct.Final.html +++ b/syn/token/struct.Final.html @@ -1,24 +1,24 @@ -Final in syn::token - Rust

    Struct syn::token::Final

    source ·
    pub struct Final {
    +Final in syn::token - Rust
    syn::token

    Struct Final

    source
    pub struct Final {
         pub span: Span,
     }
    Expand description

    final

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Final

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Final

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Final

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Final

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Final

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Final> for Final

    source§

    fn eq(&self, _other: &Final) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Final

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Final

    source§

    impl Eq for Final

    source§

    impl Token for Final

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Final

    §

    impl !Send for Final

    §

    impl !Sync for Final

    §

    impl Unpin for Final

    §

    impl UnwindSafe for Final

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Final

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Final

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Final

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Final

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Final

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Final

    source§

    fn eq(&self, _other: &Final) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Final

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Final

    source§

    impl Eq for Final

    source§

    impl Token for Final

    Auto Trait Implementations§

    §

    impl Freeze for Final

    §

    impl RefUnwindSafe for Final

    §

    impl !Send for Final

    §

    impl !Sync for Final

    §

    impl Unpin for Final

    §

    impl UnwindSafe for Final

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Fn.html b/syn/token/struct.Fn.html index f241794..afa1c37 100644 --- a/syn/token/struct.Fn.html +++ b/syn/token/struct.Fn.html @@ -1,24 +1,24 @@ -Fn in syn::token - Rust

    Struct syn::token::Fn

    source ·
    pub struct Fn {
    +Fn in syn::token - Rust
    syn::token

    Struct Fn

    source
    pub struct Fn {
         pub span: Span,
     }
    Expand description

    fn

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Fn

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Fn

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Fn

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Fn

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Fn

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Fn> for Fn

    source§

    fn eq(&self, _other: &Fn) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Fn

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Fn

    source§

    impl Eq for Fn

    source§

    impl Token for Fn

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Fn

    §

    impl !Send for Fn

    §

    impl !Sync for Fn

    §

    impl Unpin for Fn

    §

    impl UnwindSafe for Fn

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Fn

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Fn

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Fn

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Fn

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Fn

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Fn

    source§

    fn eq(&self, _other: &Fn) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Fn

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Fn

    source§

    impl Eq for Fn

    source§

    impl Token for Fn

    Auto Trait Implementations§

    §

    impl Freeze for Fn

    §

    impl RefUnwindSafe for Fn

    §

    impl !Send for Fn

    §

    impl !Sync for Fn

    §

    impl Unpin for Fn

    §

    impl UnwindSafe for Fn

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.For.html b/syn/token/struct.For.html index ce76017..0e2f474 100644 --- a/syn/token/struct.For.html +++ b/syn/token/struct.For.html @@ -1,24 +1,24 @@ -For in syn::token - Rust

    Struct syn::token::For

    source ·
    pub struct For {
    +For in syn::token - Rust
    syn::token

    Struct For

    source
    pub struct For {
         pub span: Span,
     }
    Expand description

    for

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for For

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for For

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for For

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for For

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for For

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<For> for For

    source§

    fn eq(&self, _other: &For) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for For

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for For

    source§

    impl Eq for For

    source§

    impl Token for For

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for For

    §

    impl !Send for For

    §

    impl !Sync for For

    §

    impl Unpin for For

    §

    impl UnwindSafe for For

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for For

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for For

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for For

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for For

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for For

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for For

    source§

    fn eq(&self, _other: &For) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for For

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for For

    source§

    impl Eq for For

    source§

    impl Token for For

    Auto Trait Implementations§

    §

    impl Freeze for For

    §

    impl RefUnwindSafe for For

    §

    impl !Send for For

    §

    impl !Sync for For

    §

    impl Unpin for For

    §

    impl UnwindSafe for For

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Ge.html b/syn/token/struct.Ge.html index 82a0c6f..2b0c09a 100644 --- a/syn/token/struct.Ge.html +++ b/syn/token/struct.Ge.html @@ -1,24 +1,26 @@ -Ge in syn::token - Rust

    Struct syn::token::Ge

    source ·
    #[repr(C)]
    pub struct Ge { - pub spans: [Span; 2], +Ge in syn::token - Rust
    syn::token

    Struct Ge

    source
    pub struct Ge {
    +    pub spans: [Span; 2],
     }
    Expand description

    >=

    +

    Usage: +greater than or equal to, generics.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for Ge

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Ge

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Ge

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Ge

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Ge

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Ge> for Ge

    source§

    fn eq(&self, _other: &Ge) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Ge

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Ge

    source§

    impl Eq for Ge

    source§

    impl Token for Ge

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Ge

    §

    impl !Send for Ge

    §

    impl !Sync for Ge

    §

    impl Unpin for Ge

    §

    impl UnwindSafe for Ge

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for Ge

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Ge

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Ge

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Ge

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Ge

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Ge

    source§

    fn eq(&self, _other: &Ge) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Ge

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Ge

    source§

    impl Eq for Ge

    source§

    impl Token for Ge

    Auto Trait Implementations§

    §

    impl Freeze for Ge

    §

    impl RefUnwindSafe for Ge

    §

    impl !Send for Ge

    §

    impl !Sync for Ge

    §

    impl Unpin for Ge

    §

    impl UnwindSafe for Ge

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Group.html b/syn/token/struct.Group.html index e90b649..e36e7ad 100644 --- a/syn/token/struct.Group.html +++ b/syn/token/struct.Group.html @@ -1,20 +1,20 @@ -Group in syn::token - Rust

    Struct syn::token::Group

    source ·
    pub struct Group {
    +Group in syn::token - Rust
    syn::token

    Struct Group

    source
    pub struct Group {
         pub span: Span,
     }
    Expand description

    None-delimited group

    -

    Fields§

    §span: Span

    Implementations§

    source§

    impl Group

    source

    pub fn surround<F>(&self, tokens: &mut TokenStream, f: F)where - F: FnOnce(&mut TokenStream),

    Trait Implementations§

    source§

    impl Clone for Group

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Group

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Group

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Group

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<Group> for Group

    source§

    fn eq(&self, _other: &Group) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for Group

    source§

    impl Eq for Group

    source§

    impl Token for Group

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Group

    §

    impl !Send for Group

    §

    impl !Sync for Group

    §

    impl Unpin for Group

    §

    impl UnwindSafe for Group

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Implementations§

    source§

    impl Group

    source

    pub fn surround<F>(&self, tokens: &mut TokenStream, f: F)
    where + F: FnOnce(&mut TokenStream),

    Trait Implementations§

    source§

    impl Clone for Group

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Group

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Group

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Group

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for Group

    source§

    fn eq(&self, _other: &Group) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Copy for Group

    source§

    impl Eq for Group

    source§

    impl Token for Group

    Auto Trait Implementations§

    §

    impl Freeze for Group

    §

    impl RefUnwindSafe for Group

    §

    impl !Send for Group

    §

    impl !Sync for Group

    §

    impl Unpin for Group

    §

    impl UnwindSafe for Group

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Gt.html b/syn/token/struct.Gt.html index 3e0ac20..4a72ba2 100644 --- a/syn/token/struct.Gt.html +++ b/syn/token/struct.Gt.html @@ -1,24 +1,26 @@ -Gt in syn::token - Rust

    Struct syn::token::Gt

    source ·
    #[repr(C)]
    pub struct Gt { - pub spans: [Span; 1], +Gt in syn::token - Rust
    syn::token

    Struct Gt

    source
    pub struct Gt {
    +    pub spans: [Span; 1],
     }
    Expand description

    >

    +

    Usage: +greater than, generics, paths.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Gt

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Gt

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Gt

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Gt

    §

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Gt

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Gt

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Gt

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Gt> for Gt

    source§

    fn eq(&self, _other: &Gt) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Gt

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Gt

    source§

    impl Eq for Gt

    source§

    impl Token for Gt

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Gt

    §

    impl !Send for Gt

    §

    impl !Sync for Gt

    §

    impl Unpin for Gt

    §

    impl UnwindSafe for Gt

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Gt

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Gt

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Gt

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Gt

    source§

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Gt

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Gt

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Gt

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Gt

    source§

    fn eq(&self, _other: &Gt) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Gt

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Gt

    source§

    impl Eq for Gt

    source§

    impl Token for Gt

    Auto Trait Implementations§

    §

    impl Freeze for Gt

    §

    impl RefUnwindSafe for Gt

    §

    impl !Send for Gt

    §

    impl !Sync for Gt

    §

    impl Unpin for Gt

    §

    impl UnwindSafe for Gt

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.If.html b/syn/token/struct.If.html index dbabb40..20e0f10 100644 --- a/syn/token/struct.If.html +++ b/syn/token/struct.If.html @@ -1,24 +1,24 @@ -If in syn::token - Rust

    Struct syn::token::If

    source ·
    pub struct If {
    +If in syn::token - Rust
    syn::token

    Struct If

    source
    pub struct If {
         pub span: Span,
     }
    Expand description

    if

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for If

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for If

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for If

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for If

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for If

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<If> for If

    source§

    fn eq(&self, _other: &If) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for If

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for If

    source§

    impl Eq for If

    source§

    impl Token for If

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for If

    §

    impl !Send for If

    §

    impl !Sync for If

    §

    impl Unpin for If

    §

    impl UnwindSafe for If

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for If

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for If

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for If

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for If

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for If

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for If

    source§

    fn eq(&self, _other: &If) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for If

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for If

    source§

    impl Eq for If

    source§

    impl Token for If

    Auto Trait Implementations§

    §

    impl Freeze for If

    §

    impl RefUnwindSafe for If

    §

    impl !Send for If

    §

    impl !Sync for If

    §

    impl Unpin for If

    §

    impl UnwindSafe for If

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Impl.html b/syn/token/struct.Impl.html index 4b3e83a..63540a8 100644 --- a/syn/token/struct.Impl.html +++ b/syn/token/struct.Impl.html @@ -1,24 +1,24 @@ -Impl in syn::token - Rust

    Struct syn::token::Impl

    source ·
    pub struct Impl {
    +Impl in syn::token - Rust
    syn::token

    Struct Impl

    source
    pub struct Impl {
         pub span: Span,
     }
    Expand description

    impl

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Impl

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Impl

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Impl

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Impl

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Impl

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Impl> for Impl

    source§

    fn eq(&self, _other: &Impl) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Impl

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Impl

    source§

    impl Eq for Impl

    source§

    impl Token for Impl

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Impl

    §

    impl !Send for Impl

    §

    impl !Sync for Impl

    §

    impl Unpin for Impl

    §

    impl UnwindSafe for Impl

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Impl

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Impl

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Impl

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Impl

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Impl

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Impl

    source§

    fn eq(&self, _other: &Impl) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Impl

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Impl

    source§

    impl Eq for Impl

    source§

    impl Token for Impl

    Auto Trait Implementations§

    §

    impl Freeze for Impl

    §

    impl RefUnwindSafe for Impl

    §

    impl !Send for Impl

    §

    impl !Sync for Impl

    §

    impl Unpin for Impl

    §

    impl UnwindSafe for Impl

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.In.html b/syn/token/struct.In.html index 7516114..b016317 100644 --- a/syn/token/struct.In.html +++ b/syn/token/struct.In.html @@ -1,24 +1,24 @@ -In in syn::token - Rust

    Struct syn::token::In

    source ·
    pub struct In {
    +In in syn::token - Rust
    syn::token

    Struct In

    source
    pub struct In {
         pub span: Span,
     }
    Expand description

    in

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for In

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for In

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for In

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for In

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for In

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<In> for In

    source§

    fn eq(&self, _other: &In) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for In

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for In

    source§

    impl Eq for In

    source§

    impl Token for In

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for In

    §

    impl !Send for In

    §

    impl !Sync for In

    §

    impl Unpin for In

    §

    impl UnwindSafe for In

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for In

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for In

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for In

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for In

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for In

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for In

    source§

    fn eq(&self, _other: &In) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for In

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for In

    source§

    impl Eq for In

    source§

    impl Token for In

    Auto Trait Implementations§

    §

    impl Freeze for In

    §

    impl RefUnwindSafe for In

    §

    impl !Send for In

    §

    impl !Sync for In

    §

    impl Unpin for In

    §

    impl UnwindSafe for In

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.LArrow.html b/syn/token/struct.LArrow.html index e9b10c6..9459a15 100644 --- a/syn/token/struct.LArrow.html +++ b/syn/token/struct.LArrow.html @@ -1,24 +1,26 @@ -LArrow in syn::token - Rust

    Struct syn::token::LArrow

    source ·
    #[repr(C)]
    pub struct LArrow { - pub spans: [Span; 2], +LArrow in syn::token - Rust
    syn::token

    Struct LArrow

    source
    pub struct LArrow {
    +    pub spans: [Span; 2],
     }
    Expand description

    <-

    +

    Usage: +unused.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for LArrow

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for LArrow

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for LArrow

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for LArrow

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for LArrow

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<LArrow> for LArrow

    source§

    fn eq(&self, _other: &LArrow) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for LArrow

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for LArrow

    source§

    impl Eq for LArrow

    source§

    impl Token for LArrow

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for LArrow

    §

    impl !Send for LArrow

    §

    impl !Sync for LArrow

    §

    impl Unpin for LArrow

    §

    impl UnwindSafe for LArrow

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for LArrow

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for LArrow

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for LArrow

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for LArrow

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for LArrow

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for LArrow

    source§

    fn eq(&self, _other: &LArrow) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for LArrow

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for LArrow

    source§

    impl Eq for LArrow

    source§

    impl Token for LArrow

    Auto Trait Implementations§

    §

    impl Freeze for LArrow

    §

    impl RefUnwindSafe for LArrow

    §

    impl !Send for LArrow

    §

    impl !Sync for LArrow

    §

    impl Unpin for LArrow

    §

    impl UnwindSafe for LArrow

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Le.html b/syn/token/struct.Le.html index 07f5b63..78abee9 100644 --- a/syn/token/struct.Le.html +++ b/syn/token/struct.Le.html @@ -1,24 +1,26 @@ -Le in syn::token - Rust

    Struct syn::token::Le

    source ·
    #[repr(C)]
    pub struct Le { - pub spans: [Span; 2], +Le in syn::token - Rust
    syn::token

    Struct Le

    source
    pub struct Le {
    +    pub spans: [Span; 2],
     }
    Expand description

    <=

    +

    Usage: +less than or equal to.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for Le

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Le

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Le

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Le

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Le

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Le> for Le

    source§

    fn eq(&self, _other: &Le) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Le

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Le

    source§

    impl Eq for Le

    source§

    impl Token for Le

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Le

    §

    impl !Send for Le

    §

    impl !Sync for Le

    §

    impl Unpin for Le

    §

    impl UnwindSafe for Le

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for Le

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Le

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Le

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Le

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Le

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Le

    source§

    fn eq(&self, _other: &Le) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Le

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Le

    source§

    impl Eq for Le

    source§

    impl Token for Le

    Auto Trait Implementations§

    §

    impl Freeze for Le

    §

    impl RefUnwindSafe for Le

    §

    impl !Send for Le

    §

    impl !Sync for Le

    §

    impl Unpin for Le

    §

    impl UnwindSafe for Le

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Let.html b/syn/token/struct.Let.html index 981f627..9a94785 100644 --- a/syn/token/struct.Let.html +++ b/syn/token/struct.Let.html @@ -1,24 +1,24 @@ -Let in syn::token - Rust

    Struct syn::token::Let

    source ·
    pub struct Let {
    +Let in syn::token - Rust
    syn::token

    Struct Let

    source
    pub struct Let {
         pub span: Span,
     }
    Expand description

    let

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Let

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Let

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Let

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Let

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Let

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Let> for Let

    source§

    fn eq(&self, _other: &Let) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Let

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Let

    source§

    impl Eq for Let

    source§

    impl Token for Let

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Let

    §

    impl !Send for Let

    §

    impl !Sync for Let

    §

    impl Unpin for Let

    §

    impl UnwindSafe for Let

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Let

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Let

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Let

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Let

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Let

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Let

    source§

    fn eq(&self, _other: &Let) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Let

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Let

    source§

    impl Eq for Let

    source§

    impl Token for Let

    Auto Trait Implementations§

    §

    impl Freeze for Let

    §

    impl RefUnwindSafe for Let

    §

    impl !Send for Let

    §

    impl !Sync for Let

    §

    impl Unpin for Let

    §

    impl UnwindSafe for Let

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Loop.html b/syn/token/struct.Loop.html index 782ee19..7576e2d 100644 --- a/syn/token/struct.Loop.html +++ b/syn/token/struct.Loop.html @@ -1,24 +1,24 @@ -Loop in syn::token - Rust

    Struct syn::token::Loop

    source ·
    pub struct Loop {
    +Loop in syn::token - Rust
    syn::token

    Struct Loop

    source
    pub struct Loop {
         pub span: Span,
     }
    Expand description

    loop

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Loop

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Loop

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Loop

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Loop

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Loop

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Loop> for Loop

    source§

    fn eq(&self, _other: &Loop) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Loop

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Loop

    source§

    impl Eq for Loop

    source§

    impl Token for Loop

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Loop

    §

    impl !Send for Loop

    §

    impl !Sync for Loop

    §

    impl Unpin for Loop

    §

    impl UnwindSafe for Loop

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Loop

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Loop

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Loop

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Loop

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Loop

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Loop

    source§

    fn eq(&self, _other: &Loop) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Loop

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Loop

    source§

    impl Eq for Loop

    source§

    impl Token for Loop

    Auto Trait Implementations§

    §

    impl Freeze for Loop

    §

    impl RefUnwindSafe for Loop

    §

    impl !Send for Loop

    §

    impl !Sync for Loop

    §

    impl Unpin for Loop

    §

    impl UnwindSafe for Loop

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Lt.html b/syn/token/struct.Lt.html index 45d0c8a..d882689 100644 --- a/syn/token/struct.Lt.html +++ b/syn/token/struct.Lt.html @@ -1,24 +1,26 @@ -Lt in syn::token - Rust

    Struct syn::token::Lt

    source ·
    #[repr(C)]
    pub struct Lt { - pub spans: [Span; 1], +Lt in syn::token - Rust
    syn::token

    Struct Lt

    source
    pub struct Lt {
    +    pub spans: [Span; 1],
     }
    Expand description

    <

    +

    Usage: +less than, generics, paths.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Lt

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Lt

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Lt

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Lt

    §

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Lt

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Lt

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Lt

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Lt> for Lt

    source§

    fn eq(&self, _other: &Lt) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Lt

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Lt

    source§

    impl Eq for Lt

    source§

    impl Token for Lt

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Lt

    §

    impl !Send for Lt

    §

    impl !Sync for Lt

    §

    impl Unpin for Lt

    §

    impl UnwindSafe for Lt

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Lt

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Lt

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Lt

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Lt

    source§

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Lt

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Lt

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Lt

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Lt

    source§

    fn eq(&self, _other: &Lt) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Lt

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Lt

    source§

    impl Eq for Lt

    source§

    impl Token for Lt

    Auto Trait Implementations§

    §

    impl Freeze for Lt

    §

    impl RefUnwindSafe for Lt

    §

    impl !Send for Lt

    §

    impl !Sync for Lt

    §

    impl Unpin for Lt

    §

    impl UnwindSafe for Lt

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Macro.html b/syn/token/struct.Macro.html index 9ca3c81..a055f46 100644 --- a/syn/token/struct.Macro.html +++ b/syn/token/struct.Macro.html @@ -1,24 +1,24 @@ -Macro in syn::token - Rust

    Struct syn::token::Macro

    source ·
    pub struct Macro {
    +Macro in syn::token - Rust
    syn::token

    Struct Macro

    source
    pub struct Macro {
         pub span: Span,
     }
    Expand description

    macro

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Macro

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Macro

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Macro

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Macro

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Macro

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Macro> for Macro

    source§

    fn eq(&self, _other: &Macro) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Macro

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Macro

    source§

    impl Eq for Macro

    source§

    impl Token for Macro

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Macro

    §

    impl !Send for Macro

    §

    impl !Sync for Macro

    §

    impl Unpin for Macro

    §

    impl UnwindSafe for Macro

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Macro

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Macro

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Macro

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Macro

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Macro

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Macro

    source§

    fn eq(&self, _other: &Macro) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Macro

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Macro

    source§

    impl Eq for Macro

    source§

    impl Token for Macro

    Auto Trait Implementations§

    §

    impl Freeze for Macro

    §

    impl RefUnwindSafe for Macro

    §

    impl !Send for Macro

    §

    impl !Sync for Macro

    §

    impl Unpin for Macro

    §

    impl UnwindSafe for Macro

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Match.html b/syn/token/struct.Match.html index 5f47979..e42fd6e 100644 --- a/syn/token/struct.Match.html +++ b/syn/token/struct.Match.html @@ -1,24 +1,24 @@ -Match in syn::token - Rust

    Struct syn::token::Match

    source ·
    pub struct Match {
    +Match in syn::token - Rust
    syn::token

    Struct Match

    source
    pub struct Match {
         pub span: Span,
     }
    Expand description

    match

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Match

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Match

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Match

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Match

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Match

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Match> for Match

    source§

    fn eq(&self, _other: &Match) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Match

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Match

    source§

    impl Eq for Match

    source§

    impl Token for Match

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Match

    §

    impl !Send for Match

    §

    impl !Sync for Match

    §

    impl Unpin for Match

    §

    impl UnwindSafe for Match

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Match

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Match

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Match

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Match

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Match

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Match

    source§

    fn eq(&self, _other: &Match) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Match

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Match

    source§

    impl Eq for Match

    source§

    impl Token for Match

    Auto Trait Implementations§

    §

    impl Freeze for Match

    §

    impl RefUnwindSafe for Match

    §

    impl !Send for Match

    §

    impl !Sync for Match

    §

    impl Unpin for Match

    §

    impl UnwindSafe for Match

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Minus.html b/syn/token/struct.Minus.html new file mode 100644 index 0000000..9abc4fd --- /dev/null +++ b/syn/token/struct.Minus.html @@ -0,0 +1,26 @@ +Minus in syn::token - Rust
    syn::token

    Struct Minus

    source
    pub struct Minus {
    +    pub spans: [Span; 1],
    +}
    Expand description

    -

    +

    Usage: +subtraction, negation.

    +

    Don’t try to remember the name of this type — use the +Token! macro instead.

    +

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Minus

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Minus

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Minus

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Minus

    source§

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Minus

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Minus

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Minus

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Minus

    source§

    fn eq(&self, _other: &Minus) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Minus

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Minus

    source§

    impl Eq for Minus

    source§

    impl Token for Minus

    Auto Trait Implementations§

    §

    impl Freeze for Minus

    §

    impl RefUnwindSafe for Minus

    §

    impl !Send for Minus

    §

    impl !Sync for Minus

    §

    impl Unpin for Minus

    §

    impl UnwindSafe for Minus

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.MinusEq.html b/syn/token/struct.MinusEq.html new file mode 100644 index 0000000..9cc0637 --- /dev/null +++ b/syn/token/struct.MinusEq.html @@ -0,0 +1,26 @@ +MinusEq in syn::token - Rust
    syn::token

    Struct MinusEq

    source
    pub struct MinusEq {
    +    pub spans: [Span; 2],
    +}
    Expand description

    -=

    +

    Usage: +subtraction assignment.

    +

    Don’t try to remember the name of this type — use the +Token! macro instead.

    +

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for MinusEq

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MinusEq

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for MinusEq

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for MinusEq

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for MinusEq

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for MinusEq

    source§

    fn eq(&self, _other: &MinusEq) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for MinusEq

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for MinusEq

    source§

    impl Eq for MinusEq

    source§

    impl Token for MinusEq

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Mod.html b/syn/token/struct.Mod.html index d1f82b2..f0b4c19 100644 --- a/syn/token/struct.Mod.html +++ b/syn/token/struct.Mod.html @@ -1,24 +1,24 @@ -Mod in syn::token - Rust

    Struct syn::token::Mod

    source ·
    pub struct Mod {
    +Mod in syn::token - Rust
    syn::token

    Struct Mod

    source
    pub struct Mod {
         pub span: Span,
     }
    Expand description

    mod

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Mod

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Mod

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Mod

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Mod

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Mod

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Mod> for Mod

    source§

    fn eq(&self, _other: &Mod) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Mod

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Mod

    source§

    impl Eq for Mod

    source§

    impl Token for Mod

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Mod

    §

    impl !Send for Mod

    §

    impl !Sync for Mod

    §

    impl Unpin for Mod

    §

    impl UnwindSafe for Mod

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Mod

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Mod

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Mod

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Mod

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Mod

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Mod

    source§

    fn eq(&self, _other: &Mod) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Mod

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Mod

    source§

    impl Eq for Mod

    source§

    impl Token for Mod

    Auto Trait Implementations§

    §

    impl Freeze for Mod

    §

    impl RefUnwindSafe for Mod

    §

    impl !Send for Mod

    §

    impl !Sync for Mod

    §

    impl Unpin for Mod

    §

    impl UnwindSafe for Mod

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Move.html b/syn/token/struct.Move.html index 9aa4a2b..51132c1 100644 --- a/syn/token/struct.Move.html +++ b/syn/token/struct.Move.html @@ -1,24 +1,24 @@ -Move in syn::token - Rust

    Struct syn::token::Move

    source ·
    pub struct Move {
    +Move in syn::token - Rust
    syn::token

    Struct Move

    source
    pub struct Move {
         pub span: Span,
     }
    Expand description

    move

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Move

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Move

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Move

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Move

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Move

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Move> for Move

    source§

    fn eq(&self, _other: &Move) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Move

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Move

    source§

    impl Eq for Move

    source§

    impl Token for Move

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Move

    §

    impl !Send for Move

    §

    impl !Sync for Move

    §

    impl Unpin for Move

    §

    impl UnwindSafe for Move

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Move

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Move

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Move

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Move

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Move

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Move

    source§

    fn eq(&self, _other: &Move) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Move

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Move

    source§

    impl Eq for Move

    source§

    impl Token for Move

    Auto Trait Implementations§

    §

    impl Freeze for Move

    §

    impl RefUnwindSafe for Move

    §

    impl !Send for Move

    §

    impl !Sync for Move

    §

    impl Unpin for Move

    §

    impl UnwindSafe for Move

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.MulEq.html b/syn/token/struct.MulEq.html deleted file mode 100644 index badf1f0..0000000 --- a/syn/token/struct.MulEq.html +++ /dev/null @@ -1,24 +0,0 @@ -MulEq in syn::token - Rust

    Struct syn::token::MulEq

    source ·
    #[repr(C)]
    pub struct MulEq { - pub spans: [Span; 2], -}
    Expand description

    *=

    -

    Don’t try to remember the name of this type — use the -Token! macro instead.

    -

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for MulEq

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MulEq

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for MulEq

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for MulEq

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for MulEq

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<MulEq> for MulEq

    source§

    fn eq(&self, _other: &MulEq) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for MulEq

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for MulEq

    source§

    impl Eq for MulEq

    source§

    impl Token for MulEq

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for MulEq

    §

    impl !Send for MulEq

    §

    impl !Sync for MulEq

    §

    impl Unpin for MulEq

    §

    impl UnwindSafe for MulEq

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Mut.html b/syn/token/struct.Mut.html index 17cd18d..acf574d 100644 --- a/syn/token/struct.Mut.html +++ b/syn/token/struct.Mut.html @@ -1,24 +1,24 @@ -Mut in syn::token - Rust

    Struct syn::token::Mut

    source ·
    pub struct Mut {
    +Mut in syn::token - Rust
    syn::token

    Struct Mut

    source
    pub struct Mut {
         pub span: Span,
     }
    Expand description

    mut

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Mut

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Mut

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Mut

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Mut

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Mut

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Mut> for Mut

    source§

    fn eq(&self, _other: &Mut) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Mut

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Mut

    source§

    impl Eq for Mut

    source§

    impl Token for Mut

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Mut

    §

    impl !Send for Mut

    §

    impl !Sync for Mut

    §

    impl Unpin for Mut

    §

    impl UnwindSafe for Mut

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Mut

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Mut

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Mut

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Mut

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Mut

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Mut

    source§

    fn eq(&self, _other: &Mut) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Mut

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Mut

    source§

    impl Eq for Mut

    source§

    impl Token for Mut

    Auto Trait Implementations§

    §

    impl Freeze for Mut

    §

    impl RefUnwindSafe for Mut

    §

    impl !Send for Mut

    §

    impl !Sync for Mut

    §

    impl Unpin for Mut

    §

    impl UnwindSafe for Mut

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Ne.html b/syn/token/struct.Ne.html index e314df2..a8fd79e 100644 --- a/syn/token/struct.Ne.html +++ b/syn/token/struct.Ne.html @@ -1,24 +1,26 @@ -Ne in syn::token - Rust

    Struct syn::token::Ne

    source ·
    #[repr(C)]
    pub struct Ne { - pub spans: [Span; 2], +Ne in syn::token - Rust
    syn::token

    Struct Ne

    source
    pub struct Ne {
    +    pub spans: [Span; 2],
     }
    Expand description

    !=

    +

    Usage: +not equal.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for Ne

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Ne

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Ne

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Ne

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Ne

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Ne> for Ne

    source§

    fn eq(&self, _other: &Ne) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Ne

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Ne

    source§

    impl Eq for Ne

    source§

    impl Token for Ne

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Ne

    §

    impl !Send for Ne

    §

    impl !Sync for Ne

    §

    impl Unpin for Ne

    §

    impl UnwindSafe for Ne

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for Ne

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Ne

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Ne

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Ne

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Ne

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Ne

    source§

    fn eq(&self, _other: &Ne) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Ne

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Ne

    source§

    impl Eq for Ne

    source§

    impl Token for Ne

    Auto Trait Implementations§

    §

    impl Freeze for Ne

    §

    impl RefUnwindSafe for Ne

    §

    impl !Send for Ne

    §

    impl !Sync for Ne

    §

    impl Unpin for Ne

    §

    impl UnwindSafe for Ne

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Not.html b/syn/token/struct.Not.html new file mode 100644 index 0000000..e5166a8 --- /dev/null +++ b/syn/token/struct.Not.html @@ -0,0 +1,26 @@ +Not in syn::token - Rust
    syn::token

    Struct Not

    source
    pub struct Not {
    +    pub spans: [Span; 1],
    +}
    Expand description

    !

    +

    Usage: +bitwise and logical NOT, macro calls, inner attributes, never type, negative impls.

    +

    Don’t try to remember the name of this type — use the +Token! macro instead.

    +

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Not

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Not

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Not

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Not

    source§

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Not

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Not

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Not

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Not

    source§

    fn eq(&self, _other: &Not) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Not

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Not

    source§

    impl Eq for Not

    source§

    impl Token for Not

    Auto Trait Implementations§

    §

    impl Freeze for Not

    §

    impl RefUnwindSafe for Not

    §

    impl !Send for Not

    §

    impl !Sync for Not

    §

    impl Unpin for Not

    §

    impl UnwindSafe for Not

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Or.html b/syn/token/struct.Or.html index 5ff6e33..a3ac177 100644 --- a/syn/token/struct.Or.html +++ b/syn/token/struct.Or.html @@ -1,24 +1,26 @@ -Or in syn::token - Rust

    Struct syn::token::Or

    source ·
    #[repr(C)]
    pub struct Or { - pub spans: [Span; 1], +Or in syn::token - Rust
    syn::token

    Struct Or

    source
    pub struct Or {
    +    pub spans: [Span; 1],
     }
    Expand description

    |

    +

    Usage: +bitwise and logical OR, closures, patterns in match, if let, and while let.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Or

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Or

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Or

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Or

    §

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Or

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Or

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Or

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Or> for Or

    source§

    fn eq(&self, _other: &Or) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Or

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Or

    source§

    impl Eq for Or

    source§

    impl Token for Or

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Or

    §

    impl !Send for Or

    §

    impl !Sync for Or

    §

    impl Unpin for Or

    §

    impl UnwindSafe for Or

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Or

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Or

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Or

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Or

    source§

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Or

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Or

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Or

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Or

    source§

    fn eq(&self, _other: &Or) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Or

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Or

    source§

    impl Eq for Or

    source§

    impl Token for Or

    Auto Trait Implementations§

    §

    impl Freeze for Or

    §

    impl RefUnwindSafe for Or

    §

    impl !Send for Or

    §

    impl !Sync for Or

    §

    impl Unpin for Or

    §

    impl UnwindSafe for Or

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.OrEq.html b/syn/token/struct.OrEq.html index 1171812..8737986 100644 --- a/syn/token/struct.OrEq.html +++ b/syn/token/struct.OrEq.html @@ -1,24 +1,26 @@ -OrEq in syn::token - Rust

    Struct syn::token::OrEq

    source ·
    #[repr(C)]
    pub struct OrEq { - pub spans: [Span; 2], +OrEq in syn::token - Rust
    syn::token

    Struct OrEq

    source
    pub struct OrEq {
    +    pub spans: [Span; 2],
     }
    Expand description

    |=

    +

    Usage: +bitwise OR assignment.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for OrEq

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for OrEq

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for OrEq

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for OrEq

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for OrEq

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<OrEq> for OrEq

    source§

    fn eq(&self, _other: &OrEq) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for OrEq

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for OrEq

    source§

    impl Eq for OrEq

    source§

    impl Token for OrEq

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for OrEq

    §

    impl !Send for OrEq

    §

    impl !Sync for OrEq

    §

    impl Unpin for OrEq

    §

    impl UnwindSafe for OrEq

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for OrEq

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for OrEq

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for OrEq

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for OrEq

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for OrEq

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for OrEq

    source§

    fn eq(&self, _other: &OrEq) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for OrEq

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for OrEq

    source§

    impl Eq for OrEq

    source§

    impl Token for OrEq

    Auto Trait Implementations§

    §

    impl Freeze for OrEq

    §

    impl RefUnwindSafe for OrEq

    §

    impl !Send for OrEq

    §

    impl !Sync for OrEq

    §

    impl Unpin for OrEq

    §

    impl UnwindSafe for OrEq

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.OrOr.html b/syn/token/struct.OrOr.html index cfb1252..6bb6029 100644 --- a/syn/token/struct.OrOr.html +++ b/syn/token/struct.OrOr.html @@ -1,24 +1,26 @@ -OrOr in syn::token - Rust

    Struct syn::token::OrOr

    source ·
    #[repr(C)]
    pub struct OrOr { - pub spans: [Span; 2], +OrOr in syn::token - Rust
    syn::token

    Struct OrOr

    source
    pub struct OrOr {
    +    pub spans: [Span; 2],
     }
    Expand description

    ||

    +

    Usage: +lazy OR, closures.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for OrOr

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for OrOr

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for OrOr

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for OrOr

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for OrOr

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<OrOr> for OrOr

    source§

    fn eq(&self, _other: &OrOr) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for OrOr

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for OrOr

    source§

    impl Eq for OrOr

    source§

    impl Token for OrOr

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for OrOr

    §

    impl !Send for OrOr

    §

    impl !Sync for OrOr

    §

    impl Unpin for OrOr

    §

    impl UnwindSafe for OrOr

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for OrOr

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for OrOr

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for OrOr

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for OrOr

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for OrOr

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for OrOr

    source§

    fn eq(&self, _other: &OrOr) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for OrOr

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for OrOr

    source§

    impl Eq for OrOr

    source§

    impl Token for OrOr

    Auto Trait Implementations§

    §

    impl Freeze for OrOr

    §

    impl RefUnwindSafe for OrOr

    §

    impl !Send for OrOr

    §

    impl !Sync for OrOr

    §

    impl Unpin for OrOr

    §

    impl UnwindSafe for OrOr

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Override.html b/syn/token/struct.Override.html index 15dc4ad..1b70588 100644 --- a/syn/token/struct.Override.html +++ b/syn/token/struct.Override.html @@ -1,24 +1,24 @@ -Override in syn::token - Rust

    Struct syn::token::Override

    source ·
    pub struct Override {
    +Override in syn::token - Rust
    syn::token

    Struct Override

    source
    pub struct Override {
         pub span: Span,
     }
    Expand description

    override

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Override

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Override

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Override

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Override

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Override

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Override> for Override

    source§

    fn eq(&self, _other: &Override) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Override

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Override

    source§

    impl Eq for Override

    source§

    impl Token for Override

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Override

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Override

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Override

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Override

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Override

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Override

    source§

    fn eq(&self, _other: &Override) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Override

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Override

    source§

    impl Eq for Override

    source§

    impl Token for Override

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Paren.html b/syn/token/struct.Paren.html index 20e01d7..f880597 100644 --- a/syn/token/struct.Paren.html +++ b/syn/token/struct.Paren.html @@ -1,20 +1,20 @@ -Paren in syn::token - Rust

    Struct syn::token::Paren

    source ·
    pub struct Paren {
    -    pub span: Span,
    -}
    Expand description

    (...)

    -

    Fields§

    §span: Span

    Implementations§

    source§

    impl Paren

    source

    pub fn surround<F>(&self, tokens: &mut TokenStream, f: F)where - F: FnOnce(&mut TokenStream),

    Trait Implementations§

    source§

    impl Clone for Paren

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Paren

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Paren

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Paren

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<Paren> for Paren

    source§

    fn eq(&self, _other: &Paren) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for Paren

    source§

    impl Eq for Paren

    source§

    impl Token for Paren

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Paren

    §

    impl !Send for Paren

    §

    impl !Sync for Paren

    §

    impl Unpin for Paren

    §

    impl UnwindSafe for Paren

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +Paren in syn::token - Rust
    syn::token

    Struct Paren

    source
    pub struct Paren {
    +    pub span: DelimSpan,
    +}
    Expand description

    ()

    +

    Fields§

    §span: DelimSpan

    Implementations§

    source§

    impl Paren

    source

    pub fn surround<F>(&self, tokens: &mut TokenStream, f: F)
    where + F: FnOnce(&mut TokenStream),

    Trait Implementations§

    source§

    impl Clone for Paren

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Paren

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Paren

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Paren

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for Paren

    source§

    fn eq(&self, _other: &Paren) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Copy for Paren

    source§

    impl Eq for Paren

    source§

    impl Token for Paren

    Auto Trait Implementations§

    §

    impl Freeze for Paren

    §

    impl RefUnwindSafe for Paren

    §

    impl !Send for Paren

    §

    impl !Sync for Paren

    §

    impl Unpin for Paren

    §

    impl UnwindSafe for Paren

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.PathSep.html b/syn/token/struct.PathSep.html new file mode 100644 index 0000000..7945dcb --- /dev/null +++ b/syn/token/struct.PathSep.html @@ -0,0 +1,26 @@ +PathSep in syn::token - Rust
    syn::token

    Struct PathSep

    source
    pub struct PathSep {
    +    pub spans: [Span; 2],
    +}
    Expand description

    ::

    +

    Usage: +path separator.

    +

    Don’t try to remember the name of this type — use the +Token! macro instead.

    +

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for PathSep

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PathSep

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for PathSep

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for PathSep

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for PathSep

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for PathSep

    source§

    fn eq(&self, _other: &PathSep) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for PathSep

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for PathSep

    source§

    impl Eq for PathSep

    source§

    impl Token for PathSep

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Percent.html b/syn/token/struct.Percent.html new file mode 100644 index 0000000..1247f6a --- /dev/null +++ b/syn/token/struct.Percent.html @@ -0,0 +1,26 @@ +Percent in syn::token - Rust
    syn::token

    Struct Percent

    source
    pub struct Percent {
    +    pub spans: [Span; 1],
    +}
    Expand description

    %

    +

    Usage: +remainder.

    +

    Don’t try to remember the name of this type — use the +Token! macro instead.

    +

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Percent

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Percent

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Percent

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Percent

    source§

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Percent

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Percent

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Percent

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Percent

    source§

    fn eq(&self, _other: &Percent) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Percent

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Percent

    source§

    impl Eq for Percent

    source§

    impl Token for Percent

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.PercentEq.html b/syn/token/struct.PercentEq.html new file mode 100644 index 0000000..7a84623 --- /dev/null +++ b/syn/token/struct.PercentEq.html @@ -0,0 +1,26 @@ +PercentEq in syn::token - Rust
    syn::token

    Struct PercentEq

    source
    pub struct PercentEq {
    +    pub spans: [Span; 2],
    +}
    Expand description

    %=

    +

    Usage: +remainder assignment.

    +

    Don’t try to remember the name of this type — use the +Token! macro instead.

    +

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for PercentEq

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PercentEq

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for PercentEq

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for PercentEq

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for PercentEq

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for PercentEq

    source§

    fn eq(&self, _other: &PercentEq) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for PercentEq

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for PercentEq

    source§

    impl Eq for PercentEq

    source§

    impl Token for PercentEq

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Plus.html b/syn/token/struct.Plus.html new file mode 100644 index 0000000..9c5015b --- /dev/null +++ b/syn/token/struct.Plus.html @@ -0,0 +1,26 @@ +Plus in syn::token - Rust
    syn::token

    Struct Plus

    source
    pub struct Plus {
    +    pub spans: [Span; 1],
    +}
    Expand description

    +

    +

    Usage: +addition, trait bounds, macro Kleene matcher.

    +

    Don’t try to remember the name of this type — use the +Token! macro instead.

    +

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Plus

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Plus

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Plus

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Plus

    source§

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Plus

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Plus

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Plus

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Plus

    source§

    fn eq(&self, _other: &Plus) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Plus

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Plus

    source§

    impl Eq for Plus

    source§

    impl Token for Plus

    Auto Trait Implementations§

    §

    impl Freeze for Plus

    §

    impl RefUnwindSafe for Plus

    §

    impl !Send for Plus

    §

    impl !Sync for Plus

    §

    impl Unpin for Plus

    §

    impl UnwindSafe for Plus

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.PlusEq.html b/syn/token/struct.PlusEq.html new file mode 100644 index 0000000..bd51fd3 --- /dev/null +++ b/syn/token/struct.PlusEq.html @@ -0,0 +1,26 @@ +PlusEq in syn::token - Rust
    syn::token

    Struct PlusEq

    source
    pub struct PlusEq {
    +    pub spans: [Span; 2],
    +}
    Expand description

    +=

    +

    Usage: +addition assignment.

    +

    Don’t try to remember the name of this type — use the +Token! macro instead.

    +

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for PlusEq

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PlusEq

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for PlusEq

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for PlusEq

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for PlusEq

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for PlusEq

    source§

    fn eq(&self, _other: &PlusEq) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for PlusEq

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for PlusEq

    source§

    impl Eq for PlusEq

    source§

    impl Token for PlusEq

    Auto Trait Implementations§

    §

    impl Freeze for PlusEq

    §

    impl RefUnwindSafe for PlusEq

    §

    impl !Send for PlusEq

    §

    impl !Sync for PlusEq

    §

    impl Unpin for PlusEq

    §

    impl UnwindSafe for PlusEq

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Pound.html b/syn/token/struct.Pound.html index 9035e8a..396697f 100644 --- a/syn/token/struct.Pound.html +++ b/syn/token/struct.Pound.html @@ -1,24 +1,26 @@ -Pound in syn::token - Rust

    Struct syn::token::Pound

    source ·
    #[repr(C)]
    pub struct Pound { - pub spans: [Span; 1], +Pound in syn::token - Rust
    syn::token

    Struct Pound

    source
    pub struct Pound {
    +    pub spans: [Span; 1],
     }
    Expand description

    #

    +

    Usage: +attributes.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Pound

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Pound

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Pound

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Pound

    §

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Pound

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Pound

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Pound

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Pound> for Pound

    source§

    fn eq(&self, _other: &Pound) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Pound

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Pound

    source§

    impl Eq for Pound

    source§

    impl Token for Pound

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Pound

    §

    impl !Send for Pound

    §

    impl !Sync for Pound

    §

    impl Unpin for Pound

    §

    impl UnwindSafe for Pound

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Pound

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Pound

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Pound

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Pound

    source§

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Pound

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Pound

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Pound

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Pound

    source§

    fn eq(&self, _other: &Pound) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Pound

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Pound

    source§

    impl Eq for Pound

    source§

    impl Token for Pound

    Auto Trait Implementations§

    §

    impl Freeze for Pound

    §

    impl RefUnwindSafe for Pound

    §

    impl !Send for Pound

    §

    impl !Sync for Pound

    §

    impl Unpin for Pound

    §

    impl UnwindSafe for Pound

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Priv.html b/syn/token/struct.Priv.html index 7b26e6c..b54ae02 100644 --- a/syn/token/struct.Priv.html +++ b/syn/token/struct.Priv.html @@ -1,24 +1,24 @@ -Priv in syn::token - Rust

    Struct syn::token::Priv

    source ·
    pub struct Priv {
    +Priv in syn::token - Rust
    syn::token

    Struct Priv

    source
    pub struct Priv {
         pub span: Span,
     }
    Expand description

    priv

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Priv

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Priv

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Priv

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Priv

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Priv

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Priv> for Priv

    source§

    fn eq(&self, _other: &Priv) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Priv

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Priv

    source§

    impl Eq for Priv

    source§

    impl Token for Priv

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Priv

    §

    impl !Send for Priv

    §

    impl !Sync for Priv

    §

    impl Unpin for Priv

    §

    impl UnwindSafe for Priv

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Priv

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Priv

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Priv

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Priv

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Priv

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Priv

    source§

    fn eq(&self, _other: &Priv) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Priv

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Priv

    source§

    impl Eq for Priv

    source§

    impl Token for Priv

    Auto Trait Implementations§

    §

    impl Freeze for Priv

    §

    impl RefUnwindSafe for Priv

    §

    impl !Send for Priv

    §

    impl !Sync for Priv

    §

    impl Unpin for Priv

    §

    impl UnwindSafe for Priv

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Pub.html b/syn/token/struct.Pub.html index d3f4fad..ca6dbe7 100644 --- a/syn/token/struct.Pub.html +++ b/syn/token/struct.Pub.html @@ -1,24 +1,24 @@ -Pub in syn::token - Rust

    Struct syn::token::Pub

    source ·
    pub struct Pub {
    +Pub in syn::token - Rust
    syn::token

    Struct Pub

    source
    pub struct Pub {
         pub span: Span,
     }
    Expand description

    pub

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Pub

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Pub

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Pub

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Pub

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Pub

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Pub> for Pub

    source§

    fn eq(&self, _other: &Pub) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Pub

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Pub

    source§

    impl Eq for Pub

    source§

    impl Token for Pub

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Pub

    §

    impl !Send for Pub

    §

    impl !Sync for Pub

    §

    impl Unpin for Pub

    §

    impl UnwindSafe for Pub

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Pub

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Pub

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Pub

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Pub

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Pub

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Pub

    source§

    fn eq(&self, _other: &Pub) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Pub

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Pub

    source§

    impl Eq for Pub

    source§

    impl Token for Pub

    Auto Trait Implementations§

    §

    impl Freeze for Pub

    §

    impl RefUnwindSafe for Pub

    §

    impl !Send for Pub

    §

    impl !Sync for Pub

    §

    impl Unpin for Pub

    §

    impl UnwindSafe for Pub

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Question.html b/syn/token/struct.Question.html index ee486f2..0ea873c 100644 --- a/syn/token/struct.Question.html +++ b/syn/token/struct.Question.html @@ -1,24 +1,26 @@ -Question in syn::token - Rust

    Struct syn::token::Question

    source ·
    #[repr(C)]
    pub struct Question { - pub spans: [Span; 1], +Question in syn::token - Rust
    syn::token

    Struct Question

    source
    pub struct Question {
    +    pub spans: [Span; 1],
     }
    Expand description

    ?

    +

    Usage: +question mark operator, questionably sized, macro Kleene matcher.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Question

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Question

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Question

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Question

    §

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Question

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Question

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Question

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Question> for Question

    source§

    fn eq(&self, _other: &Question) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Question

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Question

    source§

    impl Eq for Question

    source§

    impl Token for Question

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Question

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Question

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Question

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Question

    source§

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Question

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Question

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Question

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Question

    source§

    fn eq(&self, _other: &Question) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Question

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Question

    source§

    impl Eq for Question

    source§

    impl Token for Question

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.RArrow.html b/syn/token/struct.RArrow.html index 17e59c7..4406a24 100644 --- a/syn/token/struct.RArrow.html +++ b/syn/token/struct.RArrow.html @@ -1,24 +1,26 @@ -RArrow in syn::token - Rust

    Struct syn::token::RArrow

    source ·
    #[repr(C)]
    pub struct RArrow { - pub spans: [Span; 2], +RArrow in syn::token - Rust
    syn::token

    Struct RArrow

    source
    pub struct RArrow {
    +    pub spans: [Span; 2],
     }
    Expand description

    ->

    +

    Usage: +function return type, closure return type, function pointer type.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for RArrow

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for RArrow

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for RArrow

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for RArrow

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for RArrow

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<RArrow> for RArrow

    source§

    fn eq(&self, _other: &RArrow) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for RArrow

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for RArrow

    source§

    impl Eq for RArrow

    source§

    impl Token for RArrow

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for RArrow

    §

    impl !Send for RArrow

    §

    impl !Sync for RArrow

    §

    impl Unpin for RArrow

    §

    impl UnwindSafe for RArrow

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for RArrow

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for RArrow

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for RArrow

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for RArrow

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for RArrow

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for RArrow

    source§

    fn eq(&self, _other: &RArrow) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for RArrow

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for RArrow

    source§

    impl Eq for RArrow

    source§

    impl Token for RArrow

    Auto Trait Implementations§

    §

    impl Freeze for RArrow

    §

    impl RefUnwindSafe for RArrow

    §

    impl !Send for RArrow

    §

    impl !Sync for RArrow

    §

    impl Unpin for RArrow

    §

    impl UnwindSafe for RArrow

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Raw.html b/syn/token/struct.Raw.html new file mode 100644 index 0000000..da4df0a --- /dev/null +++ b/syn/token/struct.Raw.html @@ -0,0 +1,24 @@ +Raw in syn::token - Rust
    syn::token

    Struct Raw

    source
    pub struct Raw {
    +    pub span: Span,
    +}
    Expand description

    raw

    +

    Don’t try to remember the name of this type — use the +Token! macro instead.

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Raw

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Raw

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Raw

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Raw

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Raw

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Raw

    source§

    fn eq(&self, _other: &Raw) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Raw

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Raw

    source§

    impl Eq for Raw

    source§

    impl Token for Raw

    Auto Trait Implementations§

    §

    impl Freeze for Raw

    §

    impl RefUnwindSafe for Raw

    §

    impl !Send for Raw

    §

    impl !Sync for Raw

    §

    impl Unpin for Raw

    §

    impl UnwindSafe for Raw

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Ref.html b/syn/token/struct.Ref.html index 8518b91..f91418a 100644 --- a/syn/token/struct.Ref.html +++ b/syn/token/struct.Ref.html @@ -1,24 +1,24 @@ -Ref in syn::token - Rust

    Struct syn::token::Ref

    source ·
    pub struct Ref {
    +Ref in syn::token - Rust
    syn::token

    Struct Ref

    source
    pub struct Ref {
         pub span: Span,
     }
    Expand description

    ref

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Ref

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Ref

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Ref

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Ref

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Ref

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Ref> for Ref

    source§

    fn eq(&self, _other: &Ref) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Ref

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Ref

    source§

    impl Eq for Ref

    source§

    impl Token for Ref

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Ref

    §

    impl !Send for Ref

    §

    impl !Sync for Ref

    §

    impl Unpin for Ref

    §

    impl UnwindSafe for Ref

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Ref

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Ref

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Ref

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Ref

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Ref

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Ref

    source§

    fn eq(&self, _other: &Ref) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Ref

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Ref

    source§

    impl Eq for Ref

    source§

    impl Token for Ref

    Auto Trait Implementations§

    §

    impl Freeze for Ref

    §

    impl RefUnwindSafe for Ref

    §

    impl !Send for Ref

    §

    impl !Sync for Ref

    §

    impl Unpin for Ref

    §

    impl UnwindSafe for Ref

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Rem.html b/syn/token/struct.Rem.html deleted file mode 100644 index 0dff133..0000000 --- a/syn/token/struct.Rem.html +++ /dev/null @@ -1,24 +0,0 @@ -Rem in syn::token - Rust

    Struct syn::token::Rem

    source ·
    #[repr(C)]
    pub struct Rem { - pub spans: [Span; 1], -}
    Expand description

    %

    -

    Don’t try to remember the name of this type — use the -Token! macro instead.

    -

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Rem

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Rem

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Rem

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Rem

    §

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Rem

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Rem

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Rem

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Rem> for Rem

    source§

    fn eq(&self, _other: &Rem) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Rem

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Rem

    source§

    impl Eq for Rem

    source§

    impl Token for Rem

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Rem

    §

    impl !Send for Rem

    §

    impl !Sync for Rem

    §

    impl Unpin for Rem

    §

    impl UnwindSafe for Rem

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.RemEq.html b/syn/token/struct.RemEq.html deleted file mode 100644 index 5f1368c..0000000 --- a/syn/token/struct.RemEq.html +++ /dev/null @@ -1,24 +0,0 @@ -RemEq in syn::token - Rust

    Struct syn::token::RemEq

    source ·
    #[repr(C)]
    pub struct RemEq { - pub spans: [Span; 2], -}
    Expand description

    %=

    -

    Don’t try to remember the name of this type — use the -Token! macro instead.

    -

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for RemEq

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for RemEq

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for RemEq

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for RemEq

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for RemEq

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<RemEq> for RemEq

    source§

    fn eq(&self, _other: &RemEq) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for RemEq

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for RemEq

    source§

    impl Eq for RemEq

    source§

    impl Token for RemEq

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for RemEq

    §

    impl !Send for RemEq

    §

    impl !Sync for RemEq

    §

    impl Unpin for RemEq

    §

    impl UnwindSafe for RemEq

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Return.html b/syn/token/struct.Return.html index aa9bc8a..073bef8 100644 --- a/syn/token/struct.Return.html +++ b/syn/token/struct.Return.html @@ -1,24 +1,24 @@ -Return in syn::token - Rust

    Struct syn::token::Return

    source ·
    pub struct Return {
    +Return in syn::token - Rust
    syn::token

    Struct Return

    source
    pub struct Return {
         pub span: Span,
     }
    Expand description

    return

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Return

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Return

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Return

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Return

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Return

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Return> for Return

    source§

    fn eq(&self, _other: &Return) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Return

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Return

    source§

    impl Eq for Return

    source§

    impl Token for Return

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Return

    §

    impl !Send for Return

    §

    impl !Sync for Return

    §

    impl Unpin for Return

    §

    impl UnwindSafe for Return

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Return

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Return

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Return

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Return

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Return

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Return

    source§

    fn eq(&self, _other: &Return) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Return

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Return

    source§

    impl Eq for Return

    source§

    impl Token for Return

    Auto Trait Implementations§

    §

    impl Freeze for Return

    §

    impl RefUnwindSafe for Return

    §

    impl !Send for Return

    §

    impl !Sync for Return

    §

    impl Unpin for Return

    §

    impl UnwindSafe for Return

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.SelfType.html b/syn/token/struct.SelfType.html index 60c096e..eda2582 100644 --- a/syn/token/struct.SelfType.html +++ b/syn/token/struct.SelfType.html @@ -1,24 +1,24 @@ -SelfType in syn::token - Rust

    Struct syn::token::SelfType

    source ·
    pub struct SelfType {
    +SelfType in syn::token - Rust
    syn::token

    Struct SelfType

    source
    pub struct SelfType {
         pub span: Span,
     }
    Expand description

    Self

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for SelfType

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SelfType

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for SelfType

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl From<SelfType> for Ident

    source§

    fn from(token: SelfType) -> Ident

    Converts to this type from the input type.
    source§

    impl Hash for SelfType

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for SelfType

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<SelfType> for SelfType

    source§

    fn eq(&self, _other: &SelfType) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for SelfType

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for SelfType

    source§

    impl Eq for SelfType

    source§

    impl Token for SelfType

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for SelfType

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SelfType

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for SelfType

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl From<SelfType> for Ident

    source§

    fn from(token: SelfType) -> Ident

    Converts to this type from the input type.
    source§

    impl Hash for SelfType

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for SelfType

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for SelfType

    source§

    fn eq(&self, _other: &SelfType) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for SelfType

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for SelfType

    source§

    impl Eq for SelfType

    source§

    impl Token for SelfType

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.SelfValue.html b/syn/token/struct.SelfValue.html index 29209a5..c9cffca 100644 --- a/syn/token/struct.SelfValue.html +++ b/syn/token/struct.SelfValue.html @@ -1,24 +1,24 @@ -SelfValue in syn::token - Rust

    Struct syn::token::SelfValue

    source ·
    pub struct SelfValue {
    +SelfValue in syn::token - Rust
    syn::token

    Struct SelfValue

    source
    pub struct SelfValue {
         pub span: Span,
     }
    Expand description

    self

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for SelfValue

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SelfValue

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for SelfValue

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl From<SelfValue> for Ident

    source§

    fn from(token: SelfValue) -> Ident

    Converts to this type from the input type.
    source§

    impl Hash for SelfValue

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for SelfValue

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<SelfValue> for SelfValue

    source§

    fn eq(&self, _other: &SelfValue) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for SelfValue

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for SelfValue

    source§

    impl Eq for SelfValue

    source§

    impl Token for SelfValue

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for SelfValue

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SelfValue

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for SelfValue

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl From<SelfValue> for Ident

    source§

    fn from(token: SelfValue) -> Ident

    Converts to this type from the input type.
    source§

    impl Hash for SelfValue

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for SelfValue

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for SelfValue

    source§

    fn eq(&self, _other: &SelfValue) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for SelfValue

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for SelfValue

    source§

    impl Eq for SelfValue

    source§

    impl Token for SelfValue

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Semi.html b/syn/token/struct.Semi.html index 376a342..10881ba 100644 --- a/syn/token/struct.Semi.html +++ b/syn/token/struct.Semi.html @@ -1,24 +1,26 @@ -Semi in syn::token - Rust

    Struct syn::token::Semi

    source ·
    #[repr(C)]
    pub struct Semi { - pub spans: [Span; 1], +Semi in syn::token - Rust
    syn::token

    Struct Semi

    source
    pub struct Semi {
    +    pub spans: [Span; 1],
     }
    Expand description

    ;

    +

    Usage: +terminator for various items and statements, array types.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Semi

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Semi

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Semi

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Semi

    §

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Semi

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Semi

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Semi

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Semi> for Semi

    source§

    fn eq(&self, _other: &Semi) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Semi

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Semi

    source§

    impl Eq for Semi

    source§

    impl Token for Semi

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Semi

    §

    impl !Send for Semi

    §

    impl !Sync for Semi

    §

    impl Unpin for Semi

    §

    impl UnwindSafe for Semi

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Semi

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Semi

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Semi

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Semi

    source§

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Semi

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Semi

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Semi

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Semi

    source§

    fn eq(&self, _other: &Semi) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Semi

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Semi

    source§

    impl Eq for Semi

    source§

    impl Token for Semi

    Auto Trait Implementations§

    §

    impl Freeze for Semi

    §

    impl RefUnwindSafe for Semi

    §

    impl !Send for Semi

    §

    impl !Sync for Semi

    §

    impl Unpin for Semi

    §

    impl UnwindSafe for Semi

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Shl.html b/syn/token/struct.Shl.html index 5100627..b14af72 100644 --- a/syn/token/struct.Shl.html +++ b/syn/token/struct.Shl.html @@ -1,24 +1,26 @@ -Shl in syn::token - Rust

    Struct syn::token::Shl

    source ·
    #[repr(C)]
    pub struct Shl { - pub spans: [Span; 2], +Shl in syn::token - Rust
    syn::token

    Struct Shl

    source
    pub struct Shl {
    +    pub spans: [Span; 2],
     }
    Expand description

    <<

    +

    Usage: +shift left, nested generics.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for Shl

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Shl

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Shl

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Shl

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Shl

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Shl> for Shl

    source§

    fn eq(&self, _other: &Shl) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Shl

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Shl

    source§

    impl Eq for Shl

    source§

    impl Token for Shl

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Shl

    §

    impl !Send for Shl

    §

    impl !Sync for Shl

    §

    impl Unpin for Shl

    §

    impl UnwindSafe for Shl

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for Shl

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Shl

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Shl

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Shl

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Shl

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Shl

    source§

    fn eq(&self, _other: &Shl) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Shl

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Shl

    source§

    impl Eq for Shl

    source§

    impl Token for Shl

    Auto Trait Implementations§

    §

    impl Freeze for Shl

    §

    impl RefUnwindSafe for Shl

    §

    impl !Send for Shl

    §

    impl !Sync for Shl

    §

    impl Unpin for Shl

    §

    impl UnwindSafe for Shl

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.ShlEq.html b/syn/token/struct.ShlEq.html index 6d98d88..74869e8 100644 --- a/syn/token/struct.ShlEq.html +++ b/syn/token/struct.ShlEq.html @@ -1,24 +1,26 @@ -ShlEq in syn::token - Rust

    Struct syn::token::ShlEq

    source ·
    #[repr(C)]
    pub struct ShlEq { - pub spans: [Span; 3], +ShlEq in syn::token - Rust
    syn::token

    Struct ShlEq

    source
    pub struct ShlEq {
    +    pub spans: [Span; 3],
     }
    Expand description

    <<=

    +

    Usage: +shift left assignment.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 3]

    Trait Implementations§

    source§

    impl Clone for ShlEq

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ShlEq

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for ShlEq

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for ShlEq

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for ShlEq

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<ShlEq> for ShlEq

    source§

    fn eq(&self, _other: &ShlEq) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for ShlEq

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for ShlEq

    source§

    impl Eq for ShlEq

    source§

    impl Token for ShlEq

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for ShlEq

    §

    impl !Send for ShlEq

    §

    impl !Sync for ShlEq

    §

    impl Unpin for ShlEq

    §

    impl UnwindSafe for ShlEq

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 3]

    Trait Implementations§

    source§

    impl Clone for ShlEq

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ShlEq

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for ShlEq

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for ShlEq

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for ShlEq

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for ShlEq

    source§

    fn eq(&self, _other: &ShlEq) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for ShlEq

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for ShlEq

    source§

    impl Eq for ShlEq

    source§

    impl Token for ShlEq

    Auto Trait Implementations§

    §

    impl Freeze for ShlEq

    §

    impl RefUnwindSafe for ShlEq

    §

    impl !Send for ShlEq

    §

    impl !Sync for ShlEq

    §

    impl Unpin for ShlEq

    §

    impl UnwindSafe for ShlEq

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Shr.html b/syn/token/struct.Shr.html index e9d41e8..892ec1a 100644 --- a/syn/token/struct.Shr.html +++ b/syn/token/struct.Shr.html @@ -1,24 +1,26 @@ -Shr in syn::token - Rust

    Struct syn::token::Shr

    source ·
    #[repr(C)]
    pub struct Shr { - pub spans: [Span; 2], +Shr in syn::token - Rust
    syn::token

    Struct Shr

    source
    pub struct Shr {
    +    pub spans: [Span; 2],
     }
    Expand description

    >>

    +

    Usage: +shift right, nested generics.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for Shr

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Shr

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Shr

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Shr

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Shr

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Shr> for Shr

    source§

    fn eq(&self, _other: &Shr) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Shr

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Shr

    source§

    impl Eq for Shr

    source§

    impl Token for Shr

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Shr

    §

    impl !Send for Shr

    §

    impl !Sync for Shr

    §

    impl Unpin for Shr

    §

    impl UnwindSafe for Shr

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for Shr

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Shr

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Shr

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Shr

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Shr

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Shr

    source§

    fn eq(&self, _other: &Shr) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Shr

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Shr

    source§

    impl Eq for Shr

    source§

    impl Token for Shr

    Auto Trait Implementations§

    §

    impl Freeze for Shr

    §

    impl RefUnwindSafe for Shr

    §

    impl !Send for Shr

    §

    impl !Sync for Shr

    §

    impl Unpin for Shr

    §

    impl UnwindSafe for Shr

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.ShrEq.html b/syn/token/struct.ShrEq.html index deaa370..dfc8969 100644 --- a/syn/token/struct.ShrEq.html +++ b/syn/token/struct.ShrEq.html @@ -1,24 +1,26 @@ -ShrEq in syn::token - Rust

    Struct syn::token::ShrEq

    source ·
    #[repr(C)]
    pub struct ShrEq { - pub spans: [Span; 3], +ShrEq in syn::token - Rust
    syn::token

    Struct ShrEq

    source
    pub struct ShrEq {
    +    pub spans: [Span; 3],
     }
    Expand description

    >>=

    +

    Usage: +shift right assignment, nested generics.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 3]

    Trait Implementations§

    source§

    impl Clone for ShrEq

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ShrEq

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for ShrEq

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for ShrEq

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for ShrEq

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<ShrEq> for ShrEq

    source§

    fn eq(&self, _other: &ShrEq) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for ShrEq

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for ShrEq

    source§

    impl Eq for ShrEq

    source§

    impl Token for ShrEq

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for ShrEq

    §

    impl !Send for ShrEq

    §

    impl !Sync for ShrEq

    §

    impl Unpin for ShrEq

    §

    impl UnwindSafe for ShrEq

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 3]

    Trait Implementations§

    source§

    impl Clone for ShrEq

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ShrEq

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for ShrEq

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for ShrEq

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for ShrEq

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for ShrEq

    source§

    fn eq(&self, _other: &ShrEq) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for ShrEq

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for ShrEq

    source§

    impl Eq for ShrEq

    source§

    impl Token for ShrEq

    Auto Trait Implementations§

    §

    impl Freeze for ShrEq

    §

    impl RefUnwindSafe for ShrEq

    §

    impl !Send for ShrEq

    §

    impl !Sync for ShrEq

    §

    impl Unpin for ShrEq

    §

    impl UnwindSafe for ShrEq

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Slash.html b/syn/token/struct.Slash.html new file mode 100644 index 0000000..2cf4010 --- /dev/null +++ b/syn/token/struct.Slash.html @@ -0,0 +1,26 @@ +Slash in syn::token - Rust
    syn::token

    Struct Slash

    source
    pub struct Slash {
    +    pub spans: [Span; 1],
    +}
    Expand description

    /

    +

    Usage: +division.

    +

    Don’t try to remember the name of this type — use the +Token! macro instead.

    +

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Slash

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Slash

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Slash

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Slash

    source§

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Slash

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Slash

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Slash

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Slash

    source§

    fn eq(&self, _other: &Slash) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Slash

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Slash

    source§

    impl Eq for Slash

    source§

    impl Token for Slash

    Auto Trait Implementations§

    §

    impl Freeze for Slash

    §

    impl RefUnwindSafe for Slash

    §

    impl !Send for Slash

    §

    impl !Sync for Slash

    §

    impl Unpin for Slash

    §

    impl UnwindSafe for Slash

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.SlashEq.html b/syn/token/struct.SlashEq.html new file mode 100644 index 0000000..7fbb3e7 --- /dev/null +++ b/syn/token/struct.SlashEq.html @@ -0,0 +1,26 @@ +SlashEq in syn::token - Rust
    syn::token

    Struct SlashEq

    source
    pub struct SlashEq {
    +    pub spans: [Span; 2],
    +}
    Expand description

    /=

    +

    Usage: +division assignment.

    +

    Don’t try to remember the name of this type — use the +Token! macro instead.

    +

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for SlashEq

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SlashEq

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for SlashEq

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for SlashEq

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for SlashEq

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for SlashEq

    source§

    fn eq(&self, _other: &SlashEq) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for SlashEq

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for SlashEq

    source§

    impl Eq for SlashEq

    source§

    impl Token for SlashEq

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Star.html b/syn/token/struct.Star.html index 72fcd86..b6d6c90 100644 --- a/syn/token/struct.Star.html +++ b/syn/token/struct.Star.html @@ -1,24 +1,26 @@ -Star in syn::token - Rust

    Struct syn::token::Star

    source ·
    #[repr(C)]
    pub struct Star { - pub spans: [Span; 1], +Star in syn::token - Rust
    syn::token

    Struct Star

    source
    pub struct Star {
    +    pub spans: [Span; 1],
     }
    Expand description

    *

    +

    Usage: +multiplication, dereference, raw pointers, macro Kleene matcher, use wildcards.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Star

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Star

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Star

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Star

    §

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Star

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Star

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Star

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Star> for Star

    source§

    fn eq(&self, _other: &Star) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Star

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Star

    source§

    impl Eq for Star

    source§

    impl Token for Star

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Star

    §

    impl !Send for Star

    §

    impl !Sync for Star

    §

    impl Unpin for Star

    §

    impl UnwindSafe for Star

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Star

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Star

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Star

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Star

    source§

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Star

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Star

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Star

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Star

    source§

    fn eq(&self, _other: &Star) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Star

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Star

    source§

    impl Eq for Star

    source§

    impl Token for Star

    Auto Trait Implementations§

    §

    impl Freeze for Star

    §

    impl RefUnwindSafe for Star

    §

    impl !Send for Star

    §

    impl !Sync for Star

    §

    impl Unpin for Star

    §

    impl UnwindSafe for Star

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.StarEq.html b/syn/token/struct.StarEq.html new file mode 100644 index 0000000..3081199 --- /dev/null +++ b/syn/token/struct.StarEq.html @@ -0,0 +1,26 @@ +StarEq in syn::token - Rust
    syn::token

    Struct StarEq

    source
    pub struct StarEq {
    +    pub spans: [Span; 2],
    +}
    Expand description

    *=

    +

    Usage: +multiplication assignment.

    +

    Don’t try to remember the name of this type — use the +Token! macro instead.

    +

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for StarEq

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for StarEq

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for StarEq

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for StarEq

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for StarEq

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for StarEq

    source§

    fn eq(&self, _other: &StarEq) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for StarEq

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for StarEq

    source§

    impl Eq for StarEq

    source§

    impl Token for StarEq

    Auto Trait Implementations§

    §

    impl Freeze for StarEq

    §

    impl RefUnwindSafe for StarEq

    §

    impl !Send for StarEq

    §

    impl !Sync for StarEq

    §

    impl Unpin for StarEq

    §

    impl UnwindSafe for StarEq

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Static.html b/syn/token/struct.Static.html index dab86fd..9f8aaa7 100644 --- a/syn/token/struct.Static.html +++ b/syn/token/struct.Static.html @@ -1,24 +1,24 @@ -Static in syn::token - Rust

    Struct syn::token::Static

    source ·
    pub struct Static {
    +Static in syn::token - Rust
    syn::token

    Struct Static

    source
    pub struct Static {
         pub span: Span,
     }
    Expand description

    static

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Static

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Static

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Static

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Static

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Static

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Static> for Static

    source§

    fn eq(&self, _other: &Static) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Static

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Static

    source§

    impl Eq for Static

    source§

    impl Token for Static

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Static

    §

    impl !Send for Static

    §

    impl !Sync for Static

    §

    impl Unpin for Static

    §

    impl UnwindSafe for Static

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Static

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Static

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Static

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Static

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Static

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Static

    source§

    fn eq(&self, _other: &Static) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Static

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Static

    source§

    impl Eq for Static

    source§

    impl Token for Static

    Auto Trait Implementations§

    §

    impl Freeze for Static

    §

    impl RefUnwindSafe for Static

    §

    impl !Send for Static

    §

    impl !Sync for Static

    §

    impl Unpin for Static

    §

    impl UnwindSafe for Static

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Struct.html b/syn/token/struct.Struct.html index 54f23f6..8ffc984 100644 --- a/syn/token/struct.Struct.html +++ b/syn/token/struct.Struct.html @@ -1,24 +1,24 @@ -Struct in syn::token - Rust

    Struct syn::token::Struct

    source ·
    pub struct Struct {
    +Struct in syn::token - Rust
    syn::token

    Struct Struct

    source
    pub struct Struct {
         pub span: Span,
     }
    Expand description

    struct

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Struct

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Struct

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Struct

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Struct

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Struct

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Struct> for Struct

    source§

    fn eq(&self, _other: &Struct) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Struct

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Struct

    source§

    impl Eq for Struct

    source§

    impl Token for Struct

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Struct

    §

    impl !Send for Struct

    §

    impl !Sync for Struct

    §

    impl Unpin for Struct

    §

    impl UnwindSafe for Struct

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Struct

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Struct

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Struct

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Struct

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Struct

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Struct

    source§

    fn eq(&self, _other: &Struct) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Struct

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Struct

    source§

    impl Eq for Struct

    source§

    impl Token for Struct

    Auto Trait Implementations§

    §

    impl Freeze for Struct

    §

    impl RefUnwindSafe for Struct

    §

    impl !Send for Struct

    §

    impl !Sync for Struct

    §

    impl Unpin for Struct

    §

    impl UnwindSafe for Struct

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Sub.html b/syn/token/struct.Sub.html deleted file mode 100644 index 724723e..0000000 --- a/syn/token/struct.Sub.html +++ /dev/null @@ -1,24 +0,0 @@ -Sub in syn::token - Rust

    Struct syn::token::Sub

    source ·
    #[repr(C)]
    pub struct Sub { - pub spans: [Span; 1], -}
    Expand description

    -

    -

    Don’t try to remember the name of this type — use the -Token! macro instead.

    -

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Sub

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Sub

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Sub

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Sub

    §

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Sub

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Sub

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Sub

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Sub> for Sub

    source§

    fn eq(&self, _other: &Sub) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Sub

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Sub

    source§

    impl Eq for Sub

    source§

    impl Token for Sub

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Sub

    §

    impl !Send for Sub

    §

    impl !Sync for Sub

    §

    impl Unpin for Sub

    §

    impl UnwindSafe for Sub

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.SubEq.html b/syn/token/struct.SubEq.html deleted file mode 100644 index dd4276a..0000000 --- a/syn/token/struct.SubEq.html +++ /dev/null @@ -1,24 +0,0 @@ -SubEq in syn::token - Rust

    Struct syn::token::SubEq

    source ·
    #[repr(C)]
    pub struct SubEq { - pub spans: [Span; 2], -}
    Expand description

    -=

    -

    Don’t try to remember the name of this type — use the -Token! macro instead.

    -

    Fields§

    §spans: [Span; 2]

    Trait Implementations§

    source§

    impl Clone for SubEq

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SubEq

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for SubEq

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for SubEq

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for SubEq

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<SubEq> for SubEq

    source§

    fn eq(&self, _other: &SubEq) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for SubEq

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for SubEq

    source§

    impl Eq for SubEq

    source§

    impl Token for SubEq

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for SubEq

    §

    impl !Send for SubEq

    §

    impl !Sync for SubEq

    §

    impl Unpin for SubEq

    §

    impl UnwindSafe for SubEq

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Super.html b/syn/token/struct.Super.html index a9a38d0..9f0b46c 100644 --- a/syn/token/struct.Super.html +++ b/syn/token/struct.Super.html @@ -1,24 +1,24 @@ -Super in syn::token - Rust

    Struct syn::token::Super

    source ·
    pub struct Super {
    +Super in syn::token - Rust
    syn::token

    Struct Super

    source
    pub struct Super {
         pub span: Span,
     }
    Expand description

    super

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Super

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Super

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Super

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl From<Super> for Ident

    source§

    fn from(token: Super) -> Ident

    Converts to this type from the input type.
    source§

    impl Hash for Super

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Super

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Super> for Super

    source§

    fn eq(&self, _other: &Super) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Super

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Super

    source§

    impl Eq for Super

    source§

    impl Token for Super

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Super

    §

    impl !Send for Super

    §

    impl !Sync for Super

    §

    impl Unpin for Super

    §

    impl UnwindSafe for Super

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Super

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Super

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Super

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl From<Super> for Ident

    source§

    fn from(token: Super) -> Ident

    Converts to this type from the input type.
    source§

    impl Hash for Super

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Super

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Super

    source§

    fn eq(&self, _other: &Super) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Super

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Super

    source§

    impl Eq for Super

    source§

    impl Token for Super

    Auto Trait Implementations§

    §

    impl Freeze for Super

    §

    impl RefUnwindSafe for Super

    §

    impl !Send for Super

    §

    impl !Sync for Super

    §

    impl Unpin for Super

    §

    impl UnwindSafe for Super

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Tilde.html b/syn/token/struct.Tilde.html index 9abdd2b..8ff3dcd 100644 --- a/syn/token/struct.Tilde.html +++ b/syn/token/struct.Tilde.html @@ -1,24 +1,26 @@ -Tilde in syn::token - Rust

    Struct syn::token::Tilde

    source ·
    #[repr(C)]
    pub struct Tilde { - pub spans: [Span; 1], +Tilde in syn::token - Rust
    syn::token

    Struct Tilde

    source
    pub struct Tilde {
    +    pub spans: [Span; 1],
     }
    Expand description

    ~

    +

    Usage: +unused since before Rust 1.0.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Tilde

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Tilde

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Tilde

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Tilde

    §

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Tilde

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Tilde

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Tilde

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Tilde> for Tilde

    source§

    fn eq(&self, _other: &Tilde) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Tilde

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Tilde

    source§

    impl Eq for Tilde

    source§

    impl Token for Tilde

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Tilde

    §

    impl !Send for Tilde

    §

    impl !Sync for Tilde

    §

    impl Unpin for Tilde

    §

    impl UnwindSafe for Tilde

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Tilde

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Tilde

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Tilde

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Tilde

    source§

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Tilde

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl Hash for Tilde

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Tilde

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Tilde

    source§

    fn eq(&self, _other: &Tilde) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Tilde

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Tilde

    source§

    impl Eq for Tilde

    source§

    impl Token for Tilde

    Auto Trait Implementations§

    §

    impl Freeze for Tilde

    §

    impl RefUnwindSafe for Tilde

    §

    impl !Send for Tilde

    §

    impl !Sync for Tilde

    §

    impl Unpin for Tilde

    §

    impl UnwindSafe for Tilde

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Trait.html b/syn/token/struct.Trait.html index 38e8db4..172e828 100644 --- a/syn/token/struct.Trait.html +++ b/syn/token/struct.Trait.html @@ -1,24 +1,24 @@ -Trait in syn::token - Rust

    Struct syn::token::Trait

    source ·
    pub struct Trait {
    +Trait in syn::token - Rust
    syn::token

    Struct Trait

    source
    pub struct Trait {
         pub span: Span,
     }
    Expand description

    trait

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Trait

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Trait

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Trait

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Trait

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Trait

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Trait> for Trait

    source§

    fn eq(&self, _other: &Trait) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Trait

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Trait

    source§

    impl Eq for Trait

    source§

    impl Token for Trait

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Trait

    §

    impl !Send for Trait

    §

    impl !Sync for Trait

    §

    impl Unpin for Trait

    §

    impl UnwindSafe for Trait

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Trait

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Trait

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Trait

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Trait

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Trait

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Trait

    source§

    fn eq(&self, _other: &Trait) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Trait

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Trait

    source§

    impl Eq for Trait

    source§

    impl Token for Trait

    Auto Trait Implementations§

    §

    impl Freeze for Trait

    §

    impl RefUnwindSafe for Trait

    §

    impl !Send for Trait

    §

    impl !Sync for Trait

    §

    impl Unpin for Trait

    §

    impl UnwindSafe for Trait

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Try.html b/syn/token/struct.Try.html index 883cf12..ccef1a3 100644 --- a/syn/token/struct.Try.html +++ b/syn/token/struct.Try.html @@ -1,24 +1,24 @@ -Try in syn::token - Rust

    Struct syn::token::Try

    source ·
    pub struct Try {
    +Try in syn::token - Rust
    syn::token

    Struct Try

    source
    pub struct Try {
         pub span: Span,
     }
    Expand description

    try

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Try

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Try

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Try

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Try

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Try

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Try> for Try

    source§

    fn eq(&self, _other: &Try) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Try

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Try

    source§

    impl Eq for Try

    source§

    impl Token for Try

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Try

    §

    impl !Send for Try

    §

    impl !Sync for Try

    §

    impl Unpin for Try

    §

    impl UnwindSafe for Try

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Try

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Try

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Try

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Try

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Try

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Try

    source§

    fn eq(&self, _other: &Try) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Try

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Try

    source§

    impl Eq for Try

    source§

    impl Token for Try

    Auto Trait Implementations§

    §

    impl Freeze for Try

    §

    impl RefUnwindSafe for Try

    §

    impl !Send for Try

    §

    impl !Sync for Try

    §

    impl Unpin for Try

    §

    impl UnwindSafe for Try

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Type.html b/syn/token/struct.Type.html index c43c0e8..1e94f94 100644 --- a/syn/token/struct.Type.html +++ b/syn/token/struct.Type.html @@ -1,24 +1,24 @@ -Type in syn::token - Rust

    Struct syn::token::Type

    source ·
    pub struct Type {
    +Type in syn::token - Rust
    syn::token

    Struct Type

    source
    pub struct Type {
         pub span: Span,
     }
    Expand description

    type

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Type

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Type

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Type

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Type

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Type

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Type> for Type

    source§

    fn eq(&self, _other: &Type) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Type

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Type

    source§

    impl Eq for Type

    source§

    impl Token for Type

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Type

    §

    impl !Send for Type

    §

    impl !Sync for Type

    §

    impl Unpin for Type

    §

    impl UnwindSafe for Type

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Type

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Type

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Type

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Type

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Type

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Type

    source§

    fn eq(&self, _other: &Type) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Type

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Type

    source§

    impl Eq for Type

    source§

    impl Token for Type

    Auto Trait Implementations§

    §

    impl Freeze for Type

    §

    impl RefUnwindSafe for Type

    §

    impl !Send for Type

    §

    impl !Sync for Type

    §

    impl Unpin for Type

    §

    impl UnwindSafe for Type

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Typeof.html b/syn/token/struct.Typeof.html index 6a9179c..4f05701 100644 --- a/syn/token/struct.Typeof.html +++ b/syn/token/struct.Typeof.html @@ -1,24 +1,24 @@ -Typeof in syn::token - Rust

    Struct syn::token::Typeof

    source ·
    pub struct Typeof {
    +Typeof in syn::token - Rust
    syn::token

    Struct Typeof

    source
    pub struct Typeof {
         pub span: Span,
     }
    Expand description

    typeof

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Typeof

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Typeof

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Typeof

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Typeof

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Typeof

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Typeof> for Typeof

    source§

    fn eq(&self, _other: &Typeof) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Typeof

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Typeof

    source§

    impl Eq for Typeof

    source§

    impl Token for Typeof

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Typeof

    §

    impl !Send for Typeof

    §

    impl !Sync for Typeof

    §

    impl Unpin for Typeof

    §

    impl UnwindSafe for Typeof

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Typeof

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Typeof

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Typeof

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Typeof

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Typeof

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Typeof

    source§

    fn eq(&self, _other: &Typeof) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Typeof

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Typeof

    source§

    impl Eq for Typeof

    source§

    impl Token for Typeof

    Auto Trait Implementations§

    §

    impl Freeze for Typeof

    §

    impl RefUnwindSafe for Typeof

    §

    impl !Send for Typeof

    §

    impl !Sync for Typeof

    §

    impl Unpin for Typeof

    §

    impl UnwindSafe for Typeof

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Underscore.html b/syn/token/struct.Underscore.html index 63351ba..f4e1238 100644 --- a/syn/token/struct.Underscore.html +++ b/syn/token/struct.Underscore.html @@ -1,24 +1,26 @@ -Underscore in syn::token - Rust

    Struct syn::token::Underscore

    source ·
    #[repr(C)]
    pub struct Underscore { - pub spans: [Span; 1], +Underscore in syn::token - Rust
    syn::token

    Struct Underscore

    source
    pub struct Underscore {
    +    pub spans: [Span; 1],
     }
    Expand description

    _

    +

    Usage: +wildcard patterns, inferred types, unnamed items in constants, extern crates, use declarations, and destructuring assignment.

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Underscore

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Underscore

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Underscore

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Underscore

    §

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Underscore

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl From<Underscore> for Ident

    source§

    fn from(token: Underscore) -> Ident

    Converts to this type from the input type.
    source§

    impl Hash for Underscore

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Underscore

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Underscore> for Underscore

    source§

    fn eq(&self, _other: &Underscore) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Underscore

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Underscore

    source§

    impl Eq for Underscore

    source§

    impl Token for Underscore

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §spans: [Span; 1]

    Trait Implementations§

    source§

    impl Clone for Underscore

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Underscore

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Underscore

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Deref for Underscore

    source§

    type Target = WithSpan

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl DerefMut for Underscore

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl From<Underscore> for Ident

    source§

    fn from(token: Underscore) -> Ident

    Converts to this type from the input type.
    source§

    impl Hash for Underscore

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Underscore

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Underscore

    source§

    fn eq(&self, _other: &Underscore) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Underscore

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Underscore

    source§

    impl Eq for Underscore

    source§

    impl Token for Underscore

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Union.html b/syn/token/struct.Union.html index e29b594..b4fad80 100644 --- a/syn/token/struct.Union.html +++ b/syn/token/struct.Union.html @@ -1,24 +1,24 @@ -Union in syn::token - Rust

    Struct syn::token::Union

    source ·
    pub struct Union {
    +Union in syn::token - Rust
    syn::token

    Struct Union

    source
    pub struct Union {
         pub span: Span,
     }
    Expand description

    union

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Union

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Union

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Union

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Union

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Union

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Union> for Union

    source§

    fn eq(&self, _other: &Union) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Union

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Union

    source§

    impl Eq for Union

    source§

    impl Token for Union

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Union

    §

    impl !Send for Union

    §

    impl !Sync for Union

    §

    impl Unpin for Union

    §

    impl UnwindSafe for Union

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Union

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Union

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Union

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Union

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Union

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Union

    source§

    fn eq(&self, _other: &Union) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Union

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Union

    source§

    impl Eq for Union

    source§

    impl Token for Union

    Auto Trait Implementations§

    §

    impl Freeze for Union

    §

    impl RefUnwindSafe for Union

    §

    impl !Send for Union

    §

    impl !Sync for Union

    §

    impl Unpin for Union

    §

    impl UnwindSafe for Union

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Unsafe.html b/syn/token/struct.Unsafe.html index bba6605..0d1147c 100644 --- a/syn/token/struct.Unsafe.html +++ b/syn/token/struct.Unsafe.html @@ -1,24 +1,24 @@ -Unsafe in syn::token - Rust

    Struct syn::token::Unsafe

    source ·
    pub struct Unsafe {
    +Unsafe in syn::token - Rust
    syn::token

    Struct Unsafe

    source
    pub struct Unsafe {
         pub span: Span,
     }
    Expand description

    unsafe

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Unsafe

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Unsafe

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Unsafe

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Unsafe

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Unsafe

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Unsafe> for Unsafe

    source§

    fn eq(&self, _other: &Unsafe) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Unsafe

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Unsafe

    source§

    impl Eq for Unsafe

    source§

    impl Token for Unsafe

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Unsafe

    §

    impl !Send for Unsafe

    §

    impl !Sync for Unsafe

    §

    impl Unpin for Unsafe

    §

    impl UnwindSafe for Unsafe

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Unsafe

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Unsafe

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Unsafe

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Unsafe

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Unsafe

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Unsafe

    source§

    fn eq(&self, _other: &Unsafe) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Unsafe

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Unsafe

    source§

    impl Eq for Unsafe

    source§

    impl Token for Unsafe

    Auto Trait Implementations§

    §

    impl Freeze for Unsafe

    §

    impl RefUnwindSafe for Unsafe

    §

    impl !Send for Unsafe

    §

    impl !Sync for Unsafe

    §

    impl Unpin for Unsafe

    §

    impl UnwindSafe for Unsafe

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Unsized.html b/syn/token/struct.Unsized.html index 0bdcc6e..aa4fad3 100644 --- a/syn/token/struct.Unsized.html +++ b/syn/token/struct.Unsized.html @@ -1,24 +1,24 @@ -Unsized in syn::token - Rust

    Struct syn::token::Unsized

    source ·
    pub struct Unsized {
    +Unsized in syn::token - Rust
    syn::token

    Struct Unsized

    source
    pub struct Unsized {
         pub span: Span,
     }
    Expand description

    unsized

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Unsized

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Unsized

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Unsized

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Unsized

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Unsized

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Unsized> for Unsized

    source§

    fn eq(&self, _other: &Unsized) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Unsized

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Unsized

    source§

    impl Eq for Unsized

    source§

    impl Token for Unsized

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Unsized

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Unsized

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Unsized

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Unsized

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Unsized

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Unsized

    source§

    fn eq(&self, _other: &Unsized) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Unsized

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Unsized

    source§

    impl Eq for Unsized

    source§

    impl Token for Unsized

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Use.html b/syn/token/struct.Use.html index fa1b373..32d602f 100644 --- a/syn/token/struct.Use.html +++ b/syn/token/struct.Use.html @@ -1,24 +1,24 @@ -Use in syn::token - Rust

    Struct syn::token::Use

    source ·
    pub struct Use {
    +Use in syn::token - Rust
    syn::token

    Struct Use

    source
    pub struct Use {
         pub span: Span,
     }
    Expand description

    use

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Use

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Use

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Use

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Use

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Use

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Use> for Use

    source§

    fn eq(&self, _other: &Use) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Use

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Use

    source§

    impl Eq for Use

    source§

    impl Token for Use

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Use

    §

    impl !Send for Use

    §

    impl !Sync for Use

    §

    impl Unpin for Use

    §

    impl UnwindSafe for Use

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Use

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Use

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Use

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Use

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Use

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Use

    source§

    fn eq(&self, _other: &Use) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Use

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Use

    source§

    impl Eq for Use

    source§

    impl Token for Use

    Auto Trait Implementations§

    §

    impl Freeze for Use

    §

    impl RefUnwindSafe for Use

    §

    impl !Send for Use

    §

    impl !Sync for Use

    §

    impl Unpin for Use

    §

    impl UnwindSafe for Use

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Virtual.html b/syn/token/struct.Virtual.html index abbe2ac..299f537 100644 --- a/syn/token/struct.Virtual.html +++ b/syn/token/struct.Virtual.html @@ -1,24 +1,24 @@ -Virtual in syn::token - Rust

    Struct syn::token::Virtual

    source ·
    pub struct Virtual {
    +Virtual in syn::token - Rust
    syn::token

    Struct Virtual

    source
    pub struct Virtual {
         pub span: Span,
     }
    Expand description

    virtual

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Virtual

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Virtual

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Virtual

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Virtual

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Virtual

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Virtual> for Virtual

    source§

    fn eq(&self, _other: &Virtual) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Virtual

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Virtual

    source§

    impl Eq for Virtual

    source§

    impl Token for Virtual

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Virtual

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Virtual

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Virtual

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Virtual

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Virtual

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Virtual

    source§

    fn eq(&self, _other: &Virtual) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Virtual

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Virtual

    source§

    impl Eq for Virtual

    source§

    impl Token for Virtual

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Where.html b/syn/token/struct.Where.html index 2252ae5..bbd1921 100644 --- a/syn/token/struct.Where.html +++ b/syn/token/struct.Where.html @@ -1,24 +1,24 @@ -Where in syn::token - Rust

    Struct syn::token::Where

    source ·
    pub struct Where {
    +Where in syn::token - Rust
    syn::token

    Struct Where

    source
    pub struct Where {
         pub span: Span,
     }
    Expand description

    where

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Where

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Where

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Where

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Where

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Where

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Where> for Where

    source§

    fn eq(&self, _other: &Where) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Where

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Where

    source§

    impl Eq for Where

    source§

    impl Token for Where

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Where

    §

    impl !Send for Where

    §

    impl !Sync for Where

    §

    impl Unpin for Where

    §

    impl UnwindSafe for Where

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Where

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Where

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Where

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Where

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Where

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Where

    source§

    fn eq(&self, _other: &Where) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Where

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Where

    source§

    impl Eq for Where

    source§

    impl Token for Where

    Auto Trait Implementations§

    §

    impl Freeze for Where

    §

    impl RefUnwindSafe for Where

    §

    impl !Send for Where

    §

    impl !Sync for Where

    §

    impl Unpin for Where

    §

    impl UnwindSafe for Where

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.While.html b/syn/token/struct.While.html index a914f97..6d2236c 100644 --- a/syn/token/struct.While.html +++ b/syn/token/struct.While.html @@ -1,24 +1,24 @@ -While in syn::token - Rust

    Struct syn::token::While

    source ·
    pub struct While {
    +While in syn::token - Rust
    syn::token

    Struct While

    source
    pub struct While {
         pub span: Span,
     }
    Expand description

    while

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for While

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for While

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for While

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for While

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for While

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<While> for While

    source§

    fn eq(&self, _other: &While) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for While

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for While

    source§

    impl Eq for While

    source§

    impl Token for While

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for While

    §

    impl !Send for While

    §

    impl !Sync for While

    §

    impl Unpin for While

    §

    impl UnwindSafe for While

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for While

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for While

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for While

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for While

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for While

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for While

    source§

    fn eq(&self, _other: &While) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for While

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for While

    source§

    impl Eq for While

    source§

    impl Token for While

    Auto Trait Implementations§

    §

    impl Freeze for While

    §

    impl RefUnwindSafe for While

    §

    impl !Send for While

    §

    impl !Sync for While

    §

    impl Unpin for While

    §

    impl UnwindSafe for While

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/struct.Yield.html b/syn/token/struct.Yield.html index dc746ad..7c5b32a 100644 --- a/syn/token/struct.Yield.html +++ b/syn/token/struct.Yield.html @@ -1,24 +1,24 @@ -Yield in syn::token - Rust

    Struct syn::token::Yield

    source ·
    pub struct Yield {
    +Yield in syn::token - Rust
    syn::token

    Struct Yield

    source
    pub struct Yield {
         pub span: Span,
     }
    Expand description

    yield

    Don’t try to remember the name of this type — use the Token! macro instead.

    -

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Yield

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Yield

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Yield

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Yield

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Yield

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq<Yield> for Yield

    source§

    fn eq(&self, _other: &Yield) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for Yield

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Yield

    source§

    impl Eq for Yield

    source§

    impl Token for Yield

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Yield

    §

    impl !Send for Yield

    §

    impl !Sync for Yield

    §

    impl Unpin for Yield

    §

    impl UnwindSafe for Yield

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §span: Span

    Trait Implementations§

    source§

    impl Clone for Yield

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Yield

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Yield

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Yield

    source§

    fn hash<H: Hasher>(&self, _state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Parse for Yield

    source§

    fn parse(input: ParseStream<'_>) -> Result<Self>

    source§

    impl PartialEq for Yield

    source§

    fn eq(&self, _other: &Yield) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for Yield

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for Yield

    source§

    impl Eq for Yield

    source§

    impl Token for Yield

    Auto Trait Implementations§

    §

    impl Freeze for Yield

    §

    impl RefUnwindSafe for Yield

    §

    impl !Send for Yield

    §

    impl !Sync for Yield

    §

    impl Unpin for Yield

    §

    impl UnwindSafe for Yield

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/syn/token/trait.Token.html b/syn/token/trait.Token.html index f1369af..57a0319 100644 --- a/syn/token/trait.Token.html +++ b/syn/token/trait.Token.html @@ -1,3 +1,3 @@ -Token in syn::token - Rust

    Trait syn::token::Token

    source ·
    pub trait Token: Sealed { }
    Expand description

    Marker trait for types that represent single tokens.

    +Token in syn::token - Rust
    syn::token

    Trait Token

    source
    pub trait Token: Sealed { }
    Expand description

    Marker trait for types that represent single tokens.

    This trait is sealed and cannot be implemented for types outside of Syn.

    -

    Implementations on Foreign Types§

    source§

    impl Token for Group

    source§

    impl Token for Literal

    source§

    impl Token for TokenTree

    source§

    impl Token for Punct

    Implementors§

    source§

    impl Token for Lit

    source§

    impl Token for Ident

    source§

    impl Token for Lifetime

    source§

    impl Token for LitBool

    source§

    impl Token for LitByte

    source§

    impl Token for LitByteStr

    source§

    impl Token for LitChar

    source§

    impl Token for LitFloat

    source§

    impl Token for LitInt

    source§

    impl Token for LitStr

    source§

    impl Token for Abstract

    source§

    impl Token for Add

    source§

    impl Token for AddEq

    source§

    impl Token for And

    source§

    impl Token for AndAnd

    source§

    impl Token for AndEq

    source§

    impl Token for As

    source§

    impl Token for Async

    source§

    impl Token for At

    source§

    impl Token for Auto

    source§

    impl Token for Await

    source§

    impl Token for Bang

    source§

    impl Token for Become

    source§

    impl Token for Box

    source§

    impl Token for Brace

    source§

    impl Token for Bracket

    source§

    impl Token for Break

    source§

    impl Token for Caret

    source§

    impl Token for CaretEq

    source§

    impl Token for Colon2

    source§

    impl Token for Colon

    source§

    impl Token for Comma

    source§

    impl Token for Const

    source§

    impl Token for Continue

    source§

    impl Token for Crate

    source§

    impl Token for Default

    source§

    impl Token for Div

    source§

    impl Token for DivEq

    source§

    impl Token for Do

    source§

    impl Token for Dollar

    source§

    impl Token for Dot2

    source§

    impl Token for Dot3

    source§

    impl Token for Dot

    source§

    impl Token for DotDotEq

    source§

    impl Token for Dyn

    source§

    impl Token for Else

    source§

    impl Token for Enum

    source§

    impl Token for Eq

    source§

    impl Token for EqEq

    source§

    impl Token for Extern

    source§

    impl Token for FatArrow

    source§

    impl Token for Final

    source§

    impl Token for Fn

    source§

    impl Token for For

    source§

    impl Token for Ge

    source§

    impl Token for syn::token::Group

    source§

    impl Token for Gt

    source§

    impl Token for If

    source§

    impl Token for Impl

    source§

    impl Token for In

    source§

    impl Token for LArrow

    source§

    impl Token for Le

    source§

    impl Token for Let

    source§

    impl Token for Loop

    source§

    impl Token for Lt

    source§

    impl Token for Macro

    source§

    impl Token for Match

    source§

    impl Token for Mod

    source§

    impl Token for Move

    source§

    impl Token for MulEq

    source§

    impl Token for Mut

    source§

    impl Token for Ne

    source§

    impl Token for Or

    source§

    impl Token for OrEq

    source§

    impl Token for OrOr

    source§

    impl Token for Override

    source§

    impl Token for Paren

    source§

    impl Token for Pound

    source§

    impl Token for Priv

    source§

    impl Token for Pub

    source§

    impl Token for Question

    source§

    impl Token for RArrow

    source§

    impl Token for Ref

    source§

    impl Token for Rem

    source§

    impl Token for RemEq

    source§

    impl Token for Return

    source§

    impl Token for SelfType

    source§

    impl Token for SelfValue

    source§

    impl Token for Semi

    source§

    impl Token for Shl

    source§

    impl Token for ShlEq

    source§

    impl Token for Shr

    source§

    impl Token for ShrEq

    source§

    impl Token for Star

    source§

    impl Token for Static

    source§

    impl Token for Struct

    source§

    impl Token for Sub

    source§

    impl Token for SubEq

    source§

    impl Token for Super

    source§

    impl Token for Tilde

    source§

    impl Token for Trait

    source§

    impl Token for Try

    source§

    impl Token for Type

    source§

    impl Token for Typeof

    source§

    impl Token for Underscore

    source§

    impl Token for Union

    source§

    impl Token for Unsafe

    source§

    impl Token for Unsized

    source§

    impl Token for Use

    source§

    impl Token for Virtual

    source§

    impl Token for Where

    source§

    impl Token for While

    source§

    impl Token for Yield

    source§

    impl<T: CustomToken> Token for T

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl Token for TokenTree

    source§

    impl Token for Group

    source§

    impl Token for Literal

    source§

    impl Token for Punct

    Implementors§

    source§

    impl Token for Lit

    source§

    impl Token for Ident

    source§

    impl Token for Lifetime

    source§

    impl Token for LitBool

    source§

    impl Token for LitByte

    source§

    impl Token for LitByteStr

    source§

    impl Token for LitCStr

    source§

    impl Token for LitChar

    source§

    impl Token for LitFloat

    source§

    impl Token for LitInt

    source§

    impl Token for LitStr

    source§

    impl Token for Abstract

    source§

    impl Token for And

    source§

    impl Token for AndAnd

    source§

    impl Token for AndEq

    source§

    impl Token for As

    source§

    impl Token for Async

    source§

    impl Token for At

    source§

    impl Token for Auto

    source§

    impl Token for Await

    source§

    impl Token for Become

    source§

    impl Token for Box

    source§

    impl Token for Brace

    source§

    impl Token for Bracket

    source§

    impl Token for Break

    source§

    impl Token for Caret

    source§

    impl Token for CaretEq

    source§

    impl Token for Colon

    source§

    impl Token for Comma

    source§

    impl Token for Const

    source§

    impl Token for Continue

    source§

    impl Token for Crate

    source§

    impl Token for Default

    source§

    impl Token for Do

    source§

    impl Token for Dollar

    source§

    impl Token for Dot

    source§

    impl Token for DotDot

    source§

    impl Token for DotDotDot

    source§

    impl Token for DotDotEq

    source§

    impl Token for Dyn

    source§

    impl Token for Else

    source§

    impl Token for Enum

    source§

    impl Token for Eq

    source§

    impl Token for EqEq

    source§

    impl Token for Extern

    source§

    impl Token for FatArrow

    source§

    impl Token for Final

    source§

    impl Token for Fn

    source§

    impl Token for For

    source§

    impl Token for Ge

    source§

    impl Token for syn::token::Group

    source§

    impl Token for Gt

    source§

    impl Token for If

    source§

    impl Token for Impl

    source§

    impl Token for In

    source§

    impl Token for LArrow

    source§

    impl Token for Le

    source§

    impl Token for Let

    source§

    impl Token for Loop

    source§

    impl Token for Lt

    source§

    impl Token for Macro

    source§

    impl Token for Match

    source§

    impl Token for Minus

    source§

    impl Token for MinusEq

    source§

    impl Token for Mod

    source§

    impl Token for Move

    source§

    impl Token for Mut

    source§

    impl Token for Ne

    source§

    impl Token for Not

    source§

    impl Token for Or

    source§

    impl Token for OrEq

    source§

    impl Token for OrOr

    source§

    impl Token for Override

    source§

    impl Token for Paren

    source§

    impl Token for PathSep

    source§

    impl Token for Percent

    source§

    impl Token for PercentEq

    source§

    impl Token for Plus

    source§

    impl Token for PlusEq

    source§

    impl Token for Pound

    source§

    impl Token for Priv

    source§

    impl Token for Pub

    source§

    impl Token for Question

    source§

    impl Token for RArrow

    source§

    impl Token for Raw

    source§

    impl Token for Ref

    source§

    impl Token for Return

    source§

    impl Token for SelfType

    source§

    impl Token for SelfValue

    source§

    impl Token for Semi

    source§

    impl Token for Shl

    source§

    impl Token for ShlEq

    source§

    impl Token for Shr

    source§

    impl Token for ShrEq

    source§

    impl Token for Slash

    source§

    impl Token for SlashEq

    source§

    impl Token for Star

    source§

    impl Token for StarEq

    source§

    impl Token for Static

    source§

    impl Token for Struct

    source§

    impl Token for Super

    source§

    impl Token for Tilde

    source§

    impl Token for Trait

    source§

    impl Token for Try

    source§

    impl Token for Type

    source§

    impl Token for Typeof

    source§

    impl Token for Underscore

    source§

    impl Token for Union

    source§

    impl Token for Unsafe

    source§

    impl Token for Unsized

    source§

    impl Token for Use

    source§

    impl Token for Virtual

    source§

    impl Token for Where

    source§

    impl Token for While

    source§

    impl Token for Yield

    source§

    impl<T: CustomToken> Token for T

    \ No newline at end of file diff --git a/syn/ty/struct.BareVariadic.html b/syn/ty/struct.BareVariadic.html new file mode 100644 index 0000000..6ae0055 --- /dev/null +++ b/syn/ty/struct.BareVariadic.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../syn/struct.BareVariadic.html...

    + + + \ No newline at end of file diff --git a/syn/ty/struct.Variadic.html b/syn/ty/struct.Variadic.html deleted file mode 100644 index b3f6c7e..0000000 --- a/syn/ty/struct.Variadic.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

    Redirecting to ../../syn/struct.Variadic.html...

    - - - \ No newline at end of file diff --git a/syn/type.AttributeArgs.html b/syn/type.AttributeArgs.html deleted file mode 100644 index 72248ea..0000000 --- a/syn/type.AttributeArgs.html +++ /dev/null @@ -1,1129 +0,0 @@ -AttributeArgs in syn - Rust

    Type Alias syn::AttributeArgs

    source ·
    pub type AttributeArgs = Vec<NestedMeta>;
    Expand description

    Conventional argument type associated with an invocation of an attribute -macro.

    -

    For example if we are developing an attribute macro that is intended to be -invoked on function items as follows:

    - -
    #[my_attribute(path = "/v1/refresh")]
    -pub fn refresh() {
    -    /* ... */
    -}
    -

    The implementation of this macro would want to parse its attribute arguments -as type AttributeArgs.

    - -
    use proc_macro::TokenStream;
    -use syn::{parse_macro_input, AttributeArgs, ItemFn};
    -
    -#[proc_macro_attribute]
    -pub fn my_attribute(args: TokenStream, input: TokenStream) -> TokenStream {
    -    let args = parse_macro_input!(args as AttributeArgs);
    -    let input = parse_macro_input!(input as ItemFn);
    -
    -    /* ... */
    -}
    -

    Aliased Type§

    struct AttributeArgs { /* private fields */ }

    Methods from Deref<Target = [T]>§

    source

    pub fn as_str(&self) -> &str

    🔬This is a nightly-only experimental API. (ascii_char)

    Views this slice of ASCII characters as a UTF-8 str.

    -
    source

    pub fn as_bytes(&self) -> &[u8]

    🔬This is a nightly-only experimental API. (ascii_char)

    Views this slice of ASCII characters as a slice of u8 bytes.

    -
    1.23.0 · source

    pub fn is_ascii(&self) -> bool

    Checks if all bytes in this slice are within the ASCII range.

    -
    source

    pub fn as_ascii(&self) -> Option<&[AsciiChar]>

    🔬This is a nightly-only experimental API. (ascii_char)

    If this slice is_ascii, returns it as a slice of -ASCII characters, otherwise returns None.

    -
    source

    pub unsafe fn as_ascii_unchecked(&self) -> &[AsciiChar]

    🔬This is a nightly-only experimental API. (ascii_char)

    Converts this slice of bytes into a slice of ASCII characters, -without checking whether they’re valid.

    -
    Safety
    -

    Every byte in the slice must be in 0..=127, or else this is UB.

    -
    1.23.0 · source

    pub fn eq_ignore_ascii_case(&self, other: &[u8]) -> bool

    Checks that two slices are an ASCII case-insensitive match.

    -

    Same as to_ascii_lowercase(a) == to_ascii_lowercase(b), -but without allocating and copying temporaries.

    -
    1.60.0 · source

    pub fn escape_ascii(&self) -> EscapeAscii<'_>

    Returns an iterator that produces an escaped version of this slice, -treating it as an ASCII string.

    -
    Examples
    -
    
    -let s = b"0\t\r\n'\"\\\x9d";
    -let escaped = s.escape_ascii().to_string();
    -assert_eq!(escaped, "0\\t\\r\\n\\'\\\"\\\\\\x9d");
    -
    source

    pub fn trim_ascii_start(&self) -> &[u8]

    🔬This is a nightly-only experimental API. (byte_slice_trim_ascii)

    Returns a byte slice with leading ASCII whitespace bytes removed.

    -

    ‘Whitespace’ refers to the definition used by -u8::is_ascii_whitespace.

    -
    Examples
    -
    #![feature(byte_slice_trim_ascii)]
    -
    -assert_eq!(b" \t hello world\n".trim_ascii_start(), b"hello world\n");
    -assert_eq!(b"  ".trim_ascii_start(), b"");
    -assert_eq!(b"".trim_ascii_start(), b"");
    -
    source

    pub fn trim_ascii_end(&self) -> &[u8]

    🔬This is a nightly-only experimental API. (byte_slice_trim_ascii)

    Returns a byte slice with trailing ASCII whitespace bytes removed.

    -

    ‘Whitespace’ refers to the definition used by -u8::is_ascii_whitespace.

    -
    Examples
    -
    #![feature(byte_slice_trim_ascii)]
    -
    -assert_eq!(b"\r hello world\n ".trim_ascii_end(), b"\r hello world");
    -assert_eq!(b"  ".trim_ascii_end(), b"");
    -assert_eq!(b"".trim_ascii_end(), b"");
    -
    source

    pub fn trim_ascii(&self) -> &[u8]

    🔬This is a nightly-only experimental API. (byte_slice_trim_ascii)

    Returns a byte slice with leading and trailing ASCII whitespace bytes -removed.

    -

    ‘Whitespace’ refers to the definition used by -u8::is_ascii_whitespace.

    -
    Examples
    -
    #![feature(byte_slice_trim_ascii)]
    -
    -assert_eq!(b"\r hello world\n ".trim_ascii(), b"hello world");
    -assert_eq!(b"  ".trim_ascii(), b"");
    -assert_eq!(b"".trim_ascii(), b"");
    -
    source

    pub fn flatten(&self) -> &[T]

    🔬This is a nightly-only experimental API. (slice_flatten)

    Takes a &[[T; N]], and flattens it to a &[T].

    -
    Panics
    -

    This panics if the length of the resulting slice would overflow a usize.

    -

    This is only possible when flattening a slice of arrays of zero-sized -types, and thus tends to be irrelevant in practice. If -size_of::<T>() > 0, this will never panic.

    -
    Examples
    -
    #![feature(slice_flatten)]
    -
    -assert_eq!([[1, 2, 3], [4, 5, 6]].flatten(), &[1, 2, 3, 4, 5, 6]);
    -
    -assert_eq!(
    -    [[1, 2, 3], [4, 5, 6]].flatten(),
    -    [[1, 2], [3, 4], [5, 6]].flatten(),
    -);
    -
    -let slice_of_empty_arrays: &[[i32; 0]] = &[[], [], [], [], []];
    -assert!(slice_of_empty_arrays.flatten().is_empty());
    -
    -let empty_slice_of_arrays: &[[u32; 10]] = &[];
    -assert!(empty_slice_of_arrays.flatten().is_empty());
    -
    1.0.0 · source

    pub fn len(&self) -> usize

    Returns the number of elements in the slice.

    -
    Examples
    -
    let a = [1, 2, 3];
    -assert_eq!(a.len(), 3);
    -
    1.0.0 · source

    pub fn is_empty(&self) -> bool

    Returns true if the slice has a length of 0.

    -
    Examples
    -
    let a = [1, 2, 3];
    -assert!(!a.is_empty());
    -
    1.0.0 · source

    pub fn first(&self) -> Option<&T>

    Returns the first element of the slice, or None if it is empty.

    -
    Examples
    -
    let v = [10, 40, 30];
    -assert_eq!(Some(&10), v.first());
    -
    -let w: &[i32] = &[];
    -assert_eq!(None, w.first());
    -
    1.5.0 · source

    pub fn split_first(&self) -> Option<(&T, &[T])>

    Returns the first and all the rest of the elements of the slice, or None if it is empty.

    -
    Examples
    -
    let x = &[0, 1, 2];
    -
    -if let Some((first, elements)) = x.split_first() {
    -    assert_eq!(first, &0);
    -    assert_eq!(elements, &[1, 2]);
    -}
    -
    1.5.0 · source

    pub fn split_last(&self) -> Option<(&T, &[T])>

    Returns the last and all the rest of the elements of the slice, or None if it is empty.

    -
    Examples
    -
    let x = &[0, 1, 2];
    -
    -if let Some((last, elements)) = x.split_last() {
    -    assert_eq!(last, &2);
    -    assert_eq!(elements, &[0, 1]);
    -}
    -
    1.0.0 · source

    pub fn last(&self) -> Option<&T>

    Returns the last element of the slice, or None if it is empty.

    -
    Examples
    -
    let v = [10, 40, 30];
    -assert_eq!(Some(&30), v.last());
    -
    -let w: &[i32] = &[];
    -assert_eq!(None, w.last());
    -
    source

    pub fn first_chunk<const N: usize>(&self) -> Option<&[T; N]>

    🔬This is a nightly-only experimental API. (slice_first_last_chunk)

    Returns the first N elements of the slice, or None if it has fewer than N elements.

    -
    Examples
    -
    #![feature(slice_first_last_chunk)]
    -
    -let u = [10, 40, 30];
    -assert_eq!(Some(&[10, 40]), u.first_chunk::<2>());
    -
    -let v: &[i32] = &[10];
    -assert_eq!(None, v.first_chunk::<2>());
    -
    -let w: &[i32] = &[];
    -assert_eq!(Some(&[]), w.first_chunk::<0>());
    -
    source

    pub fn split_first_chunk<const N: usize>(&self) -> Option<(&[T; N], &[T])>

    🔬This is a nightly-only experimental API. (slice_first_last_chunk)

    Returns the first N elements of the slice and the remainder, -or None if it has fewer than N elements.

    -
    Examples
    -
    #![feature(slice_first_last_chunk)]
    -
    -let x = &[0, 1, 2];
    -
    -if let Some((first, elements)) = x.split_first_chunk::<2>() {
    -    assert_eq!(first, &[0, 1]);
    -    assert_eq!(elements, &[2]);
    -}
    -
    source

    pub fn split_last_chunk<const N: usize>(&self) -> Option<(&[T; N], &[T])>

    🔬This is a nightly-only experimental API. (slice_first_last_chunk)

    Returns the last N elements of the slice and the remainder, -or None if it has fewer than N elements.

    -
    Examples
    -
    #![feature(slice_first_last_chunk)]
    -
    -let x = &[0, 1, 2];
    -
    -if let Some((last, elements)) = x.split_last_chunk::<2>() {
    -    assert_eq!(last, &[1, 2]);
    -    assert_eq!(elements, &[0]);
    -}
    -
    source

    pub fn last_chunk<const N: usize>(&self) -> Option<&[T; N]>

    🔬This is a nightly-only experimental API. (slice_first_last_chunk)

    Returns the last element of the slice, or None if it is empty.

    -
    Examples
    -
    #![feature(slice_first_last_chunk)]
    -
    -let u = [10, 40, 30];
    -assert_eq!(Some(&[40, 30]), u.last_chunk::<2>());
    -
    -let v: &[i32] = &[10];
    -assert_eq!(None, v.last_chunk::<2>());
    -
    -let w: &[i32] = &[];
    -assert_eq!(Some(&[]), w.last_chunk::<0>());
    -
    1.0.0 · source

    pub fn get<I>(&self, index: I) -> Option<&<I as SliceIndex<[T]>>::Output>where - I: SliceIndex<[T]>,

    Returns a reference to an element or subslice depending on the type of -index.

    -
      -
    • If given a position, returns a reference to the element at that -position or None if out of bounds.
    • -
    • If given a range, returns the subslice corresponding to that range, -or None if out of bounds.
    • -
    -
    Examples
    -
    let v = [10, 40, 30];
    -assert_eq!(Some(&40), v.get(1));
    -assert_eq!(Some(&[10, 40][..]), v.get(0..2));
    -assert_eq!(None, v.get(3));
    -assert_eq!(None, v.get(0..4));
    -
    1.0.0 · source

    pub unsafe fn get_unchecked<I>( - &self, - index: I -) -> &<I as SliceIndex<[T]>>::Outputwhere - I: SliceIndex<[T]>,

    Returns a reference to an element or subslice, without doing bounds -checking.

    -

    For a safe alternative see get.

    -
    Safety
    -

    Calling this method with an out-of-bounds index is undefined behavior -even if the resulting reference is not used.

    -
    Examples
    -
    let x = &[1, 2, 4];
    -
    -unsafe {
    -    assert_eq!(x.get_unchecked(1), &2);
    -}
    -
    1.0.0 · source

    pub fn as_ptr(&self) -> *const T

    Returns a raw pointer to the slice’s buffer.

    -

    The caller must ensure that the slice outlives the pointer this -function returns, or else it will end up pointing to garbage.

    -

    The caller must also ensure that the memory the pointer (non-transitively) points to -is never written to (except inside an UnsafeCell) using this pointer or any pointer -derived from it. If you need to mutate the contents of the slice, use as_mut_ptr.

    -

    Modifying the container referenced by this slice may cause its buffer -to be reallocated, which would also make any pointers to it invalid.

    -
    Examples
    -
    let x = &[1, 2, 4];
    -let x_ptr = x.as_ptr();
    -
    -unsafe {
    -    for i in 0..x.len() {
    -        assert_eq!(x.get_unchecked(i), &*x_ptr.add(i));
    -    }
    -}
    -
    1.48.0 · source

    pub fn as_ptr_range(&self) -> Range<*const T>

    Returns the two raw pointers spanning the slice.

    -

    The returned range is half-open, which means that the end pointer -points one past the last element of the slice. This way, an empty -slice is represented by two equal pointers, and the difference between -the two pointers represents the size of the slice.

    -

    See as_ptr for warnings on using these pointers. The end pointer -requires extra caution, as it does not point to a valid element in the -slice.

    -

    This function is useful for interacting with foreign interfaces which -use two pointers to refer to a range of elements in memory, as is -common in C++.

    -

    It can also be useful to check if a pointer to an element refers to an -element of this slice:

    - -
    let a = [1, 2, 3];
    -let x = &a[1] as *const _;
    -let y = &5 as *const _;
    -
    -assert!(a.as_ptr_range().contains(&x));
    -assert!(!a.as_ptr_range().contains(&y));
    -
    1.0.0 · source

    pub fn iter(&self) -> Iter<'_, T>

    Returns an iterator over the slice.

    -

    The iterator yields all items from start to end.

    -
    Examples
    -
    let x = &[1, 2, 4];
    -let mut iterator = x.iter();
    -
    -assert_eq!(iterator.next(), Some(&1));
    -assert_eq!(iterator.next(), Some(&2));
    -assert_eq!(iterator.next(), Some(&4));
    -assert_eq!(iterator.next(), None);
    -
    1.0.0 · source

    pub fn windows(&self, size: usize) -> Windows<'_, T>

    Returns an iterator over all contiguous windows of length -size. The windows overlap. If the slice is shorter than -size, the iterator returns no values.

    -
    Panics
    -

    Panics if size is 0.

    -
    Examples
    -
    let slice = ['r', 'u', 's', 't'];
    -let mut iter = slice.windows(2);
    -assert_eq!(iter.next().unwrap(), &['r', 'u']);
    -assert_eq!(iter.next().unwrap(), &['u', 's']);
    -assert_eq!(iter.next().unwrap(), &['s', 't']);
    -assert!(iter.next().is_none());
    -

    If the slice is shorter than size:

    - -
    let slice = ['f', 'o', 'o'];
    -let mut iter = slice.windows(4);
    -assert!(iter.next().is_none());
    -

    There’s no windows_mut, as that existing would let safe code violate the -“only one &mut at a time to the same thing” rule. However, you can sometimes -use Cell::as_slice_of_cells in -conjunction with windows to accomplish something similar:

    - -
    use std::cell::Cell;
    -
    -let mut array = ['R', 'u', 's', 't', ' ', '2', '0', '1', '5'];
    -let slice = &mut array[..];
    -let slice_of_cells: &[Cell<char>] = Cell::from_mut(slice).as_slice_of_cells();
    -for w in slice_of_cells.windows(3) {
    -    Cell::swap(&w[0], &w[2]);
    -}
    -assert_eq!(array, ['s', 't', ' ', '2', '0', '1', '5', 'u', 'R']);
    -
    1.0.0 · source

    pub fn chunks(&self, chunk_size: usize) -> Chunks<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the -beginning of the slice.

    -

    The chunks are slices and do not overlap. If chunk_size does not divide the length of the -slice, then the last chunk will not have length chunk_size.

    -

    See chunks_exact for a variant of this iterator that returns chunks of always exactly -chunk_size elements, and rchunks for the same iterator but starting at the end of the -slice.

    -
    Panics
    -

    Panics if chunk_size is 0.

    -
    Examples
    -
    let slice = ['l', 'o', 'r', 'e', 'm'];
    -let mut iter = slice.chunks(2);
    -assert_eq!(iter.next().unwrap(), &['l', 'o']);
    -assert_eq!(iter.next().unwrap(), &['r', 'e']);
    -assert_eq!(iter.next().unwrap(), &['m']);
    -assert!(iter.next().is_none());
    -
    1.31.0 · source

    pub fn chunks_exact(&self, chunk_size: usize) -> ChunksExact<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the -beginning of the slice.

    -

    The chunks are slices and do not overlap. If chunk_size does not divide the length of the -slice, then the last up to chunk_size-1 elements will be omitted and can be retrieved -from the remainder function of the iterator.

    -

    Due to each chunk having exactly chunk_size elements, the compiler can often optimize the -resulting code better than in the case of chunks.

    -

    See chunks for a variant of this iterator that also returns the remainder as a smaller -chunk, and rchunks_exact for the same iterator but starting at the end of the slice.

    -
    Panics
    -

    Panics if chunk_size is 0.

    -
    Examples
    -
    let slice = ['l', 'o', 'r', 'e', 'm'];
    -let mut iter = slice.chunks_exact(2);
    -assert_eq!(iter.next().unwrap(), &['l', 'o']);
    -assert_eq!(iter.next().unwrap(), &['r', 'e']);
    -assert!(iter.next().is_none());
    -assert_eq!(iter.remainder(), &['m']);
    -
    source

    pub unsafe fn as_chunks_unchecked<const N: usize>(&self) -> &[[T; N]]

    🔬This is a nightly-only experimental API. (slice_as_chunks)

    Splits the slice into a slice of N-element arrays, -assuming that there’s no remainder.

    -
    Safety
    -

    This may only be called when

    -
      -
    • The slice splits exactly into N-element chunks (aka self.len() % N == 0).
    • -
    • N != 0.
    • -
    -
    Examples
    -
    #![feature(slice_as_chunks)]
    -let slice: &[char] = &['l', 'o', 'r', 'e', 'm', '!'];
    -let chunks: &[[char; 1]] =
    -    // SAFETY: 1-element chunks never have remainder
    -    unsafe { slice.as_chunks_unchecked() };
    -assert_eq!(chunks, &[['l'], ['o'], ['r'], ['e'], ['m'], ['!']]);
    -let chunks: &[[char; 3]] =
    -    // SAFETY: The slice length (6) is a multiple of 3
    -    unsafe { slice.as_chunks_unchecked() };
    -assert_eq!(chunks, &[['l', 'o', 'r'], ['e', 'm', '!']]);
    -
    -// These would be unsound:
    -// let chunks: &[[_; 5]] = slice.as_chunks_unchecked() // The slice length is not a multiple of 5
    -// let chunks: &[[_; 0]] = slice.as_chunks_unchecked() // Zero-length chunks are never allowed
    -
    source

    pub fn as_chunks<const N: usize>(&self) -> (&[[T; N]], &[T])

    🔬This is a nightly-only experimental API. (slice_as_chunks)

    Splits the slice into a slice of N-element arrays, -starting at the beginning of the slice, -and a remainder slice with length strictly less than N.

    -
    Panics
    -

    Panics if N is 0. This check will most probably get changed to a compile time -error before this method gets stabilized.

    -
    Examples
    -
    #![feature(slice_as_chunks)]
    -let slice = ['l', 'o', 'r', 'e', 'm'];
    -let (chunks, remainder) = slice.as_chunks();
    -assert_eq!(chunks, &[['l', 'o'], ['r', 'e']]);
    -assert_eq!(remainder, &['m']);
    -

    If you expect the slice to be an exact multiple, you can combine -let-else with an empty slice pattern:

    - -
    #![feature(slice_as_chunks)]
    -let slice = ['R', 'u', 's', 't'];
    -let (chunks, []) = slice.as_chunks::<2>() else {
    -    panic!("slice didn't have even length")
    -};
    -assert_eq!(chunks, &[['R', 'u'], ['s', 't']]);
    -
    source

    pub fn as_rchunks<const N: usize>(&self) -> (&[T], &[[T; N]])

    🔬This is a nightly-only experimental API. (slice_as_chunks)

    Splits the slice into a slice of N-element arrays, -starting at the end of the slice, -and a remainder slice with length strictly less than N.

    -
    Panics
    -

    Panics if N is 0. This check will most probably get changed to a compile time -error before this method gets stabilized.

    -
    Examples
    -
    #![feature(slice_as_chunks)]
    -let slice = ['l', 'o', 'r', 'e', 'm'];
    -let (remainder, chunks) = slice.as_rchunks();
    -assert_eq!(remainder, &['l']);
    -assert_eq!(chunks, &[['o', 'r'], ['e', 'm']]);
    -
    source

    pub fn array_chunks<const N: usize>(&self) -> ArrayChunks<'_, T, N>

    🔬This is a nightly-only experimental API. (array_chunks)

    Returns an iterator over N elements of the slice at a time, starting at the -beginning of the slice.

    -

    The chunks are array references and do not overlap. If N does not divide the -length of the slice, then the last up to N-1 elements will be omitted and can be -retrieved from the remainder function of the iterator.

    -

    This method is the const generic equivalent of chunks_exact.

    -
    Panics
    -

    Panics if N is 0. This check will most probably get changed to a compile time -error before this method gets stabilized.

    -
    Examples
    -
    #![feature(array_chunks)]
    -let slice = ['l', 'o', 'r', 'e', 'm'];
    -let mut iter = slice.array_chunks();
    -assert_eq!(iter.next().unwrap(), &['l', 'o']);
    -assert_eq!(iter.next().unwrap(), &['r', 'e']);
    -assert!(iter.next().is_none());
    -assert_eq!(iter.remainder(), &['m']);
    -
    source

    pub fn array_windows<const N: usize>(&self) -> ArrayWindows<'_, T, N>

    🔬This is a nightly-only experimental API. (array_windows)

    Returns an iterator over overlapping windows of N elements of a slice, -starting at the beginning of the slice.

    -

    This is the const generic equivalent of windows.

    -

    If N is greater than the size of the slice, it will return no windows.

    -
    Panics
    -

    Panics if N is 0. This check will most probably get changed to a compile time -error before this method gets stabilized.

    -
    Examples
    -
    #![feature(array_windows)]
    -let slice = [0, 1, 2, 3];
    -let mut iter = slice.array_windows();
    -assert_eq!(iter.next().unwrap(), &[0, 1]);
    -assert_eq!(iter.next().unwrap(), &[1, 2]);
    -assert_eq!(iter.next().unwrap(), &[2, 3]);
    -assert!(iter.next().is_none());
    -
    1.31.0 · source

    pub fn rchunks(&self, chunk_size: usize) -> RChunks<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the end -of the slice.

    -

    The chunks are slices and do not overlap. If chunk_size does not divide the length of the -slice, then the last chunk will not have length chunk_size.

    -

    See rchunks_exact for a variant of this iterator that returns chunks of always exactly -chunk_size elements, and chunks for the same iterator but starting at the beginning -of the slice.

    -
    Panics
    -

    Panics if chunk_size is 0.

    -
    Examples
    -
    let slice = ['l', 'o', 'r', 'e', 'm'];
    -let mut iter = slice.rchunks(2);
    -assert_eq!(iter.next().unwrap(), &['e', 'm']);
    -assert_eq!(iter.next().unwrap(), &['o', 'r']);
    -assert_eq!(iter.next().unwrap(), &['l']);
    -assert!(iter.next().is_none());
    -
    1.31.0 · source

    pub fn rchunks_exact(&self, chunk_size: usize) -> RChunksExact<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the -end of the slice.

    -

    The chunks are slices and do not overlap. If chunk_size does not divide the length of the -slice, then the last up to chunk_size-1 elements will be omitted and can be retrieved -from the remainder function of the iterator.

    -

    Due to each chunk having exactly chunk_size elements, the compiler can often optimize the -resulting code better than in the case of rchunks.

    -

    See rchunks for a variant of this iterator that also returns the remainder as a smaller -chunk, and chunks_exact for the same iterator but starting at the beginning of the -slice.

    -
    Panics
    -

    Panics if chunk_size is 0.

    -
    Examples
    -
    let slice = ['l', 'o', 'r', 'e', 'm'];
    -let mut iter = slice.rchunks_exact(2);
    -assert_eq!(iter.next().unwrap(), &['e', 'm']);
    -assert_eq!(iter.next().unwrap(), &['o', 'r']);
    -assert!(iter.next().is_none());
    -assert_eq!(iter.remainder(), &['l']);
    -
    source

    pub fn group_by<F>(&self, pred: F) -> GroupBy<'_, T, F>where - F: FnMut(&T, &T) -> bool,

    🔬This is a nightly-only experimental API. (slice_group_by)

    Returns an iterator over the slice producing non-overlapping runs -of elements using the predicate to separate them.

    -

    The predicate is called on two elements following themselves, -it means the predicate is called on slice[0] and slice[1] -then on slice[1] and slice[2] and so on.

    -
    Examples
    -
    #![feature(slice_group_by)]
    -
    -let slice = &[1, 1, 1, 3, 3, 2, 2, 2];
    -
    -let mut iter = slice.group_by(|a, b| a == b);
    -
    -assert_eq!(iter.next(), Some(&[1, 1, 1][..]));
    -assert_eq!(iter.next(), Some(&[3, 3][..]));
    -assert_eq!(iter.next(), Some(&[2, 2, 2][..]));
    -assert_eq!(iter.next(), None);
    -

    This method can be used to extract the sorted subslices:

    - -
    #![feature(slice_group_by)]
    -
    -let slice = &[1, 1, 2, 3, 2, 3, 2, 3, 4];
    -
    -let mut iter = slice.group_by(|a, b| a <= b);
    -
    -assert_eq!(iter.next(), Some(&[1, 1, 2, 3][..]));
    -assert_eq!(iter.next(), Some(&[2, 3][..]));
    -assert_eq!(iter.next(), Some(&[2, 3, 4][..]));
    -assert_eq!(iter.next(), None);
    -
    1.0.0 · source

    pub fn split_at(&self, mid: usize) -> (&[T], &[T])

    Divides one slice into two at an index.

    -

    The first will contain all indices from [0, mid) (excluding -the index mid itself) and the second will contain all -indices from [mid, len) (excluding the index len itself).

    -
    Panics
    -

    Panics if mid > len.

    -
    Examples
    -
    let v = [1, 2, 3, 4, 5, 6];
    -
    -{
    -   let (left, right) = v.split_at(0);
    -   assert_eq!(left, []);
    -   assert_eq!(right, [1, 2, 3, 4, 5, 6]);
    -}
    -
    -{
    -    let (left, right) = v.split_at(2);
    -    assert_eq!(left, [1, 2]);
    -    assert_eq!(right, [3, 4, 5, 6]);
    -}
    -
    -{
    -    let (left, right) = v.split_at(6);
    -    assert_eq!(left, [1, 2, 3, 4, 5, 6]);
    -    assert_eq!(right, []);
    -}
    -
    source

    pub unsafe fn split_at_unchecked(&self, mid: usize) -> (&[T], &[T])

    🔬This is a nightly-only experimental API. (slice_split_at_unchecked)

    Divides one slice into two at an index, without doing bounds checking.

    -

    The first will contain all indices from [0, mid) (excluding -the index mid itself) and the second will contain all -indices from [mid, len) (excluding the index len itself).

    -

    For a safe alternative see split_at.

    -
    Safety
    -

    Calling this method with an out-of-bounds index is undefined behavior -even if the resulting reference is not used. The caller has to ensure that -0 <= mid <= self.len().

    -
    Examples
    -
    #![feature(slice_split_at_unchecked)]
    -
    -let v = [1, 2, 3, 4, 5, 6];
    -
    -unsafe {
    -   let (left, right) = v.split_at_unchecked(0);
    -   assert_eq!(left, []);
    -   assert_eq!(right, [1, 2, 3, 4, 5, 6]);
    -}
    -
    -unsafe {
    -    let (left, right) = v.split_at_unchecked(2);
    -    assert_eq!(left, [1, 2]);
    -    assert_eq!(right, [3, 4, 5, 6]);
    -}
    -
    -unsafe {
    -    let (left, right) = v.split_at_unchecked(6);
    -    assert_eq!(left, [1, 2, 3, 4, 5, 6]);
    -    assert_eq!(right, []);
    -}
    -
    source

    pub fn split_array_ref<const N: usize>(&self) -> (&[T; N], &[T])

    🔬This is a nightly-only experimental API. (split_array)

    Divides one slice into an array and a remainder slice at an index.

    -

    The array will contain all indices from [0, N) (excluding -the index N itself) and the slice will contain all -indices from [N, len) (excluding the index len itself).

    -
    Panics
    -

    Panics if N > len.

    -
    Examples
    -
    #![feature(split_array)]
    -
    -let v = &[1, 2, 3, 4, 5, 6][..];
    -
    -{
    -   let (left, right) = v.split_array_ref::<0>();
    -   assert_eq!(left, &[]);
    -   assert_eq!(right, [1, 2, 3, 4, 5, 6]);
    -}
    -
    -{
    -    let (left, right) = v.split_array_ref::<2>();
    -    assert_eq!(left, &[1, 2]);
    -    assert_eq!(right, [3, 4, 5, 6]);
    -}
    -
    -{
    -    let (left, right) = v.split_array_ref::<6>();
    -    assert_eq!(left, &[1, 2, 3, 4, 5, 6]);
    -    assert_eq!(right, []);
    -}
    -
    source

    pub fn rsplit_array_ref<const N: usize>(&self) -> (&[T], &[T; N])

    🔬This is a nightly-only experimental API. (split_array)

    Divides one slice into an array and a remainder slice at an index from -the end.

    -

    The slice will contain all indices from [0, len - N) (excluding -the index len - N itself) and the array will contain all -indices from [len - N, len) (excluding the index len itself).

    -
    Panics
    -

    Panics if N > len.

    -
    Examples
    -
    #![feature(split_array)]
    -
    -let v = &[1, 2, 3, 4, 5, 6][..];
    -
    -{
    -   let (left, right) = v.rsplit_array_ref::<0>();
    -   assert_eq!(left, [1, 2, 3, 4, 5, 6]);
    -   assert_eq!(right, &[]);
    -}
    -
    -{
    -    let (left, right) = v.rsplit_array_ref::<2>();
    -    assert_eq!(left, [1, 2, 3, 4]);
    -    assert_eq!(right, &[5, 6]);
    -}
    -
    -{
    -    let (left, right) = v.rsplit_array_ref::<6>();
    -    assert_eq!(left, []);
    -    assert_eq!(right, &[1, 2, 3, 4, 5, 6]);
    -}
    -
    1.0.0 · source

    pub fn split<F>(&self, pred: F) -> Split<'_, T, F>where - F: FnMut(&T) -> bool,

    Returns an iterator over subslices separated by elements that match -pred. The matched element is not contained in the subslices.

    -
    Examples
    -
    let slice = [10, 40, 33, 20];
    -let mut iter = slice.split(|num| num % 3 == 0);
    -
    -assert_eq!(iter.next().unwrap(), &[10, 40]);
    -assert_eq!(iter.next().unwrap(), &[20]);
    -assert!(iter.next().is_none());
    -

    If the first element is matched, an empty slice will be the first item -returned by the iterator. Similarly, if the last element in the slice -is matched, an empty slice will be the last item returned by the -iterator:

    - -
    let slice = [10, 40, 33];
    -let mut iter = slice.split(|num| num % 3 == 0);
    -
    -assert_eq!(iter.next().unwrap(), &[10, 40]);
    -assert_eq!(iter.next().unwrap(), &[]);
    -assert!(iter.next().is_none());
    -

    If two matched elements are directly adjacent, an empty slice will be -present between them:

    - -
    let slice = [10, 6, 33, 20];
    -let mut iter = slice.split(|num| num % 3 == 0);
    -
    -assert_eq!(iter.next().unwrap(), &[10]);
    -assert_eq!(iter.next().unwrap(), &[]);
    -assert_eq!(iter.next().unwrap(), &[20]);
    -assert!(iter.next().is_none());
    -
    1.51.0 · source

    pub fn split_inclusive<F>(&self, pred: F) -> SplitInclusive<'_, T, F>where - F: FnMut(&T) -> bool,

    Returns an iterator over subslices separated by elements that match -pred. The matched element is contained in the end of the previous -subslice as a terminator.

    -
    Examples
    -
    let slice = [10, 40, 33, 20];
    -let mut iter = slice.split_inclusive(|num| num % 3 == 0);
    -
    -assert_eq!(iter.next().unwrap(), &[10, 40, 33]);
    -assert_eq!(iter.next().unwrap(), &[20]);
    -assert!(iter.next().is_none());
    -

    If the last element of the slice is matched, -that element will be considered the terminator of the preceding slice. -That slice will be the last item returned by the iterator.

    - -
    let slice = [3, 10, 40, 33];
    -let mut iter = slice.split_inclusive(|num| num % 3 == 0);
    -
    -assert_eq!(iter.next().unwrap(), &[3]);
    -assert_eq!(iter.next().unwrap(), &[10, 40, 33]);
    -assert!(iter.next().is_none());
    -
    1.27.0 · source

    pub fn rsplit<F>(&self, pred: F) -> RSplit<'_, T, F>where - F: FnMut(&T) -> bool,

    Returns an iterator over subslices separated by elements that match -pred, starting at the end of the slice and working backwards. -The matched element is not contained in the subslices.

    -
    Examples
    -
    let slice = [11, 22, 33, 0, 44, 55];
    -let mut iter = slice.rsplit(|num| *num == 0);
    -
    -assert_eq!(iter.next().unwrap(), &[44, 55]);
    -assert_eq!(iter.next().unwrap(), &[11, 22, 33]);
    -assert_eq!(iter.next(), None);
    -

    As with split(), if the first or last element is matched, an empty -slice will be the first (or last) item returned by the iterator.

    - -
    let v = &[0, 1, 1, 2, 3, 5, 8];
    -let mut it = v.rsplit(|n| *n % 2 == 0);
    -assert_eq!(it.next().unwrap(), &[]);
    -assert_eq!(it.next().unwrap(), &[3, 5]);
    -assert_eq!(it.next().unwrap(), &[1, 1]);
    -assert_eq!(it.next().unwrap(), &[]);
    -assert_eq!(it.next(), None);
    -
    1.0.0 · source

    pub fn splitn<F>(&self, n: usize, pred: F) -> SplitN<'_, T, F>where - F: FnMut(&T) -> bool,

    Returns an iterator over subslices separated by elements that match -pred, limited to returning at most n items. The matched element is -not contained in the subslices.

    -

    The last element returned, if any, will contain the remainder of the -slice.

    -
    Examples
    -

    Print the slice split once by numbers divisible by 3 (i.e., [10, 40], -[20, 60, 50]):

    - -
    let v = [10, 40, 30, 20, 60, 50];
    -
    -for group in v.splitn(2, |num| *num % 3 == 0) {
    -    println!("{group:?}");
    -}
    -
    1.0.0 · source

    pub fn rsplitn<F>(&self, n: usize, pred: F) -> RSplitN<'_, T, F>where - F: FnMut(&T) -> bool,

    Returns an iterator over subslices separated by elements that match -pred limited to returning at most n items. This starts at the end of -the slice and works backwards. The matched element is not contained in -the subslices.

    -

    The last element returned, if any, will contain the remainder of the -slice.

    -
    Examples
    -

    Print the slice split once, starting from the end, by numbers divisible -by 3 (i.e., [50], [10, 40, 30, 20]):

    - -
    let v = [10, 40, 30, 20, 60, 50];
    -
    -for group in v.rsplitn(2, |num| *num % 3 == 0) {
    -    println!("{group:?}");
    -}
    -
    1.0.0 · source

    pub fn contains(&self, x: &T) -> boolwhere - T: PartialEq<T>,

    Returns true if the slice contains an element with the given value.

    -

    This operation is O(n).

    -

    Note that if you have a sorted slice, binary_search may be faster.

    -
    Examples
    -
    let v = [10, 40, 30];
    -assert!(v.contains(&30));
    -assert!(!v.contains(&50));
    -

    If you do not have a &T, but some other value that you can compare -with one (for example, String implements PartialEq<str>), you can -use iter().any:

    - -
    let v = [String::from("hello"), String::from("world")]; // slice of `String`
    -assert!(v.iter().any(|e| e == "hello")); // search with `&str`
    -assert!(!v.iter().any(|e| e == "hi"));
    -
    1.0.0 · source

    pub fn starts_with(&self, needle: &[T]) -> boolwhere - T: PartialEq<T>,

    Returns true if needle is a prefix of the slice.

    -
    Examples
    -
    let v = [10, 40, 30];
    -assert!(v.starts_with(&[10]));
    -assert!(v.starts_with(&[10, 40]));
    -assert!(!v.starts_with(&[50]));
    -assert!(!v.starts_with(&[10, 50]));
    -

    Always returns true if needle is an empty slice:

    - -
    let v = &[10, 40, 30];
    -assert!(v.starts_with(&[]));
    -let v: &[u8] = &[];
    -assert!(v.starts_with(&[]));
    -
    1.0.0 · source

    pub fn ends_with(&self, needle: &[T]) -> boolwhere - T: PartialEq<T>,

    Returns true if needle is a suffix of the slice.

    -
    Examples
    -
    let v = [10, 40, 30];
    -assert!(v.ends_with(&[30]));
    -assert!(v.ends_with(&[40, 30]));
    -assert!(!v.ends_with(&[50]));
    -assert!(!v.ends_with(&[50, 30]));
    -

    Always returns true if needle is an empty slice:

    - -
    let v = &[10, 40, 30];
    -assert!(v.ends_with(&[]));
    -let v: &[u8] = &[];
    -assert!(v.ends_with(&[]));
    -
    1.51.0 · source

    pub fn strip_prefix<P>(&self, prefix: &P) -> Option<&[T]>where - P: SlicePattern<Item = T> + ?Sized, - T: PartialEq<T>,

    Returns a subslice with the prefix removed.

    -

    If the slice starts with prefix, returns the subslice after the prefix, wrapped in Some. -If prefix is empty, simply returns the original slice.

    -

    If the slice does not start with prefix, returns None.

    -
    Examples
    -
    let v = &[10, 40, 30];
    -assert_eq!(v.strip_prefix(&[10]), Some(&[40, 30][..]));
    -assert_eq!(v.strip_prefix(&[10, 40]), Some(&[30][..]));
    -assert_eq!(v.strip_prefix(&[50]), None);
    -assert_eq!(v.strip_prefix(&[10, 50]), None);
    -
    -let prefix : &str = "he";
    -assert_eq!(b"hello".strip_prefix(prefix.as_bytes()),
    -           Some(b"llo".as_ref()));
    -
    1.51.0 · source

    pub fn strip_suffix<P>(&self, suffix: &P) -> Option<&[T]>where - P: SlicePattern<Item = T> + ?Sized, - T: PartialEq<T>,

    Returns a subslice with the suffix removed.

    -

    If the slice ends with suffix, returns the subslice before the suffix, wrapped in Some. -If suffix is empty, simply returns the original slice.

    -

    If the slice does not end with suffix, returns None.

    -
    Examples
    -
    let v = &[10, 40, 30];
    -assert_eq!(v.strip_suffix(&[30]), Some(&[10, 40][..]));
    -assert_eq!(v.strip_suffix(&[40, 30]), Some(&[10][..]));
    -assert_eq!(v.strip_suffix(&[50]), None);
    -assert_eq!(v.strip_suffix(&[50, 30]), None);
    -

    Binary searches this slice for a given element. -If the slice is not sorted, the returned result is unspecified and -meaningless.

    -

    If the value is found then Result::Ok is returned, containing the -index of the matching element. If there are multiple matches, then any -one of the matches could be returned. The index is chosen -deterministically, but is subject to change in future versions of Rust. -If the value is not found then Result::Err is returned, containing -the index where a matching element could be inserted while maintaining -sorted order.

    -

    See also binary_search_by, binary_search_by_key, and partition_point.

    -
    Examples
    -

    Looks up a series of four elements. The first is found, with a -uniquely determined position; the second and third are not -found; the fourth could match any position in [1, 4].

    - -
    let s = [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55];
    -
    -assert_eq!(s.binary_search(&13),  Ok(9));
    -assert_eq!(s.binary_search(&4),   Err(7));
    -assert_eq!(s.binary_search(&100), Err(13));
    -let r = s.binary_search(&1);
    -assert!(match r { Ok(1..=4) => true, _ => false, });
    -

    If you want to find that whole range of matching items, rather than -an arbitrary matching one, that can be done using partition_point:

    - -
    let s = [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55];
    -
    -let low = s.partition_point(|x| x < &1);
    -assert_eq!(low, 1);
    -let high = s.partition_point(|x| x <= &1);
    -assert_eq!(high, 5);
    -let r = s.binary_search(&1);
    -assert!((low..high).contains(&r.unwrap()));
    -
    -assert!(s[..low].iter().all(|&x| x < 1));
    -assert!(s[low..high].iter().all(|&x| x == 1));
    -assert!(s[high..].iter().all(|&x| x > 1));
    -
    -// For something not found, the "range" of equal items is empty
    -assert_eq!(s.partition_point(|x| x < &11), 9);
    -assert_eq!(s.partition_point(|x| x <= &11), 9);
    -assert_eq!(s.binary_search(&11), Err(9));
    -

    If you want to insert an item to a sorted vector, while maintaining -sort order, consider using partition_point:

    - -
    let mut s = vec![0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55];
    -let num = 42;
    -let idx = s.partition_point(|&x| x < num);
    -// The above is equivalent to `let idx = s.binary_search(&num).unwrap_or_else(|x| x);`
    -s.insert(idx, num);
    -assert_eq!(s, [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 42, 55]);
    -
    1.0.0 · source

    pub fn binary_search_by<'a, F>(&'a self, f: F) -> Result<usize, usize>where - F: FnMut(&'a T) -> Ordering,

    Binary searches this slice with a comparator function.

    -

    The comparator function should return an order code that indicates -whether its argument is Less, Equal or Greater the desired -target. -If the slice is not sorted or if the comparator function does not -implement an order consistent with the sort order of the underlying -slice, the returned result is unspecified and meaningless.

    -

    If the value is found then Result::Ok is returned, containing the -index of the matching element. If there are multiple matches, then any -one of the matches could be returned. The index is chosen -deterministically, but is subject to change in future versions of Rust. -If the value is not found then Result::Err is returned, containing -the index where a matching element could be inserted while maintaining -sorted order.

    -

    See also binary_search, binary_search_by_key, and partition_point.

    -
    Examples
    -

    Looks up a series of four elements. The first is found, with a -uniquely determined position; the second and third are not -found; the fourth could match any position in [1, 4].

    - -
    let s = [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55];
    -
    -let seek = 13;
    -assert_eq!(s.binary_search_by(|probe| probe.cmp(&seek)), Ok(9));
    -let seek = 4;
    -assert_eq!(s.binary_search_by(|probe| probe.cmp(&seek)), Err(7));
    -let seek = 100;
    -assert_eq!(s.binary_search_by(|probe| probe.cmp(&seek)), Err(13));
    -let seek = 1;
    -let r = s.binary_search_by(|probe| probe.cmp(&seek));
    -assert!(match r { Ok(1..=4) => true, _ => false, });
    -
    1.10.0 · source

    pub fn binary_search_by_key<'a, B, F>( - &'a self, - b: &B, - f: F -) -> Result<usize, usize>where - F: FnMut(&'a T) -> B, - B: Ord,

    Binary searches this slice with a key extraction function.

    -

    Assumes that the slice is sorted by the key, for instance with -sort_by_key using the same key extraction function. -If the slice is not sorted by the key, the returned result is -unspecified and meaningless.

    -

    If the value is found then Result::Ok is returned, containing the -index of the matching element. If there are multiple matches, then any -one of the matches could be returned. The index is chosen -deterministically, but is subject to change in future versions of Rust. -If the value is not found then Result::Err is returned, containing -the index where a matching element could be inserted while maintaining -sorted order.

    -

    See also binary_search, binary_search_by, and partition_point.

    -
    Examples
    -

    Looks up a series of four elements in a slice of pairs sorted by -their second elements. The first is found, with a uniquely -determined position; the second and third are not found; the -fourth could match any position in [1, 4].

    - -
    let s = [(0, 0), (2, 1), (4, 1), (5, 1), (3, 1),
    -         (1, 2), (2, 3), (4, 5), (5, 8), (3, 13),
    -         (1, 21), (2, 34), (4, 55)];
    -
    -assert_eq!(s.binary_search_by_key(&13, |&(a, b)| b),  Ok(9));
    -assert_eq!(s.binary_search_by_key(&4, |&(a, b)| b),   Err(7));
    -assert_eq!(s.binary_search_by_key(&100, |&(a, b)| b), Err(13));
    -let r = s.binary_search_by_key(&1, |&(a, b)| b);
    -assert!(match r { Ok(1..=4) => true, _ => false, });
    -
    1.30.0 · source

    pub unsafe fn align_to<U>(&self) -> (&[T], &[U], &[T])

    Transmute the slice to a slice of another type, ensuring alignment of the types is -maintained.

    -

    This method splits the slice into three distinct slices: prefix, correctly aligned middle -slice of a new type, and the suffix slice. How exactly the slice is split up is not -specified; the middle part may be smaller than necessary. However, if this fails to return a -maximal middle part, that is because code is running in a context where performance does not -matter, such as a sanitizer attempting to find alignment bugs. Regular code running -in a default (debug or release) execution will return a maximal middle part.

    -

    This method has no purpose when either input element T or output element U are -zero-sized and will return the original slice without splitting anything.

    -
    Safety
    -

    This method is essentially a transmute with respect to the elements in the returned -middle slice, so all the usual caveats pertaining to transmute::<T, U> also apply here.

    -
    Examples
    -

    Basic usage:

    - -
    unsafe {
    -    let bytes: [u8; 7] = [1, 2, 3, 4, 5, 6, 7];
    -    let (prefix, shorts, suffix) = bytes.align_to::<u16>();
    -    // less_efficient_algorithm_for_bytes(prefix);
    -    // more_efficient_algorithm_for_aligned_shorts(shorts);
    -    // less_efficient_algorithm_for_bytes(suffix);
    -}
    -
    source

    pub fn as_simd<const LANES: usize>(&self) -> (&[T], &[Simd<T, LANES>], &[T])where - Simd<T, LANES>: AsRef<[T; LANES]>, - T: SimdElement, - LaneCount<LANES>: SupportedLaneCount,

    🔬This is a nightly-only experimental API. (portable_simd)

    Split a slice into a prefix, a middle of aligned SIMD types, and a suffix.

    -

    This is a safe wrapper around slice::align_to, so has the same weak -postconditions as that method. You’re only assured that -self.len() == prefix.len() + middle.len() * LANES + suffix.len().

    -

    Notably, all of the following are possible:

    -
      -
    • prefix.len() >= LANES.
    • -
    • middle.is_empty() despite self.len() >= 3 * LANES.
    • -
    • suffix.len() >= LANES.
    • -
    -

    That said, this is a safe method, so if you’re only writing safe code, -then this can at most cause incorrect logic, not unsoundness.

    -
    Panics
    -

    This will panic if the size of the SIMD type is different from -LANES times that of the scalar.

    -

    At the time of writing, the trait restrictions on Simd<T, LANES> keeps -that from ever happening, as only power-of-two numbers of lanes are -supported. It’s possible that, in the future, those restrictions might -be lifted in a way that would make it possible to see panics from this -method for something like LANES == 3.

    -
    Examples
    -
    #![feature(portable_simd)]
    -use core::simd::SimdFloat;
    -
    -let short = &[1, 2, 3];
    -let (prefix, middle, suffix) = short.as_simd::<4>();
    -assert_eq!(middle, []); // Not enough elements for anything in the middle
    -
    -// They might be split in any possible way between prefix and suffix
    -let it = prefix.iter().chain(suffix).copied();
    -assert_eq!(it.collect::<Vec<_>>(), vec![1, 2, 3]);
    -
    -fn basic_simd_sum(x: &[f32]) -> f32 {
    -    use std::ops::Add;
    -    use std::simd::f32x4;
    -    let (prefix, middle, suffix) = x.as_simd();
    -    let sums = f32x4::from_array([
    -        prefix.iter().copied().sum(),
    -        0.0,
    -        0.0,
    -        suffix.iter().copied().sum(),
    -    ]);
    -    let sums = middle.iter().copied().fold(sums, f32x4::add);
    -    sums.reduce_sum()
    -}
    -
    -let numbers: Vec<f32> = (1..101).map(|x| x as _).collect();
    -assert_eq!(basic_simd_sum(&numbers[1..99]), 4949.0);
    -
    source

    pub fn is_sorted(&self) -> boolwhere - T: PartialOrd<T>,

    🔬This is a nightly-only experimental API. (is_sorted)

    Checks if the elements of this slice are sorted.

    -

    That is, for each element a and its following element b, a <= b must hold. If the -slice yields exactly zero or one element, true is returned.

    -

    Note that if Self::Item is only PartialOrd, but not Ord, the above definition -implies that this function returns false if any two consecutive items are not -comparable.

    -
    Examples
    -
    #![feature(is_sorted)]
    -let empty: [i32; 0] = [];
    -
    -assert!([1, 2, 2, 9].is_sorted());
    -assert!(![1, 3, 2, 4].is_sorted());
    -assert!([0].is_sorted());
    -assert!(empty.is_sorted());
    -assert!(![0.0, 1.0, f32::NAN].is_sorted());
    -
    source

    pub fn is_sorted_by<'a, F>(&'a self, compare: F) -> boolwhere - F: FnMut(&'a T, &'a T) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (is_sorted)

    Checks if the elements of this slice are sorted using the given comparator function.

    -

    Instead of using PartialOrd::partial_cmp, this function uses the given compare -function to determine the ordering of two elements. Apart from that, it’s equivalent to -is_sorted; see its documentation for more information.

    -
    source

    pub fn is_sorted_by_key<'a, F, K>(&'a self, f: F) -> boolwhere - F: FnMut(&'a T) -> K, - K: PartialOrd<K>,

    🔬This is a nightly-only experimental API. (is_sorted)

    Checks if the elements of this slice are sorted using the given key extraction function.

    -

    Instead of comparing the slice’s elements directly, this function compares the keys of the -elements, as determined by f. Apart from that, it’s equivalent to is_sorted; see its -documentation for more information.

    -
    Examples
    -
    #![feature(is_sorted)]
    -
    -assert!(["c", "bb", "aaa"].is_sorted_by_key(|s| s.len()));
    -assert!(![-2i32, -1, 0, 3].is_sorted_by_key(|n| n.abs()));
    -
    1.52.0 · source

    pub fn partition_point<P>(&self, pred: P) -> usizewhere - P: FnMut(&T) -> bool,

    Returns the index of the partition point according to the given predicate -(the index of the first element of the second partition).

    -

    The slice is assumed to be partitioned according to the given predicate. -This means that all elements for which the predicate returns true are at the start of the slice -and all elements for which the predicate returns false are at the end. -For example, [7, 15, 3, 5, 4, 12, 6] is partitioned under the predicate x % 2 != 0 -(all odd numbers are at the start, all even at the end).

    -

    If this slice is not partitioned, the returned result is unspecified and meaningless, -as this method performs a kind of binary search.

    -

    See also binary_search, binary_search_by, and binary_search_by_key.

    -
    Examples
    -
    let v = [1, 2, 3, 3, 5, 6, 7];
    -let i = v.partition_point(|&x| x < 5);
    -
    -assert_eq!(i, 4);
    -assert!(v[..i].iter().all(|&x| x < 5));
    -assert!(v[i..].iter().all(|&x| !(x < 5)));
    -

    If all elements of the slice match the predicate, including if the slice -is empty, then the length of the slice will be returned:

    - -
    let a = [2, 4, 8];
    -assert_eq!(a.partition_point(|x| x < &100), a.len());
    -let a: [i32; 0] = [];
    -assert_eq!(a.partition_point(|x| x < &100), 0);
    -

    If you want to insert an item to a sorted vector, while maintaining -sort order:

    - -
    let mut s = vec![0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55];
    -let num = 42;
    -let idx = s.partition_point(|&x| x < num);
    -s.insert(idx, num);
    -assert_eq!(s, [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 42, 55]);
    -
    1.0.0 · source

    pub fn to_vec(&self) -> Vec<T, Global>where - T: Clone,

    Copies self into a new Vec.

    -
    Examples
    -
    let s = [10, 40, 30];
    -let x = s.to_vec();
    -// Here, `s` and `x` can be modified independently.
    -
    source

    pub fn to_vec_in<A>(&self, alloc: A) -> Vec<T, A>where - A: Allocator, - T: Clone,

    🔬This is a nightly-only experimental API. (allocator_api)

    Copies self into a new Vec with an allocator.

    -
    Examples
    -
    #![feature(allocator_api)]
    -
    -use std::alloc::System;
    -
    -let s = [10, 40, 30];
    -let x = s.to_vec_in(System);
    -// Here, `s` and `x` can be modified independently.
    -
    1.40.0 · source

    pub fn repeat(&self, n: usize) -> Vec<T, Global>where - T: Copy,

    Creates a vector by copying a slice n times.

    -
    Panics
    -

    This function will panic if the capacity would overflow.

    -
    Examples
    -

    Basic usage:

    - -
    assert_eq!([1, 2].repeat(3), vec![1, 2, 1, 2, 1, 2]);
    -

    A panic upon overflow:

    - -
    // this will panic at runtime
    -b"0123456789abcdef".repeat(usize::MAX);
    -
    1.0.0 · source

    pub fn concat<Item>(&self) -> <[T] as Concat<Item>>::Output where - [T]: Concat<Item>, - Item: ?Sized,

    Flattens a slice of T into a single value Self::Output.

    -
    Examples
    -
    assert_eq!(["hello", "world"].concat(), "helloworld");
    -assert_eq!([[1, 2], [3, 4]].concat(), [1, 2, 3, 4]);
    -
    1.3.0 · source

    pub fn join<Separator>( - &self, - sep: Separator -) -> <[T] as Join<Separator>>::Output where - [T]: Join<Separator>,

    Flattens a slice of T into a single value Self::Output, placing a -given separator between each.

    -
    Examples
    -
    assert_eq!(["hello", "world"].join(" "), "hello world");
    -assert_eq!([[1, 2], [3, 4]].join(&0), [1, 2, 0, 3, 4]);
    -assert_eq!([[1, 2], [3, 4]].join(&[0, 0][..]), [1, 2, 0, 0, 3, 4]);
    -
    1.0.0 · source

    pub fn connect<Separator>( - &self, - sep: Separator -) -> <[T] as Join<Separator>>::Output where - [T]: Join<Separator>,

    👎Deprecated since 1.3.0: renamed to join

    Flattens a slice of T into a single value Self::Output, placing a -given separator between each.

    -
    Examples
    -
    assert_eq!(["hello", "world"].connect(" "), "hello world");
    -assert_eq!([[1, 2], [3, 4]].connect(&0), [1, 2, 0, 3, 4]);
    -
    1.23.0 · source

    pub fn to_ascii_uppercase(&self) -> Vec<u8, Global>

    Returns a vector containing a copy of this slice where each byte -is mapped to its ASCII upper case equivalent.

    -

    ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, -but non-ASCII letters are unchanged.

    -

    To uppercase the value in-place, use make_ascii_uppercase.

    -
    1.23.0 · source

    pub fn to_ascii_lowercase(&self) -> Vec<u8, Global>

    Returns a vector containing a copy of this slice where each byte -is mapped to its ASCII lower case equivalent.

    -

    ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, -but non-ASCII letters are unchanged.

    -

    To lowercase the value in-place, use make_ascii_lowercase.

    -

    Trait Implementations§

    1.0.0 · source§

    impl<T, A> Clone for Vec<T, A>where - T: Clone, - A: Allocator + Clone,

    source§

    fn clone(&self) -> Vec<T, A>

    Returns a copy of the value. Read more
    source§

    fn clone_from(&mut self, other: &Vec<T, A>)

    Performs copy-assignment from source. Read more
    1.0.0 · source§

    impl<T, A> Debug for Vec<T, A>where - T: Debug, - A: Allocator,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    1.0.0 · source§

    impl<T> Default for Vec<T, Global>

    source§

    fn default() -> Vec<T, Global>

    Creates an empty Vec<T>.

    -

    The vector will not allocate until elements are pushed onto it.

    -
    1.0.0 · source§

    impl<T, A> Deref for Vec<T, A>where - A: Allocator,

    §

    type Target = [T]

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &[T]

    Dereferences the value.
    1.0.0 · source§

    impl<T, A> Hash for Vec<T, A>where - T: Hash, - A: Allocator,

    The hash of a vector is the same as that of the corresponding slice, -as required by the core::borrow::Borrow implementation.

    - -
    use std::hash::BuildHasher;
    -
    -let b = std::collections::hash_map::RandomState::new();
    -let v: Vec<u8> = vec![0xa8, 0x3c, 0x09];
    -let s: &[u8] = &[0xa8, 0x3c, 0x09];
    -assert_eq!(b.hash_one(v), b.hash_one(s));
    -
    source§

    fn hash<H>(&self, state: &mut H)where - H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    1.0.0 · source§

    impl<T, U, A> PartialEq<&[U]> for Vec<T, A>where - A: Allocator, - T: PartialEq<U>,

    source§

    fn eq(&self, other: &&[U]) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    source§

    fn ne(&self, other: &&[U]) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    1.0.0 · source§

    impl<T, U, A, const N: usize> PartialEq<&[U; N]> for Vec<T, A>where - A: Allocator, - T: PartialEq<U>,

    source§

    fn eq(&self, other: &&[U; N]) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    source§

    fn ne(&self, other: &&[U; N]) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    1.0.0 · source§

    impl<T, U, A> PartialEq<&mut [U]> for Vec<T, A>where - A: Allocator, - T: PartialEq<U>,

    source§

    fn eq(&self, other: &&mut [U]) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    source§

    fn ne(&self, other: &&mut [U]) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    1.48.0 · source§

    impl<T, U, A> PartialEq<[U]> for Vec<T, A>where - A: Allocator, - T: PartialEq<U>,

    source§

    fn eq(&self, other: &[U]) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    source§

    fn ne(&self, other: &[U]) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    1.0.0 · source§

    impl<T, U, A, const N: usize> PartialEq<[U; N]> for Vec<T, A>where - A: Allocator, - T: PartialEq<U>,

    source§

    fn eq(&self, other: &[U; N]) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    source§

    fn ne(&self, other: &[U; N]) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    1.0.0 · source§

    impl<T, U, A1, A2> PartialEq<Vec<U, A2>> for Vec<T, A1>where - A1: Allocator, - A2: Allocator, - T: PartialEq<U>,

    source§

    fn eq(&self, other: &Vec<U, A2>) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    source§

    fn ne(&self, other: &Vec<U, A2>) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    1.0.0 · source§

    impl<T, A> Eq for Vec<T, A>where - T: Eq, - A: Allocator,

    \ No newline at end of file diff --git a/syn/type.Result.html b/syn/type.Result.html index 763b404..8523bf9 100644 --- a/syn/type.Result.html +++ b/syn/type.Result.html @@ -1,24 +1,7 @@ -Result in syn - Rust

    Type Alias syn::Result

    source ·
    pub type Result<T> = Result<T, Error>;
    Expand description

    The result of a Syn parser.

    -

    Aliased Type§

    enum Result<T> {
    +Result in syn - Rust
    syn

    Type Alias Result

    source
    pub type Result<T> = Result<T, Error>;
    Expand description

    The result of a Syn parser.

    +

    Aliased Type§

    enum Result<T> {
         Ok(T),
         Err(Error),
    -}

    Variants§

    §1.0.0

    Ok(T)

    Contains the success value

    +}

    Variants§

    §1.0.0

    Ok(T)

    Contains the success value

    §1.0.0

    Err(Error)

    Contains the error value

    -

    Trait Implementations§

    1.0.0 · source§

    impl<T, E> Clone for Result<T, E>where - T: Clone, - E: Clone,

    source§

    fn clone(&self) -> Result<T, E>

    Returns a copy of the value. Read more
    source§

    fn clone_from(&mut self, source: &Result<T, E>)

    Performs copy-assignment from source. Read more
    1.0.0 · source§

    impl<T, E> Debug for Result<T, E>where - T: Debug, - E: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    1.0.0 · source§

    impl<T, E> Hash for Result<T, E>where - T: Hash, - E: Hash,

    source§

    fn hash<__H>(&self, state: &mut __H)where - __H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    1.0.0 · source§

    impl<T, E> PartialEq<Result<T, E>> for Result<T, E>where - T: PartialEq<T>, - E: PartialEq<E>,

    source§

    fn eq(&self, other: &Result<T, E>) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    1.0.0 · source§

    impl<T, E> Copy for Result<T, E>where - T: Copy, - E: Copy,

    1.0.0 · source§

    impl<T, E> Eq for Result<T, E>where - T: Eq, - E: Eq,

    \ No newline at end of file + \ No newline at end of file diff --git a/syn/visit/fn.visit_abi.html b/syn/visit/fn.visit_abi.html index 486a538..cee8f03 100644 --- a/syn/visit/fn.visit_abi.html +++ b/syn/visit/fn.visit_abi.html @@ -1,2 +1,2 @@ -visit_abi in syn::visit - Rust

    Function syn::visit::visit_abi

    source ·
    pub fn visit_abi<'ast, V>(v: &mut V, node: &'ast Abi)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_abi in syn::visit - Rust
    syn::visit

    Function visit_abi

    source
    pub fn visit_abi<'ast, V>(v: &mut V, node: &'ast Abi)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_angle_bracketed_generic_arguments.html b/syn/visit/fn.visit_angle_bracketed_generic_arguments.html index 07bf107..3c40c51 100644 --- a/syn/visit/fn.visit_angle_bracketed_generic_arguments.html +++ b/syn/visit/fn.visit_angle_bracketed_generic_arguments.html @@ -1,5 +1,5 @@ -visit_angle_bracketed_generic_arguments in syn::visit - Rust
    pub fn visit_angle_bracketed_generic_arguments<'ast, V>(
    -    v: &mut V,
    -    node: &'ast AngleBracketedGenericArguments
    -)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_angle_bracketed_generic_arguments in syn::visit - Rust
    syn::visit

    Function visit_angle_bracketed_generic_arguments

    source
    pub fn visit_angle_bracketed_generic_arguments<'ast, V>(
    +    v: &mut V,
    +    node: &'ast AngleBracketedGenericArguments,
    +)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_assoc_const.html b/syn/visit/fn.visit_assoc_const.html new file mode 100644 index 0000000..189dff1 --- /dev/null +++ b/syn/visit/fn.visit_assoc_const.html @@ -0,0 +1,2 @@ +visit_assoc_const in syn::visit - Rust
    syn::visit

    Function visit_assoc_const

    source
    pub fn visit_assoc_const<'ast, V>(v: &mut V, node: &'ast AssocConst)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_assoc_type.html b/syn/visit/fn.visit_assoc_type.html new file mode 100644 index 0000000..9d474c6 --- /dev/null +++ b/syn/visit/fn.visit_assoc_type.html @@ -0,0 +1,2 @@ +visit_assoc_type in syn::visit - Rust
    syn::visit

    Function visit_assoc_type

    source
    pub fn visit_assoc_type<'ast, V>(v: &mut V, node: &'ast AssocType)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_attr_style.html b/syn/visit/fn.visit_attr_style.html index 837a4a0..b67a21b 100644 --- a/syn/visit/fn.visit_attr_style.html +++ b/syn/visit/fn.visit_attr_style.html @@ -1,2 +1,2 @@ -visit_attr_style in syn::visit - Rust

    Function syn::visit::visit_attr_style

    source ·
    pub fn visit_attr_style<'ast, V>(v: &mut V, node: &'ast AttrStyle)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_attr_style in syn::visit - Rust
    syn::visit

    Function visit_attr_style

    source
    pub fn visit_attr_style<'ast, V>(v: &mut V, node: &'ast AttrStyle)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_attribute.html b/syn/visit/fn.visit_attribute.html index 331436c..b4af2a4 100644 --- a/syn/visit/fn.visit_attribute.html +++ b/syn/visit/fn.visit_attribute.html @@ -1,2 +1,2 @@ -visit_attribute in syn::visit - Rust

    Function syn::visit::visit_attribute

    source ·
    pub fn visit_attribute<'ast, V>(v: &mut V, node: &'ast Attribute)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_attribute in syn::visit - Rust
    syn::visit

    Function visit_attribute

    source
    pub fn visit_attribute<'ast, V>(v: &mut V, node: &'ast Attribute)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_bare_fn_arg.html b/syn/visit/fn.visit_bare_fn_arg.html index 5aeb9ca..adba1c3 100644 --- a/syn/visit/fn.visit_bare_fn_arg.html +++ b/syn/visit/fn.visit_bare_fn_arg.html @@ -1,2 +1,2 @@ -visit_bare_fn_arg in syn::visit - Rust

    Function syn::visit::visit_bare_fn_arg

    source ·
    pub fn visit_bare_fn_arg<'ast, V>(v: &mut V, node: &'ast BareFnArg)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_bare_fn_arg in syn::visit - Rust
    syn::visit

    Function visit_bare_fn_arg

    source
    pub fn visit_bare_fn_arg<'ast, V>(v: &mut V, node: &'ast BareFnArg)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_bare_variadic.html b/syn/visit/fn.visit_bare_variadic.html new file mode 100644 index 0000000..e6df056 --- /dev/null +++ b/syn/visit/fn.visit_bare_variadic.html @@ -0,0 +1,2 @@ +visit_bare_variadic in syn::visit - Rust
    syn::visit

    Function visit_bare_variadic

    source
    pub fn visit_bare_variadic<'ast, V>(v: &mut V, node: &'ast BareVariadic)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_bin_op.html b/syn/visit/fn.visit_bin_op.html index c91d195..441fbda 100644 --- a/syn/visit/fn.visit_bin_op.html +++ b/syn/visit/fn.visit_bin_op.html @@ -1,2 +1,2 @@ -visit_bin_op in syn::visit - Rust

    Function syn::visit::visit_bin_op

    source ·
    pub fn visit_bin_op<'ast, V>(v: &mut V, node: &'ast BinOp)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_bin_op in syn::visit - Rust
    syn::visit

    Function visit_bin_op

    source
    pub fn visit_bin_op<'ast, V>(v: &mut V, node: &'ast BinOp)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_binding.html b/syn/visit/fn.visit_binding.html deleted file mode 100644 index 5aecfdf..0000000 --- a/syn/visit/fn.visit_binding.html +++ /dev/null @@ -1,2 +0,0 @@ -visit_binding in syn::visit - Rust

    Function syn::visit::visit_binding

    source ·
    pub fn visit_binding<'ast, V>(v: &mut V, node: &'ast Binding)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_bound_lifetimes.html b/syn/visit/fn.visit_bound_lifetimes.html index 9bbf65b..24df8ec 100644 --- a/syn/visit/fn.visit_bound_lifetimes.html +++ b/syn/visit/fn.visit_bound_lifetimes.html @@ -1,2 +1,2 @@ -visit_bound_lifetimes in syn::visit - Rust
    pub fn visit_bound_lifetimes<'ast, V>(v: &mut V, node: &'ast BoundLifetimes)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_bound_lifetimes in syn::visit - Rust
    syn::visit

    Function visit_bound_lifetimes

    source
    pub fn visit_bound_lifetimes<'ast, V>(v: &mut V, node: &'ast BoundLifetimes)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_const_param.html b/syn/visit/fn.visit_const_param.html index 79809d3..e4cdc06 100644 --- a/syn/visit/fn.visit_const_param.html +++ b/syn/visit/fn.visit_const_param.html @@ -1,2 +1,2 @@ -visit_const_param in syn::visit - Rust

    Function syn::visit::visit_const_param

    source ·
    pub fn visit_const_param<'ast, V>(v: &mut V, node: &'ast ConstParam)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_const_param in syn::visit - Rust
    syn::visit

    Function visit_const_param

    source
    pub fn visit_const_param<'ast, V>(v: &mut V, node: &'ast ConstParam)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_constraint.html b/syn/visit/fn.visit_constraint.html index 0e4f733..e5591aa 100644 --- a/syn/visit/fn.visit_constraint.html +++ b/syn/visit/fn.visit_constraint.html @@ -1,2 +1,2 @@ -visit_constraint in syn::visit - Rust

    Function syn::visit::visit_constraint

    source ·
    pub fn visit_constraint<'ast, V>(v: &mut V, node: &'ast Constraint)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_constraint in syn::visit - Rust
    syn::visit

    Function visit_constraint

    source
    pub fn visit_constraint<'ast, V>(v: &mut V, node: &'ast Constraint)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_data.html b/syn/visit/fn.visit_data.html index e9e5839..e133990 100644 --- a/syn/visit/fn.visit_data.html +++ b/syn/visit/fn.visit_data.html @@ -1,2 +1,2 @@ -visit_data in syn::visit - Rust

    Function syn::visit::visit_data

    source ·
    pub fn visit_data<'ast, V>(v: &mut V, node: &'ast Data)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_data in syn::visit - Rust
    syn::visit

    Function visit_data

    source
    pub fn visit_data<'ast, V>(v: &mut V, node: &'ast Data)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_data_enum.html b/syn/visit/fn.visit_data_enum.html index 8b9c5fb..81eb664 100644 --- a/syn/visit/fn.visit_data_enum.html +++ b/syn/visit/fn.visit_data_enum.html @@ -1,2 +1,2 @@ -visit_data_enum in syn::visit - Rust

    Function syn::visit::visit_data_enum

    source ·
    pub fn visit_data_enum<'ast, V>(v: &mut V, node: &'ast DataEnum)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_data_enum in syn::visit - Rust
    syn::visit

    Function visit_data_enum

    source
    pub fn visit_data_enum<'ast, V>(v: &mut V, node: &'ast DataEnum)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_data_struct.html b/syn/visit/fn.visit_data_struct.html index 363cc30..8ecdc58 100644 --- a/syn/visit/fn.visit_data_struct.html +++ b/syn/visit/fn.visit_data_struct.html @@ -1,2 +1,2 @@ -visit_data_struct in syn::visit - Rust

    Function syn::visit::visit_data_struct

    source ·
    pub fn visit_data_struct<'ast, V>(v: &mut V, node: &'ast DataStruct)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_data_struct in syn::visit - Rust
    syn::visit

    Function visit_data_struct

    source
    pub fn visit_data_struct<'ast, V>(v: &mut V, node: &'ast DataStruct)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_data_union.html b/syn/visit/fn.visit_data_union.html index 4a510f5..2599c9c 100644 --- a/syn/visit/fn.visit_data_union.html +++ b/syn/visit/fn.visit_data_union.html @@ -1,2 +1,2 @@ -visit_data_union in syn::visit - Rust

    Function syn::visit::visit_data_union

    source ·
    pub fn visit_data_union<'ast, V>(v: &mut V, node: &'ast DataUnion)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_data_union in syn::visit - Rust
    syn::visit

    Function visit_data_union

    source
    pub fn visit_data_union<'ast, V>(v: &mut V, node: &'ast DataUnion)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_derive_input.html b/syn/visit/fn.visit_derive_input.html index ec22a0e..5773862 100644 --- a/syn/visit/fn.visit_derive_input.html +++ b/syn/visit/fn.visit_derive_input.html @@ -1,2 +1,2 @@ -visit_derive_input in syn::visit - Rust

    Function syn::visit::visit_derive_input

    source ·
    pub fn visit_derive_input<'ast, V>(v: &mut V, node: &'ast DeriveInput)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_derive_input in syn::visit - Rust
    syn::visit

    Function visit_derive_input

    source
    pub fn visit_derive_input<'ast, V>(v: &mut V, node: &'ast DeriveInput)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_expr.html b/syn/visit/fn.visit_expr.html index b1db5a6..f8a6798 100644 --- a/syn/visit/fn.visit_expr.html +++ b/syn/visit/fn.visit_expr.html @@ -1,2 +1,2 @@ -visit_expr in syn::visit - Rust

    Function syn::visit::visit_expr

    source ·
    pub fn visit_expr<'ast, V>(v: &mut V, node: &'ast Expr)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_expr in syn::visit - Rust
    syn::visit

    Function visit_expr

    source
    pub fn visit_expr<'ast, V>(v: &mut V, node: &'ast Expr)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_expr_binary.html b/syn/visit/fn.visit_expr_binary.html index 90bfd57..79ea9c2 100644 --- a/syn/visit/fn.visit_expr_binary.html +++ b/syn/visit/fn.visit_expr_binary.html @@ -1,2 +1,2 @@ -visit_expr_binary in syn::visit - Rust

    Function syn::visit::visit_expr_binary

    source ·
    pub fn visit_expr_binary<'ast, V>(v: &mut V, node: &'ast ExprBinary)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_expr_binary in syn::visit - Rust
    syn::visit

    Function visit_expr_binary

    source
    pub fn visit_expr_binary<'ast, V>(v: &mut V, node: &'ast ExprBinary)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_expr_call.html b/syn/visit/fn.visit_expr_call.html index d5a81f9..84245f5 100644 --- a/syn/visit/fn.visit_expr_call.html +++ b/syn/visit/fn.visit_expr_call.html @@ -1,2 +1,2 @@ -visit_expr_call in syn::visit - Rust

    Function syn::visit::visit_expr_call

    source ·
    pub fn visit_expr_call<'ast, V>(v: &mut V, node: &'ast ExprCall)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_expr_call in syn::visit - Rust
    syn::visit

    Function visit_expr_call

    source
    pub fn visit_expr_call<'ast, V>(v: &mut V, node: &'ast ExprCall)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_expr_cast.html b/syn/visit/fn.visit_expr_cast.html index f13ef6e..f754ad4 100644 --- a/syn/visit/fn.visit_expr_cast.html +++ b/syn/visit/fn.visit_expr_cast.html @@ -1,2 +1,2 @@ -visit_expr_cast in syn::visit - Rust

    Function syn::visit::visit_expr_cast

    source ·
    pub fn visit_expr_cast<'ast, V>(v: &mut V, node: &'ast ExprCast)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_expr_cast in syn::visit - Rust
    syn::visit

    Function visit_expr_cast

    source
    pub fn visit_expr_cast<'ast, V>(v: &mut V, node: &'ast ExprCast)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_expr_field.html b/syn/visit/fn.visit_expr_field.html index e0eed55..31a73ad 100644 --- a/syn/visit/fn.visit_expr_field.html +++ b/syn/visit/fn.visit_expr_field.html @@ -1,2 +1,2 @@ -visit_expr_field in syn::visit - Rust

    Function syn::visit::visit_expr_field

    source ·
    pub fn visit_expr_field<'ast, V>(v: &mut V, node: &'ast ExprField)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_expr_field in syn::visit - Rust
    syn::visit

    Function visit_expr_field

    source
    pub fn visit_expr_field<'ast, V>(v: &mut V, node: &'ast ExprField)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_expr_group.html b/syn/visit/fn.visit_expr_group.html new file mode 100644 index 0000000..470de5f --- /dev/null +++ b/syn/visit/fn.visit_expr_group.html @@ -0,0 +1,2 @@ +visit_expr_group in syn::visit - Rust
    syn::visit

    Function visit_expr_group

    source
    pub fn visit_expr_group<'ast, V>(v: &mut V, node: &'ast ExprGroup)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_expr_index.html b/syn/visit/fn.visit_expr_index.html index d31a4d8..1f6bc69 100644 --- a/syn/visit/fn.visit_expr_index.html +++ b/syn/visit/fn.visit_expr_index.html @@ -1,2 +1,2 @@ -visit_expr_index in syn::visit - Rust

    Function syn::visit::visit_expr_index

    source ·
    pub fn visit_expr_index<'ast, V>(v: &mut V, node: &'ast ExprIndex)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_expr_index in syn::visit - Rust
    syn::visit

    Function visit_expr_index

    source
    pub fn visit_expr_index<'ast, V>(v: &mut V, node: &'ast ExprIndex)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_expr_lit.html b/syn/visit/fn.visit_expr_lit.html index fa9bacd..fe01288 100644 --- a/syn/visit/fn.visit_expr_lit.html +++ b/syn/visit/fn.visit_expr_lit.html @@ -1,2 +1,2 @@ -visit_expr_lit in syn::visit - Rust

    Function syn::visit::visit_expr_lit

    source ·
    pub fn visit_expr_lit<'ast, V>(v: &mut V, node: &'ast ExprLit)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_expr_lit in syn::visit - Rust
    syn::visit

    Function visit_expr_lit

    source
    pub fn visit_expr_lit<'ast, V>(v: &mut V, node: &'ast ExprLit)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_expr_macro.html b/syn/visit/fn.visit_expr_macro.html new file mode 100644 index 0000000..f17382c --- /dev/null +++ b/syn/visit/fn.visit_expr_macro.html @@ -0,0 +1,2 @@ +visit_expr_macro in syn::visit - Rust
    syn::visit

    Function visit_expr_macro

    source
    pub fn visit_expr_macro<'ast, V>(v: &mut V, node: &'ast ExprMacro)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_expr_method_call.html b/syn/visit/fn.visit_expr_method_call.html new file mode 100644 index 0000000..b2163af --- /dev/null +++ b/syn/visit/fn.visit_expr_method_call.html @@ -0,0 +1,2 @@ +visit_expr_method_call in syn::visit - Rust
    syn::visit

    Function visit_expr_method_call

    source
    pub fn visit_expr_method_call<'ast, V>(v: &mut V, node: &'ast ExprMethodCall)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_expr_paren.html b/syn/visit/fn.visit_expr_paren.html index fc098b0..7aac1e1 100644 --- a/syn/visit/fn.visit_expr_paren.html +++ b/syn/visit/fn.visit_expr_paren.html @@ -1,2 +1,2 @@ -visit_expr_paren in syn::visit - Rust

    Function syn::visit::visit_expr_paren

    source ·
    pub fn visit_expr_paren<'ast, V>(v: &mut V, node: &'ast ExprParen)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_expr_paren in syn::visit - Rust
    syn::visit

    Function visit_expr_paren

    source
    pub fn visit_expr_paren<'ast, V>(v: &mut V, node: &'ast ExprParen)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_expr_path.html b/syn/visit/fn.visit_expr_path.html index 06b477f..6fc1752 100644 --- a/syn/visit/fn.visit_expr_path.html +++ b/syn/visit/fn.visit_expr_path.html @@ -1,2 +1,2 @@ -visit_expr_path in syn::visit - Rust

    Function syn::visit::visit_expr_path

    source ·
    pub fn visit_expr_path<'ast, V>(v: &mut V, node: &'ast ExprPath)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_expr_path in syn::visit - Rust
    syn::visit

    Function visit_expr_path

    source
    pub fn visit_expr_path<'ast, V>(v: &mut V, node: &'ast ExprPath)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_expr_reference.html b/syn/visit/fn.visit_expr_reference.html new file mode 100644 index 0000000..8b20d37 --- /dev/null +++ b/syn/visit/fn.visit_expr_reference.html @@ -0,0 +1,2 @@ +visit_expr_reference in syn::visit - Rust
    syn::visit

    Function visit_expr_reference

    source
    pub fn visit_expr_reference<'ast, V>(v: &mut V, node: &'ast ExprReference)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_expr_struct.html b/syn/visit/fn.visit_expr_struct.html new file mode 100644 index 0000000..c3099d3 --- /dev/null +++ b/syn/visit/fn.visit_expr_struct.html @@ -0,0 +1,2 @@ +visit_expr_struct in syn::visit - Rust
    syn::visit

    Function visit_expr_struct

    source
    pub fn visit_expr_struct<'ast, V>(v: &mut V, node: &'ast ExprStruct)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_expr_tuple.html b/syn/visit/fn.visit_expr_tuple.html new file mode 100644 index 0000000..6314c40 --- /dev/null +++ b/syn/visit/fn.visit_expr_tuple.html @@ -0,0 +1,2 @@ +visit_expr_tuple in syn::visit - Rust
    syn::visit

    Function visit_expr_tuple

    source
    pub fn visit_expr_tuple<'ast, V>(v: &mut V, node: &'ast ExprTuple)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_expr_unary.html b/syn/visit/fn.visit_expr_unary.html index c11ca36..b9ef6dd 100644 --- a/syn/visit/fn.visit_expr_unary.html +++ b/syn/visit/fn.visit_expr_unary.html @@ -1,2 +1,2 @@ -visit_expr_unary in syn::visit - Rust

    Function syn::visit::visit_expr_unary

    source ·
    pub fn visit_expr_unary<'ast, V>(v: &mut V, node: &'ast ExprUnary)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_expr_unary in syn::visit - Rust
    syn::visit

    Function visit_expr_unary

    source
    pub fn visit_expr_unary<'ast, V>(v: &mut V, node: &'ast ExprUnary)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_field.html b/syn/visit/fn.visit_field.html index 187c9fa..14accb4 100644 --- a/syn/visit/fn.visit_field.html +++ b/syn/visit/fn.visit_field.html @@ -1,2 +1,2 @@ -visit_field in syn::visit - Rust

    Function syn::visit::visit_field

    source ·
    pub fn visit_field<'ast, V>(v: &mut V, node: &'ast Field)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_field in syn::visit - Rust
    syn::visit

    Function visit_field

    source
    pub fn visit_field<'ast, V>(v: &mut V, node: &'ast Field)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_field_mutability.html b/syn/visit/fn.visit_field_mutability.html new file mode 100644 index 0000000..b44b698 --- /dev/null +++ b/syn/visit/fn.visit_field_mutability.html @@ -0,0 +1,2 @@ +visit_field_mutability in syn::visit - Rust
    syn::visit

    Function visit_field_mutability

    source
    pub fn visit_field_mutability<'ast, V>(v: &mut V, node: &'ast FieldMutability)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_field_value.html b/syn/visit/fn.visit_field_value.html new file mode 100644 index 0000000..cd8c473 --- /dev/null +++ b/syn/visit/fn.visit_field_value.html @@ -0,0 +1,2 @@ +visit_field_value in syn::visit - Rust
    syn::visit

    Function visit_field_value

    source
    pub fn visit_field_value<'ast, V>(v: &mut V, node: &'ast FieldValue)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_fields.html b/syn/visit/fn.visit_fields.html index 8423a09..9fe0cc6 100644 --- a/syn/visit/fn.visit_fields.html +++ b/syn/visit/fn.visit_fields.html @@ -1,2 +1,2 @@ -visit_fields in syn::visit - Rust

    Function syn::visit::visit_fields

    source ·
    pub fn visit_fields<'ast, V>(v: &mut V, node: &'ast Fields)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_fields in syn::visit - Rust
    syn::visit

    Function visit_fields

    source
    pub fn visit_fields<'ast, V>(v: &mut V, node: &'ast Fields)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_fields_named.html b/syn/visit/fn.visit_fields_named.html index de0be56..f0940df 100644 --- a/syn/visit/fn.visit_fields_named.html +++ b/syn/visit/fn.visit_fields_named.html @@ -1,2 +1,2 @@ -visit_fields_named in syn::visit - Rust

    Function syn::visit::visit_fields_named

    source ·
    pub fn visit_fields_named<'ast, V>(v: &mut V, node: &'ast FieldsNamed)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_fields_named in syn::visit - Rust
    syn::visit

    Function visit_fields_named

    source
    pub fn visit_fields_named<'ast, V>(v: &mut V, node: &'ast FieldsNamed)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_fields_unnamed.html b/syn/visit/fn.visit_fields_unnamed.html index 60433aa..7837934 100644 --- a/syn/visit/fn.visit_fields_unnamed.html +++ b/syn/visit/fn.visit_fields_unnamed.html @@ -1,2 +1,2 @@ -visit_fields_unnamed in syn::visit - Rust
    pub fn visit_fields_unnamed<'ast, V>(v: &mut V, node: &'ast FieldsUnnamed)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_fields_unnamed in syn::visit - Rust
    syn::visit

    Function visit_fields_unnamed

    source
    pub fn visit_fields_unnamed<'ast, V>(v: &mut V, node: &'ast FieldsUnnamed)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_generic_argument.html b/syn/visit/fn.visit_generic_argument.html index b26f538..7d05717 100644 --- a/syn/visit/fn.visit_generic_argument.html +++ b/syn/visit/fn.visit_generic_argument.html @@ -1,2 +1,2 @@ -visit_generic_argument in syn::visit - Rust
    pub fn visit_generic_argument<'ast, V>(v: &mut V, node: &'ast GenericArgument)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_generic_argument in syn::visit - Rust
    syn::visit

    Function visit_generic_argument

    source
    pub fn visit_generic_argument<'ast, V>(v: &mut V, node: &'ast GenericArgument)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_generic_param.html b/syn/visit/fn.visit_generic_param.html index 35f44d5..22829c0 100644 --- a/syn/visit/fn.visit_generic_param.html +++ b/syn/visit/fn.visit_generic_param.html @@ -1,2 +1,2 @@ -visit_generic_param in syn::visit - Rust

    Function syn::visit::visit_generic_param

    source ·
    pub fn visit_generic_param<'ast, V>(v: &mut V, node: &'ast GenericParam)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_generic_param in syn::visit - Rust
    syn::visit

    Function visit_generic_param

    source
    pub fn visit_generic_param<'ast, V>(v: &mut V, node: &'ast GenericParam)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_generics.html b/syn/visit/fn.visit_generics.html index bba2df2..0ee921c 100644 --- a/syn/visit/fn.visit_generics.html +++ b/syn/visit/fn.visit_generics.html @@ -1,2 +1,2 @@ -visit_generics in syn::visit - Rust

    Function syn::visit::visit_generics

    source ·
    pub fn visit_generics<'ast, V>(v: &mut V, node: &'ast Generics)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_generics in syn::visit - Rust
    syn::visit

    Function visit_generics

    source
    pub fn visit_generics<'ast, V>(v: &mut V, node: &'ast Generics)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_ident.html b/syn/visit/fn.visit_ident.html index 0b58741..31f9e8f 100644 --- a/syn/visit/fn.visit_ident.html +++ b/syn/visit/fn.visit_ident.html @@ -1,2 +1,2 @@ -visit_ident in syn::visit - Rust

    Function syn::visit::visit_ident

    source ·
    pub fn visit_ident<'ast, V>(v: &mut V, node: &'ast Ident)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_ident in syn::visit - Rust
    syn::visit

    Function visit_ident

    source
    pub fn visit_ident<'ast, V>(v: &mut V, node: &'ast Ident)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_index.html b/syn/visit/fn.visit_index.html index ac80585..848f8a3 100644 --- a/syn/visit/fn.visit_index.html +++ b/syn/visit/fn.visit_index.html @@ -1,2 +1,2 @@ -visit_index in syn::visit - Rust

    Function syn::visit::visit_index

    source ·
    pub fn visit_index<'ast, V>(v: &mut V, node: &'ast Index)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_index in syn::visit - Rust
    syn::visit

    Function visit_index

    source
    pub fn visit_index<'ast, V>(v: &mut V, node: &'ast Index)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_lifetime.html b/syn/visit/fn.visit_lifetime.html index 03fc44d..cd1f700 100644 --- a/syn/visit/fn.visit_lifetime.html +++ b/syn/visit/fn.visit_lifetime.html @@ -1,2 +1,2 @@ -visit_lifetime in syn::visit - Rust

    Function syn::visit::visit_lifetime

    source ·
    pub fn visit_lifetime<'ast, V>(v: &mut V, node: &'ast Lifetime)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_lifetime in syn::visit - Rust
    syn::visit

    Function visit_lifetime

    source
    pub fn visit_lifetime<'ast, V>(v: &mut V, node: &'ast Lifetime)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_lifetime_def.html b/syn/visit/fn.visit_lifetime_def.html deleted file mode 100644 index 20aaaf7..0000000 --- a/syn/visit/fn.visit_lifetime_def.html +++ /dev/null @@ -1,2 +0,0 @@ -visit_lifetime_def in syn::visit - Rust

    Function syn::visit::visit_lifetime_def

    source ·
    pub fn visit_lifetime_def<'ast, V>(v: &mut V, node: &'ast LifetimeDef)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_lifetime_param.html b/syn/visit/fn.visit_lifetime_param.html new file mode 100644 index 0000000..c1c1f3e --- /dev/null +++ b/syn/visit/fn.visit_lifetime_param.html @@ -0,0 +1,2 @@ +visit_lifetime_param in syn::visit - Rust
    syn::visit

    Function visit_lifetime_param

    source
    pub fn visit_lifetime_param<'ast, V>(v: &mut V, node: &'ast LifetimeParam)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_lit.html b/syn/visit/fn.visit_lit.html index cc5cd78..1f0d9c0 100644 --- a/syn/visit/fn.visit_lit.html +++ b/syn/visit/fn.visit_lit.html @@ -1,2 +1,2 @@ -visit_lit in syn::visit - Rust

    Function syn::visit::visit_lit

    source ·
    pub fn visit_lit<'ast, V>(v: &mut V, node: &'ast Lit)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_lit in syn::visit - Rust
    syn::visit

    Function visit_lit

    source
    pub fn visit_lit<'ast, V>(v: &mut V, node: &'ast Lit)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_lit_bool.html b/syn/visit/fn.visit_lit_bool.html index b11148a..bef614a 100644 --- a/syn/visit/fn.visit_lit_bool.html +++ b/syn/visit/fn.visit_lit_bool.html @@ -1,2 +1,2 @@ -visit_lit_bool in syn::visit - Rust

    Function syn::visit::visit_lit_bool

    source ·
    pub fn visit_lit_bool<'ast, V>(v: &mut V, node: &'ast LitBool)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_lit_bool in syn::visit - Rust
    syn::visit

    Function visit_lit_bool

    source
    pub fn visit_lit_bool<'ast, V>(v: &mut V, node: &'ast LitBool)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_lit_byte.html b/syn/visit/fn.visit_lit_byte.html index b305030..e3d315a 100644 --- a/syn/visit/fn.visit_lit_byte.html +++ b/syn/visit/fn.visit_lit_byte.html @@ -1,2 +1,2 @@ -visit_lit_byte in syn::visit - Rust

    Function syn::visit::visit_lit_byte

    source ·
    pub fn visit_lit_byte<'ast, V>(v: &mut V, node: &'ast LitByte)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_lit_byte in syn::visit - Rust
    syn::visit

    Function visit_lit_byte

    source
    pub fn visit_lit_byte<'ast, V>(v: &mut V, node: &'ast LitByte)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_lit_byte_str.html b/syn/visit/fn.visit_lit_byte_str.html index 0ca31fc..fd6a732 100644 --- a/syn/visit/fn.visit_lit_byte_str.html +++ b/syn/visit/fn.visit_lit_byte_str.html @@ -1,2 +1,2 @@ -visit_lit_byte_str in syn::visit - Rust

    Function syn::visit::visit_lit_byte_str

    source ·
    pub fn visit_lit_byte_str<'ast, V>(v: &mut V, node: &'ast LitByteStr)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_lit_byte_str in syn::visit - Rust
    syn::visit

    Function visit_lit_byte_str

    source
    pub fn visit_lit_byte_str<'ast, V>(v: &mut V, node: &'ast LitByteStr)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_lit_char.html b/syn/visit/fn.visit_lit_char.html index 49cfd6d..fdf9cc5 100644 --- a/syn/visit/fn.visit_lit_char.html +++ b/syn/visit/fn.visit_lit_char.html @@ -1,2 +1,2 @@ -visit_lit_char in syn::visit - Rust

    Function syn::visit::visit_lit_char

    source ·
    pub fn visit_lit_char<'ast, V>(v: &mut V, node: &'ast LitChar)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_lit_char in syn::visit - Rust
    syn::visit

    Function visit_lit_char

    source
    pub fn visit_lit_char<'ast, V>(v: &mut V, node: &'ast LitChar)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_lit_cstr.html b/syn/visit/fn.visit_lit_cstr.html new file mode 100644 index 0000000..96d9643 --- /dev/null +++ b/syn/visit/fn.visit_lit_cstr.html @@ -0,0 +1,2 @@ +visit_lit_cstr in syn::visit - Rust
    syn::visit

    Function visit_lit_cstr

    source
    pub fn visit_lit_cstr<'ast, V>(v: &mut V, node: &'ast LitCStr)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_lit_float.html b/syn/visit/fn.visit_lit_float.html index 2950838..1907b94 100644 --- a/syn/visit/fn.visit_lit_float.html +++ b/syn/visit/fn.visit_lit_float.html @@ -1,2 +1,2 @@ -visit_lit_float in syn::visit - Rust

    Function syn::visit::visit_lit_float

    source ·
    pub fn visit_lit_float<'ast, V>(v: &mut V, node: &'ast LitFloat)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_lit_float in syn::visit - Rust
    syn::visit

    Function visit_lit_float

    source
    pub fn visit_lit_float<'ast, V>(v: &mut V, node: &'ast LitFloat)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_lit_int.html b/syn/visit/fn.visit_lit_int.html index c35c2f6..95a6411 100644 --- a/syn/visit/fn.visit_lit_int.html +++ b/syn/visit/fn.visit_lit_int.html @@ -1,2 +1,2 @@ -visit_lit_int in syn::visit - Rust

    Function syn::visit::visit_lit_int

    source ·
    pub fn visit_lit_int<'ast, V>(v: &mut V, node: &'ast LitInt)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_lit_int in syn::visit - Rust
    syn::visit

    Function visit_lit_int

    source
    pub fn visit_lit_int<'ast, V>(v: &mut V, node: &'ast LitInt)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_lit_str.html b/syn/visit/fn.visit_lit_str.html index cd8703e..80f1d75 100644 --- a/syn/visit/fn.visit_lit_str.html +++ b/syn/visit/fn.visit_lit_str.html @@ -1,2 +1,2 @@ -visit_lit_str in syn::visit - Rust

    Function syn::visit::visit_lit_str

    source ·
    pub fn visit_lit_str<'ast, V>(v: &mut V, node: &'ast LitStr)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_lit_str in syn::visit - Rust
    syn::visit

    Function visit_lit_str

    source
    pub fn visit_lit_str<'ast, V>(v: &mut V, node: &'ast LitStr)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_macro.html b/syn/visit/fn.visit_macro.html index 476cb8b..0c6584d 100644 --- a/syn/visit/fn.visit_macro.html +++ b/syn/visit/fn.visit_macro.html @@ -1,2 +1,2 @@ -visit_macro in syn::visit - Rust

    Function syn::visit::visit_macro

    source ·
    pub fn visit_macro<'ast, V>(v: &mut V, node: &'ast Macro)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_macro in syn::visit - Rust
    syn::visit

    Function visit_macro

    source
    pub fn visit_macro<'ast, V>(v: &mut V, node: &'ast Macro)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_macro_delimiter.html b/syn/visit/fn.visit_macro_delimiter.html index 0c58ace..89fa0ba 100644 --- a/syn/visit/fn.visit_macro_delimiter.html +++ b/syn/visit/fn.visit_macro_delimiter.html @@ -1,2 +1,2 @@ -visit_macro_delimiter in syn::visit - Rust
    pub fn visit_macro_delimiter<'ast, V>(v: &mut V, node: &'ast MacroDelimiter)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_macro_delimiter in syn::visit - Rust
    syn::visit

    Function visit_macro_delimiter

    source
    pub fn visit_macro_delimiter<'ast, V>(v: &mut V, node: &'ast MacroDelimiter)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_member.html b/syn/visit/fn.visit_member.html index dda2f04..02c4462 100644 --- a/syn/visit/fn.visit_member.html +++ b/syn/visit/fn.visit_member.html @@ -1,2 +1,2 @@ -visit_member in syn::visit - Rust

    Function syn::visit::visit_member

    source ·
    pub fn visit_member<'ast, V>(v: &mut V, node: &'ast Member)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_member in syn::visit - Rust
    syn::visit

    Function visit_member

    source
    pub fn visit_member<'ast, V>(v: &mut V, node: &'ast Member)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_meta.html b/syn/visit/fn.visit_meta.html index 41a2de6..4d06dc9 100644 --- a/syn/visit/fn.visit_meta.html +++ b/syn/visit/fn.visit_meta.html @@ -1,2 +1,2 @@ -visit_meta in syn::visit - Rust

    Function syn::visit::visit_meta

    source ·
    pub fn visit_meta<'ast, V>(v: &mut V, node: &'ast Meta)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_meta in syn::visit - Rust
    syn::visit

    Function visit_meta

    source
    pub fn visit_meta<'ast, V>(v: &mut V, node: &'ast Meta)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_meta_list.html b/syn/visit/fn.visit_meta_list.html index 1d3e963..dbb97e1 100644 --- a/syn/visit/fn.visit_meta_list.html +++ b/syn/visit/fn.visit_meta_list.html @@ -1,2 +1,2 @@ -visit_meta_list in syn::visit - Rust

    Function syn::visit::visit_meta_list

    source ·
    pub fn visit_meta_list<'ast, V>(v: &mut V, node: &'ast MetaList)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_meta_list in syn::visit - Rust
    syn::visit

    Function visit_meta_list

    source
    pub fn visit_meta_list<'ast, V>(v: &mut V, node: &'ast MetaList)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_meta_name_value.html b/syn/visit/fn.visit_meta_name_value.html index ab48d08..cc9ee55 100644 --- a/syn/visit/fn.visit_meta_name_value.html +++ b/syn/visit/fn.visit_meta_name_value.html @@ -1,2 +1,2 @@ -visit_meta_name_value in syn::visit - Rust
    pub fn visit_meta_name_value<'ast, V>(v: &mut V, node: &'ast MetaNameValue)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_meta_name_value in syn::visit - Rust
    syn::visit

    Function visit_meta_name_value

    source
    pub fn visit_meta_name_value<'ast, V>(v: &mut V, node: &'ast MetaNameValue)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_nested_meta.html b/syn/visit/fn.visit_nested_meta.html deleted file mode 100644 index 3f628bd..0000000 --- a/syn/visit/fn.visit_nested_meta.html +++ /dev/null @@ -1,2 +0,0 @@ -visit_nested_meta in syn::visit - Rust

    Function syn::visit::visit_nested_meta

    source ·
    pub fn visit_nested_meta<'ast, V>(v: &mut V, node: &'ast NestedMeta)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_parenthesized_generic_arguments.html b/syn/visit/fn.visit_parenthesized_generic_arguments.html index c85c16c..7f5d944 100644 --- a/syn/visit/fn.visit_parenthesized_generic_arguments.html +++ b/syn/visit/fn.visit_parenthesized_generic_arguments.html @@ -1,5 +1,5 @@ -visit_parenthesized_generic_arguments in syn::visit - Rust
    pub fn visit_parenthesized_generic_arguments<'ast, V>(
    -    v: &mut V,
    -    node: &'ast ParenthesizedGenericArguments
    -)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_parenthesized_generic_arguments in syn::visit - Rust
    syn::visit

    Function visit_parenthesized_generic_arguments

    source
    pub fn visit_parenthesized_generic_arguments<'ast, V>(
    +    v: &mut V,
    +    node: &'ast ParenthesizedGenericArguments,
    +)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_path.html b/syn/visit/fn.visit_path.html index 9dac33e..0b8be46 100644 --- a/syn/visit/fn.visit_path.html +++ b/syn/visit/fn.visit_path.html @@ -1,2 +1,2 @@ -visit_path in syn::visit - Rust

    Function syn::visit::visit_path

    source ·
    pub fn visit_path<'ast, V>(v: &mut V, node: &'ast Path)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_path in syn::visit - Rust
    syn::visit

    Function visit_path

    source
    pub fn visit_path<'ast, V>(v: &mut V, node: &'ast Path)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_path_arguments.html b/syn/visit/fn.visit_path_arguments.html index 7edbfb2..0c75bdd 100644 --- a/syn/visit/fn.visit_path_arguments.html +++ b/syn/visit/fn.visit_path_arguments.html @@ -1,2 +1,2 @@ -visit_path_arguments in syn::visit - Rust
    pub fn visit_path_arguments<'ast, V>(v: &mut V, node: &'ast PathArguments)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_path_arguments in syn::visit - Rust
    syn::visit

    Function visit_path_arguments

    source
    pub fn visit_path_arguments<'ast, V>(v: &mut V, node: &'ast PathArguments)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_path_segment.html b/syn/visit/fn.visit_path_segment.html index 9081ab6..2ca1daa 100644 --- a/syn/visit/fn.visit_path_segment.html +++ b/syn/visit/fn.visit_path_segment.html @@ -1,2 +1,2 @@ -visit_path_segment in syn::visit - Rust

    Function syn::visit::visit_path_segment

    source ·
    pub fn visit_path_segment<'ast, V>(v: &mut V, node: &'ast PathSegment)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_path_segment in syn::visit - Rust
    syn::visit

    Function visit_path_segment

    source
    pub fn visit_path_segment<'ast, V>(v: &mut V, node: &'ast PathSegment)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_predicate_eq.html b/syn/visit/fn.visit_predicate_eq.html deleted file mode 100644 index 1ae73fd..0000000 --- a/syn/visit/fn.visit_predicate_eq.html +++ /dev/null @@ -1,2 +0,0 @@ -visit_predicate_eq in syn::visit - Rust

    Function syn::visit::visit_predicate_eq

    source ·
    pub fn visit_predicate_eq<'ast, V>(v: &mut V, node: &'ast PredicateEq)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_predicate_lifetime.html b/syn/visit/fn.visit_predicate_lifetime.html index 6405782..9a6793a 100644 --- a/syn/visit/fn.visit_predicate_lifetime.html +++ b/syn/visit/fn.visit_predicate_lifetime.html @@ -1,5 +1,5 @@ -visit_predicate_lifetime in syn::visit - Rust
    pub fn visit_predicate_lifetime<'ast, V>(
    -    v: &mut V,
    -    node: &'ast PredicateLifetime
    -)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_predicate_lifetime in syn::visit - Rust
    syn::visit

    Function visit_predicate_lifetime

    source
    pub fn visit_predicate_lifetime<'ast, V>(
    +    v: &mut V,
    +    node: &'ast PredicateLifetime,
    +)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_predicate_type.html b/syn/visit/fn.visit_predicate_type.html index 2149366..fea29ca 100644 --- a/syn/visit/fn.visit_predicate_type.html +++ b/syn/visit/fn.visit_predicate_type.html @@ -1,2 +1,2 @@ -visit_predicate_type in syn::visit - Rust
    pub fn visit_predicate_type<'ast, V>(v: &mut V, node: &'ast PredicateType)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_predicate_type in syn::visit - Rust
    syn::visit

    Function visit_predicate_type

    source
    pub fn visit_predicate_type<'ast, V>(v: &mut V, node: &'ast PredicateType)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_qself.html b/syn/visit/fn.visit_qself.html index b8164d3..531823a 100644 --- a/syn/visit/fn.visit_qself.html +++ b/syn/visit/fn.visit_qself.html @@ -1,2 +1,2 @@ -visit_qself in syn::visit - Rust

    Function syn::visit::visit_qself

    source ·
    pub fn visit_qself<'ast, V>(v: &mut V, node: &'ast QSelf)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_qself in syn::visit - Rust
    syn::visit

    Function visit_qself

    source
    pub fn visit_qself<'ast, V>(v: &mut V, node: &'ast QSelf)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_return_type.html b/syn/visit/fn.visit_return_type.html index 456dab2..a012c82 100644 --- a/syn/visit/fn.visit_return_type.html +++ b/syn/visit/fn.visit_return_type.html @@ -1,2 +1,2 @@ -visit_return_type in syn::visit - Rust

    Function syn::visit::visit_return_type

    source ·
    pub fn visit_return_type<'ast, V>(v: &mut V, node: &'ast ReturnType)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_return_type in syn::visit - Rust
    syn::visit

    Function visit_return_type

    source
    pub fn visit_return_type<'ast, V>(v: &mut V, node: &'ast ReturnType)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_span.html b/syn/visit/fn.visit_span.html index b2f083f..e51a63f 100644 --- a/syn/visit/fn.visit_span.html +++ b/syn/visit/fn.visit_span.html @@ -1,2 +1,2 @@ -visit_span in syn::visit - Rust

    Function syn::visit::visit_span

    source ·
    pub fn visit_span<'ast, V>(v: &mut V, node: &Span)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_span in syn::visit - Rust
    syn::visit

    Function visit_span

    source
    pub fn visit_span<'ast, V>(v: &mut V, node: &Span)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_trait_bound.html b/syn/visit/fn.visit_trait_bound.html index 63159b4..88e7cb8 100644 --- a/syn/visit/fn.visit_trait_bound.html +++ b/syn/visit/fn.visit_trait_bound.html @@ -1,2 +1,2 @@ -visit_trait_bound in syn::visit - Rust

    Function syn::visit::visit_trait_bound

    source ·
    pub fn visit_trait_bound<'ast, V>(v: &mut V, node: &'ast TraitBound)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_trait_bound in syn::visit - Rust
    syn::visit

    Function visit_trait_bound

    source
    pub fn visit_trait_bound<'ast, V>(v: &mut V, node: &'ast TraitBound)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_trait_bound_modifier.html b/syn/visit/fn.visit_trait_bound_modifier.html index 6f86118..7370f51 100644 --- a/syn/visit/fn.visit_trait_bound_modifier.html +++ b/syn/visit/fn.visit_trait_bound_modifier.html @@ -1,5 +1,5 @@ -visit_trait_bound_modifier in syn::visit - Rust
    pub fn visit_trait_bound_modifier<'ast, V>(
    -    v: &mut V,
    -    node: &'ast TraitBoundModifier
    -)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_trait_bound_modifier in syn::visit - Rust
    syn::visit

    Function visit_trait_bound_modifier

    source
    pub fn visit_trait_bound_modifier<'ast, V>(
    +    v: &mut V,
    +    node: &'ast TraitBoundModifier,
    +)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_type.html b/syn/visit/fn.visit_type.html index 36d3146..413022a 100644 --- a/syn/visit/fn.visit_type.html +++ b/syn/visit/fn.visit_type.html @@ -1,2 +1,2 @@ -visit_type in syn::visit - Rust

    Function syn::visit::visit_type

    source ·
    pub fn visit_type<'ast, V>(v: &mut V, node: &'ast Type)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_type in syn::visit - Rust
    syn::visit

    Function visit_type

    source
    pub fn visit_type<'ast, V>(v: &mut V, node: &'ast Type)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_type_array.html b/syn/visit/fn.visit_type_array.html index cc260ce..80903ec 100644 --- a/syn/visit/fn.visit_type_array.html +++ b/syn/visit/fn.visit_type_array.html @@ -1,2 +1,2 @@ -visit_type_array in syn::visit - Rust

    Function syn::visit::visit_type_array

    source ·
    pub fn visit_type_array<'ast, V>(v: &mut V, node: &'ast TypeArray)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_type_array in syn::visit - Rust
    syn::visit

    Function visit_type_array

    source
    pub fn visit_type_array<'ast, V>(v: &mut V, node: &'ast TypeArray)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_type_bare_fn.html b/syn/visit/fn.visit_type_bare_fn.html index e122698..af0b55b 100644 --- a/syn/visit/fn.visit_type_bare_fn.html +++ b/syn/visit/fn.visit_type_bare_fn.html @@ -1,2 +1,2 @@ -visit_type_bare_fn in syn::visit - Rust

    Function syn::visit::visit_type_bare_fn

    source ·
    pub fn visit_type_bare_fn<'ast, V>(v: &mut V, node: &'ast TypeBareFn)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_type_bare_fn in syn::visit - Rust
    syn::visit

    Function visit_type_bare_fn

    source
    pub fn visit_type_bare_fn<'ast, V>(v: &mut V, node: &'ast TypeBareFn)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_type_group.html b/syn/visit/fn.visit_type_group.html index d08bb94..28b2bb4 100644 --- a/syn/visit/fn.visit_type_group.html +++ b/syn/visit/fn.visit_type_group.html @@ -1,2 +1,2 @@ -visit_type_group in syn::visit - Rust

    Function syn::visit::visit_type_group

    source ·
    pub fn visit_type_group<'ast, V>(v: &mut V, node: &'ast TypeGroup)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_type_group in syn::visit - Rust
    syn::visit

    Function visit_type_group

    source
    pub fn visit_type_group<'ast, V>(v: &mut V, node: &'ast TypeGroup)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_type_impl_trait.html b/syn/visit/fn.visit_type_impl_trait.html index 371d3eb..adb7d1c 100644 --- a/syn/visit/fn.visit_type_impl_trait.html +++ b/syn/visit/fn.visit_type_impl_trait.html @@ -1,2 +1,2 @@ -visit_type_impl_trait in syn::visit - Rust
    pub fn visit_type_impl_trait<'ast, V>(v: &mut V, node: &'ast TypeImplTrait)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_type_impl_trait in syn::visit - Rust
    syn::visit

    Function visit_type_impl_trait

    source
    pub fn visit_type_impl_trait<'ast, V>(v: &mut V, node: &'ast TypeImplTrait)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_type_infer.html b/syn/visit/fn.visit_type_infer.html index e89df18..e9cfee6 100644 --- a/syn/visit/fn.visit_type_infer.html +++ b/syn/visit/fn.visit_type_infer.html @@ -1,2 +1,2 @@ -visit_type_infer in syn::visit - Rust

    Function syn::visit::visit_type_infer

    source ·
    pub fn visit_type_infer<'ast, V>(v: &mut V, node: &'ast TypeInfer)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_type_infer in syn::visit - Rust
    syn::visit

    Function visit_type_infer

    source
    pub fn visit_type_infer<'ast, V>(v: &mut V, node: &'ast TypeInfer)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_type_macro.html b/syn/visit/fn.visit_type_macro.html index 3cfd7e4..f25924f 100644 --- a/syn/visit/fn.visit_type_macro.html +++ b/syn/visit/fn.visit_type_macro.html @@ -1,2 +1,2 @@ -visit_type_macro in syn::visit - Rust

    Function syn::visit::visit_type_macro

    source ·
    pub fn visit_type_macro<'ast, V>(v: &mut V, node: &'ast TypeMacro)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_type_macro in syn::visit - Rust
    syn::visit

    Function visit_type_macro

    source
    pub fn visit_type_macro<'ast, V>(v: &mut V, node: &'ast TypeMacro)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_type_never.html b/syn/visit/fn.visit_type_never.html index 63e21db..0760ba0 100644 --- a/syn/visit/fn.visit_type_never.html +++ b/syn/visit/fn.visit_type_never.html @@ -1,2 +1,2 @@ -visit_type_never in syn::visit - Rust

    Function syn::visit::visit_type_never

    source ·
    pub fn visit_type_never<'ast, V>(v: &mut V, node: &'ast TypeNever)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_type_never in syn::visit - Rust
    syn::visit

    Function visit_type_never

    source
    pub fn visit_type_never<'ast, V>(v: &mut V, node: &'ast TypeNever)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_type_param.html b/syn/visit/fn.visit_type_param.html index 6c9401c..56bd912 100644 --- a/syn/visit/fn.visit_type_param.html +++ b/syn/visit/fn.visit_type_param.html @@ -1,2 +1,2 @@ -visit_type_param in syn::visit - Rust

    Function syn::visit::visit_type_param

    source ·
    pub fn visit_type_param<'ast, V>(v: &mut V, node: &'ast TypeParam)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_type_param in syn::visit - Rust
    syn::visit

    Function visit_type_param

    source
    pub fn visit_type_param<'ast, V>(v: &mut V, node: &'ast TypeParam)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_type_param_bound.html b/syn/visit/fn.visit_type_param_bound.html index b07a4fa..784e85f 100644 --- a/syn/visit/fn.visit_type_param_bound.html +++ b/syn/visit/fn.visit_type_param_bound.html @@ -1,2 +1,2 @@ -visit_type_param_bound in syn::visit - Rust
    pub fn visit_type_param_bound<'ast, V>(v: &mut V, node: &'ast TypeParamBound)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_type_param_bound in syn::visit - Rust
    syn::visit

    Function visit_type_param_bound

    source
    pub fn visit_type_param_bound<'ast, V>(v: &mut V, node: &'ast TypeParamBound)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_type_paren.html b/syn/visit/fn.visit_type_paren.html index 5141b27..4259c36 100644 --- a/syn/visit/fn.visit_type_paren.html +++ b/syn/visit/fn.visit_type_paren.html @@ -1,2 +1,2 @@ -visit_type_paren in syn::visit - Rust

    Function syn::visit::visit_type_paren

    source ·
    pub fn visit_type_paren<'ast, V>(v: &mut V, node: &'ast TypeParen)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_type_paren in syn::visit - Rust
    syn::visit

    Function visit_type_paren

    source
    pub fn visit_type_paren<'ast, V>(v: &mut V, node: &'ast TypeParen)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_type_path.html b/syn/visit/fn.visit_type_path.html index d3a1ea2..6c1d427 100644 --- a/syn/visit/fn.visit_type_path.html +++ b/syn/visit/fn.visit_type_path.html @@ -1,2 +1,2 @@ -visit_type_path in syn::visit - Rust

    Function syn::visit::visit_type_path

    source ·
    pub fn visit_type_path<'ast, V>(v: &mut V, node: &'ast TypePath)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_type_path in syn::visit - Rust
    syn::visit

    Function visit_type_path

    source
    pub fn visit_type_path<'ast, V>(v: &mut V, node: &'ast TypePath)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_type_ptr.html b/syn/visit/fn.visit_type_ptr.html index e743520..637e114 100644 --- a/syn/visit/fn.visit_type_ptr.html +++ b/syn/visit/fn.visit_type_ptr.html @@ -1,2 +1,2 @@ -visit_type_ptr in syn::visit - Rust

    Function syn::visit::visit_type_ptr

    source ·
    pub fn visit_type_ptr<'ast, V>(v: &mut V, node: &'ast TypePtr)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_type_ptr in syn::visit - Rust
    syn::visit

    Function visit_type_ptr

    source
    pub fn visit_type_ptr<'ast, V>(v: &mut V, node: &'ast TypePtr)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_type_reference.html b/syn/visit/fn.visit_type_reference.html index 0c63175..b74ab86 100644 --- a/syn/visit/fn.visit_type_reference.html +++ b/syn/visit/fn.visit_type_reference.html @@ -1,2 +1,2 @@ -visit_type_reference in syn::visit - Rust
    pub fn visit_type_reference<'ast, V>(v: &mut V, node: &'ast TypeReference)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_type_reference in syn::visit - Rust
    syn::visit

    Function visit_type_reference

    source
    pub fn visit_type_reference<'ast, V>(v: &mut V, node: &'ast TypeReference)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_type_slice.html b/syn/visit/fn.visit_type_slice.html index 94c1039..8ccb200 100644 --- a/syn/visit/fn.visit_type_slice.html +++ b/syn/visit/fn.visit_type_slice.html @@ -1,2 +1,2 @@ -visit_type_slice in syn::visit - Rust

    Function syn::visit::visit_type_slice

    source ·
    pub fn visit_type_slice<'ast, V>(v: &mut V, node: &'ast TypeSlice)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_type_slice in syn::visit - Rust
    syn::visit

    Function visit_type_slice

    source
    pub fn visit_type_slice<'ast, V>(v: &mut V, node: &'ast TypeSlice)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_type_trait_object.html b/syn/visit/fn.visit_type_trait_object.html index 953ccdc..5af325a 100644 --- a/syn/visit/fn.visit_type_trait_object.html +++ b/syn/visit/fn.visit_type_trait_object.html @@ -1,2 +1,2 @@ -visit_type_trait_object in syn::visit - Rust
    pub fn visit_type_trait_object<'ast, V>(v: &mut V, node: &'ast TypeTraitObject)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_type_trait_object in syn::visit - Rust
    syn::visit

    Function visit_type_trait_object

    source
    pub fn visit_type_trait_object<'ast, V>(v: &mut V, node: &'ast TypeTraitObject)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_type_tuple.html b/syn/visit/fn.visit_type_tuple.html index 1edcab9..4a2cb08 100644 --- a/syn/visit/fn.visit_type_tuple.html +++ b/syn/visit/fn.visit_type_tuple.html @@ -1,2 +1,2 @@ -visit_type_tuple in syn::visit - Rust

    Function syn::visit::visit_type_tuple

    source ·
    pub fn visit_type_tuple<'ast, V>(v: &mut V, node: &'ast TypeTuple)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_type_tuple in syn::visit - Rust
    syn::visit

    Function visit_type_tuple

    source
    pub fn visit_type_tuple<'ast, V>(v: &mut V, node: &'ast TypeTuple)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_un_op.html b/syn/visit/fn.visit_un_op.html index 8870ce8..9868533 100644 --- a/syn/visit/fn.visit_un_op.html +++ b/syn/visit/fn.visit_un_op.html @@ -1,2 +1,2 @@ -visit_un_op in syn::visit - Rust

    Function syn::visit::visit_un_op

    source ·
    pub fn visit_un_op<'ast, V>(v: &mut V, node: &'ast UnOp)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_un_op in syn::visit - Rust
    syn::visit

    Function visit_un_op

    source
    pub fn visit_un_op<'ast, V>(v: &mut V, node: &'ast UnOp)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_variadic.html b/syn/visit/fn.visit_variadic.html deleted file mode 100644 index ecabd86..0000000 --- a/syn/visit/fn.visit_variadic.html +++ /dev/null @@ -1,2 +0,0 @@ -visit_variadic in syn::visit - Rust

    Function syn::visit::visit_variadic

    source ·
    pub fn visit_variadic<'ast, V>(v: &mut V, node: &'ast Variadic)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_variant.html b/syn/visit/fn.visit_variant.html index 1aeb0d1..7df05f0 100644 --- a/syn/visit/fn.visit_variant.html +++ b/syn/visit/fn.visit_variant.html @@ -1,2 +1,2 @@ -visit_variant in syn::visit - Rust

    Function syn::visit::visit_variant

    source ·
    pub fn visit_variant<'ast, V>(v: &mut V, node: &'ast Variant)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_variant in syn::visit - Rust
    syn::visit

    Function visit_variant

    source
    pub fn visit_variant<'ast, V>(v: &mut V, node: &'ast Variant)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_vis_crate.html b/syn/visit/fn.visit_vis_crate.html deleted file mode 100644 index 738ffef..0000000 --- a/syn/visit/fn.visit_vis_crate.html +++ /dev/null @@ -1,2 +0,0 @@ -visit_vis_crate in syn::visit - Rust

    Function syn::visit::visit_vis_crate

    source ·
    pub fn visit_vis_crate<'ast, V>(v: &mut V, node: &'ast VisCrate)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_vis_public.html b/syn/visit/fn.visit_vis_public.html deleted file mode 100644 index 5b1f0f8..0000000 --- a/syn/visit/fn.visit_vis_public.html +++ /dev/null @@ -1,2 +0,0 @@ -visit_vis_public in syn::visit - Rust

    Function syn::visit::visit_vis_public

    source ·
    pub fn visit_vis_public<'ast, V>(v: &mut V, node: &'ast VisPublic)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_vis_restricted.html b/syn/visit/fn.visit_vis_restricted.html index 9f734d4..303198f 100644 --- a/syn/visit/fn.visit_vis_restricted.html +++ b/syn/visit/fn.visit_vis_restricted.html @@ -1,2 +1,2 @@ -visit_vis_restricted in syn::visit - Rust
    pub fn visit_vis_restricted<'ast, V>(v: &mut V, node: &'ast VisRestricted)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_vis_restricted in syn::visit - Rust
    syn::visit

    Function visit_vis_restricted

    source
    pub fn visit_vis_restricted<'ast, V>(v: &mut V, node: &'ast VisRestricted)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_visibility.html b/syn/visit/fn.visit_visibility.html index d897c10..715706d 100644 --- a/syn/visit/fn.visit_visibility.html +++ b/syn/visit/fn.visit_visibility.html @@ -1,2 +1,2 @@ -visit_visibility in syn::visit - Rust

    Function syn::visit::visit_visibility

    source ·
    pub fn visit_visibility<'ast, V>(v: &mut V, node: &'ast Visibility)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_visibility in syn::visit - Rust
    syn::visit

    Function visit_visibility

    source
    pub fn visit_visibility<'ast, V>(v: &mut V, node: &'ast Visibility)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_where_clause.html b/syn/visit/fn.visit_where_clause.html index dd7b9d7..1f289da 100644 --- a/syn/visit/fn.visit_where_clause.html +++ b/syn/visit/fn.visit_where_clause.html @@ -1,2 +1,2 @@ -visit_where_clause in syn::visit - Rust

    Function syn::visit::visit_where_clause

    source ·
    pub fn visit_where_clause<'ast, V>(v: &mut V, node: &'ast WhereClause)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_where_clause in syn::visit - Rust
    syn::visit

    Function visit_where_clause

    source
    pub fn visit_where_clause<'ast, V>(v: &mut V, node: &'ast WhereClause)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/fn.visit_where_predicate.html b/syn/visit/fn.visit_where_predicate.html index 2ba2dec..78237f4 100644 --- a/syn/visit/fn.visit_where_predicate.html +++ b/syn/visit/fn.visit_where_predicate.html @@ -1,2 +1,2 @@ -visit_where_predicate in syn::visit - Rust
    pub fn visit_where_predicate<'ast, V>(v: &mut V, node: &'ast WherePredicate)where
    -    V: Visit<'ast> + ?Sized,
    \ No newline at end of file +visit_where_predicate in syn::visit - Rust
    syn::visit

    Function visit_where_predicate

    source
    pub fn visit_where_predicate<'ast, V>(v: &mut V, node: &'ast WherePredicate)
    where + V: Visit<'ast> + ?Sized,
    \ No newline at end of file diff --git a/syn/visit/index.html b/syn/visit/index.html index e3fa39d..88727d1 100644 --- a/syn/visit/index.html +++ b/syn/visit/index.html @@ -1,22 +1,22 @@ -syn::visit - Rust

    Module syn::visit

    source ·
    Expand description

    Syntax tree traversal to walk a shared borrow of a syntax tree.

    +syn::visit - Rust
    syn

    Module visit

    source
    Expand description

    Syntax tree traversal to walk a shared borrow of a syntax tree.

    Each method of the Visit trait is a hook that can be overridden to customize the behavior when visiting the corresponding type of node. By default, every method recursively visits the substructure of the input by invoking the right visitor method of each of its fields.

    -
    pub trait Visit<'ast> {
    +
    pub trait Visit<'ast> {
         /* ... */
     
    -    fn visit_expr_binary(&mut self, node: &'ast ExprBinary) {
    +    fn visit_expr_binary(&mut self, node: &'ast ExprBinary) {
             visit_expr_binary(self, node);
         }
     
         /* ... */
     }
     
    -pub fn visit_expr_binary<'ast, V>(v: &mut V, node: &'ast ExprBinary)
    +pub fn visit_expr_binary<'ast, V>(v: &mut V, node: &'ast ExprBinary)
     where
    -    V: Visit<'ast> + ?Sized,
    +    V: Visit<'ast> + ?Sized,
     {
         for attr in &node.attrs {
             v.visit_attribute(attr);
    @@ -27,15 +27,14 @@ by invoking the right visitor method of each of its fields.

    } /* ... */
    -

    This module is available only if Syn is built with the "visit" feature.


    -

    Example

    +

    §Example

    This visitor will print the name of every freestanding function in the syntax tree, including nested functions.

    // [dependencies]
    -// quote = "1.0"
    -// syn = { version = "1.0", features = ["full", "visit"] }
    +// quote = "1.0"
    +// syn = { version = "2.0", features = ["full", "visit"] }
     
     use quote::quote;
     use syn::visit::{self, Visit};
    @@ -43,9 +42,9 @@ syntax tree, including nested functions.

    struct FnVisitor; -impl<'ast> Visit<'ast> for FnVisitor { - fn visit_item_fn(&mut self, node: &'ast ItemFn) { - println!("Function with name={}", node.sig.ident); +impl<'ast> Visit<'ast> for FnVisitor { + fn visit_item_fn(&mut self, node: &'ast ItemFn) { + println!("Function with name={}", node.sig.ident); // Delegate to the default impl to visit any nested functions. visit::visit_item_fn(self, node); @@ -53,7 +52,7 @@ syntax tree, including nested functions.

    } fn main() { - let code = quote! { + let code = quote! { pub fn f() { fn g() {} } @@ -70,19 +69,19 @@ hold on to references into the syntax tree.

    use syn::visit::{self, Visit}; use syn::{File, ItemFn}; -struct FnVisitor<'ast> { - functions: Vec<&'ast ItemFn>, +struct FnVisitor<'ast> { + functions: Vec<&'ast ItemFn>, } -impl<'ast> Visit<'ast> for FnVisitor<'ast> { - fn visit_item_fn(&mut self, node: &'ast ItemFn) { +impl<'ast> Visit<'ast> for FnVisitor<'ast> { + fn visit_item_fn(&mut self, node: &'ast ItemFn) { self.functions.push(node); visit::visit_item_fn(self, node); } } fn main() { - let code = quote! { + let code = quote! { pub fn f() { fn g() {} } @@ -92,7 +91,7 @@ hold on to references into the syntax tree.

    let mut visitor = FnVisitor { functions: Vec::new() }; visitor.visit_file(&syntax_tree); for f in visitor.functions { - println!("Function with name={}", f.sig.ident); + println!("Function with name={}", f.sig.ident); } }
    -

    Traits

    • Syntax tree traversal to walk a shared borrow of a syntax tree.

    Functions

    \ No newline at end of file +

    Traits§

    • Syntax tree traversal to walk a shared borrow of a syntax tree.

    Functions§

    \ No newline at end of file diff --git a/syn/visit/sidebar-items.js b/syn/visit/sidebar-items.js index 8d261ff..2477e8a 100644 --- a/syn/visit/sidebar-items.js +++ b/syn/visit/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"fn":["visit_abi","visit_angle_bracketed_generic_arguments","visit_attr_style","visit_attribute","visit_bare_fn_arg","visit_bin_op","visit_binding","visit_bound_lifetimes","visit_const_param","visit_constraint","visit_data","visit_data_enum","visit_data_struct","visit_data_union","visit_derive_input","visit_expr","visit_expr_binary","visit_expr_call","visit_expr_cast","visit_expr_field","visit_expr_index","visit_expr_lit","visit_expr_paren","visit_expr_path","visit_expr_unary","visit_field","visit_fields","visit_fields_named","visit_fields_unnamed","visit_generic_argument","visit_generic_param","visit_generics","visit_ident","visit_index","visit_lifetime","visit_lifetime_def","visit_lit","visit_lit_bool","visit_lit_byte","visit_lit_byte_str","visit_lit_char","visit_lit_float","visit_lit_int","visit_lit_str","visit_macro","visit_macro_delimiter","visit_member","visit_meta","visit_meta_list","visit_meta_name_value","visit_nested_meta","visit_parenthesized_generic_arguments","visit_path","visit_path_arguments","visit_path_segment","visit_predicate_eq","visit_predicate_lifetime","visit_predicate_type","visit_qself","visit_return_type","visit_span","visit_trait_bound","visit_trait_bound_modifier","visit_type","visit_type_array","visit_type_bare_fn","visit_type_group","visit_type_impl_trait","visit_type_infer","visit_type_macro","visit_type_never","visit_type_param","visit_type_param_bound","visit_type_paren","visit_type_path","visit_type_ptr","visit_type_reference","visit_type_slice","visit_type_trait_object","visit_type_tuple","visit_un_op","visit_variadic","visit_variant","visit_vis_crate","visit_vis_public","visit_vis_restricted","visit_visibility","visit_where_clause","visit_where_predicate"],"trait":["Visit"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"fn":["visit_abi","visit_angle_bracketed_generic_arguments","visit_assoc_const","visit_assoc_type","visit_attr_style","visit_attribute","visit_bare_fn_arg","visit_bare_variadic","visit_bin_op","visit_bound_lifetimes","visit_const_param","visit_constraint","visit_data","visit_data_enum","visit_data_struct","visit_data_union","visit_derive_input","visit_expr","visit_expr_binary","visit_expr_call","visit_expr_cast","visit_expr_field","visit_expr_group","visit_expr_index","visit_expr_lit","visit_expr_macro","visit_expr_method_call","visit_expr_paren","visit_expr_path","visit_expr_reference","visit_expr_struct","visit_expr_tuple","visit_expr_unary","visit_field","visit_field_mutability","visit_field_value","visit_fields","visit_fields_named","visit_fields_unnamed","visit_generic_argument","visit_generic_param","visit_generics","visit_ident","visit_index","visit_lifetime","visit_lifetime_param","visit_lit","visit_lit_bool","visit_lit_byte","visit_lit_byte_str","visit_lit_char","visit_lit_cstr","visit_lit_float","visit_lit_int","visit_lit_str","visit_macro","visit_macro_delimiter","visit_member","visit_meta","visit_meta_list","visit_meta_name_value","visit_parenthesized_generic_arguments","visit_path","visit_path_arguments","visit_path_segment","visit_predicate_lifetime","visit_predicate_type","visit_qself","visit_return_type","visit_span","visit_trait_bound","visit_trait_bound_modifier","visit_type","visit_type_array","visit_type_bare_fn","visit_type_group","visit_type_impl_trait","visit_type_infer","visit_type_macro","visit_type_never","visit_type_param","visit_type_param_bound","visit_type_paren","visit_type_path","visit_type_ptr","visit_type_reference","visit_type_slice","visit_type_trait_object","visit_type_tuple","visit_un_op","visit_variant","visit_vis_restricted","visit_visibility","visit_where_clause","visit_where_predicate"],"trait":["Visit"]}; \ No newline at end of file diff --git a/syn/visit/trait.Visit.html b/syn/visit/trait.Visit.html index e2e9469..4c7e8eb 100644 --- a/syn/visit/trait.Visit.html +++ b/syn/visit/trait.Visit.html @@ -1,15 +1,17 @@ -Visit in syn::visit - Rust

    Trait syn::visit::Visit

    source ·
    pub trait Visit<'ast> {
    -
    Show 89 methods // Provided methods +Visit in syn::visit - Rust
    syn::visit

    Trait Visit

    source
    pub trait Visit<'ast> {
    +
    Show 95 methods // Provided methods fn visit_abi(&mut self, i: &'ast Abi) { ... } fn visit_angle_bracketed_generic_arguments( &mut self, - i: &'ast AngleBracketedGenericArguments + i: &'ast AngleBracketedGenericArguments, ) { ... } + fn visit_assoc_const(&mut self, i: &'ast AssocConst) { ... } + fn visit_assoc_type(&mut self, i: &'ast AssocType) { ... } fn visit_attr_style(&mut self, i: &'ast AttrStyle) { ... } fn visit_attribute(&mut self, i: &'ast Attribute) { ... } fn visit_bare_fn_arg(&mut self, i: &'ast BareFnArg) { ... } + fn visit_bare_variadic(&mut self, i: &'ast BareVariadic) { ... } fn visit_bin_op(&mut self, i: &'ast BinOp) { ... } - fn visit_binding(&mut self, i: &'ast Binding) { ... } fn visit_bound_lifetimes(&mut self, i: &'ast BoundLifetimes) { ... } fn visit_const_param(&mut self, i: &'ast ConstParam) { ... } fn visit_constraint(&mut self, i: &'ast Constraint) { ... } @@ -23,12 +25,20 @@ fn visit_expr_call(&mut self, i: &'ast ExprCall) { ... } fn visit_expr_cast(&mut self, i: &'ast ExprCast) { ... } fn visit_expr_field(&mut self, i: &'ast ExprField) { ... } + fn visit_expr_group(&mut self, i: &'ast ExprGroup) { ... } fn visit_expr_index(&mut self, i: &'ast ExprIndex) { ... } fn visit_expr_lit(&mut self, i: &'ast ExprLit) { ... } + fn visit_expr_macro(&mut self, i: &'ast ExprMacro) { ... } + fn visit_expr_method_call(&mut self, i: &'ast ExprMethodCall) { ... } fn visit_expr_paren(&mut self, i: &'ast ExprParen) { ... } fn visit_expr_path(&mut self, i: &'ast ExprPath) { ... } + fn visit_expr_reference(&mut self, i: &'ast ExprReference) { ... } + fn visit_expr_struct(&mut self, i: &'ast ExprStruct) { ... } + fn visit_expr_tuple(&mut self, i: &'ast ExprTuple) { ... } fn visit_expr_unary(&mut self, i: &'ast ExprUnary) { ... } fn visit_field(&mut self, i: &'ast Field) { ... } + fn visit_field_mutability(&mut self, i: &'ast FieldMutability) { ... } + fn visit_field_value(&mut self, i: &'ast FieldValue) { ... } fn visit_fields(&mut self, i: &'ast Fields) { ... } fn visit_fields_named(&mut self, i: &'ast FieldsNamed) { ... } fn visit_fields_unnamed(&mut self, i: &'ast FieldsUnnamed) { ... } @@ -38,11 +48,12 @@ fn visit_ident(&mut self, i: &'ast Ident) { ... } fn visit_index(&mut self, i: &'ast Index) { ... } fn visit_lifetime(&mut self, i: &'ast Lifetime) { ... } - fn visit_lifetime_def(&mut self, i: &'ast LifetimeDef) { ... } + fn visit_lifetime_param(&mut self, i: &'ast LifetimeParam) { ... } fn visit_lit(&mut self, i: &'ast Lit) { ... } fn visit_lit_bool(&mut self, i: &'ast LitBool) { ... } fn visit_lit_byte(&mut self, i: &'ast LitByte) { ... } fn visit_lit_byte_str(&mut self, i: &'ast LitByteStr) { ... } + fn visit_lit_cstr(&mut self, i: &'ast LitCStr) { ... } fn visit_lit_char(&mut self, i: &'ast LitChar) { ... } fn visit_lit_float(&mut self, i: &'ast LitFloat) { ... } fn visit_lit_int(&mut self, i: &'ast LitInt) { ... } @@ -53,15 +64,13 @@ fn visit_meta(&mut self, i: &'ast Meta) { ... } fn visit_meta_list(&mut self, i: &'ast MetaList) { ... } fn visit_meta_name_value(&mut self, i: &'ast MetaNameValue) { ... } - fn visit_nested_meta(&mut self, i: &'ast NestedMeta) { ... } fn visit_parenthesized_generic_arguments( &mut self, - i: &'ast ParenthesizedGenericArguments + i: &'ast ParenthesizedGenericArguments, ) { ... } fn visit_path(&mut self, i: &'ast Path) { ... } fn visit_path_arguments(&mut self, i: &'ast PathArguments) { ... } fn visit_path_segment(&mut self, i: &'ast PathSegment) { ... } - fn visit_predicate_eq(&mut self, i: &'ast PredicateEq) { ... } fn visit_predicate_lifetime(&mut self, i: &'ast PredicateLifetime) { ... } fn visit_predicate_type(&mut self, i: &'ast PredicateType) { ... } fn visit_qself(&mut self, i: &'ast QSelf) { ... } @@ -87,21 +96,17 @@ fn visit_type_trait_object(&mut self, i: &'ast TypeTraitObject) { ... } fn visit_type_tuple(&mut self, i: &'ast TypeTuple) { ... } fn visit_un_op(&mut self, i: &'ast UnOp) { ... } - fn visit_variadic(&mut self, i: &'ast Variadic) { ... } fn visit_variant(&mut self, i: &'ast Variant) { ... } - fn visit_vis_crate(&mut self, i: &'ast VisCrate) { ... } - fn visit_vis_public(&mut self, i: &'ast VisPublic) { ... } fn visit_vis_restricted(&mut self, i: &'ast VisRestricted) { ... } fn visit_visibility(&mut self, i: &'ast Visibility) { ... } fn visit_where_clause(&mut self, i: &'ast WhereClause) { ... } fn visit_where_predicate(&mut self, i: &'ast WherePredicate) { ... }
    }
    Expand description

    Syntax tree traversal to walk a shared borrow of a syntax tree.

    See the module documentation for details.

    -

    This trait is available only if Syn is built with the "visit" feature.

    -

    Provided Methods§

    Provided Methods§

    source

    fn visit_abi(&mut self, i: &'ast Abi)

    source

    fn visit_angle_bracketed_generic_arguments( &mut self, - i: &'ast AngleBracketedGenericArguments -)

    source

    fn visit_attr_style(&mut self, i: &'ast AttrStyle)

    source

    fn visit_attribute(&mut self, i: &'ast Attribute)

    source

    fn visit_bare_fn_arg(&mut self, i: &'ast BareFnArg)

    source

    fn visit_bin_op(&mut self, i: &'ast BinOp)

    source

    fn visit_binding(&mut self, i: &'ast Binding)

    source

    fn visit_bound_lifetimes(&mut self, i: &'ast BoundLifetimes)

    source

    fn visit_const_param(&mut self, i: &'ast ConstParam)

    source

    fn visit_constraint(&mut self, i: &'ast Constraint)

    source

    fn visit_data(&mut self, i: &'ast Data)

    source

    fn visit_data_enum(&mut self, i: &'ast DataEnum)

    source

    fn visit_data_struct(&mut self, i: &'ast DataStruct)

    source

    fn visit_data_union(&mut self, i: &'ast DataUnion)

    source

    fn visit_derive_input(&mut self, i: &'ast DeriveInput)

    source

    fn visit_expr(&mut self, i: &'ast Expr)

    source

    fn visit_expr_binary(&mut self, i: &'ast ExprBinary)

    source

    fn visit_expr_call(&mut self, i: &'ast ExprCall)

    source

    fn visit_expr_cast(&mut self, i: &'ast ExprCast)

    source

    fn visit_expr_field(&mut self, i: &'ast ExprField)

    source

    fn visit_expr_index(&mut self, i: &'ast ExprIndex)

    source

    fn visit_expr_lit(&mut self, i: &'ast ExprLit)

    source

    fn visit_expr_paren(&mut self, i: &'ast ExprParen)

    source

    fn visit_expr_path(&mut self, i: &'ast ExprPath)

    source

    fn visit_expr_unary(&mut self, i: &'ast ExprUnary)

    source

    fn visit_field(&mut self, i: &'ast Field)

    source

    fn visit_fields(&mut self, i: &'ast Fields)

    source

    fn visit_fields_named(&mut self, i: &'ast FieldsNamed)

    source

    fn visit_fields_unnamed(&mut self, i: &'ast FieldsUnnamed)

    source

    fn visit_generic_argument(&mut self, i: &'ast GenericArgument)

    source

    fn visit_generic_param(&mut self, i: &'ast GenericParam)

    source

    fn visit_generics(&mut self, i: &'ast Generics)

    source

    fn visit_ident(&mut self, i: &'ast Ident)

    source

    fn visit_index(&mut self, i: &'ast Index)

    source

    fn visit_lifetime(&mut self, i: &'ast Lifetime)

    source

    fn visit_lifetime_def(&mut self, i: &'ast LifetimeDef)

    source

    fn visit_lit(&mut self, i: &'ast Lit)

    source

    fn visit_lit_bool(&mut self, i: &'ast LitBool)

    source

    fn visit_lit_byte(&mut self, i: &'ast LitByte)

    source

    fn visit_lit_byte_str(&mut self, i: &'ast LitByteStr)

    source

    fn visit_lit_char(&mut self, i: &'ast LitChar)

    source

    fn visit_lit_float(&mut self, i: &'ast LitFloat)

    source

    fn visit_lit_int(&mut self, i: &'ast LitInt)

    source

    fn visit_lit_str(&mut self, i: &'ast LitStr)

    source

    fn visit_macro(&mut self, i: &'ast Macro)

    source

    fn visit_macro_delimiter(&mut self, i: &'ast MacroDelimiter)

    source

    fn visit_member(&mut self, i: &'ast Member)

    source

    fn visit_meta(&mut self, i: &'ast Meta)

    source

    fn visit_meta_list(&mut self, i: &'ast MetaList)

    source

    fn visit_meta_name_value(&mut self, i: &'ast MetaNameValue)

    source

    fn visit_nested_meta(&mut self, i: &'ast NestedMeta)

    source

    fn visit_parenthesized_generic_arguments( + i: &'ast AngleBracketedGenericArguments, +)

    source

    fn visit_assoc_const(&mut self, i: &'ast AssocConst)

    source

    fn visit_assoc_type(&mut self, i: &'ast AssocType)

    source

    fn visit_attr_style(&mut self, i: &'ast AttrStyle)

    source

    fn visit_attribute(&mut self, i: &'ast Attribute)

    source

    fn visit_bare_fn_arg(&mut self, i: &'ast BareFnArg)

    source

    fn visit_bare_variadic(&mut self, i: &'ast BareVariadic)

    source

    fn visit_bin_op(&mut self, i: &'ast BinOp)

    source

    fn visit_bound_lifetimes(&mut self, i: &'ast BoundLifetimes)

    source

    fn visit_const_param(&mut self, i: &'ast ConstParam)

    source

    fn visit_constraint(&mut self, i: &'ast Constraint)

    source

    fn visit_data(&mut self, i: &'ast Data)

    source

    fn visit_data_enum(&mut self, i: &'ast DataEnum)

    source

    fn visit_data_struct(&mut self, i: &'ast DataStruct)

    source

    fn visit_data_union(&mut self, i: &'ast DataUnion)

    source

    fn visit_derive_input(&mut self, i: &'ast DeriveInput)

    source

    fn visit_expr(&mut self, i: &'ast Expr)

    source

    fn visit_expr_binary(&mut self, i: &'ast ExprBinary)

    source

    fn visit_expr_call(&mut self, i: &'ast ExprCall)

    source

    fn visit_expr_cast(&mut self, i: &'ast ExprCast)

    source

    fn visit_expr_field(&mut self, i: &'ast ExprField)

    source

    fn visit_expr_group(&mut self, i: &'ast ExprGroup)

    source

    fn visit_expr_index(&mut self, i: &'ast ExprIndex)

    source

    fn visit_expr_lit(&mut self, i: &'ast ExprLit)

    source

    fn visit_expr_macro(&mut self, i: &'ast ExprMacro)

    source

    fn visit_expr_method_call(&mut self, i: &'ast ExprMethodCall)

    source

    fn visit_expr_paren(&mut self, i: &'ast ExprParen)

    source

    fn visit_expr_path(&mut self, i: &'ast ExprPath)

    source

    fn visit_expr_reference(&mut self, i: &'ast ExprReference)

    source

    fn visit_expr_struct(&mut self, i: &'ast ExprStruct)

    source

    fn visit_expr_tuple(&mut self, i: &'ast ExprTuple)

    source

    fn visit_expr_unary(&mut self, i: &'ast ExprUnary)

    source

    fn visit_field(&mut self, i: &'ast Field)

    source

    fn visit_field_mutability(&mut self, i: &'ast FieldMutability)

    source

    fn visit_field_value(&mut self, i: &'ast FieldValue)

    source

    fn visit_fields(&mut self, i: &'ast Fields)

    source

    fn visit_fields_named(&mut self, i: &'ast FieldsNamed)

    source

    fn visit_fields_unnamed(&mut self, i: &'ast FieldsUnnamed)

    source

    fn visit_generic_argument(&mut self, i: &'ast GenericArgument)

    source

    fn visit_generic_param(&mut self, i: &'ast GenericParam)

    source

    fn visit_generics(&mut self, i: &'ast Generics)

    source

    fn visit_ident(&mut self, i: &'ast Ident)

    source

    fn visit_index(&mut self, i: &'ast Index)

    source

    fn visit_lifetime(&mut self, i: &'ast Lifetime)

    source

    fn visit_lifetime_param(&mut self, i: &'ast LifetimeParam)

    source

    fn visit_lit(&mut self, i: &'ast Lit)

    source

    fn visit_lit_bool(&mut self, i: &'ast LitBool)

    source

    fn visit_lit_byte(&mut self, i: &'ast LitByte)

    source

    fn visit_lit_byte_str(&mut self, i: &'ast LitByteStr)

    source

    fn visit_lit_cstr(&mut self, i: &'ast LitCStr)

    source

    fn visit_lit_char(&mut self, i: &'ast LitChar)

    source

    fn visit_lit_float(&mut self, i: &'ast LitFloat)

    source

    fn visit_lit_int(&mut self, i: &'ast LitInt)

    source

    fn visit_lit_str(&mut self, i: &'ast LitStr)

    source

    fn visit_macro(&mut self, i: &'ast Macro)

    source

    fn visit_macro_delimiter(&mut self, i: &'ast MacroDelimiter)

    source

    fn visit_member(&mut self, i: &'ast Member)

    source

    fn visit_meta(&mut self, i: &'ast Meta)

    source

    fn visit_meta_list(&mut self, i: &'ast MetaList)

    source

    fn visit_meta_name_value(&mut self, i: &'ast MetaNameValue)

    source

    fn visit_parenthesized_generic_arguments( &mut self, - i: &'ast ParenthesizedGenericArguments -)

    source

    fn visit_path(&mut self, i: &'ast Path)

    source

    fn visit_path_arguments(&mut self, i: &'ast PathArguments)

    source

    fn visit_path_segment(&mut self, i: &'ast PathSegment)

    source

    fn visit_predicate_eq(&mut self, i: &'ast PredicateEq)

    source

    fn visit_predicate_lifetime(&mut self, i: &'ast PredicateLifetime)

    source

    fn visit_predicate_type(&mut self, i: &'ast PredicateType)

    source

    fn visit_qself(&mut self, i: &'ast QSelf)

    source

    fn visit_return_type(&mut self, i: &'ast ReturnType)

    source

    fn visit_span(&mut self, i: &Span)

    source

    fn visit_trait_bound(&mut self, i: &'ast TraitBound)

    source

    fn visit_trait_bound_modifier(&mut self, i: &'ast TraitBoundModifier)

    source

    fn visit_type(&mut self, i: &'ast Type)

    source

    fn visit_type_array(&mut self, i: &'ast TypeArray)

    source

    fn visit_type_bare_fn(&mut self, i: &'ast TypeBareFn)

    source

    fn visit_type_group(&mut self, i: &'ast TypeGroup)

    source

    fn visit_type_impl_trait(&mut self, i: &'ast TypeImplTrait)

    source

    fn visit_type_infer(&mut self, i: &'ast TypeInfer)

    source

    fn visit_type_macro(&mut self, i: &'ast TypeMacro)

    source

    fn visit_type_never(&mut self, i: &'ast TypeNever)

    source

    fn visit_type_param(&mut self, i: &'ast TypeParam)

    source

    fn visit_type_param_bound(&mut self, i: &'ast TypeParamBound)

    source

    fn visit_type_paren(&mut self, i: &'ast TypeParen)

    source

    fn visit_type_path(&mut self, i: &'ast TypePath)

    source

    fn visit_type_ptr(&mut self, i: &'ast TypePtr)

    source

    fn visit_type_reference(&mut self, i: &'ast TypeReference)

    source

    fn visit_type_slice(&mut self, i: &'ast TypeSlice)

    source

    fn visit_type_trait_object(&mut self, i: &'ast TypeTraitObject)

    source

    fn visit_type_tuple(&mut self, i: &'ast TypeTuple)

    source

    fn visit_un_op(&mut self, i: &'ast UnOp)

    source

    fn visit_variadic(&mut self, i: &'ast Variadic)

    source

    fn visit_variant(&mut self, i: &'ast Variant)

    source

    fn visit_vis_crate(&mut self, i: &'ast VisCrate)

    source

    fn visit_vis_public(&mut self, i: &'ast VisPublic)

    source

    fn visit_vis_restricted(&mut self, i: &'ast VisRestricted)

    source

    fn visit_visibility(&mut self, i: &'ast Visibility)

    source

    fn visit_where_clause(&mut self, i: &'ast WhereClause)

    source

    fn visit_where_predicate(&mut self, i: &'ast WherePredicate)

    Implementors§

    \ No newline at end of file + i: &'ast ParenthesizedGenericArguments, +)
    source

    fn visit_path(&mut self, i: &'ast Path)

    source

    fn visit_path_arguments(&mut self, i: &'ast PathArguments)

    source

    fn visit_path_segment(&mut self, i: &'ast PathSegment)

    source

    fn visit_predicate_lifetime(&mut self, i: &'ast PredicateLifetime)

    source

    fn visit_predicate_type(&mut self, i: &'ast PredicateType)

    source

    fn visit_qself(&mut self, i: &'ast QSelf)

    source

    fn visit_return_type(&mut self, i: &'ast ReturnType)

    source

    fn visit_span(&mut self, i: &Span)

    source

    fn visit_trait_bound(&mut self, i: &'ast TraitBound)

    source

    fn visit_trait_bound_modifier(&mut self, i: &'ast TraitBoundModifier)

    source

    fn visit_type(&mut self, i: &'ast Type)

    source

    fn visit_type_array(&mut self, i: &'ast TypeArray)

    source

    fn visit_type_bare_fn(&mut self, i: &'ast TypeBareFn)

    source

    fn visit_type_group(&mut self, i: &'ast TypeGroup)

    source

    fn visit_type_impl_trait(&mut self, i: &'ast TypeImplTrait)

    source

    fn visit_type_infer(&mut self, i: &'ast TypeInfer)

    source

    fn visit_type_macro(&mut self, i: &'ast TypeMacro)

    source

    fn visit_type_never(&mut self, i: &'ast TypeNever)

    source

    fn visit_type_param(&mut self, i: &'ast TypeParam)

    source

    fn visit_type_param_bound(&mut self, i: &'ast TypeParamBound)

    source

    fn visit_type_paren(&mut self, i: &'ast TypeParen)

    source

    fn visit_type_path(&mut self, i: &'ast TypePath)

    source

    fn visit_type_ptr(&mut self, i: &'ast TypePtr)

    source

    fn visit_type_reference(&mut self, i: &'ast TypeReference)

    source

    fn visit_type_slice(&mut self, i: &'ast TypeSlice)

    source

    fn visit_type_trait_object(&mut self, i: &'ast TypeTraitObject)

    source

    fn visit_type_tuple(&mut self, i: &'ast TypeTuple)

    source

    fn visit_un_op(&mut self, i: &'ast UnOp)

    source

    fn visit_variant(&mut self, i: &'ast Variant)

    source

    fn visit_vis_restricted(&mut self, i: &'ast VisRestricted)

    source

    fn visit_visibility(&mut self, i: &'ast Visibility)

    source

    fn visit_where_clause(&mut self, i: &'ast WhereClause)

    source

    fn visit_where_predicate(&mut self, i: &'ast WherePredicate)

    Implementors§

    \ No newline at end of file diff --git a/synstructure/all.html b/synstructure/all.html index 34c0315..1524640 100644 --- a/synstructure/all.html +++ b/synstructure/all.html @@ -1 +1 @@ -List of all items in this crate
    \ No newline at end of file +List of all items in this crate
    \ No newline at end of file diff --git a/synstructure/enum.AddBounds.html b/synstructure/enum.AddBounds.html index 57f9068..ca1c9e8 100644 --- a/synstructure/enum.AddBounds.html +++ b/synstructure/enum.AddBounds.html @@ -1,27 +1,27 @@ -AddBounds in synstructure - Rust
    pub enum AddBounds {
    +AddBounds in synstructure - Rust
    synstructure

    Enum AddBounds

    source
    pub enum AddBounds {
         Both,
         Fields,
         Generics,
         None,
    -    // some variants omitted
    +    // some variants omitted
     }
    Expand description

    Changes how bounds are added

    -

    Variants§

    §

    Both

    Add for fields and generics

    +

    Variants§

    §

    Both

    Add for fields and generics

    §

    Fields

    Fields only

    §

    Generics

    Generics only

    §

    None

    None

    -

    Trait Implementations§

    source§

    impl Clone for AddBounds

    source§

    fn clone(&self) -> AddBounds

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for AddBounds

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for AddBounds

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<AddBounds> for AddBounds

    source§

    fn eq(&self, other: &AddBounds) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for AddBounds

    source§

    impl Eq for AddBounds

    source§

    impl StructuralEq for AddBounds

    source§

    impl StructuralPartialEq for AddBounds

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for AddBounds

    source§

    fn clone(&self) -> AddBounds

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for AddBounds

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for AddBounds

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for AddBounds

    source§

    fn eq(&self, other: &AddBounds) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Copy for AddBounds

    source§

    impl Eq for AddBounds

    source§

    impl StructuralPartialEq for AddBounds

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/synstructure/enum.BindStyle.html b/synstructure/enum.BindStyle.html index ca52994..251b241 100644 --- a/synstructure/enum.BindStyle.html +++ b/synstructure/enum.BindStyle.html @@ -1,29 +1,29 @@ -BindStyle in synstructure - Rust
    pub enum BindStyle {
    +BindStyle in synstructure - Rust
    synstructure

    Enum BindStyle

    source
    pub enum BindStyle {
         Move,
         MoveMut,
         Ref,
         RefMut,
     }
    Expand description

    The type of binding to use when generating a pattern.

    -

    Variants§

    §

    Move

    x

    +

    Variants§

    §

    Move

    x

    §

    MoveMut

    mut x

    §

    Ref

    ref x

    §

    RefMut

    ref mut x

    -

    Trait Implementations§

    source§

    impl Clone for BindStyle

    source§

    fn clone(&self) -> BindStyle

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for BindStyle

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for BindStyle

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<BindStyle> for BindStyle

    source§

    fn eq(&self, other: &BindStyle) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl ToTokens for BindStyle

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for BindStyle

    source§

    impl Eq for BindStyle

    source§

    impl StructuralEq for BindStyle

    source§

    impl StructuralPartialEq for BindStyle

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for BindStyle

    source§

    fn clone(&self) -> BindStyle

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for BindStyle

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for BindStyle

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for BindStyle

    source§

    fn eq(&self, other: &BindStyle) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl ToTokens for BindStyle

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl Copy for BindStyle

    source§

    impl Eq for BindStyle

    source§

    impl StructuralPartialEq for BindStyle

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/synstructure/fn.unpretty_print.html b/synstructure/fn.unpretty_print.html index eb8514b..7921ff7 100644 --- a/synstructure/fn.unpretty_print.html +++ b/synstructure/fn.unpretty_print.html @@ -1,17 +1,16 @@ -unpretty_print in synstructure - Rust
    pub fn unpretty_print<T: Display>(ts: T) -> String
    Expand description

    Dumps an unpretty version of a tokenstream. Takes any type which implements +unpretty_print in synstructure - Rust

    synstructure

    Function unpretty_print

    source
    pub fn unpretty_print<T: Display>(ts: T) -> String
    Expand description

    Dumps an unpretty version of a tokenstream. Takes any type which implements Display.

    This is mostly useful for visualizing the output of a procedural macro, as it makes it marginally more readable. It is used in the implementation of test_derive! to unprettily print the output.

    -

    Stability

    +

    §Stability

    The stability of the output of this function is not guaranteed. Do not assert that the output of this function does not change between minor versions.

    -

    Example

    +

    §Example

    assert_eq!(
    -    synstructure::unpretty_print(quote! {
    -        #[allow(non_upper_case_globals)]
    -        const _DERIVE_krate_Trait_FOR_A: () = {
    +    synstructure::unpretty_print(quote! {
    +        const _: () = {
                 extern crate krate;
                 impl<T, U> krate::Trait for A<T, U>
                 where
    @@ -22,11 +21,7 @@ versions.

    } }; }), - "# [ - allow ( - non_upper_case_globals ) - ] -const _DERIVE_krate_Trait_FOR_A : ( + "const _ : ( ) = { extern crate krate ; @@ -38,6 +33,6 @@ const _DERIVE_krate_Trait_FOR_A : ( } } ; -" +" )
    \ No newline at end of file diff --git a/synstructure/index.html b/synstructure/index.html index 786dd9a..a3a505e 100644 --- a/synstructure/index.html +++ b/synstructure/index.html @@ -1,22 +1,22 @@ -synstructure - Rust

    Crate synstructure

    source ·
    Expand description

    This crate provides helper types for matching against enum variants, and +synstructure - Rust

    Crate synstructure

    source
    Expand description

    This crate provides helper types for matching against enum variants, and extracting bindings to each of the fields in the deriving Struct or Enum in a generic way.

    If you are writing a #[derive] which needs to perform some operation on every field, then you have come to the right place!

    -

    Example: WalkFields

    Trait Implementation

    +

    §Example: WalkFields

    §Trait Implementation

    pub trait WalkFields: std::any::Any {
         fn walk_fields(&self, walk: &mut FnMut(&WalkFields));
     }
     impl WalkFields for i32 {
         fn walk_fields(&self, _walk: &mut FnMut(&WalkFields)) {}
     }
    -

    Custom Derive

    +

    §Custom Derive

    fn walkfields_derive(s: synstructure::Structure) -> proc_macro2::TokenStream {
         let body = s.each(|bi| quote!{
             walk(#bi)
         });
     
    -    s.gen_impl(quote! {
    +    s.gen_impl(quote! {
             extern crate synstructure_test_traits;
     
             gen impl synstructure_test_traits::WalkFields for @Self {
    @@ -32,7 +32,7 @@ every field, then you have come to the right place!

    * Test Case */ fn main() { - synstructure::test_derive! { + synstructure::test_derive! { walkfields_derive { enum A<T> { B(i32, T), @@ -40,8 +40,7 @@ every field, then you have come to the right place!

    } } expands to { - #[allow(non_upper_case_globals)] - const _DERIVE_synstructure_test_traits_WalkFields_FOR_A: () = { + const _: () = { extern crate synstructure_test_traits; impl<T> synstructure_test_traits::WalkFields for A<T> where T: synstructure_test_traits::WalkFields @@ -62,20 +61,20 @@ every field, then you have come to the right place!

    } } }
    -

    Example: Interest

    Trait Implementation

    +

    §Example: Interest

    §Trait Implementation

    pub trait Interest {
         fn interesting(&self) -> bool;
     }
     impl Interest for i32 {
         fn interesting(&self) -> bool { *self > 0 }
     }
    -

    Custom Derive

    +

    §Custom Derive

    fn interest_derive(mut s: synstructure::Structure) -> proc_macro2::TokenStream {
         let body = s.fold(false, |acc, bi| quote!{
             #acc || synstructure_test_traits::Interest::interesting(#bi)
         });
     
    -    s.gen_impl(quote! {
    +    s.gen_impl(quote! {
             extern crate synstructure_test_traits;
             gen impl synstructure_test_traits::Interest for @Self {
                 fn interesting(&self) -> bool {
    @@ -100,8 +99,7 @@ every field, then you have come to the right place!

    } } expands to { - #[allow(non_upper_case_globals)] - const _DERIVE_synstructure_test_traits_Interest_FOR_A: () = { + const _: () = { extern crate synstructure_test_traits; impl<T> synstructure_test_traits::Interest for A<T> where T: synstructure_test_traits::Interest @@ -126,20 +124,20 @@ every field, then you have come to the right place!

    }

    For more example usage, consider investigating the abomonation_derive crate, which makes use of this crate, and is fairly simple.

    -

    Macros

    • The decl_attribute! macro declares a custom attribute wrapper. It will +

    Macros§

    • The decl_attribute! macro declares a custom attribute wrapper. It will parse the incoming TokenStream into a synstructure::Structure object, -and pass it into the inner function.
    • The decl_derive! macro declares a custom derive wrapper. It will parse the +and pass it into the inner function.
    • The decl_derive! macro declares a custom derive wrapper. It will parse the incoming TokenStream into a synstructure::Structure object, and pass it -into the inner function.
    • Run a test on a custom derive. This macro expands both the original struct +into the inner function.
    • Run a test on a custom derive. This macro expands both the original struct and the expansion to ensure that they compile correctly, and confirms that feeding the original struct into the named derive will produce the written -output.

    Structs

    • Information about a specific binding. This contains both an Ident +output.

    Structs§

    • Information about a specific binding. This contains both an Ident reference to the given field, and the syn &'a Field descriptor for that field.
    • A wrapper around a syn::DeriveInput which provides utilities for creating -custom derive trait implementations.
    • This type is similar to syn’s Variant type, however each of the fields +custom derive trait implementations.
    • This type is similar to syn’s Variant type, however each of the fields are references rather than owned. When this is used as the AST for a real variant, this struct simply borrows the fields of the syn::Variant, -however this type may also be used as the sole variant for a struct.
    • A wrapper around a syn::DeriveInput’s variant which provides utilities -for destructuring Variants with match expressions.

    Enums

    • Changes how bounds are added
    • The type of binding to use when generating a pattern.

    Traits

    • Helper trait describing values which may be returned by macro implementation -methods used by this crate’s macros.

    Functions

    • Dumps an unpretty version of a tokenstream. Takes any type which implements +however this type may also be used as the sole variant for a struct.
    • A wrapper around a syn::DeriveInput’s variant which provides utilities +for destructuring Variants with match expressions.

    Enums§

    • Changes how bounds are added
    • The type of binding to use when generating a pattern.

    Traits§

    • Helper trait describing values which may be returned by macro implementation +methods used by this crate’s macros.

    Functions§

    • Dumps an unpretty version of a tokenstream. Takes any type which implements Display.
    \ No newline at end of file diff --git a/synstructure/macro.decl_attribute.html b/synstructure/macro.decl_attribute.html index 51d27fc..19cdaab 100644 --- a/synstructure/macro.decl_attribute.html +++ b/synstructure/macro.decl_attribute.html @@ -1,4 +1,4 @@ -decl_attribute in synstructure - Rust
    macro_rules! decl_attribute {
    +decl_attribute in synstructure - Rust
    synstructure

    Macro decl_attribute

    source
    macro_rules! decl_attribute {
         ([$attribute:ident] => $(#[$($attrs:tt)*])* $inner:path) => { ... };
     }
    Expand description

    The decl_attribute! macro declares a custom attribute wrapper. It will parse the incoming TokenStream into a synstructure::Structure object, @@ -11,15 +11,15 @@ and pass it into the inner function.

    ) -> proc_macro2::TokenStream { unimplemented!() }
    -

    Usage

    +

    §Usage

    fn attribute_interesting(
         _attr: proc_macro2::TokenStream,
         _structure: synstructure::Structure,
     ) -> proc_macro2::TokenStream {
    -    quote::quote! { ... }
    +    quote::quote! { ... }
     }
     
     decl_attribute!([interesting] => attribute_interesting);
    -

    This macro is available if synstructure is built with the "proc-macro" +

    This macro is available if synstructure is built with the "proc-macro" feature.

    \ No newline at end of file diff --git a/synstructure/macro.decl_derive.html b/synstructure/macro.decl_derive.html index a8edb52..93e732a 100644 --- a/synstructure/macro.decl_derive.html +++ b/synstructure/macro.decl_derive.html @@ -1,4 +1,4 @@ -decl_derive in synstructure - Rust
    macro_rules! decl_derive {
    +decl_derive in synstructure - Rust
    synstructure

    Macro decl_derive

    source
    macro_rules! decl_derive {
         ([$derives:ident $($derive_t:tt)*] => $(#[$($attrs:tt)*])* $inner:path) => { ... };
     }
    Expand description

    The decl_derive! macro declares a custom derive wrapper. It will parse the incoming TokenStream into a synstructure::Structure object, and pass it @@ -15,29 +15,29 @@ return a type implementing synstructure::MacroResult, for example:< { unimplemented!() }

    -

    Usage

    Without Attributes

    +

    §Usage

    §Without Attributes

    fn derive_interesting(_input: synstructure::Structure) -> proc_macro2::TokenStream {
    -    quote::quote! { ... }
    +    quote::quote! { ... }
     }
     
     decl_derive!([Interesting] => derive_interesting);
    -

    With Attributes

    +

    §With Attributes

    fn derive_interesting(_input: synstructure::Structure) -> proc_macro2::TokenStream {
    -    quote::quote! { ... }
    +    quote::quote! { ... }
     }
     
     decl_derive!([Interesting, attributes(interesting_ignore)] => derive_interesting);
    -

    Decl Attributes & Doc Comments

    +

    §Decl Attributes & Doc Comments

    fn derive_interesting(_input: synstructure::Structure) -> proc_macro2::TokenStream {
    -    quote::quote! { ... }
    +    quote::quote! { ... }
     }
     
    -decl_derive! {
    +decl_derive! {
         [Interesting] =>
         #[allow(some_lint)]
         /// Documentation Comments
         derive_interesting
     }
    -

    This macro is available if synstructure is built with the "proc-macro" +

    This macro is available if synstructure is built with the "proc-macro" feature.

    \ No newline at end of file diff --git a/synstructure/macro.test_derive.html b/synstructure/macro.test_derive.html index 3e21dcf..0d1d1f6 100644 --- a/synstructure/macro.test_derive.html +++ b/synstructure/macro.test_derive.html @@ -1,4 +1,4 @@ -test_derive in synstructure - Rust
    macro_rules! test_derive {
    +test_derive in synstructure - Rust
    synstructure

    Macro test_derive

    source
    macro_rules! test_derive {
         ($name:path { $($i:tt)* } expands to { $($o:tt)* }) => { ... };
         ($name:path { $($i:tt)* } expands to { $($o:tt)* } no_build) => { ... };
     }
    Expand description

    Run a test on a custom derive. This macro expands both the original struct @@ -9,11 +9,11 @@ output.

    checking that the written code compiles. This is useful in contexts where the procedural macro cannot depend on the crate where it is used during tests.

    -

    Usage

    +

    §Usage

    fn test_derive_example(_s: synstructure::Structure)
         -> Result<proc_macro2::TokenStream, syn::Error>
     {
    -    Ok(quote::quote! { const YOUR_OUTPUT: &'static str = "here"; })
    +    Ok(quote::quote! { const YOUR_OUTPUT: &'static str = "here"; })
     }
     
     fn main() {
    @@ -22,7 +22,7 @@ tests.

    struct A; } expands to { - const YOUR_OUTPUT: &'static str = "here"; + const YOUR_OUTPUT: &'static str = "here"; } } }
    diff --git a/synstructure/struct.BindingInfo.html b/synstructure/struct.BindingInfo.html index fc65ef7..f5dab63 100644 --- a/synstructure/struct.BindingInfo.html +++ b/synstructure/struct.BindingInfo.html @@ -1,19 +1,19 @@ -BindingInfo in synstructure - Rust
    pub struct BindingInfo<'a> {
    +BindingInfo in synstructure - Rust
    synstructure

    Struct BindingInfo

    source
    pub struct BindingInfo<'a> {
         pub binding: Ident,
         pub style: BindStyle,
    -    /* private fields */
    +    /* private fields */
     }
    Expand description

    Information about a specific binding. This contains both an Ident reference to the given field, and the syn &'a Field descriptor for that field.

    This type supports quote::ToTokens, so can be directly used within the quote! macro. It expands to a reference to the matched field.

    -

    Fields§

    §binding: Ident

    The name which this BindingInfo will bind to.

    -
    §style: BindStyle

    The type of binding which this BindingInfo will create.

    -

    Implementations§

    source§

    impl<'a> BindingInfo<'a>

    source

    pub fn ast(&self) -> &'a Field

    Returns a reference to the underlying syn AST node which this +

    Fields§

    §binding: Ident

    The name which this BindingInfo will bind to.

    +
    §style: BindStyle

    The type of binding which this BindingInfo will create.

    +

    Implementations§

    source§

    impl<'a> BindingInfo<'a>

    source

    pub fn ast(&self) -> &'a Field

    Returns a reference to the underlying syn AST node which this BindingInfo references

    -
    source

    pub fn pat(&self) -> TokenStream

    Generates the pattern fragment for this field binding.

    -
    Example
    -
    let di: syn::DeriveInput = syn::parse_quote! {
    +
    source

    pub fn pat(&self) -> TokenStream

    Generates the pattern fragment for this field binding.

    +
    §Example
    +
    let di: syn::DeriveInput = syn::parse_quote! {
         enum A {
             B{ a: i32, b: i32 },
             C(u32),
    @@ -23,18 +23,18 @@ field.

    assert_eq!( s.variants()[0].bindings()[0].pat().to_string(), - quote! { + quote! { ref __binding_0 }.to_string() );
    -
    source

    pub fn referenced_ty_params(&self) -> Vec<&'a Ident>

    Returns a list of the type parameters which are referenced in this +

    source

    pub fn referenced_ty_params(&self) -> Vec<&'a Ident>

    Returns a list of the type parameters which are referenced in this field’s type.

    -
    Caveat
    +
    §Caveat

    If the field contains any macros in type position, all parameters will be considered bound. This is because we cannot determine which type parameters are bound by type macros.

    -
    Example
    -
    let di: syn::DeriveInput = syn::parse_quote! {
    +
    §Example
    +
    let di: syn::DeriveInput = syn::parse_quote! {
         struct A<T, U> {
             a: Option<T>,
             b: U,
    @@ -44,24 +44,24 @@ parameters are bound by type macros.

    assert_eq!( s.variants()[0].bindings()[0].referenced_ty_params(), - &[&quote::format_ident!("T")] + &[&quote::format_ident!("T")] );
    -

    Trait Implementations§

    source§

    impl<'a> Clone for BindingInfo<'a>

    source§

    fn clone(&self) -> BindingInfo<'a>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a> Debug for BindingInfo<'a>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a> Hash for BindingInfo<'a>

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<'a> PartialEq<BindingInfo<'a>> for BindingInfo<'a>

    source§

    fn eq(&self, other: &BindingInfo<'a>) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> ToTokens for BindingInfo<'a>

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl<'a> Eq for BindingInfo<'a>

    source§

    impl<'a> StructuralEq for BindingInfo<'a>

    source§

    impl<'a> StructuralPartialEq for BindingInfo<'a>

    Auto Trait Implementations§

    §

    impl<'a> RefUnwindSafe for BindingInfo<'a>

    §

    impl<'a> !Send for BindingInfo<'a>

    §

    impl<'a> !Sync for BindingInfo<'a>

    §

    impl<'a> Unpin for BindingInfo<'a>

    §

    impl<'a> UnwindSafe for BindingInfo<'a>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl<'a> Clone for BindingInfo<'a>

    source§

    fn clone(&self) -> BindingInfo<'a>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a> Debug for BindingInfo<'a>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a> Hash for BindingInfo<'a>

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<'a> PartialEq for BindingInfo<'a>

    source§

    fn eq(&self, other: &BindingInfo<'a>) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl<'a> ToTokens for BindingInfo<'a>

    source§

    fn to_tokens(&self, tokens: &mut TokenStream)

    Write self to the given TokenStream. Read more
    source§

    fn to_token_stream(&self) -> TokenStream

    Convert self directly into a TokenStream object. Read more
    source§

    fn into_token_stream(self) -> TokenStream
    where + Self: Sized,

    Convert self directly into a TokenStream object. Read more
    source§

    impl<'a> Eq for BindingInfo<'a>

    source§

    impl<'a> StructuralPartialEq for BindingInfo<'a>

    Auto Trait Implementations§

    §

    impl<'a> Freeze for BindingInfo<'a>

    §

    impl<'a> RefUnwindSafe for BindingInfo<'a>

    §

    impl<'a> !Send for BindingInfo<'a>

    §

    impl<'a> !Sync for BindingInfo<'a>

    §

    impl<'a> Unpin for BindingInfo<'a>

    §

    impl<'a> UnwindSafe for BindingInfo<'a>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> Spanned for Twhere - T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree -node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> Spanned for T
    where + T: Spanned + ?Sized,

    source§

    fn span(&self) -> Span

    Returns a Span covering the complete contents of this syntax tree +node, or Span::call_site() if this node is empty.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/synstructure/struct.Structure.html b/synstructure/struct.Structure.html index 4c273fa..af52af8 100644 --- a/synstructure/struct.Structure.html +++ b/synstructure/struct.Structure.html @@ -1,27 +1,27 @@ -Structure in synstructure - Rust

    Struct synstructure::Structure

    source ·
    pub struct Structure<'a> { /* private fields */ }
    Expand description

    A wrapper around a syn::DeriveInput which provides utilities for creating +Structure in synstructure - Rust

    synstructure

    Struct Structure

    source
    pub struct Structure<'a> { /* private fields */ }
    Expand description

    A wrapper around a syn::DeriveInput which provides utilities for creating custom derive trait implementations.

    -

    Implementations§

    source§

    impl<'a> Structure<'a>

    source

    pub fn new(ast: &'a DeriveInput) -> Self

    Create a new Structure with the variants and fields from the passed-in +

    Implementations§

    source§

    impl<'a> Structure<'a>

    source

    pub fn new(ast: &'a DeriveInput) -> Self

    Create a new Structure with the variants and fields from the passed-in DeriveInput.

    -
    Panics
    +
    §Panics

    This method will panic if the provided AST node represents an untagged union.

    -
    source

    pub fn try_new(ast: &'a DeriveInput) -> Result<Self>

    Create a new Structure with the variants and fields from the passed-in +

    source

    pub fn try_new(ast: &'a DeriveInput) -> Result<Self>

    Create a new Structure with the variants and fields from the passed-in DeriveInput.

    Unlike Structure::new, this method does not panic if the provided AST node represents an untagged union.

    -
    source

    pub fn variants(&self) -> &[VariantInfo<'a>]

    Returns a slice of the variants in this Structure.

    -
    source

    pub fn variants_mut(&mut self) -> &mut [VariantInfo<'a>]

    Returns a mut slice of the variants in this Structure.

    -
    source

    pub fn ast(&self) -> &'a DeriveInput

    Returns a reference to the underlying syn AST node which this +

    source

    pub fn variants(&self) -> &[VariantInfo<'a>]

    Returns a slice of the variants in this Structure.

    +
    source

    pub fn variants_mut(&mut self) -> &mut [VariantInfo<'a>]

    Returns a mut slice of the variants in this Structure.

    +
    source

    pub fn ast(&self) -> &'a DeriveInput

    Returns a reference to the underlying syn AST node which this Structure was created from.

    -
    source

    pub fn omitted_variants(&self) -> bool

    True if any variants were omitted due to a filter_variants call.

    -
    source

    pub fn each<F, R>(&self, f: F) -> TokenStreamwhere - F: FnMut(&BindingInfo<'_>) -> R, - R: ToTokens,

    Runs the passed-in function once for each bound field, passing in a BindingInfo. +

    source

    pub fn omitted_variants(&self) -> bool

    True if any variants were omitted due to a filter_variants call.

    +
    source

    pub fn each<F, R>(&self, f: F) -> TokenStream
    where + F: FnMut(&BindingInfo<'_>) -> R, + R: ToTokens,

    Runs the passed-in function once for each bound field, passing in a BindingInfo. and generating match arms which evaluate the returned tokens.

    This method will ignore variants or fields which are ignored through the filter and filter_variant methods.

    -
    Example
    -
    let di: syn::DeriveInput = syn::parse_quote! {
    +
    §Example
    +
    let di: syn::DeriveInput = syn::parse_quote! {
         enum A {
             B(i32, i32),
             C(u32),
    @@ -30,29 +30,29 @@ and generating match arms which evaluate the returned tokens.

    let s = Structure::new(&di); assert_eq!( - s.each(|bi| quote!(println!("{:?}", #bi))).to_string(), + s.each(|bi| quote!(println!("{:?}", #bi))).to_string(), quote!{ A::B(ref __binding_0, ref __binding_1,) => { - { println!("{:?}", __binding_0) } - { println!("{:?}", __binding_1) } + { println!("{:?}", __binding_0) } + { println!("{:?}", __binding_1) } } A::C(ref __binding_0,) => { - { println!("{:?}", __binding_0) } + { println!("{:?}", __binding_0) } } }.to_string() );
    -
    source

    pub fn fold<F, I, R>(&self, init: I, f: F) -> TokenStreamwhere - F: FnMut(TokenStream, &BindingInfo<'_>) -> R, +

    source

    pub fn fold<F, I, R>(&self, init: I, f: F) -> TokenStream
    where + F: FnMut(TokenStream, &BindingInfo<'_>) -> R, I: ToTokens, - R: ToTokens,

    Runs the passed-in function once for each bound field, passing in the + R: ToTokens,

    Runs the passed-in function once for each bound field, passing in the result of the previous call, and a BindingInfo. generating match arms which evaluate to the resulting tokens.

    This method will ignore variants or fields which are ignored through the filter and filter_variant methods.

    If a variant has been ignored, it will return the init value.

    -
    Example
    -
    let di: syn::DeriveInput = syn::parse_quote! {
    +
    §Example
    +
    let di: syn::DeriveInput = syn::parse_quote! {
         enum A {
             B(i32, i32),
             C(u32),
    @@ -72,15 +72,15 @@ arms which evaluate to the resulting tokens.

    } }.to_string() );
    -
    source

    pub fn each_variant<F, R>(&self, f: F) -> TokenStreamwhere - F: FnMut(&VariantInfo<'_>) -> R, - R: ToTokens,

    Runs the passed-in function once for each variant, passing in a +

    source

    pub fn each_variant<F, R>(&self, f: F) -> TokenStream
    where + F: FnMut(&VariantInfo<'_>) -> R, + R: ToTokens,

    Runs the passed-in function once for each variant, passing in a VariantInfo. and generating match arms which evaluate the returned tokens.

    This method will ignore variants and not bind fields which are ignored through the filter and filter_variant methods.

    -
    Example
    -
    let di: syn::DeriveInput = syn::parse_quote! {
    +
    §Example
    +
    let di: syn::DeriveInput = syn::parse_quote! {
         enum A {
             B(i32, i32),
             C(u32),
    @@ -103,8 +103,8 @@ through the filter and filter_variant methods.

    } }.to_string() );
    -
    source

    pub fn filter<F>(&mut self, f: F) -> &mut Selfwhere - F: FnMut(&BindingInfo<'_>) -> bool,

    Filter the bindings created by this Structure object. This has 2 effects:

    +
    source

    pub fn filter<F>(&mut self, f: F) -> &mut Self
    where + F: FnMut(&BindingInfo<'_>) -> bool,

    Filter the bindings created by this Structure object. This has 2 effects:

    • The bindings will no longer appear in match arms generated by methods @@ -116,8 +116,8 @@ method only consider type parameters referenced in the types of non-filtered fields.

    -
    Example
    -
    let di: syn::DeriveInput = syn::parse_quote! {
    +
    §Example
    +
    let di: syn::DeriveInput = syn::parse_quote! {
         enum A {
             B{ a: i32, b: i32 },
             C{ a: u32 },
    @@ -126,26 +126,71 @@ non-filtered fields.

    let mut s = Structure::new(&di); s.filter(|bi| { - bi.ast().ident == Some(quote::format_ident!("a")) + bi.ast().ident == Some(quote::format_ident!("a")) }); assert_eq!( - s.each(|bi| quote!(println!("{:?}", #bi))).to_string(), + s.each(|bi| quote!(println!("{:?}", #bi))).to_string(), quote!{ A::B{ a: ref __binding_0, .. } => { - { println!("{:?}", __binding_0) } + { println!("{:?}", __binding_0) } } A::C{ a: ref __binding_0, } => { - { println!("{:?}", __binding_0) } + { println!("{:?}", __binding_0) } } }.to_string() );
    -
    source

    pub fn add_where_predicate(&mut self, pred: WherePredicate) -> &mut Self

    Specify additional where predicate bounds which should be generated by +

    source

    pub fn drain_filter<F>(&mut self, f: F) -> Self
    where + F: FnMut(&BindingInfo<'_>) -> bool,

    Iterates all the bindings of this Structure object and uses a closure to determine if a +binding should be removed. If the closure returns true the binding is removed from the +structure. If the closure returns false, the binding remains in the structure.

    +

    All the removed bindings are moved to a new Structure object which is otherwise identical +to the current one. To understand the effects of removing a binding from a structure check +the Structure::filter documentation.

    +
    §Example
    +
    let di: syn::DeriveInput = syn::parse_quote! {
    +    enum A {
    +        B{ a: i32, b: i32 },
    +        C{ a: u32 },
    +    }
    +};
    +let mut with_b = Structure::new(&di);
    +
    +let with_a = with_b.drain_filter(|bi| {
    +    bi.ast().ident == Some(quote::format_ident!("a"))
    +});
    +
    +assert_eq!(
    +    with_a.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
    +
    +    quote!{
    +        A::B{ a: ref __binding_0, .. } => {
    +            { println!("{:?}", __binding_0) }
    +        }
    +        A::C{ a: ref __binding_0, } => {
    +            { println!("{:?}", __binding_0) }
    +        }
    +    }.to_string()
    +);
    +
    +assert_eq!(
    +    with_b.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
    +
    +    quote!{
    +        A::B{ b: ref __binding_1, .. } => {
    +            { println!("{:?}", __binding_1) }
    +        }
    +        A::C{ .. } => {
    +
    +        }
    +    }.to_string()
    +);
    +
    source

    pub fn add_where_predicate(&mut self, pred: WherePredicate) -> &mut Self

    Specify additional where predicate bounds which should be generated by impl-generating functions such as gen_impl, bound_impl, and unsafe_bound_impl.

    -
    Example
    -
    let di: syn::DeriveInput = syn::parse_quote! {
    +
    §Example
    +
    let di: syn::DeriveInput = syn::parse_quote! {
         enum A<T, U> {
             B(T),
             C(Option<U>),
    @@ -161,9 +206,7 @@ impl-generating functions such as gen_impl, bound_impl
             fn a() {}
         }).to_string(),
         quote!{
    -        #[allow(non_upper_case_globals)]
    -        #[doc(hidden)]
    -        const _DERIVE_krate_Trait_FOR_A: () = {
    +        const _: () = {
                 extern crate krate;
                 impl<T, U> krate::Trait for A<T, U>
                     where T: std::fmt::Display,
    @@ -176,12 +219,12 @@ impl-generating functions such as gen_impl, bound_impl
             };
         }.to_string()
     );
    -
    source

    pub fn add_bounds(&mut self, mode: AddBounds) -> &mut Self

    Specify which bounds should be generated by impl-generating functions +

    source

    pub fn add_bounds(&mut self, mode: AddBounds) -> &mut Self

    Specify which bounds should be generated by impl-generating functions such as gen_impl, bound_impl, and unsafe_bound_impl.

    The default behaviour is to generate both field and generic bounds from type parameters.

    -
    Example
    -
    let di: syn::DeriveInput = syn::parse_quote! {
    +
    §Example
    +
    let di: syn::DeriveInput = syn::parse_quote! {
         enum A<T, U> {
             B(T),
             C(Option<U>),
    @@ -197,9 +240,7 @@ type parameters.

    fn a() {} }).to_string(), quote!{ - #[allow(non_upper_case_globals)] - #[doc(hidden)] - const _DERIVE_krate_Trait_FOR_A: () = { + const _: () = { extern crate krate; impl<T, U> krate::Trait for A<T, U> where T: krate::Trait, @@ -210,8 +251,8 @@ type parameters.

    }; }.to_string() );
    -
    source

    pub fn filter_variants<F>(&mut self, f: F) -> &mut Selfwhere - F: FnMut(&VariantInfo<'_>) -> bool,

    Filter the variants matched by this Structure object. This has 2 effects:

    +
    source

    pub fn filter_variants<F>(&mut self, f: F) -> &mut Self
    where + F: FnMut(&VariantInfo<'_>) -> bool,

    Filter the variants matched by this Structure object. This has 2 effects:

    • Match arms destructuring these variants will no longer be generated by @@ -223,8 +264,8 @@ method only consider type parameters referenced in the types of fields in non-fitered variants.

    -
    Example
    -
    let di: syn::DeriveInput = syn::parse_quote! {
    +
    §Example
    +
    let di: syn::DeriveInput = syn::parse_quote! {
         enum A {
             B(i32, i32),
             C(u32),
    @@ -233,26 +274,65 @@ fields in non-fitered variants.

    let mut s = Structure::new(&di); -s.filter_variants(|v| v.ast().ident != "B"); +s.filter_variants(|v| v.ast().ident != "B"); assert_eq!( - s.each(|bi| quote!(println!("{:?}", #bi))).to_string(), + s.each(|bi| quote!(println!("{:?}", #bi))).to_string(), quote!{ A::C(ref __binding_0,) => { - { println!("{:?}", __binding_0) } + { println!("{:?}", __binding_0) } } _ => {} }.to_string() );
    -
    source

    pub fn remove_variant(&mut self, idx: usize) -> &mut Self

    Remove the variant at the given index.

    -
    Panics
    +
    source

    pub fn drain_filter_variants<F>(&mut self, f: F) -> Self
    where + F: FnMut(&VariantInfo<'_>) -> bool,

    Iterates all the variants of this Structure object and uses a closure to determine if a +variant should be removed. If the closure returns true the variant is removed from the +structure. If the closure returns false, the variant remains in the structure.

    +

    All the removed variants are moved to a new Structure object which is otherwise identical +to the current one. To understand the effects of removing a variant from a structure check +the Structure::filter_variants documentation.

    +
    §Example
    +
    let di: syn::DeriveInput = syn::parse_quote! {
    +    enum A {
    +        B(i32, i32),
    +        C(u32),
    +    }
    +};
    +
    +let mut with_c = Structure::new(&di);
    +
    +let with_b = with_c.drain_filter_variants(|v| v.ast().ident == "B");
    +
    +assert_eq!(
    +    with_c.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
    +
    +    quote!{
    +        A::C(ref __binding_0,) => {
    +            { println!("{:?}", __binding_0) }
    +        }
    +    }.to_string()
    +);
    +
    +assert_eq!(
    +    with_b.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
    +
    +    quote!{
    +        A::B(ref __binding_0, ref __binding_1,) => {
    +            { println!("{:?}", __binding_0) }
    +            { println!("{:?}", __binding_1) }
    +        }
    +    }.to_string()
    +);
    +
    source

    pub fn remove_variant(&mut self, idx: usize) -> &mut Self

    Remove the variant at the given index.

    +
    §Panics

    Panics if the index is out of range.

    -
    source

    pub fn bind_with<F>(&mut self, f: F) -> &mut Selfwhere - F: FnMut(&BindingInfo<'_>) -> BindStyle,

    Updates the BindStyle for each of the passed-in fields by calling the +

    source

    pub fn bind_with<F>(&mut self, f: F) -> &mut Self
    where + F: FnMut(&BindingInfo<'_>) -> BindStyle,

    Updates the BindStyle for each of the passed-in fields by calling the passed-in function for each BindingInfo.

    -
    Example
    -
    let di: syn::DeriveInput = syn::parse_quote! {
    +
    §Example
    +
    let di: syn::DeriveInput = syn::parse_quote! {
         enum A {
             B(i32, i32),
             C(u32),
    @@ -263,27 +343,27 @@ passed-in function for each BindingInfo.

    s.bind_with(|bi| BindStyle::RefMut); assert_eq!( - s.each(|bi| quote!(println!("{:?}", #bi))).to_string(), + s.each(|bi| quote!(println!("{:?}", #bi))).to_string(), quote!{ A::B(ref mut __binding_0, ref mut __binding_1,) => { - { println!("{:?}", __binding_0) } - { println!("{:?}", __binding_1) } + { println!("{:?}", __binding_0) } + { println!("{:?}", __binding_1) } } A::C(ref mut __binding_0,) => { - { println!("{:?}", __binding_0) } + { println!("{:?}", __binding_0) } } }.to_string() );
    -
    source

    pub fn binding_name<F>(&mut self, f: F) -> &mut Selfwhere - F: FnMut(&Field, usize) -> Ident,

    Updates the binding name for each fo the passed-in fields by calling the +

    source

    pub fn binding_name<F>(&mut self, f: F) -> &mut Self
    where + F: FnMut(&Field, usize) -> Ident,

    Updates the binding name for each fo the passed-in fields by calling the passed-in function for each BindingInfo.

    The function will be called with the BindingInfo and its index in the enclosing variant.

    The default name is __binding_{} where {} is replaced with an increasing number.

    -
    Example
    -
    let di: syn::DeriveInput = syn::parse_quote! {
    +
    §Example
    +
    let di: syn::DeriveInput = syn::parse_quote! {
         enum A {
             B{ a: i32, b: i32 },
             C{ a: u32 },
    @@ -294,26 +374,26 @@ increasing number.

    s.binding_name(|bi, i| bi.ident.clone().unwrap()); assert_eq!( - s.each(|bi| quote!(println!("{:?}", #bi))).to_string(), + s.each(|bi| quote!(println!("{:?}", #bi))).to_string(), quote!{ A::B{ a: ref a, b: ref b, } => { - { println!("{:?}", a) } - { println!("{:?}", b) } + { println!("{:?}", a) } + { println!("{:?}", b) } } A::C{ a: ref a, } => { - { println!("{:?}", a) } + { println!("{:?}", a) } } }.to_string() );
    -
    source

    pub fn referenced_ty_params(&self) -> Vec<&'a Ident>

    Returns a list of the type parameters which are refrenced in the types +

    source

    pub fn referenced_ty_params(&self) -> Vec<&'a Ident>

    Returns a list of the type parameters which are refrenced in the types of non-filtered fields / variants.

    -
    Caveat
    +
    §Caveat

    If the struct contains any macros in type position, all parameters will be considered bound. This is because we cannot determine which type parameters are bound by type macros.

    -
    Example
    -
    let di: syn::DeriveInput = syn::parse_quote! {
    +
    §Example
    +
    let di: syn::DeriveInput = syn::parse_quote! {
         enum A<T, U> {
             B(T, i32),
             C(Option<U>),
    @@ -321,16 +401,16 @@ parameters are bound by type macros.

    }; let mut s = Structure::new(&di); -s.filter_variants(|v| v.ast().ident != "C"); +s.filter_variants(|v| v.ast().ident != "C"); assert_eq!( s.referenced_ty_params(), - &[&quote::format_ident!("T")] + &[&quote::format_ident!("T")] );
    -
    source

    pub fn add_impl_generic(&mut self, param: GenericParam) -> &mut Self

    Adds an impl<> generic parameter. +

    source

    pub fn add_impl_generic(&mut self, param: GenericParam) -> &mut Self

    Adds an impl<> generic parameter. This can be used when the trait to be derived needs some extra generic parameters.

    -
    Example
    -
    let di: syn::DeriveInput = syn::parse_quote! {
    +
    §Example
    +
    let di: syn::DeriveInput = syn::parse_quote! {
         enum A<T, U> {
             B(T),
             C(Option<U>),
    @@ -347,9 +427,7 @@ This can be used when the trait to be derived needs some extra generic parameter
             }
         ).to_string(),
         quote!{
    -        #[allow(non_upper_case_globals)]
    -        #[doc(hidden)]
    -        const _DERIVE_krate_Trait_X_FOR_A: () = {
    +        const _: () = {
                 extern crate krate;
                 impl<T, U, X: krate::AnotherTrait> krate::Trait<X> for A<T, U>
                     where T : krate :: Trait < X >,
    @@ -361,55 +439,22 @@ This can be used when the trait to be derived needs some extra generic parameter
             };
         }.to_string()
     );
    -
    source

    pub fn add_trait_bounds( +

    source

    pub fn add_trait_bounds( &self, bound: &TraitBound, - where_clause: &mut Option<WhereClause>, - mode: AddBounds + where_clause: &mut Option<WhereClause>, + mode: AddBounds, )

    Add trait bounds for a trait with the given path for each type parmaeter referenced in the types of non-filtered fields.

    -
    Caveat
    +
    §Caveat

    If the method contains any macros in type position, all parameters will be considered bound. This is because we cannot determine which type parameters are bound by type macros.

    -
    source

    pub fn underscore_const(&mut self, enabled: bool) -> &mut Self

    Configure whether to use const _ instead of a generated const name in -code generated by gen_impl and bound_impl.

    -

    This syntax is only supported by rust 1.37, and later versions.

    -

    Defaults to false for backwards compatibility reasons.

    -
    Example
    -
    let di: syn::DeriveInput = syn::parse_quote! {
    -    struct MyStruct;
    -};
    -let mut s = Structure::new(&di);
    -
    -assert_eq!(
    -    s.underscore_const(true)
    -        .gen_impl(quote! { gen impl Trait for @Self { } })
    -        .to_string(),
    -    quote! {
    -        const _: () = {
    -            impl Trait for MyStruct { }
    -        };
    -    }
    -    .to_string()
    -);
    -
    -assert_eq!(
    -    s.underscore_const(false)
    -        .gen_impl(quote! { gen impl Trait for @Self { } })
    -        .to_string(),
    -    quote! {
    -        #[allow(non_upper_case_globals)]
    -        const _DERIVE_Trait_FOR_MyStruct: () = {
    -            impl Trait for MyStruct { }
    -        };
    -    }
    -    .to_string()
    -);
    -
    source

    pub fn bound_impl<P: ToTokens, B: ToTokens>( +

    source

    pub fn underscore_const(&mut self, _enabled: bool) -> &mut Self

    This method is a no-op, underscore consts are used by default now.

    +
    source

    pub fn bound_impl<P: ToTokens, B: ToTokens>( &self, path: P, - body: B + body: B, ) -> TokenStream

    NOTE: This methods’ features are superceded by Structure::gen_impl.

    @@ -417,7 +462,7 @@ code generated by gen_impl and bound_impl.

    to implement the trait path.

    This method also adds where clauses to the impl requiring that all referenced type parmaeters implement the trait path.

    -
    Hygiene and Paths
    +
    §Hygiene and Paths

    This method wraps the impl block inside of a const (see the example below). In this scope, the first segment of the passed-in path is extern crate-ed in. If you don’t want to generate that extern crate @@ -425,14 +470,14 @@ item, use a global path.

    This means that if you are implementing my_crate::Trait, you simply write s.bound_impl(quote!(my_crate::Trait), quote!(...)), and for the entirety of the definition, you can refer to your crate as my_crate.

    -
    Caveat
    +
    §Caveat

    If the method contains any macros in type position, all parameters will be considered bound. This is because we cannot determine which type parameters are bound by type macros.

    -
    Panics
    +
    §Panics

    Panics if the path string parameter is not a valid TraitBound.

    -
    Example
    -
    let di: syn::DeriveInput = syn::parse_quote! {
    +
    §Example
    +
    let di: syn::DeriveInput = syn::parse_quote! {
         enum A<T, U> {
             B(T),
             C(Option<U>),
    @@ -440,16 +485,14 @@ parameters are bound by type macros.

    }; let mut s = Structure::new(&di); -s.filter_variants(|v| v.ast().ident != "B"); +s.filter_variants(|v| v.ast().ident != "B"); assert_eq!( s.bound_impl(quote!(krate::Trait), quote!{ fn a() {} }).to_string(), quote!{ - #[allow(non_upper_case_globals)] - #[doc(hidden)] - const _DERIVE_krate_Trait_FOR_A: () = { + const _: () = { extern crate krate; impl<T, U> krate::Trait for A<T, U> where Option<U>: krate::Trait, @@ -460,10 +503,10 @@ s.filter_variants(|v| v.ast().ident != "B" }; }.to_string() );
    -
    source

    pub fn unsafe_bound_impl<P: ToTokens, B: ToTokens>( +

    source

    pub fn unsafe_bound_impl<P: ToTokens, B: ToTokens>( &self, path: P, - body: B + body: B, ) -> TokenStream

    NOTE: This methods’ features are superceded by Structure::gen_impl.

    @@ -471,7 +514,7 @@ s.filter_variants(|v| v.ast().ident != "B" to implement the unsafe trait path.

    This method also adds where clauses to the impl requiring that all referenced type parmaeters implement the trait path.

    -
    Hygiene and Paths
    +
    §Hygiene and Paths

    This method wraps the impl block inside of a const (see the example below). In this scope, the first segment of the passed-in path is extern crate-ed in. If you don’t want to generate that extern crate @@ -479,14 +522,14 @@ item, use a global path.

    This means that if you are implementing my_crate::Trait, you simply write s.bound_impl(quote!(my_crate::Trait), quote!(...)), and for the entirety of the definition, you can refer to your crate as my_crate.

    -
    Caveat
    +
    §Caveat

    If the method contains any macros in type position, all parameters will be considered bound. This is because we cannot determine which type parameters are bound by type macros.

    -
    Panics
    +
    §Panics

    Panics if the path string parameter is not a valid TraitBound.

    -
    Example
    -
    let di: syn::DeriveInput = syn::parse_quote! {
    +
    §Example
    +
    let di: syn::DeriveInput = syn::parse_quote! {
         enum A<T, U> {
             B(T),
             C(Option<U>),
    @@ -494,16 +537,14 @@ parameters are bound by type macros.

    }; let mut s = Structure::new(&di); -s.filter_variants(|v| v.ast().ident != "B"); +s.filter_variants(|v| v.ast().ident != "B"); assert_eq!( s.unsafe_bound_impl(quote!(krate::Trait), quote!{ fn a() {} }).to_string(), quote!{ - #[allow(non_upper_case_globals)] - #[doc(hidden)] - const _DERIVE_krate_Trait_FOR_A: () = { + const _: () = { extern crate krate; unsafe impl<T, U> krate::Trait for A<T, U> where Option<U>: krate::Trait, @@ -514,17 +555,17 @@ s.filter_variants(|v| v.ast().ident != "B" }; }.to_string() );
    -
    source

    pub fn unbound_impl<P: ToTokens, B: ToTokens>( +

    source

    pub fn unbound_impl<P: ToTokens, B: ToTokens>( &self, path: P, - body: B + body: B, ) -> TokenStream

    NOTE: This methods’ features are superceded by Structure::gen_impl.

    Creates an impl block with the required generic type fields filled in to implement the trait path.

    This method will not add any where clauses to the impl.

    -
    Hygiene and Paths
    +
    §Hygiene and Paths

    This method wraps the impl block inside of a const (see the example below). In this scope, the first segment of the passed-in path is extern crate-ed in. If you don’t want to generate that extern crate @@ -532,10 +573,10 @@ item, use a global path.

    This means that if you are implementing my_crate::Trait, you simply write s.bound_impl(quote!(my_crate::Trait), quote!(...)), and for the entirety of the definition, you can refer to your crate as my_crate.

    -
    Panics
    +
    §Panics

    Panics if the path string parameter is not a valid TraitBound.

    -
    Example
    -
    let di: syn::DeriveInput = syn::parse_quote! {
    +
    §Example
    +
    let di: syn::DeriveInput = syn::parse_quote! {
         enum A<T, U> {
             B(T),
             C(Option<U>),
    @@ -543,16 +584,14 @@ entirety of the definition, you can refer to your crate as my_crate
     };
     let mut s = Structure::new(&di);
     
    -s.filter_variants(|v| v.ast().ident != "B");
    +s.filter_variants(|v| v.ast().ident != "B");
     
     assert_eq!(
         s.unbound_impl(quote!(krate::Trait), quote!{
             fn a() {}
         }).to_string(),
         quote!{
    -        #[allow(non_upper_case_globals)]
    -        #[doc(hidden)]
    -        const _DERIVE_krate_Trait_FOR_A: () = {
    +        const _: () = {
                 extern crate krate;
                 impl<T, U> krate::Trait for A<T, U> {
                     fn a() {}
    @@ -560,17 +599,17 @@ s.filter_variants(|v| v.ast().ident != "B"
             };
         }.to_string()
     );
    -
    source

    pub fn unsafe_unbound_impl<P: ToTokens, B: ToTokens>( +

    source

    pub fn unsafe_unbound_impl<P: ToTokens, B: ToTokens>( &self, path: P, - body: B + body: B, ) -> TokenStream

    👎Deprecated

    NOTE: This methods’ features are superceded by Structure::gen_impl.

    Creates an impl block with the required generic type fields filled in to implement the unsafe trait path.

    This method will not add any where clauses to the impl.

    -
    Hygiene and Paths
    +
    §Hygiene and Paths

    This method wraps the impl block inside of a const (see the example below). In this scope, the first segment of the passed-in path is extern crate-ed in. If you don’t want to generate that extern crate @@ -578,10 +617,10 @@ item, use a global path.

    This means that if you are implementing my_crate::Trait, you simply write s.bound_impl(quote!(my_crate::Trait), quote!(...)), and for the entirety of the definition, you can refer to your crate as my_crate.

    -
    Panics
    +
    §Panics

    Panics if the path string parameter is not a valid TraitBound.

    -
    Example
    -
    let di: syn::DeriveInput = syn::parse_quote! {
    +
    §Example
    +
    let di: syn::DeriveInput = syn::parse_quote! {
         enum A<T, U> {
             B(T),
             C(Option<U>),
    @@ -589,16 +628,14 @@ entirety of the definition, you can refer to your crate as my_crate
     };
     let mut s = Structure::new(&di);
     
    -s.filter_variants(|v| v.ast().ident != "B");
    +s.filter_variants(|v| v.ast().ident != "B");
     
     assert_eq!(
         s.unsafe_unbound_impl(quote!(krate::Trait), quote!{
             fn a() {}
         }).to_string(),
         quote!{
    -        #[allow(non_upper_case_globals)]
    -        #[doc(hidden)]
    -        const _DERIVE_krate_Trait_FOR_A: () = {
    +        const _: () = {
                 extern crate krate;
                 unsafe impl<T, U> krate::Trait for A<T, U> {
                     fn a() {}
    @@ -606,20 +643,20 @@ s.filter_variants(|v| v.ast().ident != "B"
             };
         }.to_string()
     );
    -
    source

    pub fn gen_impl(&self, cfg: TokenStream) -> TokenStream

    Generate an impl block for the given struct. This impl block will +

    source

    pub fn gen_impl(&self, cfg: TokenStream) -> TokenStream

    Generate an impl block for the given struct. This impl block will automatically use hygiene tricks to avoid polluting the caller’s namespace, and will automatically add trait bounds for generic type parameters.

    -
    Syntax
    +
    §Syntax

    This function accepts its arguments as a TokenStream. The recommended way to call this function is passing the result of invoking the quote! macro to it.

    -
    s.gen_impl(quote! {
    +
    s.gen_impl(quote! {
         // You can write any items which you want to import into scope here.
         // For example, you may want to include an `extern crate` for the
         // crate which implements your trait. These items will only be
    -    // visible to the code you generate, and won't be exposed to the
    +    // visible to the code you generate, and won't be exposed to the
         // consuming crate
         extern crate krate;
     
    @@ -632,15 +669,15 @@ macro to it.

    use krate::Trait as MyTrait; // The actual impl block is a `gen impl` or `gen unsafe impl` block. - // You can use `@Self` to refer to the structure's type. + // You can use `@Self` to refer to the structure's type. gen impl MyTrait for @Self { fn f(&self) { ... } } })

    The most common usage of this trait involves loading the crate the target trait comes from with extern crate, and then invoking a gen impl block.

    -
    Hygiene
    -

    This method tries to handle hygiene intelligenly for both stable and +

    §Hygiene
    +

    This method tries to handle hygiene intelligently for both stable and unstable proc-macro implementations, however there are visible differences.

    The output of every gen_impl function is wrapped in a dummy const @@ -649,16 +686,6 @@ into scope are not leaked to the calling crate.

    By default, the above invocation may generate an output like the following:

    -
    const _DERIVE_krate_Trait_FOR_Struct: () = {
    -    extern crate krate;
    -    use krate::Trait as MyTrait;
    -    impl<T> MyTrait for Struct<T> where T: MyTrait {
    -        fn f(&self) { ... }
    -    }
    -};
    -

    The Structure may also be confired with the [underscore_const] method -to generate const _ instead.

    -
    const _: () = {
         extern crate krate;
         use krate::Trait as MyTrait;
    @@ -666,33 +693,33 @@ to generate const _ instead.

    fn f(&self) { ... } } };
    -
    Using the std crate
    +
    §Using the std crate

    If you are using quote!() to implement your trait, with the proc-macro2/nightly feature, std isn’t considered to be in scope for your macro. This means that if you use types from std in your procedural macro, you’ll want to explicitly load it with an extern crate std;.

    -
    Absolute paths
    +
    §Absolute paths

    You should generally avoid using absolute paths in your generated code, as they will resolve very differently when using the stable and nightly versions of proc-macro2. Instead, load the crates you need to use explictly with extern crate and

    -
    Trait Bounds
    +
    §Trait Bounds

    This method will automatically add trait bounds for any type parameters which are referenced within the types of non-ignored fields.

    Additional type parameters may be added with the generics syntax after the impl keyword.

    -
    Type Macro Caveat
    +
    §Type Macro Caveat

    If the method contains any macros in type position, all parameters will be considered bound. This is because we cannot determine which type parameters are bound by type macros.

    -
    Errors
    +
    §Errors

    This function will generate a compile_error! if additional type parameters added by impl<..> conflict with generic type parameters on the original struct.

    -
    Panics
    +
    §Panics

    This function will panic if the input TokenStream is not well-formed.

    -
    Example Usage
    -
    let di: syn::DeriveInput = syn::parse_quote! {
    +
    §Example Usage
    +
    let di: syn::DeriveInput = syn::parse_quote! {
         enum A<T, U> {
             B(T),
             C(Option<U>),
    @@ -700,18 +727,17 @@ the original struct.

    }; let mut s = Structure::new(&di); -s.filter_variants(|v| v.ast().ident != "B"); +s.filter_variants(|v| v.ast().ident != "B"); assert_eq!( - s.gen_impl(quote! { + s.gen_impl(quote! { extern crate krate; gen impl krate::Trait for @Self { fn a() {} } }).to_string(), quote!{ - #[allow(non_upper_case_globals)] - const _DERIVE_krate_Trait_FOR_A: () = { + const _: () = { extern crate krate; impl<T, U> krate::Trait for A<T, U> where @@ -726,7 +752,7 @@ s.filter_variants(|v| v.ast().ident != "B" // NOTE: You can also add extra generics after the impl assert_eq!( - s.gen_impl(quote! { + s.gen_impl(quote! { extern crate krate; gen impl<X: krate::OtherTrait> krate::Trait<X> for @Self where @@ -736,8 +762,7 @@ s.filter_variants(|v| v.ast().ident != "B" } }).to_string(), quote!{ - #[allow(non_upper_case_globals)] - const _DERIVE_krate_Trait_X_FOR_A: () = { + const _: () = { extern crate krate; impl<X: krate::OtherTrait, T, U> krate::Trait<X> for A<T, U> where @@ -753,7 +778,7 @@ s.filter_variants(|v| v.ast().ident != "B" // NOTE: you can generate multiple traits with a single call assert_eq!( - s.gen_impl(quote! { + s.gen_impl(quote! { extern crate krate; gen impl krate::Trait for @Self { @@ -765,8 +790,7 @@ s.filter_variants(|v| v.ast().ident != "B" } }).to_string(), quote!{ - #[allow(non_upper_case_globals)] - const _DERIVE_krate_Trait_FOR_A: () = { + const _: () = { extern crate krate; impl<T, U> krate::Trait for A<T, U> where @@ -787,19 +811,19 @@ s.filter_variants(|v| v.ast().ident != "B" }.to_string() );

    Use add_bounds to change which bounds are generated.

    -

    Trait Implementations§

    source§

    impl<'a> Clone for Structure<'a>

    source§

    fn clone(&self) -> Structure<'a>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a> Debug for Structure<'a>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a> Hash for Structure<'a>

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<'a> PartialEq<Structure<'a>> for Structure<'a>

    source§

    fn eq(&self, other: &Structure<'a>) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> Eq for Structure<'a>

    source§

    impl<'a> StructuralEq for Structure<'a>

    source§

    impl<'a> StructuralPartialEq for Structure<'a>

    Auto Trait Implementations§

    §

    impl<'a> RefUnwindSafe for Structure<'a>

    §

    impl<'a> !Send for Structure<'a>

    §

    impl<'a> !Sync for Structure<'a>

    §

    impl<'a> Unpin for Structure<'a>

    §

    impl<'a> UnwindSafe for Structure<'a>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl<'a> Clone for Structure<'a>

    source§

    fn clone(&self) -> Structure<'a>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a> Debug for Structure<'a>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a> Hash for Structure<'a>

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<'a> PartialEq for Structure<'a>

    source§

    fn eq(&self, other: &Structure<'a>) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl<'a> Eq for Structure<'a>

    source§

    impl<'a> StructuralPartialEq for Structure<'a>

    Auto Trait Implementations§

    §

    impl<'a> Freeze for Structure<'a>

    §

    impl<'a> RefUnwindSafe for Structure<'a>

    §

    impl<'a> !Send for Structure<'a>

    §

    impl<'a> !Sync for Structure<'a>

    §

    impl<'a> Unpin for Structure<'a>

    §

    impl<'a> UnwindSafe for Structure<'a>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/synstructure/struct.VariantAst.html b/synstructure/struct.VariantAst.html index f7fa3fd..1c20b2f 100644 --- a/synstructure/struct.VariantAst.html +++ b/synstructure/struct.VariantAst.html @@ -1,25 +1,25 @@ -VariantAst in synstructure - Rust
    pub struct VariantAst<'a> {
    +VariantAst in synstructure - Rust
    synstructure

    Struct VariantAst

    source
    pub struct VariantAst<'a> {
         pub attrs: &'a [Attribute],
         pub ident: &'a Ident,
         pub fields: &'a Fields,
    -    pub discriminant: &'a Option<(Eq, Expr)>,
    +    pub discriminant: &'a Option<(Eq, Expr)>,
     }
    Expand description

    This type is similar to syn’s Variant type, however each of the fields are references rather than owned. When this is used as the AST for a real variant, this struct simply borrows the fields of the syn::Variant, however this type may also be used as the sole variant for a struct.

    -

    Fields§

    §attrs: &'a [Attribute]§ident: &'a Ident§fields: &'a Fields§discriminant: &'a Option<(Eq, Expr)>

    Trait Implementations§

    source§

    impl<'a> Clone for VariantAst<'a>

    source§

    fn clone(&self) -> VariantAst<'a>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a> Debug for VariantAst<'a>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a> Hash for VariantAst<'a>

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<'a> PartialEq<VariantAst<'a>> for VariantAst<'a>

    source§

    fn eq(&self, other: &VariantAst<'a>) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> Copy for VariantAst<'a>

    source§

    impl<'a> Eq for VariantAst<'a>

    source§

    impl<'a> StructuralEq for VariantAst<'a>

    source§

    impl<'a> StructuralPartialEq for VariantAst<'a>

    Auto Trait Implementations§

    §

    impl<'a> RefUnwindSafe for VariantAst<'a>

    §

    impl<'a> !Send for VariantAst<'a>

    §

    impl<'a> !Sync for VariantAst<'a>

    §

    impl<'a> Unpin for VariantAst<'a>

    §

    impl<'a> UnwindSafe for VariantAst<'a>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §attrs: &'a [Attribute]§ident: &'a Ident§fields: &'a Fields§discriminant: &'a Option<(Eq, Expr)>

    Trait Implementations§

    source§

    impl<'a> Clone for VariantAst<'a>

    source§

    fn clone(&self) -> VariantAst<'a>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a> Debug for VariantAst<'a>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a> Hash for VariantAst<'a>

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<'a> PartialEq for VariantAst<'a>

    source§

    fn eq(&self, other: &VariantAst<'a>) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl<'a> Copy for VariantAst<'a>

    source§

    impl<'a> Eq for VariantAst<'a>

    source§

    impl<'a> StructuralPartialEq for VariantAst<'a>

    Auto Trait Implementations§

    §

    impl<'a> Freeze for VariantAst<'a>

    §

    impl<'a> RefUnwindSafe for VariantAst<'a>

    §

    impl<'a> !Send for VariantAst<'a>

    §

    impl<'a> !Sync for VariantAst<'a>

    §

    impl<'a> Unpin for VariantAst<'a>

    §

    impl<'a> UnwindSafe for VariantAst<'a>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/synstructure/struct.VariantInfo.html b/synstructure/struct.VariantInfo.html index 79a0b88..87a518a 100644 --- a/synstructure/struct.VariantInfo.html +++ b/synstructure/struct.VariantInfo.html @@ -1,16 +1,16 @@ -VariantInfo in synstructure - Rust
    pub struct VariantInfo<'a> {
    -    pub prefix: Option<&'a Ident>,
    -    /* private fields */
    +VariantInfo in synstructure - Rust
    synstructure

    Struct VariantInfo

    source
    pub struct VariantInfo<'a> {
    +    pub prefix: Option<&'a Ident>,
    +    /* private fields */
     }
    Expand description

    A wrapper around a syn::DeriveInput’s variant which provides utilities for destructuring Variants with match expressions.

    -

    Fields§

    §prefix: Option<&'a Ident>

    Implementations§

    source§

    impl<'a> VariantInfo<'a>

    source

    pub fn bindings(&self) -> &[BindingInfo<'a>]

    Returns a slice of the bindings in this Variant.

    -
    source

    pub fn bindings_mut(&mut self) -> &mut [BindingInfo<'a>]

    Returns a mut slice of the bindings in this Variant.

    -
    source

    pub fn ast(&self) -> VariantAst<'a>

    Returns a VariantAst object which contains references to the +

    Fields§

    §prefix: Option<&'a Ident>

    Implementations§

    source§

    impl<'a> VariantInfo<'a>

    source

    pub fn bindings(&self) -> &[BindingInfo<'a>]

    Returns a slice of the bindings in this Variant.

    +
    source

    pub fn bindings_mut(&mut self) -> &mut [BindingInfo<'a>]

    Returns a mut slice of the bindings in this Variant.

    +
    source

    pub fn ast(&self) -> VariantAst<'a>

    Returns a VariantAst object which contains references to the underlying syn AST node which this Variant was created from.

    -
    source

    pub fn omitted_bindings(&self) -> bool

    True if any bindings were omitted due to a filter call.

    -
    source

    pub fn pat(&self) -> TokenStream

    Generates the match-arm pattern which could be used to match against this Variant.

    -
    Example
    -
    let di: syn::DeriveInput = syn::parse_quote! {
    +
    source

    pub fn omitted_bindings(&self) -> bool

    True if any bindings were omitted due to a filter call.

    +
    source

    pub fn pat(&self) -> TokenStream

    Generates the match-arm pattern which could be used to match against this Variant.

    +
    §Example
    +
    let di: syn::DeriveInput = syn::parse_quote! {
         enum A {
             B(i32, i32),
             C(u32),
    @@ -24,13 +24,13 @@ underlying syn AST node which this Variant was created
             A::B(ref __binding_0, ref __binding_1,)
         }.to_string()
     );
    -
    source

    pub fn construct<F, T>(&self, func: F) -> TokenStreamwhere - F: FnMut(&Field, usize) -> T, - T: ToTokens,

    Generates the token stream required to construct the current variant.

    +
    source

    pub fn construct<F, T>(&self, func: F) -> TokenStream
    where + F: FnMut(&Field, usize) -> T, + T: ToTokens,

    Generates the token stream required to construct the current variant.

    The init array initializes each of the fields in the order they are written in variant.ast().fields.

    -
    Example
    -
    let di: syn::DeriveInput = syn::parse_quote! {
    +
    §Example
    +
    let di: syn::DeriveInput = syn::parse_quote! {
         enum A {
             B(usize, usize),
             C{ v: usize },
    @@ -53,14 +53,14 @@ written in variant.ast().fields.

    A::C{ v: 0usize, } }.to_string() );
    -
    source

    pub fn each<F, R>(&self, f: F) -> TokenStreamwhere - F: FnMut(&BindingInfo<'_>) -> R, - R: ToTokens,

    Runs the passed-in function once for each bound field, passing in a BindingInfo. +

    source

    pub fn each<F, R>(&self, f: F) -> TokenStream
    where + F: FnMut(&BindingInfo<'_>) -> R, + R: ToTokens,

    Runs the passed-in function once for each bound field, passing in a BindingInfo. and generating a match arm which evaluates the returned tokens.

    This method will ignore fields which are ignored through the filter method.

    -
    Example
    -
    let di: syn::DeriveInput = syn::parse_quote! {
    +
    §Example
    +
    let di: syn::DeriveInput = syn::parse_quote! {
         enum A {
             B(i32, i32),
             C(u32),
    @@ -69,25 +69,25 @@ method.

    let s = Structure::new(&di); assert_eq!( - s.variants()[0].each(|bi| quote!(println!("{:?}", #bi))).to_string(), + s.variants()[0].each(|bi| quote!(println!("{:?}", #bi))).to_string(), quote!{ A::B(ref __binding_0, ref __binding_1,) => { - { println!("{:?}", __binding_0) } - { println!("{:?}", __binding_1) } + { println!("{:?}", __binding_0) } + { println!("{:?}", __binding_1) } } }.to_string() );
    -
    source

    pub fn fold<F, I, R>(&self, init: I, f: F) -> TokenStreamwhere - F: FnMut(TokenStream, &BindingInfo<'_>) -> R, +

    source

    pub fn fold<F, I, R>(&self, init: I, f: F) -> TokenStream
    where + F: FnMut(TokenStream, &BindingInfo<'_>) -> R, I: ToTokens, - R: ToTokens,

    Runs the passed-in function once for each bound field, passing in the + R: ToTokens,

    Runs the passed-in function once for each bound field, passing in the result of the previous call, and a BindingInfo. generating a match arm which evaluates to the resulting tokens.

    This method will ignore fields which are ignored through the filter method.

    -
    Example
    -
    let di: syn::DeriveInput = syn::parse_quote! {
    +
    §Example
    +
    let di: syn::DeriveInput = syn::parse_quote! {
         enum A {
             B(i32, i32),
             C(u32),
    @@ -104,8 +104,8 @@ method.

    } }.to_string() );
    -
    source

    pub fn filter<F>(&mut self, f: F) -> &mut Selfwhere - F: FnMut(&BindingInfo<'_>) -> bool,

    Filter the bindings created by this Variant object. This has 2 effects:

    +
    source

    pub fn filter<F>(&mut self, f: F) -> &mut Self
    where + F: FnMut(&BindingInfo<'_>) -> bool,

    Filter the bindings created by this Variant object. This has 2 effects:

    • The bindings will no longer appear in match arms generated by methods @@ -117,8 +117,8 @@ method only consider type parameters referenced in the types of non-filtered fields.

    -
    Example
    -
    let di: syn::DeriveInput = syn::parse_quote! {
    +
    §Example
    +
    let di: syn::DeriveInput = syn::parse_quote! {
         enum A {
             B{ a: i32, b: i32 },
             C{ a: u32 },
    @@ -127,29 +127,70 @@ non-filtered fields.

    let mut s = Structure::new(&di); s.variants_mut()[0].filter(|bi| { - bi.ast().ident == Some(quote::format_ident!("b")) + bi.ast().ident == Some(quote::format_ident!("b")) }); assert_eq!( - s.each(|bi| quote!(println!("{:?}", #bi))).to_string(), + s.each(|bi| quote!(println!("{:?}", #bi))).to_string(), quote!{ A::B{ b: ref __binding_1, .. } => { - { println!("{:?}", __binding_1) } + { println!("{:?}", __binding_1) } } A::C{ a: ref __binding_0, } => { - { println!("{:?}", __binding_0) } + { println!("{:?}", __binding_0) } } }.to_string() );
    -
    source

    pub fn remove_binding(&mut self, idx: usize) -> &mut Self

    Remove the binding at the given index.

    -
    Panics
    +
    source

    pub fn drain_filter<F>(&mut self, f: F) -> Self
    where + F: FnMut(&BindingInfo<'_>) -> bool,

    Iterates all the bindings of this Variant object and uses a closure to determine if a +binding should be removed. If the closure returns true the binding is removed from the +variant. If the closure returns false, the binding remains in the variant.

    +

    All the removed bindings are moved to a new Variant object which is otherwise identical +to the current one. To understand the effects of removing a binding from a variant check +the VariantInfo::filter documentation.

    +
    §Example
    +
    let di: syn::DeriveInput = syn::parse_quote! {
    +    enum A {
    +        B{ a: i32, b: i32 },
    +        C{ a: u32 },
    +    }
    +};
    +let mut s = Structure::new(&di);
    +
    +let mut with_b = &mut s.variants_mut()[0];
    +
    +let with_a = with_b.drain_filter(|bi| {
    +    bi.ast().ident == Some(quote::format_ident!("a"))
    +});
    +
    +assert_eq!(
    +    with_a.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
    +
    +    quote!{
    +        A::B{ a: ref __binding_0, .. } => {
    +            { println!("{:?}", __binding_0) }
    +        }
    +    }.to_string()
    +);
    +
    +assert_eq!(
    +    with_b.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
    +
    +    quote!{
    +        A::B{ b: ref __binding_1, .. } => {
    +            { println!("{:?}", __binding_1) }
    +        }
    +    }.to_string()
    +);
    +
    source

    pub fn remove_binding(&mut self, idx: usize) -> &mut Self

    Remove the binding at the given index.

    +
    §Panics

    Panics if the index is out of range.

    -
    source

    pub fn bind_with<F>(&mut self, f: F) -> &mut Selfwhere - F: FnMut(&BindingInfo<'_>) -> BindStyle,

    Updates the BindStyle for each of the passed-in fields by calling the +

    source

    pub fn bind_with<F>(&mut self, f: F) -> &mut Self
    where + F: FnMut(&BindingInfo<'_>) -> BindStyle,

    Updates the BindStyle for each of the passed-in fields by calling the passed-in function for each BindingInfo.

    -
    Example
    -
    let di: syn::DeriveInput = syn::parse_quote! {
    +
    §Example
    +
    let di: syn::DeriveInput = syn::parse_quote! {
         enum A {
             B(i32, i32),
             C(u32),
    @@ -160,27 +201,27 @@ passed-in function for each BindingInfo.

    s.variants_mut()[0].bind_with(|bi| BindStyle::RefMut); assert_eq!( - s.each(|bi| quote!(println!("{:?}", #bi))).to_string(), + s.each(|bi| quote!(println!("{:?}", #bi))).to_string(), quote!{ A::B(ref mut __binding_0, ref mut __binding_1,) => { - { println!("{:?}", __binding_0) } - { println!("{:?}", __binding_1) } + { println!("{:?}", __binding_0) } + { println!("{:?}", __binding_1) } } A::C(ref __binding_0,) => { - { println!("{:?}", __binding_0) } + { println!("{:?}", __binding_0) } } }.to_string() );
    -
    source

    pub fn binding_name<F>(&mut self, f: F) -> &mut Selfwhere - F: FnMut(&Field, usize) -> Ident,

    Updates the binding name for each fo the passed-in fields by calling the +

    source

    pub fn binding_name<F>(&mut self, f: F) -> &mut Self
    where + F: FnMut(&Field, usize) -> Ident,

    Updates the binding name for each fo the passed-in fields by calling the passed-in function for each BindingInfo.

    The function will be called with the BindingInfo and its index in the enclosing variant.

    The default name is __binding_{} where {} is replaced with an increasing number.

    -
    Example
    -
    let di: syn::DeriveInput = syn::parse_quote! {
    +
    §Example
    +
    let di: syn::DeriveInput = syn::parse_quote! {
         enum A {
             B{ a: i32, b: i32 },
             C{ a: u32 },
    @@ -191,26 +232,26 @@ increasing number.

    s.variants_mut()[0].binding_name(|bi, i| bi.ident.clone().unwrap()); assert_eq!( - s.each(|bi| quote!(println!("{:?}", #bi))).to_string(), + s.each(|bi| quote!(println!("{:?}", #bi))).to_string(), quote!{ A::B{ a: ref a, b: ref b, } => { - { println!("{:?}", a) } - { println!("{:?}", b) } + { println!("{:?}", a) } + { println!("{:?}", b) } } A::C{ a: ref __binding_0, } => { - { println!("{:?}", __binding_0) } + { println!("{:?}", __binding_0) } } }.to_string() );
    -
    source

    pub fn referenced_ty_params(&self) -> Vec<&'a Ident>

    Returns a list of the type parameters which are referenced in this +

    source

    pub fn referenced_ty_params(&self) -> Vec<&'a Ident>

    Returns a list of the type parameters which are referenced in this field’s type.

    -
    Caveat
    +
    §Caveat

    If the field contains any macros in type position, all parameters will be considered bound. This is because we cannot determine which type parameters are bound by type macros.

    -
    Example
    -
    let di: syn::DeriveInput = syn::parse_quote! {
    +
    §Example
    +
    let di: syn::DeriveInput = syn::parse_quote! {
         struct A<T, U> {
             a: Option<T>,
             b: U,
    @@ -220,21 +261,21 @@ parameters are bound by type macros.

    assert_eq!( s.variants()[0].bindings()[0].referenced_ty_params(), - &[&quote::format_ident!("T")] + &[&quote::format_ident!("T")] );
    -

    Trait Implementations§

    source§

    impl<'a> Clone for VariantInfo<'a>

    source§

    fn clone(&self) -> VariantInfo<'a>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a> Debug for VariantInfo<'a>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a> Hash for VariantInfo<'a>

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<'a> PartialEq<VariantInfo<'a>> for VariantInfo<'a>

    source§

    fn eq(&self, other: &VariantInfo<'a>) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> Eq for VariantInfo<'a>

    source§

    impl<'a> StructuralEq for VariantInfo<'a>

    source§

    impl<'a> StructuralPartialEq for VariantInfo<'a>

    Auto Trait Implementations§

    §

    impl<'a> RefUnwindSafe for VariantInfo<'a>

    §

    impl<'a> !Send for VariantInfo<'a>

    §

    impl<'a> !Sync for VariantInfo<'a>

    §

    impl<'a> Unpin for VariantInfo<'a>

    §

    impl<'a> UnwindSafe for VariantInfo<'a>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl<'a> Clone for VariantInfo<'a>

    source§

    fn clone(&self) -> VariantInfo<'a>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a> Debug for VariantInfo<'a>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a> Hash for VariantInfo<'a>

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<'a> PartialEq for VariantInfo<'a>

    source§

    fn eq(&self, other: &VariantInfo<'a>) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl<'a> Eq for VariantInfo<'a>

    source§

    impl<'a> StructuralPartialEq for VariantInfo<'a>

    Auto Trait Implementations§

    §

    impl<'a> Freeze for VariantInfo<'a>

    §

    impl<'a> RefUnwindSafe for VariantInfo<'a>

    §

    impl<'a> !Send for VariantInfo<'a>

    §

    impl<'a> !Sync for VariantInfo<'a>

    §

    impl<'a> Unpin for VariantInfo<'a>

    §

    impl<'a> UnwindSafe for VariantInfo<'a>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where + T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/synstructure/trait.MacroResult.html b/synstructure/trait.MacroResult.html index 3644b73..1f386b1 100644 --- a/synstructure/trait.MacroResult.html +++ b/synstructure/trait.MacroResult.html @@ -1,18 +1,18 @@ -MacroResult in synstructure - Rust
    pub trait MacroResult {
    +MacroResult in synstructure - Rust
    synstructure

    Trait MacroResult

    source
    pub trait MacroResult {
         // Required method
         fn into_result(self) -> Result<TokenStream>;
     
         // Provided method
    -    fn into_stream(self) -> TokenStream
    -       where Self: Sized { ... }
    +    fn into_stream(self) -> TokenStream
    +       where Self: Sized { ... }
     }
    Expand description

    Helper trait describing values which may be returned by macro implementation methods used by this crate’s macros.

    -

    Required Methods§

    source

    fn into_result(self) -> Result<TokenStream>

    Convert this result into a Result for further processing / validation.

    -

    Provided Methods§

    source

    fn into_stream(self) -> TokenStreamwhere - Self: Sized,

    Convert this result into a proc_macro::TokenStream, ready to return +

    Required Methods§

    source

    fn into_result(self) -> Result<TokenStream>

    Convert this result into a Result for further processing / validation.

    +

    Provided Methods§

    source

    fn into_stream(self) -> TokenStream
    where + Self: Sized,

    Convert this result into a proc_macro::TokenStream, ready to return from a native proc_macro implementation.

    If into_result() would return an Err, this method should instead generate a compile_error! invocation to nicely report the error.

    This method is available if synstructure is built with the -"proc-macro" feature.

    -

    Implementations on Foreign Types§

    source§

    impl MacroResult for TokenStream

    source§

    impl<T: MacroResult> MacroResult for Result<T>

    source§

    impl MacroResult for TokenStream

    Implementors§

    \ No newline at end of file +"proc-macro" feature.

    +

    Implementations on Foreign Types§

    source§

    impl MacroResult for TokenStream

    source§

    impl MacroResult for TokenStream

    source§

    impl<T: MacroResult> MacroResult for Result<T>

    Implementors§

    \ No newline at end of file diff --git a/trait.impl/core/clone/trait.Clone.js b/trait.impl/core/clone/trait.Clone.js new file mode 100644 index 0000000..3454ee9 --- /dev/null +++ b/trait.impl/core/clone/trait.Clone.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["delog",[["impl Clone for DefaultRenderer"],["impl Clone for RipgrepRenderer"],["impl Clone for Statistics"]]],["flexiber",[["impl Clone for Class"],["impl Clone for ErrorKind"],["impl Clone for Error"],["impl Clone for Length"],["impl Clone for SimpleTag"],["impl Clone for Tag"],["impl<'a> Clone for Slice<'a>"],["impl<V: Clone, T: Clone> Clone for TaggedValue<V, T>"]]],["log",[["impl Clone for Level"],["impl Clone for LevelFilter"],["impl<'a> Clone for Metadata<'a>"],["impl<'a> Clone for Record<'a>"]]],["proc_macro2",[["impl Clone for Delimiter"],["impl Clone for Spacing"],["impl Clone for TokenTree"],["impl Clone for DelimSpan"],["impl Clone for Group"],["impl Clone for Ident"],["impl Clone for Literal"],["impl Clone for Punct"],["impl Clone for Span"],["impl Clone for TokenStream"],["impl Clone for IntoIter"]]],["syn",[["impl Clone for AttrStyle"],["impl Clone for BinOp"],["impl Clone for Data"],["impl Clone for Expr"],["impl Clone for FieldMutability"],["impl Clone for Fields"],["impl Clone for GenericArgument"],["impl Clone for GenericParam"],["impl Clone for Lit"],["impl Clone for MacroDelimiter"],["impl Clone for Member"],["impl Clone for Meta"],["impl Clone for PathArguments"],["impl Clone for ReturnType"],["impl Clone for TraitBoundModifier"],["impl Clone for Type"],["impl Clone for TypeParamBound"],["impl Clone for UnOp"],["impl Clone for Visibility"],["impl Clone for WherePredicate"],["impl Clone for End"],["impl Clone for Error"],["impl Clone for Nothing"],["impl Clone for Abi"],["impl Clone for AngleBracketedGenericArguments"],["impl Clone for AssocConst"],["impl Clone for AssocType"],["impl Clone for Attribute"],["impl Clone for BareFnArg"],["impl Clone for BareVariadic"],["impl Clone for BoundLifetimes"],["impl Clone for ConstParam"],["impl Clone for Constraint"],["impl Clone for DataEnum"],["impl Clone for DataStruct"],["impl Clone for DataUnion"],["impl Clone for DeriveInput"],["impl Clone for ExprBinary"],["impl Clone for ExprCall"],["impl Clone for ExprCast"],["impl Clone for ExprField"],["impl Clone for ExprGroup"],["impl Clone for ExprIndex"],["impl Clone for ExprLit"],["impl Clone for ExprMacro"],["impl Clone for ExprMethodCall"],["impl Clone for ExprParen"],["impl Clone for ExprPath"],["impl Clone for ExprReference"],["impl Clone for ExprStruct"],["impl Clone for ExprTuple"],["impl Clone for ExprUnary"],["impl Clone for Field"],["impl Clone for FieldValue"],["impl Clone for FieldsNamed"],["impl Clone for FieldsUnnamed"],["impl Clone for Generics"],["impl Clone for Index"],["impl Clone for Lifetime"],["impl Clone for LifetimeParam"],["impl Clone for LitBool"],["impl Clone for LitByte"],["impl Clone for LitByteStr"],["impl Clone for LitCStr"],["impl Clone for LitChar"],["impl Clone for LitFloat"],["impl Clone for LitInt"],["impl Clone for LitStr"],["impl Clone for Macro"],["impl Clone for MetaList"],["impl Clone for MetaNameValue"],["impl Clone for ParenthesizedGenericArguments"],["impl Clone for Path"],["impl Clone for PathSegment"],["impl Clone for PredicateLifetime"],["impl Clone for PredicateType"],["impl Clone for QSelf"],["impl Clone for TraitBound"],["impl Clone for TypeArray"],["impl Clone for TypeBareFn"],["impl Clone for TypeGroup"],["impl Clone for TypeImplTrait"],["impl Clone for TypeInfer"],["impl Clone for TypeMacro"],["impl Clone for TypeNever"],["impl Clone for TypeParam"],["impl Clone for TypeParen"],["impl Clone for TypePath"],["impl Clone for TypePtr"],["impl Clone for TypeReference"],["impl Clone for TypeSlice"],["impl Clone for TypeTraitObject"],["impl Clone for TypeTuple"],["impl Clone for Variant"],["impl Clone for VisRestricted"],["impl Clone for WhereClause"],["impl Clone for Abstract"],["impl Clone for And"],["impl Clone for AndAnd"],["impl Clone for AndEq"],["impl Clone for As"],["impl Clone for Async"],["impl Clone for At"],["impl Clone for Auto"],["impl Clone for Await"],["impl Clone for Become"],["impl Clone for Box"],["impl Clone for Brace"],["impl Clone for Bracket"],["impl Clone for Break"],["impl Clone for Caret"],["impl Clone for CaretEq"],["impl Clone for Colon"],["impl Clone for Comma"],["impl Clone for Const"],["impl Clone for Continue"],["impl Clone for Crate"],["impl Clone for Default"],["impl Clone for Do"],["impl Clone for Dollar"],["impl Clone for Dot"],["impl Clone for DotDot"],["impl Clone for DotDotDot"],["impl Clone for DotDotEq"],["impl Clone for Dyn"],["impl Clone for Else"],["impl Clone for Enum"],["impl Clone for Eq"],["impl Clone for EqEq"],["impl Clone for Extern"],["impl Clone for FatArrow"],["impl Clone for Final"],["impl Clone for Fn"],["impl Clone for For"],["impl Clone for Ge"],["impl Clone for Group"],["impl Clone for Gt"],["impl Clone for If"],["impl Clone for Impl"],["impl Clone for In"],["impl Clone for LArrow"],["impl Clone for Le"],["impl Clone for Let"],["impl Clone for Loop"],["impl Clone for Lt"],["impl Clone for Macro"],["impl Clone for Match"],["impl Clone for Minus"],["impl Clone for MinusEq"],["impl Clone for Mod"],["impl Clone for Move"],["impl Clone for Mut"],["impl Clone for Ne"],["impl Clone for Not"],["impl Clone for Or"],["impl Clone for OrEq"],["impl Clone for OrOr"],["impl Clone for Override"],["impl Clone for Paren"],["impl Clone for PathSep"],["impl Clone for Percent"],["impl Clone for PercentEq"],["impl Clone for Plus"],["impl Clone for PlusEq"],["impl Clone for Pound"],["impl Clone for Priv"],["impl Clone for Pub"],["impl Clone for Question"],["impl Clone for RArrow"],["impl Clone for Raw"],["impl Clone for Ref"],["impl Clone for Return"],["impl Clone for SelfType"],["impl Clone for SelfValue"],["impl Clone for Semi"],["impl Clone for Shl"],["impl Clone for ShlEq"],["impl Clone for Shr"],["impl Clone for ShrEq"],["impl Clone for Slash"],["impl Clone for SlashEq"],["impl Clone for Star"],["impl Clone for StarEq"],["impl Clone for Static"],["impl Clone for Struct"],["impl Clone for Super"],["impl Clone for Tilde"],["impl Clone for Trait"],["impl Clone for Try"],["impl Clone for Type"],["impl Clone for Typeof"],["impl Clone for Underscore"],["impl Clone for Union"],["impl Clone for Unsafe"],["impl Clone for Unsized"],["impl Clone for Use"],["impl Clone for Virtual"],["impl Clone for Where"],["impl Clone for While"],["impl Clone for Yield"],["impl<'a> Clone for Cursor<'a>"],["impl<'a> Clone for ImplGenerics<'a>"],["impl<'a> Clone for Turbofish<'a>"],["impl<'a> Clone for TypeGenerics<'a>"],["impl<'a, T> Clone for Iter<'a, T>"],["impl<'a, T, P> Clone for Pairs<'a, T, P>"],["impl<'c, 'a> Clone for StepCursor<'c, 'a>"],["impl<T> Clone for IntoIter<T>
    where\n T: Clone,
    "],["impl<T, P> Clone for Pair<T, P>
    where\n T: Clone,\n P: Clone,
    "],["impl<T, P> Clone for IntoPairs<T, P>
    where\n T: Clone,\n P: Clone,
    "],["impl<T, P> Clone for Punctuated<T, P>
    where\n T: Clone,\n P: Clone,
    "]]],["synstructure",[["impl Clone for AddBounds"],["impl Clone for BindStyle"],["impl<'a> Clone for BindingInfo<'a>"],["impl<'a> Clone for Structure<'a>"],["impl<'a> Clone for VariantAst<'a>"],["impl<'a> Clone for VariantInfo<'a>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[836,2324,1012,2884,53993,1698]} \ No newline at end of file diff --git a/trait.impl/core/cmp/trait.Eq.js b/trait.impl/core/cmp/trait.Eq.js new file mode 100644 index 0000000..56d551e --- /dev/null +++ b/trait.impl/core/cmp/trait.Eq.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["flexiber",[["impl Eq for Class"],["impl Eq for ErrorKind"],["impl Eq for Error"],["impl Eq for Length"],["impl Eq for SimpleTag"],["impl Eq for Tag"],["impl<'a> Eq for Slice<'a>"],["impl<V: Eq, T: Eq> Eq for TaggedValue<V, T>"]]],["log",[["impl Eq for Level"],["impl Eq for LevelFilter"],["impl Eq for ParseLevelError"],["impl<'a> Eq for Metadata<'a>"],["impl<'a> Eq for MetadataBuilder<'a>"]]],["proc_macro2",[["impl Eq for Delimiter"],["impl Eq for Spacing"],["impl Eq for Ident"]]],["syn",[["impl Eq for AttrStyle"],["impl Eq for BinOp"],["impl Eq for Data"],["impl Eq for Expr"],["impl Eq for FieldMutability"],["impl Eq for Fields"],["impl Eq for GenericArgument"],["impl Eq for GenericParam"],["impl Eq for Lit"],["impl Eq for MacroDelimiter"],["impl Eq for Member"],["impl Eq for Meta"],["impl Eq for PathArguments"],["impl Eq for ReturnType"],["impl Eq for TraitBoundModifier"],["impl Eq for Type"],["impl Eq for TypeParamBound"],["impl Eq for UnOp"],["impl Eq for Visibility"],["impl Eq for WherePredicate"],["impl Eq for Nothing"],["impl Eq for Abi"],["impl Eq for AngleBracketedGenericArguments"],["impl Eq for AssocConst"],["impl Eq for AssocType"],["impl Eq for Attribute"],["impl Eq for BareFnArg"],["impl Eq for BareVariadic"],["impl Eq for BoundLifetimes"],["impl Eq for ConstParam"],["impl Eq for Constraint"],["impl Eq for DataEnum"],["impl Eq for DataStruct"],["impl Eq for DataUnion"],["impl Eq for DeriveInput"],["impl Eq for ExprBinary"],["impl Eq for ExprCall"],["impl Eq for ExprCast"],["impl Eq for ExprField"],["impl Eq for ExprGroup"],["impl Eq for ExprIndex"],["impl Eq for ExprLit"],["impl Eq for ExprMacro"],["impl Eq for ExprMethodCall"],["impl Eq for ExprParen"],["impl Eq for ExprPath"],["impl Eq for ExprReference"],["impl Eq for ExprStruct"],["impl Eq for ExprTuple"],["impl Eq for ExprUnary"],["impl Eq for Field"],["impl Eq for FieldValue"],["impl Eq for FieldsNamed"],["impl Eq for FieldsUnnamed"],["impl Eq for Generics"],["impl Eq for Index"],["impl Eq for Lifetime"],["impl Eq for LifetimeParam"],["impl Eq for LitBool"],["impl Eq for LitByte"],["impl Eq for LitByteStr"],["impl Eq for LitCStr"],["impl Eq for LitChar"],["impl Eq for LitFloat"],["impl Eq for LitInt"],["impl Eq for LitStr"],["impl Eq for Macro"],["impl Eq for MetaList"],["impl Eq for MetaNameValue"],["impl Eq for ParenthesizedGenericArguments"],["impl Eq for Path"],["impl Eq for PathSegment"],["impl Eq for PredicateLifetime"],["impl Eq for PredicateType"],["impl Eq for QSelf"],["impl Eq for TraitBound"],["impl Eq for TypeArray"],["impl Eq for TypeBareFn"],["impl Eq for TypeGroup"],["impl Eq for TypeImplTrait"],["impl Eq for TypeInfer"],["impl Eq for TypeMacro"],["impl Eq for TypeNever"],["impl Eq for TypeParam"],["impl Eq for TypeParen"],["impl Eq for TypePath"],["impl Eq for TypePtr"],["impl Eq for TypeReference"],["impl Eq for TypeSlice"],["impl Eq for TypeTraitObject"],["impl Eq for TypeTuple"],["impl Eq for Variant"],["impl Eq for VisRestricted"],["impl Eq for WhereClause"],["impl Eq for Abstract"],["impl Eq for And"],["impl Eq for AndAnd"],["impl Eq for AndEq"],["impl Eq for As"],["impl Eq for Async"],["impl Eq for At"],["impl Eq for Auto"],["impl Eq for Await"],["impl Eq for Become"],["impl Eq for Box"],["impl Eq for Brace"],["impl Eq for Bracket"],["impl Eq for Break"],["impl Eq for Caret"],["impl Eq for CaretEq"],["impl Eq for Colon"],["impl Eq for Comma"],["impl Eq for Const"],["impl Eq for Continue"],["impl Eq for Crate"],["impl Eq for Default"],["impl Eq for Do"],["impl Eq for Dollar"],["impl Eq for Dot"],["impl Eq for DotDot"],["impl Eq for DotDotDot"],["impl Eq for DotDotEq"],["impl Eq for Dyn"],["impl Eq for Else"],["impl Eq for Enum"],["impl Eq for Eq"],["impl Eq for EqEq"],["impl Eq for Extern"],["impl Eq for FatArrow"],["impl Eq for Final"],["impl Eq for Fn"],["impl Eq for For"],["impl Eq for Ge"],["impl Eq for Group"],["impl Eq for Gt"],["impl Eq for If"],["impl Eq for Impl"],["impl Eq for In"],["impl Eq for LArrow"],["impl Eq for Le"],["impl Eq for Let"],["impl Eq for Loop"],["impl Eq for Lt"],["impl Eq for Macro"],["impl Eq for Match"],["impl Eq for Minus"],["impl Eq for MinusEq"],["impl Eq for Mod"],["impl Eq for Move"],["impl Eq for Mut"],["impl Eq for Ne"],["impl Eq for Not"],["impl Eq for Or"],["impl Eq for OrEq"],["impl Eq for OrOr"],["impl Eq for Override"],["impl Eq for Paren"],["impl Eq for PathSep"],["impl Eq for Percent"],["impl Eq for PercentEq"],["impl Eq for Plus"],["impl Eq for PlusEq"],["impl Eq for Pound"],["impl Eq for Priv"],["impl Eq for Pub"],["impl Eq for Question"],["impl Eq for RArrow"],["impl Eq for Raw"],["impl Eq for Ref"],["impl Eq for Return"],["impl Eq for SelfType"],["impl Eq for SelfValue"],["impl Eq for Semi"],["impl Eq for Shl"],["impl Eq for ShlEq"],["impl Eq for Shr"],["impl Eq for ShrEq"],["impl Eq for Slash"],["impl Eq for SlashEq"],["impl Eq for Star"],["impl Eq for StarEq"],["impl Eq for Static"],["impl Eq for Struct"],["impl Eq for Super"],["impl Eq for Tilde"],["impl Eq for Trait"],["impl Eq for Try"],["impl Eq for Type"],["impl Eq for Typeof"],["impl Eq for Underscore"],["impl Eq for Union"],["impl Eq for Unsafe"],["impl Eq for Unsized"],["impl Eq for Use"],["impl Eq for Virtual"],["impl Eq for Where"],["impl Eq for While"],["impl Eq for Yield"],["impl<'a> Eq for Cursor<'a>"],["impl<'a> Eq for ImplGenerics<'a>"],["impl<'a> Eq for Turbofish<'a>"],["impl<'a> Eq for TypeGenerics<'a>"],["impl<T, P> Eq for Punctuated<T, P>
    where\n T: Eq,\n P: Eq,
    "]]],["synstructure",[["impl Eq for AddBounds"],["impl Eq for BindStyle"],["impl<'a> Eq for BindingInfo<'a>"],["impl<'a> Eq for Structure<'a>"],["impl<'a> Eq for VariantAst<'a>"],["impl<'a> Eq for VariantInfo<'a>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[2193,1240,741,48305,1620]} \ No newline at end of file diff --git a/trait.impl/core/cmp/trait.Ord.js b/trait.impl/core/cmp/trait.Ord.js new file mode 100644 index 0000000..e01a9e4 --- /dev/null +++ b/trait.impl/core/cmp/trait.Ord.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["flexiber",[["impl Ord for Length"]]],["log",[["impl Ord for Level"],["impl Ord for LevelFilter"],["impl<'a> Ord for Metadata<'a>"],["impl<'a> Ord for MetadataBuilder<'a>"]]],["proc_macro2",[["impl Ord for Ident"]]],["syn",[["impl Ord for Lifetime"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[253,999,260,245]} \ No newline at end of file diff --git a/trait.impl/core/cmp/trait.PartialEq.js b/trait.impl/core/cmp/trait.PartialEq.js new file mode 100644 index 0000000..8f8715f --- /dev/null +++ b/trait.impl/core/cmp/trait.PartialEq.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["flexiber",[["impl PartialEq for Class"],["impl PartialEq for ErrorKind"],["impl PartialEq for Error"],["impl PartialEq for Length"],["impl PartialEq for SimpleTag"],["impl PartialEq for Tag"],["impl<'a> PartialEq for Slice<'a>"],["impl<V: PartialEq, T: PartialEq> PartialEq for TaggedValue<V, T>"]]],["log",[["impl PartialEq for Level"],["impl PartialEq for LevelFilter"],["impl PartialEq for ParseLevelError"],["impl PartialEq<Level> for LevelFilter"],["impl PartialEq<LevelFilter> for Level"],["impl<'a> PartialEq for Metadata<'a>"],["impl<'a> PartialEq for MetadataBuilder<'a>"]]],["proc_macro2",[["impl PartialEq for Delimiter"],["impl PartialEq for Spacing"],["impl PartialEq for Ident"],["impl<T> PartialEq<T> for Ident
    where\n T: ?Sized + AsRef<str>,
    "]]],["syn",[["impl PartialEq for AttrStyle"],["impl PartialEq for BinOp"],["impl PartialEq for Data"],["impl PartialEq for Expr"],["impl PartialEq for FieldMutability"],["impl PartialEq for Fields"],["impl PartialEq for GenericArgument"],["impl PartialEq for GenericParam"],["impl PartialEq for Lit"],["impl PartialEq for MacroDelimiter"],["impl PartialEq for Member"],["impl PartialEq for Meta"],["impl PartialEq for PathArguments"],["impl PartialEq for ReturnType"],["impl PartialEq for TraitBoundModifier"],["impl PartialEq for Type"],["impl PartialEq for TypeParamBound"],["impl PartialEq for UnOp"],["impl PartialEq for Visibility"],["impl PartialEq for WherePredicate"],["impl PartialEq for Nothing"],["impl PartialEq for Abi"],["impl PartialEq for AngleBracketedGenericArguments"],["impl PartialEq for AssocConst"],["impl PartialEq for AssocType"],["impl PartialEq for Attribute"],["impl PartialEq for BareFnArg"],["impl PartialEq for BareVariadic"],["impl PartialEq for BoundLifetimes"],["impl PartialEq for ConstParam"],["impl PartialEq for Constraint"],["impl PartialEq for DataEnum"],["impl PartialEq for DataStruct"],["impl PartialEq for DataUnion"],["impl PartialEq for DeriveInput"],["impl PartialEq for ExprBinary"],["impl PartialEq for ExprCall"],["impl PartialEq for ExprCast"],["impl PartialEq for ExprField"],["impl PartialEq for ExprGroup"],["impl PartialEq for ExprIndex"],["impl PartialEq for ExprLit"],["impl PartialEq for ExprMacro"],["impl PartialEq for ExprMethodCall"],["impl PartialEq for ExprParen"],["impl PartialEq for ExprPath"],["impl PartialEq for ExprReference"],["impl PartialEq for ExprStruct"],["impl PartialEq for ExprTuple"],["impl PartialEq for ExprUnary"],["impl PartialEq for Field"],["impl PartialEq for FieldValue"],["impl PartialEq for FieldsNamed"],["impl PartialEq for FieldsUnnamed"],["impl PartialEq for Generics"],["impl PartialEq for Index"],["impl PartialEq for Lifetime"],["impl PartialEq for LifetimeParam"],["impl PartialEq for LitBool"],["impl PartialEq for LitByte"],["impl PartialEq for LitByteStr"],["impl PartialEq for LitCStr"],["impl PartialEq for LitChar"],["impl PartialEq for LitFloat"],["impl PartialEq for LitInt"],["impl PartialEq for LitStr"],["impl PartialEq for Macro"],["impl PartialEq for MetaList"],["impl PartialEq for MetaNameValue"],["impl PartialEq for ParenthesizedGenericArguments"],["impl PartialEq for Path"],["impl PartialEq for PathSegment"],["impl PartialEq for PredicateLifetime"],["impl PartialEq for PredicateType"],["impl PartialEq for QSelf"],["impl PartialEq for TraitBound"],["impl PartialEq for TypeArray"],["impl PartialEq for TypeBareFn"],["impl PartialEq for TypeGroup"],["impl PartialEq for TypeImplTrait"],["impl PartialEq for TypeInfer"],["impl PartialEq for TypeMacro"],["impl PartialEq for TypeNever"],["impl PartialEq for TypeParam"],["impl PartialEq for TypeParen"],["impl PartialEq for TypePath"],["impl PartialEq for TypePtr"],["impl PartialEq for TypeReference"],["impl PartialEq for TypeSlice"],["impl PartialEq for TypeTraitObject"],["impl PartialEq for TypeTuple"],["impl PartialEq for Variant"],["impl PartialEq for VisRestricted"],["impl PartialEq for WhereClause"],["impl PartialEq for Abstract"],["impl PartialEq for And"],["impl PartialEq for AndAnd"],["impl PartialEq for AndEq"],["impl PartialEq for As"],["impl PartialEq for Async"],["impl PartialEq for At"],["impl PartialEq for Auto"],["impl PartialEq for Await"],["impl PartialEq for Become"],["impl PartialEq for Box"],["impl PartialEq for Brace"],["impl PartialEq for Bracket"],["impl PartialEq for Break"],["impl PartialEq for Caret"],["impl PartialEq for CaretEq"],["impl PartialEq for Colon"],["impl PartialEq for Comma"],["impl PartialEq for Const"],["impl PartialEq for Continue"],["impl PartialEq for Crate"],["impl PartialEq for Default"],["impl PartialEq for Do"],["impl PartialEq for Dollar"],["impl PartialEq for Dot"],["impl PartialEq for DotDot"],["impl PartialEq for DotDotDot"],["impl PartialEq for DotDotEq"],["impl PartialEq for Dyn"],["impl PartialEq for Else"],["impl PartialEq for Enum"],["impl PartialEq for Eq"],["impl PartialEq for EqEq"],["impl PartialEq for Extern"],["impl PartialEq for FatArrow"],["impl PartialEq for Final"],["impl PartialEq for Fn"],["impl PartialEq for For"],["impl PartialEq for Ge"],["impl PartialEq for Group"],["impl PartialEq for Gt"],["impl PartialEq for If"],["impl PartialEq for Impl"],["impl PartialEq for In"],["impl PartialEq for LArrow"],["impl PartialEq for Le"],["impl PartialEq for Let"],["impl PartialEq for Loop"],["impl PartialEq for Lt"],["impl PartialEq for Macro"],["impl PartialEq for Match"],["impl PartialEq for Minus"],["impl PartialEq for MinusEq"],["impl PartialEq for Mod"],["impl PartialEq for Move"],["impl PartialEq for Mut"],["impl PartialEq for Ne"],["impl PartialEq for Not"],["impl PartialEq for Or"],["impl PartialEq for OrEq"],["impl PartialEq for OrOr"],["impl PartialEq for Override"],["impl PartialEq for Paren"],["impl PartialEq for PathSep"],["impl PartialEq for Percent"],["impl PartialEq for PercentEq"],["impl PartialEq for Plus"],["impl PartialEq for PlusEq"],["impl PartialEq for Pound"],["impl PartialEq for Priv"],["impl PartialEq for Pub"],["impl PartialEq for Question"],["impl PartialEq for RArrow"],["impl PartialEq for Raw"],["impl PartialEq for Ref"],["impl PartialEq for Return"],["impl PartialEq for SelfType"],["impl PartialEq for SelfValue"],["impl PartialEq for Semi"],["impl PartialEq for Shl"],["impl PartialEq for ShlEq"],["impl PartialEq for Shr"],["impl PartialEq for ShrEq"],["impl PartialEq for Slash"],["impl PartialEq for SlashEq"],["impl PartialEq for Star"],["impl PartialEq for StarEq"],["impl PartialEq for Static"],["impl PartialEq for Struct"],["impl PartialEq for Super"],["impl PartialEq for Tilde"],["impl PartialEq for Trait"],["impl PartialEq for Try"],["impl PartialEq for Type"],["impl PartialEq for Typeof"],["impl PartialEq for Underscore"],["impl PartialEq for Union"],["impl PartialEq for Unsafe"],["impl PartialEq for Unsized"],["impl PartialEq for Use"],["impl PartialEq for Virtual"],["impl PartialEq for Where"],["impl PartialEq for While"],["impl PartialEq for Yield"],["impl<'a> PartialEq for Cursor<'a>"],["impl<'a> PartialEq for ImplGenerics<'a>"],["impl<'a> PartialEq for Turbofish<'a>"],["impl<'a> PartialEq for TypeGenerics<'a>"],["impl<T, P> PartialEq for Punctuated<T, P>
    where\n T: PartialEq,\n P: PartialEq,
    "]]],["synstructure",[["impl PartialEq for AddBounds"],["impl PartialEq for BindStyle"],["impl<'a> PartialEq for BindingInfo<'a>"],["impl<'a> PartialEq for Structure<'a>"],["impl<'a> PartialEq for VariantAst<'a>"],["impl<'a> PartialEq for VariantInfo<'a>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[2403,2037,1503,52610,1746]} \ No newline at end of file diff --git a/trait.impl/core/cmp/trait.PartialOrd.js b/trait.impl/core/cmp/trait.PartialOrd.js new file mode 100644 index 0000000..5792458 --- /dev/null +++ b/trait.impl/core/cmp/trait.PartialOrd.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["flexiber",[["impl PartialOrd for Length"]]],["log",[["impl PartialOrd for Level"],["impl PartialOrd for LevelFilter"],["impl PartialOrd<Level> for LevelFilter"],["impl PartialOrd<LevelFilter> for Level"],["impl<'a> PartialOrd for Metadata<'a>"],["impl<'a> PartialOrd for MetadataBuilder<'a>"]]],["proc_macro2",[["impl PartialOrd for Ident"]]],["syn",[["impl PartialOrd for Lifetime"],["impl<'a> PartialOrd for Cursor<'a>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[274,1781,281,551]} \ No newline at end of file diff --git a/trait.impl/core/convert/trait.AsRef.js b/trait.impl/core/convert/trait.AsRef.js new file mode 100644 index 0000000..f0a0e74 --- /dev/null +++ b/trait.impl/core/convert/trait.AsRef.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["flexiber",[["impl AsRef<[u8]> for Slice<'_>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[378]} \ No newline at end of file diff --git a/trait.impl/core/convert/trait.From.js b/trait.impl/core/convert/trait.From.js new file mode 100644 index 0000000..02256f9 --- /dev/null +++ b/trait.impl/core/convert/trait.From.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["flexiber",[["impl From<ErrorKind> for Error"],["impl From<Infallible> for Error"],["impl From<u16> for Length"],["impl From<u8> for Length"],["impl From<Length> for u16"],["impl From<Length> for usize"],["impl<'a> From<&'a [u8]> for Decoder<'a>"]]],["proc_macro2",[["impl From<TokenTree> for TokenStream"],["impl From<Span> for Span"],["impl From<TokenStream> for TokenStream"],["impl From<Group> for TokenTree"],["impl From<Ident> for TokenTree"],["impl From<Literal> for TokenTree"],["impl From<Punct> for TokenTree"],["impl From<TokenStream> for TokenStream"]]],["syn",[["impl From<usize> for Member"],["impl From<usize> for Index"],["impl From<LexError> for Error"],["impl From<Literal> for LitFloat"],["impl From<Literal> for LitInt"],["impl From<ConstParam> for GenericParam"],["impl From<ExprArray> for Expr"],["impl From<ExprAssign> for Expr"],["impl From<ExprAsync> for Expr"],["impl From<ExprAwait> for Expr"],["impl From<ExprBinary> for Expr"],["impl From<ExprBlock> for Expr"],["impl From<ExprBreak> for Expr"],["impl From<ExprCall> for Expr"],["impl From<ExprCast> for Expr"],["impl From<ExprClosure> for Expr"],["impl From<ExprConst> for Expr"],["impl From<ExprContinue> for Expr"],["impl From<ExprField> for Expr"],["impl From<ExprForLoop> for Expr"],["impl From<ExprGroup> for Expr"],["impl From<ExprIf> for Expr"],["impl From<ExprIndex> for Expr"],["impl From<ExprInfer> for Expr"],["impl From<ExprLet> for Expr"],["impl From<ExprLit> for Expr"],["impl From<ExprLoop> for Expr"],["impl From<ExprMacro> for Expr"],["impl From<ExprMatch> for Expr"],["impl From<ExprMethodCall> for Expr"],["impl From<ExprParen> for Expr"],["impl From<ExprPath> for Expr"],["impl From<ExprRange> for Expr"],["impl From<ExprRawAddr> for Expr"],["impl From<ExprReference> for Expr"],["impl From<ExprRepeat> for Expr"],["impl From<ExprReturn> for Expr"],["impl From<ExprStruct> for Expr"],["impl From<ExprTry> for Expr"],["impl From<ExprTryBlock> for Expr"],["impl From<ExprTuple> for Expr"],["impl From<ExprUnary> for Expr"],["impl From<ExprUnsafe> for Expr"],["impl From<ExprWhile> for Expr"],["impl From<ExprYield> for Expr"],["impl From<FieldsNamed> for Fields"],["impl From<FieldsUnnamed> for Fields"],["impl From<Ident> for Member"],["impl From<Ident> for TypeParam"],["impl From<Index> for Member"],["impl From<Lifetime> for TypeParamBound"],["impl From<LifetimeParam> for GenericParam"],["impl From<LitBool> for Lit"],["impl From<LitByte> for Lit"],["impl From<LitByteStr> for Lit"],["impl From<LitCStr> for Lit"],["impl From<LitChar> for Lit"],["impl From<LitFloat> for Lit"],["impl From<LitInt> for Lit"],["impl From<LitStr> for Lit"],["impl From<MetaList> for Meta"],["impl From<MetaNameValue> for Meta"],["impl From<Path> for Meta"],["impl From<PredicateLifetime> for WherePredicate"],["impl From<PredicateType> for WherePredicate"],["impl From<TraitBound> for TypeParamBound"],["impl From<TypeArray> for Type"],["impl From<TypeBareFn> for Type"],["impl From<TypeGroup> for Type"],["impl From<TypeImplTrait> for Type"],["impl From<TypeInfer> for Type"],["impl From<TypeMacro> for Type"],["impl From<TypeNever> for Type"],["impl From<TypeParam> for GenericParam"],["impl From<TypeParen> for Type"],["impl From<TypePath> for Type"],["impl From<TypePtr> for Type"],["impl From<TypeReference> for Type"],["impl From<TypeSlice> for Type"],["impl From<TypeTraitObject> for Type"],["impl From<TypeTuple> for Type"],["impl From<Crate> for Ident"],["impl From<Extern> for Ident"],["impl From<SelfType> for Ident"],["impl From<SelfValue> for Ident"],["impl From<Super> for Ident"],["impl From<Underscore> for Ident"],["impl<T> From<T> for Path
    where\n T: Into<PathSegment>,
    "],["impl<T> From<T> for PathSegment
    where\n T: Into<Ident>,
    "]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[2580,3151,30802]} \ No newline at end of file diff --git a/trait.impl/core/convert/trait.TryFrom.js b/trait.impl/core/convert/trait.TryFrom.js new file mode 100644 index 0000000..c8077bb --- /dev/null +++ b/trait.impl/core/convert/trait.TryFrom.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["flexiber",[["impl TryFrom<&[u8]> for Tag"],["impl TryFrom<u8> for Class"],["impl TryFrom<u8> for SimpleTag"],["impl TryFrom<u8> for Tag"],["impl TryFrom<usize> for Length"],["impl<'a> TryFrom<&'a [&'a dyn Encodable]> for Length"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[2220]} \ No newline at end of file diff --git a/trait.impl/core/default/trait.Default.js b/trait.impl/core/default/trait.Default.js new file mode 100644 index 0000000..33f532a --- /dev/null +++ b/trait.impl/core/default/trait.Default.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["flexiber",[["impl Default for Length"]]],["log",[["impl<'a> Default for MetadataBuilder<'a>"],["impl<'a> Default for RecordBuilder<'a>"]]],["proc_macro2",[["impl Default for TokenStream"]]],["syn",[["impl Default for PathArguments"],["impl Default for BoundLifetimes"],["impl Default for Generics"],["impl Default for Abstract"],["impl Default for And"],["impl Default for AndAnd"],["impl Default for AndEq"],["impl Default for As"],["impl Default for Async"],["impl Default for At"],["impl Default for Auto"],["impl Default for Await"],["impl Default for Become"],["impl Default for Box"],["impl Default for Brace"],["impl Default for Bracket"],["impl Default for Break"],["impl Default for Caret"],["impl Default for CaretEq"],["impl Default for Colon"],["impl Default for Comma"],["impl Default for Const"],["impl Default for Continue"],["impl Default for Crate"],["impl Default for Default"],["impl Default for Do"],["impl Default for Dollar"],["impl Default for Dot"],["impl Default for DotDot"],["impl Default for DotDotDot"],["impl Default for DotDotEq"],["impl Default for Dyn"],["impl Default for Else"],["impl Default for Enum"],["impl Default for Eq"],["impl Default for EqEq"],["impl Default for Extern"],["impl Default for FatArrow"],["impl Default for Final"],["impl Default for Fn"],["impl Default for For"],["impl Default for Ge"],["impl Default for Group"],["impl Default for Gt"],["impl Default for If"],["impl Default for Impl"],["impl Default for In"],["impl Default for LArrow"],["impl Default for Le"],["impl Default for Let"],["impl Default for Loop"],["impl Default for Lt"],["impl Default for Macro"],["impl Default for Match"],["impl Default for Minus"],["impl Default for MinusEq"],["impl Default for Mod"],["impl Default for Move"],["impl Default for Mut"],["impl Default for Ne"],["impl Default for Not"],["impl Default for Or"],["impl Default for OrEq"],["impl Default for OrOr"],["impl Default for Override"],["impl Default for Paren"],["impl Default for PathSep"],["impl Default for Percent"],["impl Default for PercentEq"],["impl Default for Plus"],["impl Default for PlusEq"],["impl Default for Pound"],["impl Default for Priv"],["impl Default for Pub"],["impl Default for Question"],["impl Default for RArrow"],["impl Default for Raw"],["impl Default for Ref"],["impl Default for Return"],["impl Default for SelfType"],["impl Default for SelfValue"],["impl Default for Semi"],["impl Default for Shl"],["impl Default for ShlEq"],["impl Default for Shr"],["impl Default for ShrEq"],["impl Default for Slash"],["impl Default for SlashEq"],["impl Default for Star"],["impl Default for StarEq"],["impl Default for Static"],["impl Default for Struct"],["impl Default for Super"],["impl Default for Tilde"],["impl Default for Trait"],["impl Default for Try"],["impl Default for Type"],["impl Default for Typeof"],["impl Default for Underscore"],["impl Default for Union"],["impl Default for Unsafe"],["impl Default for Unsized"],["impl Default for Use"],["impl Default for Virtual"],["impl Default for Where"],["impl Default for While"],["impl Default for Yield"],["impl<T, P> Default for Punctuated<T, P>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[273,596,298,28001]} \ No newline at end of file diff --git a/trait.impl/core/error/trait.Error.js b/trait.impl/core/error/trait.Error.js new file mode 100644 index 0000000..60e1132 --- /dev/null +++ b/trait.impl/core/error/trait.Error.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["proc_macro2",[["impl Error for LexError"]]],["syn",[["impl Error for Error"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[278,259]} \ No newline at end of file diff --git a/trait.impl/core/fmt/trait.Debug.js b/trait.impl/core/fmt/trait.Debug.js new file mode 100644 index 0000000..bf7a3ba --- /dev/null +++ b/trait.impl/core/fmt/trait.Debug.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["delog",[["impl Debug for Statistics"],["impl<T, S, U> Debug for HexStr<'_, T, U, S>
    where\n T: AsRef<[u8]> + ?Sized,\n U: Unsigned,\n S: Separator,
    "]]],["flexiber",[["impl Debug for Class"],["impl Debug for ErrorKind"],["impl Debug for Error"],["impl Debug for Length"],["impl Debug for Tag"],["impl<'a> Debug for Decoder<'a>"],["impl<'a> Debug for Encoder<'a>"],["impl<'a> Debug for Slice<'a>"],["impl<V: Debug, T: Debug> Debug for TaggedValue<V, T>"]]],["log",[["impl Debug for Level"],["impl Debug for LevelFilter"],["impl Debug for ParseLevelError"],["impl Debug for SetLoggerError"],["impl<'a> Debug for Metadata<'a>"],["impl<'a> Debug for MetadataBuilder<'a>"],["impl<'a> Debug for Record<'a>"],["impl<'a> Debug for RecordBuilder<'a>"]]],["proc_macro2",[["impl Debug for Delimiter"],["impl Debug for Spacing"],["impl Debug for TokenTree"],["impl Debug for DelimSpan"],["impl Debug for Group"],["impl Debug for Ident"],["impl Debug for LexError"],["impl Debug for Literal"],["impl Debug for Punct"],["impl Debug for Span"],["impl Debug for TokenStream"],["impl Debug for IntoIter"]]],["syn",[["impl Debug for AttrStyle"],["impl Debug for BinOp"],["impl Debug for Data"],["impl Debug for Expr"],["impl Debug for FieldMutability"],["impl Debug for Fields"],["impl Debug for GenericArgument"],["impl Debug for GenericParam"],["impl Debug for Lit"],["impl Debug for MacroDelimiter"],["impl Debug for Member"],["impl Debug for Meta"],["impl Debug for PathArguments"],["impl Debug for ReturnType"],["impl Debug for TraitBoundModifier"],["impl Debug for Type"],["impl Debug for TypeParamBound"],["impl Debug for UnOp"],["impl Debug for Visibility"],["impl Debug for WherePredicate"],["impl Debug for Error"],["impl Debug for Nothing"],["impl Debug for Abi"],["impl Debug for AngleBracketedGenericArguments"],["impl Debug for AssocConst"],["impl Debug for AssocType"],["impl Debug for Attribute"],["impl Debug for BareFnArg"],["impl Debug for BareVariadic"],["impl Debug for BoundLifetimes"],["impl Debug for ConstParam"],["impl Debug for Constraint"],["impl Debug for DataEnum"],["impl Debug for DataStruct"],["impl Debug for DataUnion"],["impl Debug for DeriveInput"],["impl Debug for ExprBinary"],["impl Debug for ExprCall"],["impl Debug for ExprCast"],["impl Debug for ExprField"],["impl Debug for ExprGroup"],["impl Debug for ExprIndex"],["impl Debug for ExprLit"],["impl Debug for ExprMacro"],["impl Debug for ExprMethodCall"],["impl Debug for ExprParen"],["impl Debug for ExprPath"],["impl Debug for ExprReference"],["impl Debug for ExprStruct"],["impl Debug for ExprTuple"],["impl Debug for ExprUnary"],["impl Debug for Field"],["impl Debug for FieldValue"],["impl Debug for FieldsNamed"],["impl Debug for FieldsUnnamed"],["impl Debug for Generics"],["impl Debug for Index"],["impl Debug for Lifetime"],["impl Debug for LifetimeParam"],["impl Debug for LitBool"],["impl Debug for LitByte"],["impl Debug for LitByteStr"],["impl Debug for LitCStr"],["impl Debug for LitChar"],["impl Debug for LitFloat"],["impl Debug for LitInt"],["impl Debug for LitStr"],["impl Debug for Macro"],["impl Debug for MetaList"],["impl Debug for MetaNameValue"],["impl Debug for ParenthesizedGenericArguments"],["impl Debug for Path"],["impl Debug for PathSegment"],["impl Debug for PredicateLifetime"],["impl Debug for PredicateType"],["impl Debug for QSelf"],["impl Debug for TraitBound"],["impl Debug for TypeArray"],["impl Debug for TypeBareFn"],["impl Debug for TypeGroup"],["impl Debug for TypeImplTrait"],["impl Debug for TypeInfer"],["impl Debug for TypeMacro"],["impl Debug for TypeNever"],["impl Debug for TypeParam"],["impl Debug for TypeParen"],["impl Debug for TypePath"],["impl Debug for TypePtr"],["impl Debug for TypeReference"],["impl Debug for TypeSlice"],["impl Debug for TypeTraitObject"],["impl Debug for TypeTuple"],["impl Debug for Variant"],["impl Debug for VisRestricted"],["impl Debug for WhereClause"],["impl Debug for Abstract"],["impl Debug for And"],["impl Debug for AndAnd"],["impl Debug for AndEq"],["impl Debug for As"],["impl Debug for Async"],["impl Debug for At"],["impl Debug for Auto"],["impl Debug for Await"],["impl Debug for Become"],["impl Debug for Box"],["impl Debug for Brace"],["impl Debug for Bracket"],["impl Debug for Break"],["impl Debug for Caret"],["impl Debug for CaretEq"],["impl Debug for Colon"],["impl Debug for Comma"],["impl Debug for Const"],["impl Debug for Continue"],["impl Debug for Crate"],["impl Debug for Default"],["impl Debug for Do"],["impl Debug for Dollar"],["impl Debug for Dot"],["impl Debug for DotDot"],["impl Debug for DotDotDot"],["impl Debug for DotDotEq"],["impl Debug for Dyn"],["impl Debug for Else"],["impl Debug for Enum"],["impl Debug for Eq"],["impl Debug for EqEq"],["impl Debug for Extern"],["impl Debug for FatArrow"],["impl Debug for Final"],["impl Debug for Fn"],["impl Debug for For"],["impl Debug for Ge"],["impl Debug for Group"],["impl Debug for Gt"],["impl Debug for If"],["impl Debug for Impl"],["impl Debug for In"],["impl Debug for LArrow"],["impl Debug for Le"],["impl Debug for Let"],["impl Debug for Loop"],["impl Debug for Lt"],["impl Debug for Macro"],["impl Debug for Match"],["impl Debug for Minus"],["impl Debug for MinusEq"],["impl Debug for Mod"],["impl Debug for Move"],["impl Debug for Mut"],["impl Debug for Ne"],["impl Debug for Not"],["impl Debug for Or"],["impl Debug for OrEq"],["impl Debug for OrOr"],["impl Debug for Override"],["impl Debug for Paren"],["impl Debug for PathSep"],["impl Debug for Percent"],["impl Debug for PercentEq"],["impl Debug for Plus"],["impl Debug for PlusEq"],["impl Debug for Pound"],["impl Debug for Priv"],["impl Debug for Pub"],["impl Debug for Question"],["impl Debug for RArrow"],["impl Debug for Raw"],["impl Debug for Ref"],["impl Debug for Return"],["impl Debug for SelfType"],["impl Debug for SelfValue"],["impl Debug for Semi"],["impl Debug for Shl"],["impl Debug for ShlEq"],["impl Debug for Shr"],["impl Debug for ShrEq"],["impl Debug for Slash"],["impl Debug for SlashEq"],["impl Debug for Star"],["impl Debug for StarEq"],["impl Debug for Static"],["impl Debug for Struct"],["impl Debug for Super"],["impl Debug for Tilde"],["impl Debug for Trait"],["impl Debug for Try"],["impl Debug for Type"],["impl Debug for Typeof"],["impl Debug for Underscore"],["impl Debug for Union"],["impl Debug for Unsafe"],["impl Debug for Unsized"],["impl Debug for Use"],["impl Debug for Virtual"],["impl Debug for Where"],["impl Debug for While"],["impl Debug for Yield"],["impl<'a> Debug for ParseBuffer<'a>"],["impl<'a> Debug for ImplGenerics<'a>"],["impl<'a> Debug for Turbofish<'a>"],["impl<'a> Debug for TypeGenerics<'a>"],["impl<T: Debug, P: Debug> Debug for Punctuated<T, P>"]]],["synstructure",[["impl Debug for AddBounds"],["impl Debug for BindStyle"],["impl<'a> Debug for BindingInfo<'a>"],["impl<'a> Debug for Structure<'a>"],["impl<'a> Debug for VariantAst<'a>"],["impl<'a> Debug for VariantInfo<'a>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[1203,2566,2075,3097,50360,1674]} \ No newline at end of file diff --git a/trait.impl/core/fmt/trait.Display.js b/trait.impl/core/fmt/trait.Display.js new file mode 100644 index 0000000..06513b1 --- /dev/null +++ b/trait.impl/core/fmt/trait.Display.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["delog",[["impl<T, U, S> Display for HexStr<'_, T, U, S>
    where\n T: AsRef<[u8]> + ?Sized,\n U: Unsigned,\n S: Separator,
    "]]],["flexiber",[["impl Display for ErrorKind"],["impl Display for Error"],["impl Display for Length"],["impl Display for Tag"]]],["log",[["impl Display for Level"],["impl Display for LevelFilter"],["impl Display for ParseLevelError"],["impl Display for SetLoggerError"]]],["proc_macro2",[["impl Display for TokenTree"],["impl Display for Group"],["impl Display for Ident"],["impl Display for LexError"],["impl Display for Literal"],["impl Display for Punct"],["impl Display for TokenStream"]]],["syn",[["impl Display for Error"],["impl Display for Lifetime"],["impl Display for LitFloat"],["impl Display for LitInt"],["impl<'a> Display for ParseBuffer<'a>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[958,1010,1025,1835,1285]} \ No newline at end of file diff --git a/trait.impl/core/fmt/trait.LowerHex.js b/trait.impl/core/fmt/trait.LowerHex.js new file mode 100644 index 0000000..4d09078 --- /dev/null +++ b/trait.impl/core/fmt/trait.LowerHex.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["delog",[["impl<'a, T, U, S> LowerHex for HexStr<'a, T, U, S>
    where\n T: AsRef<[u8]> + ?Sized,\n U: Unsigned,\n S: Separator,
    "]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[965]} \ No newline at end of file diff --git a/trait.impl/core/fmt/trait.UpperHex.js b/trait.impl/core/fmt/trait.UpperHex.js new file mode 100644 index 0000000..f271b61 --- /dev/null +++ b/trait.impl/core/fmt/trait.UpperHex.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["delog",[["impl<'a, T, U, S> UpperHex for HexStr<'a, T, U, S>
    where\n T: AsRef<[u8]> + ?Sized,\n U: Unsigned,\n S: Separator,
    "]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[965]} \ No newline at end of file diff --git a/trait.impl/core/hash/trait.Hash.js b/trait.impl/core/hash/trait.Hash.js new file mode 100644 index 0000000..92bdb7e --- /dev/null +++ b/trait.impl/core/hash/trait.Hash.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["log",[["impl Hash for Level"],["impl Hash for LevelFilter"],["impl<'a> Hash for Metadata<'a>"],["impl<'a> Hash for MetadataBuilder<'a>"]]],["proc_macro2",[["impl Hash for Ident"]]],["syn",[["impl Hash for AttrStyle"],["impl Hash for BinOp"],["impl Hash for Data"],["impl Hash for Expr"],["impl Hash for FieldMutability"],["impl Hash for Fields"],["impl Hash for GenericArgument"],["impl Hash for GenericParam"],["impl Hash for Lit"],["impl Hash for MacroDelimiter"],["impl Hash for Member"],["impl Hash for Meta"],["impl Hash for PathArguments"],["impl Hash for ReturnType"],["impl Hash for TraitBoundModifier"],["impl Hash for Type"],["impl Hash for TypeParamBound"],["impl Hash for UnOp"],["impl Hash for Visibility"],["impl Hash for WherePredicate"],["impl Hash for Nothing"],["impl Hash for Abi"],["impl Hash for AngleBracketedGenericArguments"],["impl Hash for AssocConst"],["impl Hash for AssocType"],["impl Hash for Attribute"],["impl Hash for BareFnArg"],["impl Hash for BareVariadic"],["impl Hash for BoundLifetimes"],["impl Hash for ConstParam"],["impl Hash for Constraint"],["impl Hash for DataEnum"],["impl Hash for DataStruct"],["impl Hash for DataUnion"],["impl Hash for DeriveInput"],["impl Hash for ExprBinary"],["impl Hash for ExprCall"],["impl Hash for ExprCast"],["impl Hash for ExprField"],["impl Hash for ExprGroup"],["impl Hash for ExprIndex"],["impl Hash for ExprLit"],["impl Hash for ExprMacro"],["impl Hash for ExprMethodCall"],["impl Hash for ExprParen"],["impl Hash for ExprPath"],["impl Hash for ExprReference"],["impl Hash for ExprStruct"],["impl Hash for ExprTuple"],["impl Hash for ExprUnary"],["impl Hash for Field"],["impl Hash for FieldValue"],["impl Hash for FieldsNamed"],["impl Hash for FieldsUnnamed"],["impl Hash for Generics"],["impl Hash for Index"],["impl Hash for Lifetime"],["impl Hash for LifetimeParam"],["impl Hash for LitBool"],["impl Hash for LitByte"],["impl Hash for LitByteStr"],["impl Hash for LitCStr"],["impl Hash for LitChar"],["impl Hash for LitFloat"],["impl Hash for LitInt"],["impl Hash for LitStr"],["impl Hash for Macro"],["impl Hash for MetaList"],["impl Hash for MetaNameValue"],["impl Hash for ParenthesizedGenericArguments"],["impl Hash for Path"],["impl Hash for PathSegment"],["impl Hash for PredicateLifetime"],["impl Hash for PredicateType"],["impl Hash for QSelf"],["impl Hash for TraitBound"],["impl Hash for TypeArray"],["impl Hash for TypeBareFn"],["impl Hash for TypeGroup"],["impl Hash for TypeImplTrait"],["impl Hash for TypeInfer"],["impl Hash for TypeMacro"],["impl Hash for TypeNever"],["impl Hash for TypeParam"],["impl Hash for TypeParen"],["impl Hash for TypePath"],["impl Hash for TypePtr"],["impl Hash for TypeReference"],["impl Hash for TypeSlice"],["impl Hash for TypeTraitObject"],["impl Hash for TypeTuple"],["impl Hash for Variant"],["impl Hash for VisRestricted"],["impl Hash for WhereClause"],["impl Hash for Abstract"],["impl Hash for And"],["impl Hash for AndAnd"],["impl Hash for AndEq"],["impl Hash for As"],["impl Hash for Async"],["impl Hash for At"],["impl Hash for Auto"],["impl Hash for Await"],["impl Hash for Become"],["impl Hash for Box"],["impl Hash for Brace"],["impl Hash for Bracket"],["impl Hash for Break"],["impl Hash for Caret"],["impl Hash for CaretEq"],["impl Hash for Colon"],["impl Hash for Comma"],["impl Hash for Const"],["impl Hash for Continue"],["impl Hash for Crate"],["impl Hash for Default"],["impl Hash for Do"],["impl Hash for Dollar"],["impl Hash for Dot"],["impl Hash for DotDot"],["impl Hash for DotDotDot"],["impl Hash for DotDotEq"],["impl Hash for Dyn"],["impl Hash for Else"],["impl Hash for Enum"],["impl Hash for Eq"],["impl Hash for EqEq"],["impl Hash for Extern"],["impl Hash for FatArrow"],["impl Hash for Final"],["impl Hash for Fn"],["impl Hash for For"],["impl Hash for Ge"],["impl Hash for Group"],["impl Hash for Gt"],["impl Hash for If"],["impl Hash for Impl"],["impl Hash for In"],["impl Hash for LArrow"],["impl Hash for Le"],["impl Hash for Let"],["impl Hash for Loop"],["impl Hash for Lt"],["impl Hash for Macro"],["impl Hash for Match"],["impl Hash for Minus"],["impl Hash for MinusEq"],["impl Hash for Mod"],["impl Hash for Move"],["impl Hash for Mut"],["impl Hash for Ne"],["impl Hash for Not"],["impl Hash for Or"],["impl Hash for OrEq"],["impl Hash for OrOr"],["impl Hash for Override"],["impl Hash for Paren"],["impl Hash for PathSep"],["impl Hash for Percent"],["impl Hash for PercentEq"],["impl Hash for Plus"],["impl Hash for PlusEq"],["impl Hash for Pound"],["impl Hash for Priv"],["impl Hash for Pub"],["impl Hash for Question"],["impl Hash for RArrow"],["impl Hash for Raw"],["impl Hash for Ref"],["impl Hash for Return"],["impl Hash for SelfType"],["impl Hash for SelfValue"],["impl Hash for Semi"],["impl Hash for Shl"],["impl Hash for ShlEq"],["impl Hash for Shr"],["impl Hash for ShrEq"],["impl Hash for Slash"],["impl Hash for SlashEq"],["impl Hash for Star"],["impl Hash for StarEq"],["impl Hash for Static"],["impl Hash for Struct"],["impl Hash for Super"],["impl Hash for Tilde"],["impl Hash for Trait"],["impl Hash for Try"],["impl Hash for Type"],["impl Hash for Typeof"],["impl Hash for Underscore"],["impl Hash for Union"],["impl Hash for Unsafe"],["impl Hash for Unsized"],["impl Hash for Use"],["impl Hash for Virtual"],["impl Hash for Where"],["impl Hash for While"],["impl Hash for Yield"],["impl<'a> Hash for ImplGenerics<'a>"],["impl<'a> Hash for Turbofish<'a>"],["impl<'a> Hash for TypeGenerics<'a>"],["impl<T, P> Hash for Punctuated<T, P>
    where\n T: Hash,\n P: Hash,
    "]]],["synstructure",[["impl Hash for AddBounds"],["impl Hash for BindStyle"],["impl<'a> Hash for BindingInfo<'a>"],["impl<'a> Hash for Structure<'a>"],["impl<'a> Hash for VariantAst<'a>"],["impl<'a> Hash for VariantInfo<'a>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[1018,265,49676,1668]} \ No newline at end of file diff --git a/trait.impl/core/iter/traits/collect/trait.Extend.js b/trait.impl/core/iter/traits/collect/trait.Extend.js new file mode 100644 index 0000000..50c3f24 --- /dev/null +++ b/trait.impl/core/iter/traits/collect/trait.Extend.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["proc_macro2",[["impl Extend<TokenTree> for TokenStream"],["impl Extend<TokenStream> for TokenStream"]]],["syn",[["impl Extend<Error> for Error"],["impl<T, P> Extend<Pair<T, P>> for Punctuated<T, P>
    where\n P: Default,
    "],["impl<T, P> Extend<T> for Punctuated<T, P>
    where\n P: Default,
    "]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[871,1564]} \ No newline at end of file diff --git a/trait.impl/core/iter/traits/collect/trait.FromIterator.js b/trait.impl/core/iter/traits/collect/trait.FromIterator.js new file mode 100644 index 0000000..19834a8 --- /dev/null +++ b/trait.impl/core/iter/traits/collect/trait.FromIterator.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["proc_macro2",[["impl FromIterator<TokenTree> for TokenStream"],["impl FromIterator<TokenStream> for TokenStream"]]],["syn",[["impl<T, P> FromIterator<Pair<T, P>> for Punctuated<T, P>"],["impl<T, P> FromIterator<T> for Punctuated<T, P>
    where\n P: Default,
    "]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[907,1024]} \ No newline at end of file diff --git a/trait.impl/core/iter/traits/collect/trait.IntoIterator.js b/trait.impl/core/iter/traits/collect/trait.IntoIterator.js new file mode 100644 index 0000000..4273bd6 --- /dev/null +++ b/trait.impl/core/iter/traits/collect/trait.IntoIterator.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["proc_macro2",[["impl IntoIterator for TokenStream"]]],["syn",[["impl IntoIterator for Fields"],["impl IntoIterator for Error"],["impl<'a> IntoIterator for &'a Fields"],["impl<'a> IntoIterator for &'a Error"],["impl<'a> IntoIterator for &'a mut Fields"],["impl<'a, T, P> IntoIterator for &'a Punctuated<T, P>"],["impl<'a, T, P> IntoIterator for &'a mut Punctuated<T, P>"],["impl<T, P> IntoIterator for Punctuated<T, P>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[338,2595]} \ No newline at end of file diff --git a/trait.impl/core/iter/traits/double_ended/trait.DoubleEndedIterator.js b/trait.impl/core/iter/traits/double_ended/trait.DoubleEndedIterator.js new file mode 100644 index 0000000..82ea0d1 --- /dev/null +++ b/trait.impl/core/iter/traits/double_ended/trait.DoubleEndedIterator.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["syn",[["impl<'a, T> DoubleEndedIterator for Iter<'a, T>"],["impl<'a, T> DoubleEndedIterator for IterMut<'a, T>"],["impl<'a, T, P> DoubleEndedIterator for Pairs<'a, T, P>"],["impl<'a, T, P> DoubleEndedIterator for PairsMut<'a, T, P>"],["impl<T> DoubleEndedIterator for IntoIter<T>"],["impl<T, P> DoubleEndedIterator for IntoPairs<T, P>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[2246]} \ No newline at end of file diff --git a/trait.impl/core/iter/traits/exact_size/trait.ExactSizeIterator.js b/trait.impl/core/iter/traits/exact_size/trait.ExactSizeIterator.js new file mode 100644 index 0000000..fa4b344 --- /dev/null +++ b/trait.impl/core/iter/traits/exact_size/trait.ExactSizeIterator.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["syn",[["impl<'a, T> ExactSizeIterator for Iter<'a, T>"],["impl<'a, T> ExactSizeIterator for IterMut<'a, T>"],["impl<'a, T, P> ExactSizeIterator for Pairs<'a, T, P>"],["impl<'a, T, P> ExactSizeIterator for PairsMut<'a, T, P>"],["impl<T> ExactSizeIterator for IntoIter<T>"],["impl<T, P> ExactSizeIterator for IntoPairs<T, P>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[2186]} \ No newline at end of file diff --git a/trait.impl/core/iter/traits/iterator/trait.Iterator.js b/trait.impl/core/iter/traits/iterator/trait.Iterator.js new file mode 100644 index 0000000..f8bdf80 --- /dev/null +++ b/trait.impl/core/iter/traits/iterator/trait.Iterator.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["proc_macro2",[["impl Iterator for IntoIter"]]],["syn",[["impl<'a, T> Iterator for Iter<'a, T>"],["impl<'a, T> Iterator for IterMut<'a, T>"],["impl<'a, T, P> Iterator for Pairs<'a, T, P>"],["impl<'a, T, P> Iterator for PairsMut<'a, T, P>"],["impl<T> Iterator for IntoIter<T>"],["impl<T, P> Iterator for IntoPairs<T, P>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[346,2001]} \ No newline at end of file diff --git a/trait.impl/core/marker/trait.Copy.js b/trait.impl/core/marker/trait.Copy.js new file mode 100644 index 0000000..fe2f485 --- /dev/null +++ b/trait.impl/core/marker/trait.Copy.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["delog",[["impl Copy for DefaultRenderer"],["impl Copy for RipgrepRenderer"],["impl Copy for Statistics"]]],["flexiber",[["impl Copy for Class"],["impl Copy for ErrorKind"],["impl Copy for Error"],["impl Copy for Length"],["impl Copy for SimpleTag"],["impl Copy for Tag"],["impl<'a> Copy for Slice<'a>"],["impl<V: Copy, T: Copy> Copy for TaggedValue<V, T>"]]],["log",[["impl Copy for Level"],["impl Copy for LevelFilter"]]],["proc_macro2",[["impl Copy for Delimiter"],["impl Copy for Spacing"],["impl Copy for DelimSpan"],["impl Copy for Span"]]],["syn",[["impl Copy for AttrStyle"],["impl Copy for BinOp"],["impl Copy for TraitBoundModifier"],["impl Copy for UnOp"],["impl Copy for End"],["impl Copy for Nothing"],["impl Copy for Abstract"],["impl Copy for And"],["impl Copy for AndAnd"],["impl Copy for AndEq"],["impl Copy for As"],["impl Copy for Async"],["impl Copy for At"],["impl Copy for Auto"],["impl Copy for Await"],["impl Copy for Become"],["impl Copy for Box"],["impl Copy for Brace"],["impl Copy for Bracket"],["impl Copy for Break"],["impl Copy for Caret"],["impl Copy for CaretEq"],["impl Copy for Colon"],["impl Copy for Comma"],["impl Copy for Const"],["impl Copy for Continue"],["impl Copy for Crate"],["impl Copy for Default"],["impl Copy for Do"],["impl Copy for Dollar"],["impl Copy for Dot"],["impl Copy for DotDot"],["impl Copy for DotDotDot"],["impl Copy for DotDotEq"],["impl Copy for Dyn"],["impl Copy for Else"],["impl Copy for Enum"],["impl Copy for Eq"],["impl Copy for EqEq"],["impl Copy for Extern"],["impl Copy for FatArrow"],["impl Copy for Final"],["impl Copy for Fn"],["impl Copy for For"],["impl Copy for Ge"],["impl Copy for Group"],["impl Copy for Gt"],["impl Copy for If"],["impl Copy for Impl"],["impl Copy for In"],["impl Copy for LArrow"],["impl Copy for Le"],["impl Copy for Let"],["impl Copy for Loop"],["impl Copy for Lt"],["impl Copy for Macro"],["impl Copy for Match"],["impl Copy for Minus"],["impl Copy for MinusEq"],["impl Copy for Mod"],["impl Copy for Move"],["impl Copy for Mut"],["impl Copy for Ne"],["impl Copy for Not"],["impl Copy for Or"],["impl Copy for OrEq"],["impl Copy for OrOr"],["impl Copy for Override"],["impl Copy for Paren"],["impl Copy for PathSep"],["impl Copy for Percent"],["impl Copy for PercentEq"],["impl Copy for Plus"],["impl Copy for PlusEq"],["impl Copy for Pound"],["impl Copy for Priv"],["impl Copy for Pub"],["impl Copy for Question"],["impl Copy for RArrow"],["impl Copy for Raw"],["impl Copy for Ref"],["impl Copy for Return"],["impl Copy for SelfType"],["impl Copy for SelfValue"],["impl Copy for Semi"],["impl Copy for Shl"],["impl Copy for ShlEq"],["impl Copy for Shr"],["impl Copy for ShrEq"],["impl Copy for Slash"],["impl Copy for SlashEq"],["impl Copy for Star"],["impl Copy for StarEq"],["impl Copy for Static"],["impl Copy for Struct"],["impl Copy for Super"],["impl Copy for Tilde"],["impl Copy for Trait"],["impl Copy for Try"],["impl Copy for Type"],["impl Copy for Typeof"],["impl Copy for Underscore"],["impl Copy for Union"],["impl Copy for Unsafe"],["impl Copy for Unsized"],["impl Copy for Use"],["impl Copy for Virtual"],["impl Copy for Where"],["impl Copy for While"],["impl Copy for Yield"],["impl<'a> Copy for Cursor<'a>"],["impl<'c, 'a> Copy for StepCursor<'c, 'a>"],["impl<T, P> Copy for Pair<T, P>
    where\n T: Copy,\n P: Copy,
    "]]],["synstructure",[["impl Copy for AddBounds"],["impl Copy for BindStyle"],["impl<'a> Copy for VariantAst<'a>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[833,2314,486,1050,28370,825]} \ No newline at end of file diff --git a/trait.impl/core/marker/trait.Freeze.js b/trait.impl/core/marker/trait.Freeze.js new file mode 100644 index 0000000..8400b6c --- /dev/null +++ b/trait.impl/core/marker/trait.Freeze.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["delog",[["impl Freeze for U1",1,["delog::hex::U1"]],["impl Freeze for DefaultRenderer",1,["delog::render::DefaultRenderer"]],["impl Freeze for RipgrepRenderer",1,["delog::render::RipgrepRenderer"]],["impl Freeze for Statistics",1,["delog::logger::Statistics"]],["impl<'a, T, U, S> Freeze for HexStr<'a, T, U, S>
    where\n T: ?Sized,
    ",1,["delog::hex::HexStr"]]]],["flexiber",[["impl Freeze for Class",1,["flexiber::tag::Class"]],["impl Freeze for ErrorKind",1,["flexiber::error::ErrorKind"]],["impl Freeze for Error",1,["flexiber::error::Error"]],["impl Freeze for Length",1,["flexiber::length::Length"]],["impl Freeze for SimpleTag",1,["flexiber::simpletag::SimpleTag"]],["impl Freeze for Tag",1,["flexiber::tag::Tag"]],["impl<'a> Freeze for Decoder<'a>",1,["flexiber::decoder::Decoder"]],["impl<'a> Freeze for Encoder<'a>",1,["flexiber::encoder::Encoder"]],["impl<'a> Freeze for Slice<'a>",1,["flexiber::slice::Slice"]],["impl<V, T> Freeze for TaggedValue<V, T>
    where\n T: Freeze,\n V: Freeze,
    ",1,["flexiber::tagged::TaggedValue"]]]],["log",[["impl Freeze for Level",1,["log::Level"]],["impl Freeze for LevelFilter",1,["log::LevelFilter"]],["impl Freeze for ParseLevelError",1,["log::ParseLevelError"]],["impl Freeze for SetLoggerError",1,["log::SetLoggerError"]],["impl<'a> Freeze for Metadata<'a>",1,["log::Metadata"]],["impl<'a> Freeze for MetadataBuilder<'a>",1,["log::MetadataBuilder"]],["impl<'a> Freeze for Record<'a>",1,["log::Record"]],["impl<'a> Freeze for RecordBuilder<'a>",1,["log::RecordBuilder"]]]],["proc_macro2",[["impl Freeze for Delimiter",1,["proc_macro2::Delimiter"]],["impl Freeze for Spacing",1,["proc_macro2::Spacing"]],["impl Freeze for TokenTree",1,["proc_macro2::TokenTree"]],["impl Freeze for DelimSpan",1,["proc_macro2::extra::DelimSpan"]],["impl Freeze for Group",1,["proc_macro2::Group"]],["impl Freeze for Ident",1,["proc_macro2::Ident"]],["impl Freeze for LexError",1,["proc_macro2::LexError"]],["impl Freeze for Literal",1,["proc_macro2::Literal"]],["impl Freeze for Punct",1,["proc_macro2::Punct"]],["impl Freeze for Span",1,["proc_macro2::Span"]],["impl Freeze for TokenStream",1,["proc_macro2::TokenStream"]],["impl Freeze for IntoIter",1,["proc_macro2::token_stream::IntoIter"]]]],["syn",[["impl Freeze for AttrStyle",1,["syn::attr::AttrStyle"]],["impl Freeze for BinOp",1,["syn::op::BinOp"]],["impl Freeze for Data",1,["syn::derive::Data"]],["impl Freeze for Expr",1,["syn::expr::Expr"]],["impl Freeze for FieldMutability",1,["syn::restriction::FieldMutability"]],["impl Freeze for Fields",1,["syn::data::Fields"]],["impl Freeze for GenericArgument",1,["syn::path::GenericArgument"]],["impl Freeze for GenericParam",1,["syn::generics::GenericParam"]],["impl Freeze for Lit",1,["syn::lit::Lit"]],["impl Freeze for MacroDelimiter",1,["syn::mac::MacroDelimiter"]],["impl Freeze for Member",1,["syn::expr::Member"]],["impl Freeze for Meta",1,["syn::attr::Meta"]],["impl Freeze for PathArguments",1,["syn::path::PathArguments"]],["impl Freeze for ReturnType",1,["syn::ty::ReturnType"]],["impl Freeze for TraitBoundModifier",1,["syn::generics::TraitBoundModifier"]],["impl Freeze for Type",1,["syn::ty::Type"]],["impl Freeze for TypeParamBound",1,["syn::generics::TypeParamBound"]],["impl Freeze for UnOp",1,["syn::op::UnOp"]],["impl Freeze for Visibility",1,["syn::restriction::Visibility"]],["impl Freeze for WherePredicate",1,["syn::generics::WherePredicate"]],["impl Freeze for TokenBuffer",1,["syn::buffer::TokenBuffer"]],["impl Freeze for End",1,["syn::lookahead::End"]],["impl Freeze for Error",1,["syn::error::Error"]],["impl Freeze for Nothing",1,["syn::parse::Nothing"]],["impl Freeze for Abi",1,["syn::ty::Abi"]],["impl Freeze for AngleBracketedGenericArguments",1,["syn::path::AngleBracketedGenericArguments"]],["impl Freeze for AssocConst",1,["syn::path::AssocConst"]],["impl Freeze for AssocType",1,["syn::path::AssocType"]],["impl Freeze for Attribute",1,["syn::attr::Attribute"]],["impl Freeze for BareFnArg",1,["syn::ty::BareFnArg"]],["impl Freeze for BareVariadic",1,["syn::ty::BareVariadic"]],["impl Freeze for BoundLifetimes",1,["syn::generics::BoundLifetimes"]],["impl Freeze for ConstParam",1,["syn::generics::ConstParam"]],["impl Freeze for Constraint",1,["syn::path::Constraint"]],["impl Freeze for DataEnum",1,["syn::derive::DataEnum"]],["impl Freeze for DataStruct",1,["syn::derive::DataStruct"]],["impl Freeze for DataUnion",1,["syn::derive::DataUnion"]],["impl Freeze for DeriveInput",1,["syn::derive::DeriveInput"]],["impl Freeze for ExprArray",1,["syn::expr::ExprArray"]],["impl Freeze for ExprAssign",1,["syn::expr::ExprAssign"]],["impl Freeze for ExprAsync",1,["syn::expr::ExprAsync"]],["impl Freeze for ExprAwait",1,["syn::expr::ExprAwait"]],["impl Freeze for ExprBinary",1,["syn::expr::ExprBinary"]],["impl Freeze for ExprBlock",1,["syn::expr::ExprBlock"]],["impl Freeze for ExprBreak",1,["syn::expr::ExprBreak"]],["impl Freeze for ExprCall",1,["syn::expr::ExprCall"]],["impl Freeze for ExprCast",1,["syn::expr::ExprCast"]],["impl Freeze for ExprClosure",1,["syn::expr::ExprClosure"]],["impl Freeze for ExprConst",1,["syn::expr::ExprConst"]],["impl Freeze for ExprContinue",1,["syn::expr::ExprContinue"]],["impl Freeze for ExprField",1,["syn::expr::ExprField"]],["impl Freeze for ExprForLoop",1,["syn::expr::ExprForLoop"]],["impl Freeze for ExprGroup",1,["syn::expr::ExprGroup"]],["impl Freeze for ExprIf",1,["syn::expr::ExprIf"]],["impl Freeze for ExprIndex",1,["syn::expr::ExprIndex"]],["impl Freeze for ExprInfer",1,["syn::expr::ExprInfer"]],["impl Freeze for ExprLet",1,["syn::expr::ExprLet"]],["impl Freeze for ExprLit",1,["syn::expr::ExprLit"]],["impl Freeze for ExprLoop",1,["syn::expr::ExprLoop"]],["impl Freeze for ExprMacro",1,["syn::expr::ExprMacro"]],["impl Freeze for ExprMatch",1,["syn::expr::ExprMatch"]],["impl Freeze for ExprMethodCall",1,["syn::expr::ExprMethodCall"]],["impl Freeze for ExprParen",1,["syn::expr::ExprParen"]],["impl Freeze for ExprPath",1,["syn::expr::ExprPath"]],["impl Freeze for ExprRange",1,["syn::expr::ExprRange"]],["impl Freeze for ExprRawAddr",1,["syn::expr::ExprRawAddr"]],["impl Freeze for ExprReference",1,["syn::expr::ExprReference"]],["impl Freeze for ExprRepeat",1,["syn::expr::ExprRepeat"]],["impl Freeze for ExprReturn",1,["syn::expr::ExprReturn"]],["impl Freeze for ExprStruct",1,["syn::expr::ExprStruct"]],["impl Freeze for ExprTry",1,["syn::expr::ExprTry"]],["impl Freeze for ExprTryBlock",1,["syn::expr::ExprTryBlock"]],["impl Freeze for ExprTuple",1,["syn::expr::ExprTuple"]],["impl Freeze for ExprUnary",1,["syn::expr::ExprUnary"]],["impl Freeze for ExprUnsafe",1,["syn::expr::ExprUnsafe"]],["impl Freeze for ExprWhile",1,["syn::expr::ExprWhile"]],["impl Freeze for ExprYield",1,["syn::expr::ExprYield"]],["impl Freeze for Field",1,["syn::data::Field"]],["impl Freeze for FieldValue",1,["syn::expr::FieldValue"]],["impl Freeze for FieldsNamed",1,["syn::data::FieldsNamed"]],["impl Freeze for FieldsUnnamed",1,["syn::data::FieldsUnnamed"]],["impl Freeze for Generics",1,["syn::generics::Generics"]],["impl Freeze for Index",1,["syn::expr::Index"]],["impl Freeze for Lifetime",1,["syn::lifetime::Lifetime"]],["impl Freeze for LifetimeParam",1,["syn::generics::LifetimeParam"]],["impl Freeze for LitBool",1,["syn::lit::LitBool"]],["impl Freeze for LitByte",1,["syn::lit::LitByte"]],["impl Freeze for LitByteStr",1,["syn::lit::LitByteStr"]],["impl Freeze for LitCStr",1,["syn::lit::LitCStr"]],["impl Freeze for LitChar",1,["syn::lit::LitChar"]],["impl Freeze for LitFloat",1,["syn::lit::LitFloat"]],["impl Freeze for LitInt",1,["syn::lit::LitInt"]],["impl Freeze for LitStr",1,["syn::lit::LitStr"]],["impl Freeze for Macro",1,["syn::mac::Macro"]],["impl Freeze for MetaList",1,["syn::attr::MetaList"]],["impl Freeze for MetaNameValue",1,["syn::attr::MetaNameValue"]],["impl Freeze for ParenthesizedGenericArguments",1,["syn::path::ParenthesizedGenericArguments"]],["impl Freeze for Path",1,["syn::path::Path"]],["impl Freeze for PathSegment",1,["syn::path::PathSegment"]],["impl Freeze for PredicateLifetime",1,["syn::generics::PredicateLifetime"]],["impl Freeze for PredicateType",1,["syn::generics::PredicateType"]],["impl Freeze for QSelf",1,["syn::path::QSelf"]],["impl Freeze for TraitBound",1,["syn::generics::TraitBound"]],["impl Freeze for TypeArray",1,["syn::ty::TypeArray"]],["impl Freeze for TypeBareFn",1,["syn::ty::TypeBareFn"]],["impl Freeze for TypeGroup",1,["syn::ty::TypeGroup"]],["impl Freeze for TypeImplTrait",1,["syn::ty::TypeImplTrait"]],["impl Freeze for TypeInfer",1,["syn::ty::TypeInfer"]],["impl Freeze for TypeMacro",1,["syn::ty::TypeMacro"]],["impl Freeze for TypeNever",1,["syn::ty::TypeNever"]],["impl Freeze for TypeParam",1,["syn::generics::TypeParam"]],["impl Freeze for TypeParen",1,["syn::ty::TypeParen"]],["impl Freeze for TypePath",1,["syn::ty::TypePath"]],["impl Freeze for TypePtr",1,["syn::ty::TypePtr"]],["impl Freeze for TypeReference",1,["syn::ty::TypeReference"]],["impl Freeze for TypeSlice",1,["syn::ty::TypeSlice"]],["impl Freeze for TypeTraitObject",1,["syn::ty::TypeTraitObject"]],["impl Freeze for TypeTuple",1,["syn::ty::TypeTuple"]],["impl Freeze for Variant",1,["syn::data::Variant"]],["impl Freeze for VisRestricted",1,["syn::restriction::VisRestricted"]],["impl Freeze for WhereClause",1,["syn::generics::WhereClause"]],["impl Freeze for Abstract",1,["syn::token::Abstract"]],["impl Freeze for And",1,["syn::token::And"]],["impl Freeze for AndAnd",1,["syn::token::AndAnd"]],["impl Freeze for AndEq",1,["syn::token::AndEq"]],["impl Freeze for As",1,["syn::token::As"]],["impl Freeze for Async",1,["syn::token::Async"]],["impl Freeze for At",1,["syn::token::At"]],["impl Freeze for Auto",1,["syn::token::Auto"]],["impl Freeze for Await",1,["syn::token::Await"]],["impl Freeze for Become",1,["syn::token::Become"]],["impl Freeze for Box",1,["syn::token::Box"]],["impl Freeze for Brace",1,["syn::token::Brace"]],["impl Freeze for Bracket",1,["syn::token::Bracket"]],["impl Freeze for Break",1,["syn::token::Break"]],["impl Freeze for Caret",1,["syn::token::Caret"]],["impl Freeze for CaretEq",1,["syn::token::CaretEq"]],["impl Freeze for Colon",1,["syn::token::Colon"]],["impl Freeze for Comma",1,["syn::token::Comma"]],["impl Freeze for Const",1,["syn::token::Const"]],["impl Freeze for Continue",1,["syn::token::Continue"]],["impl Freeze for Crate",1,["syn::token::Crate"]],["impl Freeze for Default",1,["syn::token::Default"]],["impl Freeze for Do",1,["syn::token::Do"]],["impl Freeze for Dollar",1,["syn::token::Dollar"]],["impl Freeze for Dot",1,["syn::token::Dot"]],["impl Freeze for DotDot",1,["syn::token::DotDot"]],["impl Freeze for DotDotDot",1,["syn::token::DotDotDot"]],["impl Freeze for DotDotEq",1,["syn::token::DotDotEq"]],["impl Freeze for Dyn",1,["syn::token::Dyn"]],["impl Freeze for Else",1,["syn::token::Else"]],["impl Freeze for Enum",1,["syn::token::Enum"]],["impl Freeze for Eq",1,["syn::token::Eq"]],["impl Freeze for EqEq",1,["syn::token::EqEq"]],["impl Freeze for Extern",1,["syn::token::Extern"]],["impl Freeze for FatArrow",1,["syn::token::FatArrow"]],["impl Freeze for Final",1,["syn::token::Final"]],["impl Freeze for Fn",1,["syn::token::Fn"]],["impl Freeze for For",1,["syn::token::For"]],["impl Freeze for Ge",1,["syn::token::Ge"]],["impl Freeze for Group",1,["syn::token::Group"]],["impl Freeze for Gt",1,["syn::token::Gt"]],["impl Freeze for If",1,["syn::token::If"]],["impl Freeze for Impl",1,["syn::token::Impl"]],["impl Freeze for In",1,["syn::token::In"]],["impl Freeze for LArrow",1,["syn::token::LArrow"]],["impl Freeze for Le",1,["syn::token::Le"]],["impl Freeze for Let",1,["syn::token::Let"]],["impl Freeze for Loop",1,["syn::token::Loop"]],["impl Freeze for Lt",1,["syn::token::Lt"]],["impl Freeze for Macro",1,["syn::token::Macro"]],["impl Freeze for Match",1,["syn::token::Match"]],["impl Freeze for Minus",1,["syn::token::Minus"]],["impl Freeze for MinusEq",1,["syn::token::MinusEq"]],["impl Freeze for Mod",1,["syn::token::Mod"]],["impl Freeze for Move",1,["syn::token::Move"]],["impl Freeze for Mut",1,["syn::token::Mut"]],["impl Freeze for Ne",1,["syn::token::Ne"]],["impl Freeze for Not",1,["syn::token::Not"]],["impl Freeze for Or",1,["syn::token::Or"]],["impl Freeze for OrEq",1,["syn::token::OrEq"]],["impl Freeze for OrOr",1,["syn::token::OrOr"]],["impl Freeze for Override",1,["syn::token::Override"]],["impl Freeze for Paren",1,["syn::token::Paren"]],["impl Freeze for PathSep",1,["syn::token::PathSep"]],["impl Freeze for Percent",1,["syn::token::Percent"]],["impl Freeze for PercentEq",1,["syn::token::PercentEq"]],["impl Freeze for Plus",1,["syn::token::Plus"]],["impl Freeze for PlusEq",1,["syn::token::PlusEq"]],["impl Freeze for Pound",1,["syn::token::Pound"]],["impl Freeze for Priv",1,["syn::token::Priv"]],["impl Freeze for Pub",1,["syn::token::Pub"]],["impl Freeze for Question",1,["syn::token::Question"]],["impl Freeze for RArrow",1,["syn::token::RArrow"]],["impl Freeze for Raw",1,["syn::token::Raw"]],["impl Freeze for Ref",1,["syn::token::Ref"]],["impl Freeze for Return",1,["syn::token::Return"]],["impl Freeze for SelfType",1,["syn::token::SelfType"]],["impl Freeze for SelfValue",1,["syn::token::SelfValue"]],["impl Freeze for Semi",1,["syn::token::Semi"]],["impl Freeze for Shl",1,["syn::token::Shl"]],["impl Freeze for ShlEq",1,["syn::token::ShlEq"]],["impl Freeze for Shr",1,["syn::token::Shr"]],["impl Freeze for ShrEq",1,["syn::token::ShrEq"]],["impl Freeze for Slash",1,["syn::token::Slash"]],["impl Freeze for SlashEq",1,["syn::token::SlashEq"]],["impl Freeze for Star",1,["syn::token::Star"]],["impl Freeze for StarEq",1,["syn::token::StarEq"]],["impl Freeze for Static",1,["syn::token::Static"]],["impl Freeze for Struct",1,["syn::token::Struct"]],["impl Freeze for Super",1,["syn::token::Super"]],["impl Freeze for Tilde",1,["syn::token::Tilde"]],["impl Freeze for Trait",1,["syn::token::Trait"]],["impl Freeze for Try",1,["syn::token::Try"]],["impl Freeze for Type",1,["syn::token::Type"]],["impl Freeze for Typeof",1,["syn::token::Typeof"]],["impl Freeze for Underscore",1,["syn::token::Underscore"]],["impl Freeze for Union",1,["syn::token::Union"]],["impl Freeze for Unsafe",1,["syn::token::Unsafe"]],["impl Freeze for Unsized",1,["syn::token::Unsized"]],["impl Freeze for Use",1,["syn::token::Use"]],["impl Freeze for Virtual",1,["syn::token::Virtual"]],["impl Freeze for Where",1,["syn::token::Where"]],["impl Freeze for While",1,["syn::token::While"]],["impl Freeze for Yield",1,["syn::token::Yield"]],["impl<'a> !Freeze for Lookahead1<'a>",1,["syn::lookahead::Lookahead1"]],["impl<'a> !Freeze for ParseBuffer<'a>",1,["syn::parse::ParseBuffer"]],["impl<'a> Freeze for Cursor<'a>",1,["syn::buffer::Cursor"]],["impl<'a> Freeze for ParseNestedMeta<'a>",1,["syn::meta::ParseNestedMeta"]],["impl<'a> Freeze for ImplGenerics<'a>",1,["syn::generics::ImplGenerics"]],["impl<'a> Freeze for Turbofish<'a>",1,["syn::generics::Turbofish"]],["impl<'a> Freeze for TypeGenerics<'a>",1,["syn::generics::TypeGenerics"]],["impl<'a, T> Freeze for Iter<'a, T>",1,["syn::punctuated::Iter"]],["impl<'a, T> Freeze for IterMut<'a, T>",1,["syn::punctuated::IterMut"]],["impl<'a, T, P> Freeze for Pairs<'a, T, P>",1,["syn::punctuated::Pairs"]],["impl<'a, T, P> Freeze for PairsMut<'a, T, P>",1,["syn::punctuated::PairsMut"]],["impl<'c, 'a> Freeze for StepCursor<'c, 'a>",1,["syn::parse::StepCursor"]],["impl<T> Freeze for IntoIter<T>",1,["syn::punctuated::IntoIter"]],["impl<T, P> Freeze for Pair<T, P>
    where\n T: Freeze,\n P: Freeze,
    ",1,["syn::punctuated::Pair"]],["impl<T, P> Freeze for IntoPairs<T, P>
    where\n T: Freeze,
    ",1,["syn::punctuated::IntoPairs"]],["impl<T, P> Freeze for Punctuated<T, P>",1,["syn::punctuated::Punctuated"]]]],["synstructure",[["impl Freeze for AddBounds",1,["synstructure::AddBounds"]],["impl Freeze for BindStyle",1,["synstructure::BindStyle"]],["impl<'a> Freeze for BindingInfo<'a>",1,["synstructure::BindingInfo"]],["impl<'a> Freeze for Structure<'a>",1,["synstructure::Structure"]],["impl<'a> Freeze for VariantAst<'a>",1,["synstructure::VariantAst"]],["impl<'a> Freeze for VariantInfo<'a>",1,["synstructure::VariantInfo"]]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[1721,3289,2330,3553,68635,1913]} \ No newline at end of file diff --git a/trait.impl/core/marker/trait.Send.js b/trait.impl/core/marker/trait.Send.js new file mode 100644 index 0000000..cfc00ab --- /dev/null +++ b/trait.impl/core/marker/trait.Send.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["delog",[["impl Send for U1",1,["delog::hex::U1"]],["impl Send for DefaultRenderer"],["impl Send for RipgrepRenderer",1,["delog::render::RipgrepRenderer"]],["impl Send for Statistics",1,["delog::logger::Statistics"]],["impl<'a, T, U, S> Send for HexStr<'a, T, U, S>
    where\n T: Sync + ?Sized,\n U: Send,\n S: Send,
    ",1,["delog::hex::HexStr"]]]],["flexiber",[["impl Send for Class",1,["flexiber::tag::Class"]],["impl Send for ErrorKind",1,["flexiber::error::ErrorKind"]],["impl Send for Error",1,["flexiber::error::Error"]],["impl Send for Length",1,["flexiber::length::Length"]],["impl Send for SimpleTag",1,["flexiber::simpletag::SimpleTag"]],["impl Send for Tag",1,["flexiber::tag::Tag"]],["impl<'a> Send for Decoder<'a>",1,["flexiber::decoder::Decoder"]],["impl<'a> Send for Encoder<'a>",1,["flexiber::encoder::Encoder"]],["impl<'a> Send for Slice<'a>",1,["flexiber::slice::Slice"]],["impl<V, T> Send for TaggedValue<V, T>
    where\n T: Send,\n V: Send,
    ",1,["flexiber::tagged::TaggedValue"]]]],["log",[["impl Send for Level",1,["log::Level"]],["impl Send for LevelFilter",1,["log::LevelFilter"]],["impl Send for ParseLevelError",1,["log::ParseLevelError"]],["impl Send for SetLoggerError",1,["log::SetLoggerError"]],["impl<'a> !Send for Record<'a>",1,["log::Record"]],["impl<'a> !Send for RecordBuilder<'a>",1,["log::RecordBuilder"]],["impl<'a> Send for Metadata<'a>",1,["log::Metadata"]],["impl<'a> Send for MetadataBuilder<'a>",1,["log::MetadataBuilder"]]]],["proc_macro2",[["impl !Send for TokenTree",1,["proc_macro2::TokenTree"]],["impl !Send for DelimSpan",1,["proc_macro2::extra::DelimSpan"]],["impl !Send for Group",1,["proc_macro2::Group"]],["impl !Send for Ident",1,["proc_macro2::Ident"]],["impl !Send for LexError",1,["proc_macro2::LexError"]],["impl !Send for Literal",1,["proc_macro2::Literal"]],["impl !Send for Punct",1,["proc_macro2::Punct"]],["impl !Send for Span",1,["proc_macro2::Span"]],["impl !Send for TokenStream",1,["proc_macro2::TokenStream"]],["impl !Send for IntoIter",1,["proc_macro2::token_stream::IntoIter"]],["impl Send for Delimiter",1,["proc_macro2::Delimiter"]],["impl Send for Spacing",1,["proc_macro2::Spacing"]]]],["syn",[["impl !Send for AttrStyle",1,["syn::attr::AttrStyle"]],["impl !Send for BinOp",1,["syn::op::BinOp"]],["impl !Send for Data",1,["syn::derive::Data"]],["impl !Send for Expr",1,["syn::expr::Expr"]],["impl !Send for Fields",1,["syn::data::Fields"]],["impl !Send for GenericArgument",1,["syn::path::GenericArgument"]],["impl !Send for GenericParam",1,["syn::generics::GenericParam"]],["impl !Send for Lit",1,["syn::lit::Lit"]],["impl !Send for MacroDelimiter",1,["syn::mac::MacroDelimiter"]],["impl !Send for Member",1,["syn::expr::Member"]],["impl !Send for Meta",1,["syn::attr::Meta"]],["impl !Send for PathArguments",1,["syn::path::PathArguments"]],["impl !Send for ReturnType",1,["syn::ty::ReturnType"]],["impl !Send for TraitBoundModifier",1,["syn::generics::TraitBoundModifier"]],["impl !Send for Type",1,["syn::ty::Type"]],["impl !Send for TypeParamBound",1,["syn::generics::TypeParamBound"]],["impl !Send for UnOp",1,["syn::op::UnOp"]],["impl !Send for Visibility",1,["syn::restriction::Visibility"]],["impl !Send for WherePredicate",1,["syn::generics::WherePredicate"]],["impl !Send for TokenBuffer",1,["syn::buffer::TokenBuffer"]],["impl !Send for Abi",1,["syn::ty::Abi"]],["impl !Send for AngleBracketedGenericArguments",1,["syn::path::AngleBracketedGenericArguments"]],["impl !Send for AssocConst",1,["syn::path::AssocConst"]],["impl !Send for AssocType",1,["syn::path::AssocType"]],["impl !Send for Attribute",1,["syn::attr::Attribute"]],["impl !Send for BareFnArg",1,["syn::ty::BareFnArg"]],["impl !Send for BareVariadic",1,["syn::ty::BareVariadic"]],["impl !Send for BoundLifetimes",1,["syn::generics::BoundLifetimes"]],["impl !Send for ConstParam",1,["syn::generics::ConstParam"]],["impl !Send for Constraint",1,["syn::path::Constraint"]],["impl !Send for DataEnum",1,["syn::derive::DataEnum"]],["impl !Send for DataStruct",1,["syn::derive::DataStruct"]],["impl !Send for DataUnion",1,["syn::derive::DataUnion"]],["impl !Send for DeriveInput",1,["syn::derive::DeriveInput"]],["impl !Send for ExprArray",1,["syn::expr::ExprArray"]],["impl !Send for ExprAssign",1,["syn::expr::ExprAssign"]],["impl !Send for ExprAsync",1,["syn::expr::ExprAsync"]],["impl !Send for ExprAwait",1,["syn::expr::ExprAwait"]],["impl !Send for ExprBinary",1,["syn::expr::ExprBinary"]],["impl !Send for ExprBlock",1,["syn::expr::ExprBlock"]],["impl !Send for ExprBreak",1,["syn::expr::ExprBreak"]],["impl !Send for ExprCall",1,["syn::expr::ExprCall"]],["impl !Send for ExprCast",1,["syn::expr::ExprCast"]],["impl !Send for ExprClosure",1,["syn::expr::ExprClosure"]],["impl !Send for ExprConst",1,["syn::expr::ExprConst"]],["impl !Send for ExprContinue",1,["syn::expr::ExprContinue"]],["impl !Send for ExprField",1,["syn::expr::ExprField"]],["impl !Send for ExprForLoop",1,["syn::expr::ExprForLoop"]],["impl !Send for ExprGroup",1,["syn::expr::ExprGroup"]],["impl !Send for ExprIf",1,["syn::expr::ExprIf"]],["impl !Send for ExprIndex",1,["syn::expr::ExprIndex"]],["impl !Send for ExprInfer",1,["syn::expr::ExprInfer"]],["impl !Send for ExprLet",1,["syn::expr::ExprLet"]],["impl !Send for ExprLit",1,["syn::expr::ExprLit"]],["impl !Send for ExprLoop",1,["syn::expr::ExprLoop"]],["impl !Send for ExprMacro",1,["syn::expr::ExprMacro"]],["impl !Send for ExprMatch",1,["syn::expr::ExprMatch"]],["impl !Send for ExprMethodCall",1,["syn::expr::ExprMethodCall"]],["impl !Send for ExprParen",1,["syn::expr::ExprParen"]],["impl !Send for ExprPath",1,["syn::expr::ExprPath"]],["impl !Send for ExprRange",1,["syn::expr::ExprRange"]],["impl !Send for ExprRawAddr",1,["syn::expr::ExprRawAddr"]],["impl !Send for ExprReference",1,["syn::expr::ExprReference"]],["impl !Send for ExprRepeat",1,["syn::expr::ExprRepeat"]],["impl !Send for ExprReturn",1,["syn::expr::ExprReturn"]],["impl !Send for ExprStruct",1,["syn::expr::ExprStruct"]],["impl !Send for ExprTry",1,["syn::expr::ExprTry"]],["impl !Send for ExprTryBlock",1,["syn::expr::ExprTryBlock"]],["impl !Send for ExprTuple",1,["syn::expr::ExprTuple"]],["impl !Send for ExprUnary",1,["syn::expr::ExprUnary"]],["impl !Send for ExprUnsafe",1,["syn::expr::ExprUnsafe"]],["impl !Send for ExprWhile",1,["syn::expr::ExprWhile"]],["impl !Send for ExprYield",1,["syn::expr::ExprYield"]],["impl !Send for Field",1,["syn::data::Field"]],["impl !Send for FieldValue",1,["syn::expr::FieldValue"]],["impl !Send for FieldsNamed",1,["syn::data::FieldsNamed"]],["impl !Send for FieldsUnnamed",1,["syn::data::FieldsUnnamed"]],["impl !Send for Generics",1,["syn::generics::Generics"]],["impl !Send for Index",1,["syn::expr::Index"]],["impl !Send for Lifetime",1,["syn::lifetime::Lifetime"]],["impl !Send for LifetimeParam",1,["syn::generics::LifetimeParam"]],["impl !Send for LitBool",1,["syn::lit::LitBool"]],["impl !Send for LitByte",1,["syn::lit::LitByte"]],["impl !Send for LitByteStr",1,["syn::lit::LitByteStr"]],["impl !Send for LitCStr",1,["syn::lit::LitCStr"]],["impl !Send for LitChar",1,["syn::lit::LitChar"]],["impl !Send for LitFloat",1,["syn::lit::LitFloat"]],["impl !Send for LitInt",1,["syn::lit::LitInt"]],["impl !Send for LitStr",1,["syn::lit::LitStr"]],["impl !Send for Macro",1,["syn::mac::Macro"]],["impl !Send for MetaList",1,["syn::attr::MetaList"]],["impl !Send for MetaNameValue",1,["syn::attr::MetaNameValue"]],["impl !Send for ParenthesizedGenericArguments",1,["syn::path::ParenthesizedGenericArguments"]],["impl !Send for Path",1,["syn::path::Path"]],["impl !Send for PathSegment",1,["syn::path::PathSegment"]],["impl !Send for PredicateLifetime",1,["syn::generics::PredicateLifetime"]],["impl !Send for PredicateType",1,["syn::generics::PredicateType"]],["impl !Send for QSelf",1,["syn::path::QSelf"]],["impl !Send for TraitBound",1,["syn::generics::TraitBound"]],["impl !Send for TypeArray",1,["syn::ty::TypeArray"]],["impl !Send for TypeBareFn",1,["syn::ty::TypeBareFn"]],["impl !Send for TypeGroup",1,["syn::ty::TypeGroup"]],["impl !Send for TypeImplTrait",1,["syn::ty::TypeImplTrait"]],["impl !Send for TypeInfer",1,["syn::ty::TypeInfer"]],["impl !Send for TypeMacro",1,["syn::ty::TypeMacro"]],["impl !Send for TypeNever",1,["syn::ty::TypeNever"]],["impl !Send for TypeParam",1,["syn::generics::TypeParam"]],["impl !Send for TypeParen",1,["syn::ty::TypeParen"]],["impl !Send for TypePath",1,["syn::ty::TypePath"]],["impl !Send for TypePtr",1,["syn::ty::TypePtr"]],["impl !Send for TypeReference",1,["syn::ty::TypeReference"]],["impl !Send for TypeSlice",1,["syn::ty::TypeSlice"]],["impl !Send for TypeTraitObject",1,["syn::ty::TypeTraitObject"]],["impl !Send for TypeTuple",1,["syn::ty::TypeTuple"]],["impl !Send for Variant",1,["syn::data::Variant"]],["impl !Send for VisRestricted",1,["syn::restriction::VisRestricted"]],["impl !Send for WhereClause",1,["syn::generics::WhereClause"]],["impl !Send for Abstract",1,["syn::token::Abstract"]],["impl !Send for And",1,["syn::token::And"]],["impl !Send for AndAnd",1,["syn::token::AndAnd"]],["impl !Send for AndEq",1,["syn::token::AndEq"]],["impl !Send for As",1,["syn::token::As"]],["impl !Send for Async",1,["syn::token::Async"]],["impl !Send for At",1,["syn::token::At"]],["impl !Send for Auto",1,["syn::token::Auto"]],["impl !Send for Await",1,["syn::token::Await"]],["impl !Send for Become",1,["syn::token::Become"]],["impl !Send for Box",1,["syn::token::Box"]],["impl !Send for Brace",1,["syn::token::Brace"]],["impl !Send for Bracket",1,["syn::token::Bracket"]],["impl !Send for Break",1,["syn::token::Break"]],["impl !Send for Caret",1,["syn::token::Caret"]],["impl !Send for CaretEq",1,["syn::token::CaretEq"]],["impl !Send for Colon",1,["syn::token::Colon"]],["impl !Send for Comma",1,["syn::token::Comma"]],["impl !Send for Const",1,["syn::token::Const"]],["impl !Send for Continue",1,["syn::token::Continue"]],["impl !Send for Crate",1,["syn::token::Crate"]],["impl !Send for Default",1,["syn::token::Default"]],["impl !Send for Do",1,["syn::token::Do"]],["impl !Send for Dollar",1,["syn::token::Dollar"]],["impl !Send for Dot",1,["syn::token::Dot"]],["impl !Send for DotDot",1,["syn::token::DotDot"]],["impl !Send for DotDotDot",1,["syn::token::DotDotDot"]],["impl !Send for DotDotEq",1,["syn::token::DotDotEq"]],["impl !Send for Dyn",1,["syn::token::Dyn"]],["impl !Send for Else",1,["syn::token::Else"]],["impl !Send for Enum",1,["syn::token::Enum"]],["impl !Send for Eq",1,["syn::token::Eq"]],["impl !Send for EqEq",1,["syn::token::EqEq"]],["impl !Send for Extern",1,["syn::token::Extern"]],["impl !Send for FatArrow",1,["syn::token::FatArrow"]],["impl !Send for Final",1,["syn::token::Final"]],["impl !Send for Fn",1,["syn::token::Fn"]],["impl !Send for For",1,["syn::token::For"]],["impl !Send for Ge",1,["syn::token::Ge"]],["impl !Send for Group",1,["syn::token::Group"]],["impl !Send for Gt",1,["syn::token::Gt"]],["impl !Send for If",1,["syn::token::If"]],["impl !Send for Impl",1,["syn::token::Impl"]],["impl !Send for In",1,["syn::token::In"]],["impl !Send for LArrow",1,["syn::token::LArrow"]],["impl !Send for Le",1,["syn::token::Le"]],["impl !Send for Let",1,["syn::token::Let"]],["impl !Send for Loop",1,["syn::token::Loop"]],["impl !Send for Lt",1,["syn::token::Lt"]],["impl !Send for Macro",1,["syn::token::Macro"]],["impl !Send for Match",1,["syn::token::Match"]],["impl !Send for Minus",1,["syn::token::Minus"]],["impl !Send for MinusEq",1,["syn::token::MinusEq"]],["impl !Send for Mod",1,["syn::token::Mod"]],["impl !Send for Move",1,["syn::token::Move"]],["impl !Send for Mut",1,["syn::token::Mut"]],["impl !Send for Ne",1,["syn::token::Ne"]],["impl !Send for Not",1,["syn::token::Not"]],["impl !Send for Or",1,["syn::token::Or"]],["impl !Send for OrEq",1,["syn::token::OrEq"]],["impl !Send for OrOr",1,["syn::token::OrOr"]],["impl !Send for Override",1,["syn::token::Override"]],["impl !Send for Paren",1,["syn::token::Paren"]],["impl !Send for PathSep",1,["syn::token::PathSep"]],["impl !Send for Percent",1,["syn::token::Percent"]],["impl !Send for PercentEq",1,["syn::token::PercentEq"]],["impl !Send for Plus",1,["syn::token::Plus"]],["impl !Send for PlusEq",1,["syn::token::PlusEq"]],["impl !Send for Pound",1,["syn::token::Pound"]],["impl !Send for Priv",1,["syn::token::Priv"]],["impl !Send for Pub",1,["syn::token::Pub"]],["impl !Send for Question",1,["syn::token::Question"]],["impl !Send for RArrow",1,["syn::token::RArrow"]],["impl !Send for Raw",1,["syn::token::Raw"]],["impl !Send for Ref",1,["syn::token::Ref"]],["impl !Send for Return",1,["syn::token::Return"]],["impl !Send for SelfType",1,["syn::token::SelfType"]],["impl !Send for SelfValue",1,["syn::token::SelfValue"]],["impl !Send for Semi",1,["syn::token::Semi"]],["impl !Send for Shl",1,["syn::token::Shl"]],["impl !Send for ShlEq",1,["syn::token::ShlEq"]],["impl !Send for Shr",1,["syn::token::Shr"]],["impl !Send for ShrEq",1,["syn::token::ShrEq"]],["impl !Send for Slash",1,["syn::token::Slash"]],["impl !Send for SlashEq",1,["syn::token::SlashEq"]],["impl !Send for Star",1,["syn::token::Star"]],["impl !Send for StarEq",1,["syn::token::StarEq"]],["impl !Send for Static",1,["syn::token::Static"]],["impl !Send for Struct",1,["syn::token::Struct"]],["impl !Send for Super",1,["syn::token::Super"]],["impl !Send for Tilde",1,["syn::token::Tilde"]],["impl !Send for Trait",1,["syn::token::Trait"]],["impl !Send for Try",1,["syn::token::Try"]],["impl !Send for Type",1,["syn::token::Type"]],["impl !Send for Typeof",1,["syn::token::Typeof"]],["impl !Send for Underscore",1,["syn::token::Underscore"]],["impl !Send for Union",1,["syn::token::Union"]],["impl !Send for Unsafe",1,["syn::token::Unsafe"]],["impl !Send for Unsized",1,["syn::token::Unsized"]],["impl !Send for Use",1,["syn::token::Use"]],["impl !Send for Virtual",1,["syn::token::Virtual"]],["impl !Send for Where",1,["syn::token::Where"]],["impl !Send for While",1,["syn::token::While"]],["impl !Send for Yield",1,["syn::token::Yield"]],["impl Send for FieldMutability",1,["syn::restriction::FieldMutability"]],["impl Send for End",1,["syn::lookahead::End"]],["impl Send for Error",1,["syn::error::Error"]],["impl Send for Nothing",1,["syn::parse::Nothing"]],["impl<'a> !Send for Cursor<'a>",1,["syn::buffer::Cursor"]],["impl<'a> !Send for ParseNestedMeta<'a>",1,["syn::meta::ParseNestedMeta"]],["impl<'a> !Send for Lookahead1<'a>",1,["syn::lookahead::Lookahead1"]],["impl<'a> !Send for ParseBuffer<'a>",1,["syn::parse::ParseBuffer"]],["impl<'a> !Send for ImplGenerics<'a>",1,["syn::generics::ImplGenerics"]],["impl<'a> !Send for Turbofish<'a>",1,["syn::generics::Turbofish"]],["impl<'a> !Send for TypeGenerics<'a>",1,["syn::generics::TypeGenerics"]],["impl<'a, T> !Send for Iter<'a, T>",1,["syn::punctuated::Iter"]],["impl<'a, T> !Send for IterMut<'a, T>",1,["syn::punctuated::IterMut"]],["impl<'a, T, P> Send for Pairs<'a, T, P>
    where\n T: Sync,\n P: Sync,
    ",1,["syn::punctuated::Pairs"]],["impl<'a, T, P> Send for PairsMut<'a, T, P>
    where\n T: Send,\n P: Send,
    ",1,["syn::punctuated::PairsMut"]],["impl<'c, 'a> !Send for StepCursor<'c, 'a>",1,["syn::parse::StepCursor"]],["impl<T> Send for IntoIter<T>
    where\n T: Send,
    ",1,["syn::punctuated::IntoIter"]],["impl<T, P> Send for Pair<T, P>
    where\n T: Send,\n P: Send,
    ",1,["syn::punctuated::Pair"]],["impl<T, P> Send for IntoPairs<T, P>
    where\n T: Send,\n P: Send,
    ",1,["syn::punctuated::IntoPairs"]],["impl<T, P> Send for Punctuated<T, P>
    where\n T: Send,\n P: Send,
    ",1,["syn::punctuated::Punctuated"]]]],["synstructure",[["impl Send for AddBounds",1,["synstructure::AddBounds"]],["impl Send for BindStyle",1,["synstructure::BindStyle"]],["impl<'a> !Send for BindingInfo<'a>",1,["synstructure::BindingInfo"]],["impl<'a> !Send for Structure<'a>",1,["synstructure::Structure"]],["impl<'a> !Send for VariantAst<'a>",1,["synstructure::VariantAst"]],["impl<'a> !Send for VariantInfo<'a>",1,["synstructure::VariantInfo"]]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[2073,3217,2284,3491,68664,1881]} \ No newline at end of file diff --git a/trait.impl/core/marker/trait.StructuralPartialEq.js b/trait.impl/core/marker/trait.StructuralPartialEq.js new file mode 100644 index 0000000..90bb688 --- /dev/null +++ b/trait.impl/core/marker/trait.StructuralPartialEq.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["flexiber",[["impl StructuralPartialEq for Class"],["impl StructuralPartialEq for ErrorKind"],["impl StructuralPartialEq for Error"],["impl StructuralPartialEq for Length"],["impl StructuralPartialEq for SimpleTag"],["impl StructuralPartialEq for Tag"],["impl<'a> StructuralPartialEq for Slice<'a>"],["impl<V, T> StructuralPartialEq for TaggedValue<V, T>"]]],["log",[["impl StructuralPartialEq for Level"],["impl StructuralPartialEq for LevelFilter"],["impl StructuralPartialEq for ParseLevelError"],["impl<'a> StructuralPartialEq for Metadata<'a>"],["impl<'a> StructuralPartialEq for MetadataBuilder<'a>"]]],["proc_macro2",[["impl StructuralPartialEq for Delimiter"],["impl StructuralPartialEq for Spacing"]]],["synstructure",[["impl StructuralPartialEq for AddBounds"],["impl StructuralPartialEq for BindStyle"],["impl<'a> StructuralPartialEq for BindingInfo<'a>"],["impl<'a> StructuralPartialEq for Structure<'a>"],["impl<'a> StructuralPartialEq for VariantAst<'a>"],["impl<'a> StructuralPartialEq for VariantInfo<'a>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[2405,1525,616,1962]} \ No newline at end of file diff --git a/trait.impl/core/marker/trait.Sync.js b/trait.impl/core/marker/trait.Sync.js new file mode 100644 index 0000000..386f712 --- /dev/null +++ b/trait.impl/core/marker/trait.Sync.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["delog",[["impl Sync for U1",1,["delog::hex::U1"]],["impl Sync for DefaultRenderer"],["impl Sync for RipgrepRenderer",1,["delog::render::RipgrepRenderer"]],["impl Sync for Statistics",1,["delog::logger::Statistics"]],["impl<'a, T, U, S> Sync for HexStr<'a, T, U, S>
    where\n T: Sync + ?Sized,\n U: Sync,\n S: Sync,
    ",1,["delog::hex::HexStr"]]]],["flexiber",[["impl Sync for Class",1,["flexiber::tag::Class"]],["impl Sync for ErrorKind",1,["flexiber::error::ErrorKind"]],["impl Sync for Error",1,["flexiber::error::Error"]],["impl Sync for Length",1,["flexiber::length::Length"]],["impl Sync for SimpleTag",1,["flexiber::simpletag::SimpleTag"]],["impl Sync for Tag",1,["flexiber::tag::Tag"]],["impl<'a> Sync for Decoder<'a>",1,["flexiber::decoder::Decoder"]],["impl<'a> Sync for Encoder<'a>",1,["flexiber::encoder::Encoder"]],["impl<'a> Sync for Slice<'a>",1,["flexiber::slice::Slice"]],["impl<V, T> Sync for TaggedValue<V, T>
    where\n T: Sync,\n V: Sync,
    ",1,["flexiber::tagged::TaggedValue"]]]],["log",[["impl Sync for Level",1,["log::Level"]],["impl Sync for LevelFilter",1,["log::LevelFilter"]],["impl Sync for ParseLevelError",1,["log::ParseLevelError"]],["impl Sync for SetLoggerError",1,["log::SetLoggerError"]],["impl<'a> !Sync for Record<'a>",1,["log::Record"]],["impl<'a> !Sync for RecordBuilder<'a>",1,["log::RecordBuilder"]],["impl<'a> Sync for Metadata<'a>",1,["log::Metadata"]],["impl<'a> Sync for MetadataBuilder<'a>",1,["log::MetadataBuilder"]]]],["proc_macro2",[["impl !Sync for TokenTree",1,["proc_macro2::TokenTree"]],["impl !Sync for DelimSpan",1,["proc_macro2::extra::DelimSpan"]],["impl !Sync for Group",1,["proc_macro2::Group"]],["impl !Sync for Ident",1,["proc_macro2::Ident"]],["impl !Sync for LexError",1,["proc_macro2::LexError"]],["impl !Sync for Literal",1,["proc_macro2::Literal"]],["impl !Sync for Punct",1,["proc_macro2::Punct"]],["impl !Sync for Span",1,["proc_macro2::Span"]],["impl !Sync for TokenStream",1,["proc_macro2::TokenStream"]],["impl !Sync for IntoIter",1,["proc_macro2::token_stream::IntoIter"]],["impl Sync for Delimiter",1,["proc_macro2::Delimiter"]],["impl Sync for Spacing",1,["proc_macro2::Spacing"]]]],["syn",[["impl !Sync for AttrStyle",1,["syn::attr::AttrStyle"]],["impl !Sync for BinOp",1,["syn::op::BinOp"]],["impl !Sync for Data",1,["syn::derive::Data"]],["impl !Sync for Expr",1,["syn::expr::Expr"]],["impl !Sync for Fields",1,["syn::data::Fields"]],["impl !Sync for GenericArgument",1,["syn::path::GenericArgument"]],["impl !Sync for GenericParam",1,["syn::generics::GenericParam"]],["impl !Sync for Lit",1,["syn::lit::Lit"]],["impl !Sync for MacroDelimiter",1,["syn::mac::MacroDelimiter"]],["impl !Sync for Member",1,["syn::expr::Member"]],["impl !Sync for Meta",1,["syn::attr::Meta"]],["impl !Sync for PathArguments",1,["syn::path::PathArguments"]],["impl !Sync for ReturnType",1,["syn::ty::ReturnType"]],["impl !Sync for TraitBoundModifier",1,["syn::generics::TraitBoundModifier"]],["impl !Sync for Type",1,["syn::ty::Type"]],["impl !Sync for TypeParamBound",1,["syn::generics::TypeParamBound"]],["impl !Sync for UnOp",1,["syn::op::UnOp"]],["impl !Sync for Visibility",1,["syn::restriction::Visibility"]],["impl !Sync for WherePredicate",1,["syn::generics::WherePredicate"]],["impl !Sync for TokenBuffer",1,["syn::buffer::TokenBuffer"]],["impl !Sync for Abi",1,["syn::ty::Abi"]],["impl !Sync for AngleBracketedGenericArguments",1,["syn::path::AngleBracketedGenericArguments"]],["impl !Sync for AssocConst",1,["syn::path::AssocConst"]],["impl !Sync for AssocType",1,["syn::path::AssocType"]],["impl !Sync for Attribute",1,["syn::attr::Attribute"]],["impl !Sync for BareFnArg",1,["syn::ty::BareFnArg"]],["impl !Sync for BareVariadic",1,["syn::ty::BareVariadic"]],["impl !Sync for BoundLifetimes",1,["syn::generics::BoundLifetimes"]],["impl !Sync for ConstParam",1,["syn::generics::ConstParam"]],["impl !Sync for Constraint",1,["syn::path::Constraint"]],["impl !Sync for DataEnum",1,["syn::derive::DataEnum"]],["impl !Sync for DataStruct",1,["syn::derive::DataStruct"]],["impl !Sync for DataUnion",1,["syn::derive::DataUnion"]],["impl !Sync for DeriveInput",1,["syn::derive::DeriveInput"]],["impl !Sync for ExprArray",1,["syn::expr::ExprArray"]],["impl !Sync for ExprAssign",1,["syn::expr::ExprAssign"]],["impl !Sync for ExprAsync",1,["syn::expr::ExprAsync"]],["impl !Sync for ExprAwait",1,["syn::expr::ExprAwait"]],["impl !Sync for ExprBinary",1,["syn::expr::ExprBinary"]],["impl !Sync for ExprBlock",1,["syn::expr::ExprBlock"]],["impl !Sync for ExprBreak",1,["syn::expr::ExprBreak"]],["impl !Sync for ExprCall",1,["syn::expr::ExprCall"]],["impl !Sync for ExprCast",1,["syn::expr::ExprCast"]],["impl !Sync for ExprClosure",1,["syn::expr::ExprClosure"]],["impl !Sync for ExprConst",1,["syn::expr::ExprConst"]],["impl !Sync for ExprContinue",1,["syn::expr::ExprContinue"]],["impl !Sync for ExprField",1,["syn::expr::ExprField"]],["impl !Sync for ExprForLoop",1,["syn::expr::ExprForLoop"]],["impl !Sync for ExprGroup",1,["syn::expr::ExprGroup"]],["impl !Sync for ExprIf",1,["syn::expr::ExprIf"]],["impl !Sync for ExprIndex",1,["syn::expr::ExprIndex"]],["impl !Sync for ExprInfer",1,["syn::expr::ExprInfer"]],["impl !Sync for ExprLet",1,["syn::expr::ExprLet"]],["impl !Sync for ExprLit",1,["syn::expr::ExprLit"]],["impl !Sync for ExprLoop",1,["syn::expr::ExprLoop"]],["impl !Sync for ExprMacro",1,["syn::expr::ExprMacro"]],["impl !Sync for ExprMatch",1,["syn::expr::ExprMatch"]],["impl !Sync for ExprMethodCall",1,["syn::expr::ExprMethodCall"]],["impl !Sync for ExprParen",1,["syn::expr::ExprParen"]],["impl !Sync for ExprPath",1,["syn::expr::ExprPath"]],["impl !Sync for ExprRange",1,["syn::expr::ExprRange"]],["impl !Sync for ExprRawAddr",1,["syn::expr::ExprRawAddr"]],["impl !Sync for ExprReference",1,["syn::expr::ExprReference"]],["impl !Sync for ExprRepeat",1,["syn::expr::ExprRepeat"]],["impl !Sync for ExprReturn",1,["syn::expr::ExprReturn"]],["impl !Sync for ExprStruct",1,["syn::expr::ExprStruct"]],["impl !Sync for ExprTry",1,["syn::expr::ExprTry"]],["impl !Sync for ExprTryBlock",1,["syn::expr::ExprTryBlock"]],["impl !Sync for ExprTuple",1,["syn::expr::ExprTuple"]],["impl !Sync for ExprUnary",1,["syn::expr::ExprUnary"]],["impl !Sync for ExprUnsafe",1,["syn::expr::ExprUnsafe"]],["impl !Sync for ExprWhile",1,["syn::expr::ExprWhile"]],["impl !Sync for ExprYield",1,["syn::expr::ExprYield"]],["impl !Sync for Field",1,["syn::data::Field"]],["impl !Sync for FieldValue",1,["syn::expr::FieldValue"]],["impl !Sync for FieldsNamed",1,["syn::data::FieldsNamed"]],["impl !Sync for FieldsUnnamed",1,["syn::data::FieldsUnnamed"]],["impl !Sync for Generics",1,["syn::generics::Generics"]],["impl !Sync for Index",1,["syn::expr::Index"]],["impl !Sync for Lifetime",1,["syn::lifetime::Lifetime"]],["impl !Sync for LifetimeParam",1,["syn::generics::LifetimeParam"]],["impl !Sync for LitBool",1,["syn::lit::LitBool"]],["impl !Sync for LitByte",1,["syn::lit::LitByte"]],["impl !Sync for LitByteStr",1,["syn::lit::LitByteStr"]],["impl !Sync for LitCStr",1,["syn::lit::LitCStr"]],["impl !Sync for LitChar",1,["syn::lit::LitChar"]],["impl !Sync for LitFloat",1,["syn::lit::LitFloat"]],["impl !Sync for LitInt",1,["syn::lit::LitInt"]],["impl !Sync for LitStr",1,["syn::lit::LitStr"]],["impl !Sync for Macro",1,["syn::mac::Macro"]],["impl !Sync for MetaList",1,["syn::attr::MetaList"]],["impl !Sync for MetaNameValue",1,["syn::attr::MetaNameValue"]],["impl !Sync for ParenthesizedGenericArguments",1,["syn::path::ParenthesizedGenericArguments"]],["impl !Sync for Path",1,["syn::path::Path"]],["impl !Sync for PathSegment",1,["syn::path::PathSegment"]],["impl !Sync for PredicateLifetime",1,["syn::generics::PredicateLifetime"]],["impl !Sync for PredicateType",1,["syn::generics::PredicateType"]],["impl !Sync for QSelf",1,["syn::path::QSelf"]],["impl !Sync for TraitBound",1,["syn::generics::TraitBound"]],["impl !Sync for TypeArray",1,["syn::ty::TypeArray"]],["impl !Sync for TypeBareFn",1,["syn::ty::TypeBareFn"]],["impl !Sync for TypeGroup",1,["syn::ty::TypeGroup"]],["impl !Sync for TypeImplTrait",1,["syn::ty::TypeImplTrait"]],["impl !Sync for TypeInfer",1,["syn::ty::TypeInfer"]],["impl !Sync for TypeMacro",1,["syn::ty::TypeMacro"]],["impl !Sync for TypeNever",1,["syn::ty::TypeNever"]],["impl !Sync for TypeParam",1,["syn::generics::TypeParam"]],["impl !Sync for TypeParen",1,["syn::ty::TypeParen"]],["impl !Sync for TypePath",1,["syn::ty::TypePath"]],["impl !Sync for TypePtr",1,["syn::ty::TypePtr"]],["impl !Sync for TypeReference",1,["syn::ty::TypeReference"]],["impl !Sync for TypeSlice",1,["syn::ty::TypeSlice"]],["impl !Sync for TypeTraitObject",1,["syn::ty::TypeTraitObject"]],["impl !Sync for TypeTuple",1,["syn::ty::TypeTuple"]],["impl !Sync for Variant",1,["syn::data::Variant"]],["impl !Sync for VisRestricted",1,["syn::restriction::VisRestricted"]],["impl !Sync for WhereClause",1,["syn::generics::WhereClause"]],["impl !Sync for Abstract",1,["syn::token::Abstract"]],["impl !Sync for And",1,["syn::token::And"]],["impl !Sync for AndAnd",1,["syn::token::AndAnd"]],["impl !Sync for AndEq",1,["syn::token::AndEq"]],["impl !Sync for As",1,["syn::token::As"]],["impl !Sync for Async",1,["syn::token::Async"]],["impl !Sync for At",1,["syn::token::At"]],["impl !Sync for Auto",1,["syn::token::Auto"]],["impl !Sync for Await",1,["syn::token::Await"]],["impl !Sync for Become",1,["syn::token::Become"]],["impl !Sync for Box",1,["syn::token::Box"]],["impl !Sync for Brace",1,["syn::token::Brace"]],["impl !Sync for Bracket",1,["syn::token::Bracket"]],["impl !Sync for Break",1,["syn::token::Break"]],["impl !Sync for Caret",1,["syn::token::Caret"]],["impl !Sync for CaretEq",1,["syn::token::CaretEq"]],["impl !Sync for Colon",1,["syn::token::Colon"]],["impl !Sync for Comma",1,["syn::token::Comma"]],["impl !Sync for Const",1,["syn::token::Const"]],["impl !Sync for Continue",1,["syn::token::Continue"]],["impl !Sync for Crate",1,["syn::token::Crate"]],["impl !Sync for Default",1,["syn::token::Default"]],["impl !Sync for Do",1,["syn::token::Do"]],["impl !Sync for Dollar",1,["syn::token::Dollar"]],["impl !Sync for Dot",1,["syn::token::Dot"]],["impl !Sync for DotDot",1,["syn::token::DotDot"]],["impl !Sync for DotDotDot",1,["syn::token::DotDotDot"]],["impl !Sync for DotDotEq",1,["syn::token::DotDotEq"]],["impl !Sync for Dyn",1,["syn::token::Dyn"]],["impl !Sync for Else",1,["syn::token::Else"]],["impl !Sync for Enum",1,["syn::token::Enum"]],["impl !Sync for Eq",1,["syn::token::Eq"]],["impl !Sync for EqEq",1,["syn::token::EqEq"]],["impl !Sync for Extern",1,["syn::token::Extern"]],["impl !Sync for FatArrow",1,["syn::token::FatArrow"]],["impl !Sync for Final",1,["syn::token::Final"]],["impl !Sync for Fn",1,["syn::token::Fn"]],["impl !Sync for For",1,["syn::token::For"]],["impl !Sync for Ge",1,["syn::token::Ge"]],["impl !Sync for Group",1,["syn::token::Group"]],["impl !Sync for Gt",1,["syn::token::Gt"]],["impl !Sync for If",1,["syn::token::If"]],["impl !Sync for Impl",1,["syn::token::Impl"]],["impl !Sync for In",1,["syn::token::In"]],["impl !Sync for LArrow",1,["syn::token::LArrow"]],["impl !Sync for Le",1,["syn::token::Le"]],["impl !Sync for Let",1,["syn::token::Let"]],["impl !Sync for Loop",1,["syn::token::Loop"]],["impl !Sync for Lt",1,["syn::token::Lt"]],["impl !Sync for Macro",1,["syn::token::Macro"]],["impl !Sync for Match",1,["syn::token::Match"]],["impl !Sync for Minus",1,["syn::token::Minus"]],["impl !Sync for MinusEq",1,["syn::token::MinusEq"]],["impl !Sync for Mod",1,["syn::token::Mod"]],["impl !Sync for Move",1,["syn::token::Move"]],["impl !Sync for Mut",1,["syn::token::Mut"]],["impl !Sync for Ne",1,["syn::token::Ne"]],["impl !Sync for Not",1,["syn::token::Not"]],["impl !Sync for Or",1,["syn::token::Or"]],["impl !Sync for OrEq",1,["syn::token::OrEq"]],["impl !Sync for OrOr",1,["syn::token::OrOr"]],["impl !Sync for Override",1,["syn::token::Override"]],["impl !Sync for Paren",1,["syn::token::Paren"]],["impl !Sync for PathSep",1,["syn::token::PathSep"]],["impl !Sync for Percent",1,["syn::token::Percent"]],["impl !Sync for PercentEq",1,["syn::token::PercentEq"]],["impl !Sync for Plus",1,["syn::token::Plus"]],["impl !Sync for PlusEq",1,["syn::token::PlusEq"]],["impl !Sync for Pound",1,["syn::token::Pound"]],["impl !Sync for Priv",1,["syn::token::Priv"]],["impl !Sync for Pub",1,["syn::token::Pub"]],["impl !Sync for Question",1,["syn::token::Question"]],["impl !Sync for RArrow",1,["syn::token::RArrow"]],["impl !Sync for Raw",1,["syn::token::Raw"]],["impl !Sync for Ref",1,["syn::token::Ref"]],["impl !Sync for Return",1,["syn::token::Return"]],["impl !Sync for SelfType",1,["syn::token::SelfType"]],["impl !Sync for SelfValue",1,["syn::token::SelfValue"]],["impl !Sync for Semi",1,["syn::token::Semi"]],["impl !Sync for Shl",1,["syn::token::Shl"]],["impl !Sync for ShlEq",1,["syn::token::ShlEq"]],["impl !Sync for Shr",1,["syn::token::Shr"]],["impl !Sync for ShrEq",1,["syn::token::ShrEq"]],["impl !Sync for Slash",1,["syn::token::Slash"]],["impl !Sync for SlashEq",1,["syn::token::SlashEq"]],["impl !Sync for Star",1,["syn::token::Star"]],["impl !Sync for StarEq",1,["syn::token::StarEq"]],["impl !Sync for Static",1,["syn::token::Static"]],["impl !Sync for Struct",1,["syn::token::Struct"]],["impl !Sync for Super",1,["syn::token::Super"]],["impl !Sync for Tilde",1,["syn::token::Tilde"]],["impl !Sync for Trait",1,["syn::token::Trait"]],["impl !Sync for Try",1,["syn::token::Try"]],["impl !Sync for Type",1,["syn::token::Type"]],["impl !Sync for Typeof",1,["syn::token::Typeof"]],["impl !Sync for Underscore",1,["syn::token::Underscore"]],["impl !Sync for Union",1,["syn::token::Union"]],["impl !Sync for Unsafe",1,["syn::token::Unsafe"]],["impl !Sync for Unsized",1,["syn::token::Unsized"]],["impl !Sync for Use",1,["syn::token::Use"]],["impl !Sync for Virtual",1,["syn::token::Virtual"]],["impl !Sync for Where",1,["syn::token::Where"]],["impl !Sync for While",1,["syn::token::While"]],["impl !Sync for Yield",1,["syn::token::Yield"]],["impl Sync for FieldMutability",1,["syn::restriction::FieldMutability"]],["impl Sync for End",1,["syn::lookahead::End"]],["impl Sync for Error",1,["syn::error::Error"]],["impl Sync for Nothing",1,["syn::parse::Nothing"]],["impl<'a> !Sync for Cursor<'a>",1,["syn::buffer::Cursor"]],["impl<'a> !Sync for ParseNestedMeta<'a>",1,["syn::meta::ParseNestedMeta"]],["impl<'a> !Sync for Lookahead1<'a>",1,["syn::lookahead::Lookahead1"]],["impl<'a> !Sync for ParseBuffer<'a>",1,["syn::parse::ParseBuffer"]],["impl<'a> !Sync for ImplGenerics<'a>",1,["syn::generics::ImplGenerics"]],["impl<'a> !Sync for Turbofish<'a>",1,["syn::generics::Turbofish"]],["impl<'a> !Sync for TypeGenerics<'a>",1,["syn::generics::TypeGenerics"]],["impl<'a, T> !Sync for Iter<'a, T>",1,["syn::punctuated::Iter"]],["impl<'a, T> !Sync for IterMut<'a, T>",1,["syn::punctuated::IterMut"]],["impl<'a, T, P> Sync for Pairs<'a, T, P>
    where\n T: Sync,\n P: Sync,
    ",1,["syn::punctuated::Pairs"]],["impl<'a, T, P> Sync for PairsMut<'a, T, P>
    where\n T: Sync,\n P: Sync,
    ",1,["syn::punctuated::PairsMut"]],["impl<'c, 'a> !Sync for StepCursor<'c, 'a>",1,["syn::parse::StepCursor"]],["impl<T> Sync for IntoIter<T>
    where\n T: Sync,
    ",1,["syn::punctuated::IntoIter"]],["impl<T, P> Sync for Pair<T, P>
    where\n T: Sync,\n P: Sync,
    ",1,["syn::punctuated::Pair"]],["impl<T, P> Sync for IntoPairs<T, P>
    where\n T: Sync,\n P: Sync,
    ",1,["syn::punctuated::IntoPairs"]],["impl<T, P> Sync for Punctuated<T, P>
    where\n T: Sync,\n P: Sync,
    ",1,["syn::punctuated::Punctuated"]]]],["synstructure",[["impl Sync for AddBounds",1,["synstructure::AddBounds"]],["impl Sync for BindStyle",1,["synstructure::BindStyle"]],["impl<'a> !Sync for BindingInfo<'a>",1,["synstructure::BindingInfo"]],["impl<'a> !Sync for Structure<'a>",1,["synstructure::Structure"]],["impl<'a> !Sync for VariantAst<'a>",1,["synstructure::VariantAst"]],["impl<'a> !Sync for VariantInfo<'a>",1,["synstructure::VariantInfo"]]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[2073,3217,2284,3491,68664,1881]} \ No newline at end of file diff --git a/trait.impl/core/marker/trait.Unpin.js b/trait.impl/core/marker/trait.Unpin.js new file mode 100644 index 0000000..5ddb013 --- /dev/null +++ b/trait.impl/core/marker/trait.Unpin.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["delog",[["impl Unpin for U1",1,["delog::hex::U1"]],["impl Unpin for DefaultRenderer",1,["delog::render::DefaultRenderer"]],["impl Unpin for RipgrepRenderer",1,["delog::render::RipgrepRenderer"]],["impl Unpin for Statistics",1,["delog::logger::Statistics"]],["impl<'a, T, U, S> Unpin for HexStr<'a, T, U, S>
    where\n U: Unpin,\n S: Unpin,\n T: ?Sized,
    ",1,["delog::hex::HexStr"]]]],["flexiber",[["impl Unpin for Class",1,["flexiber::tag::Class"]],["impl Unpin for ErrorKind",1,["flexiber::error::ErrorKind"]],["impl Unpin for Error",1,["flexiber::error::Error"]],["impl Unpin for Length",1,["flexiber::length::Length"]],["impl Unpin for SimpleTag",1,["flexiber::simpletag::SimpleTag"]],["impl Unpin for Tag",1,["flexiber::tag::Tag"]],["impl<'a> Unpin for Decoder<'a>",1,["flexiber::decoder::Decoder"]],["impl<'a> Unpin for Encoder<'a>",1,["flexiber::encoder::Encoder"]],["impl<'a> Unpin for Slice<'a>",1,["flexiber::slice::Slice"]],["impl<V, T> Unpin for TaggedValue<V, T>
    where\n T: Unpin,\n V: Unpin,
    ",1,["flexiber::tagged::TaggedValue"]]]],["log",[["impl Unpin for Level",1,["log::Level"]],["impl Unpin for LevelFilter",1,["log::LevelFilter"]],["impl Unpin for ParseLevelError",1,["log::ParseLevelError"]],["impl Unpin for SetLoggerError",1,["log::SetLoggerError"]],["impl<'a> Unpin for Metadata<'a>",1,["log::Metadata"]],["impl<'a> Unpin for MetadataBuilder<'a>",1,["log::MetadataBuilder"]],["impl<'a> Unpin for Record<'a>",1,["log::Record"]],["impl<'a> Unpin for RecordBuilder<'a>",1,["log::RecordBuilder"]]]],["proc_macro2",[["impl Unpin for Delimiter",1,["proc_macro2::Delimiter"]],["impl Unpin for Spacing",1,["proc_macro2::Spacing"]],["impl Unpin for TokenTree",1,["proc_macro2::TokenTree"]],["impl Unpin for DelimSpan",1,["proc_macro2::extra::DelimSpan"]],["impl Unpin for Group",1,["proc_macro2::Group"]],["impl Unpin for Ident",1,["proc_macro2::Ident"]],["impl Unpin for LexError",1,["proc_macro2::LexError"]],["impl Unpin for Literal",1,["proc_macro2::Literal"]],["impl Unpin for Punct",1,["proc_macro2::Punct"]],["impl Unpin for Span",1,["proc_macro2::Span"]],["impl Unpin for TokenStream",1,["proc_macro2::TokenStream"]],["impl Unpin for IntoIter",1,["proc_macro2::token_stream::IntoIter"]]]],["syn",[["impl Unpin for AttrStyle",1,["syn::attr::AttrStyle"]],["impl Unpin for BinOp",1,["syn::op::BinOp"]],["impl Unpin for Data",1,["syn::derive::Data"]],["impl Unpin for Expr",1,["syn::expr::Expr"]],["impl Unpin for FieldMutability",1,["syn::restriction::FieldMutability"]],["impl Unpin for Fields",1,["syn::data::Fields"]],["impl Unpin for GenericArgument",1,["syn::path::GenericArgument"]],["impl Unpin for GenericParam",1,["syn::generics::GenericParam"]],["impl Unpin for Lit",1,["syn::lit::Lit"]],["impl Unpin for MacroDelimiter",1,["syn::mac::MacroDelimiter"]],["impl Unpin for Member",1,["syn::expr::Member"]],["impl Unpin for Meta",1,["syn::attr::Meta"]],["impl Unpin for PathArguments",1,["syn::path::PathArguments"]],["impl Unpin for ReturnType",1,["syn::ty::ReturnType"]],["impl Unpin for TraitBoundModifier",1,["syn::generics::TraitBoundModifier"]],["impl Unpin for Type",1,["syn::ty::Type"]],["impl Unpin for TypeParamBound",1,["syn::generics::TypeParamBound"]],["impl Unpin for UnOp",1,["syn::op::UnOp"]],["impl Unpin for Visibility",1,["syn::restriction::Visibility"]],["impl Unpin for WherePredicate",1,["syn::generics::WherePredicate"]],["impl Unpin for TokenBuffer",1,["syn::buffer::TokenBuffer"]],["impl Unpin for End",1,["syn::lookahead::End"]],["impl Unpin for Error",1,["syn::error::Error"]],["impl Unpin for Nothing",1,["syn::parse::Nothing"]],["impl Unpin for Abi",1,["syn::ty::Abi"]],["impl Unpin for AngleBracketedGenericArguments",1,["syn::path::AngleBracketedGenericArguments"]],["impl Unpin for AssocConst",1,["syn::path::AssocConst"]],["impl Unpin for AssocType",1,["syn::path::AssocType"]],["impl Unpin for Attribute",1,["syn::attr::Attribute"]],["impl Unpin for BareFnArg",1,["syn::ty::BareFnArg"]],["impl Unpin for BareVariadic",1,["syn::ty::BareVariadic"]],["impl Unpin for BoundLifetimes",1,["syn::generics::BoundLifetimes"]],["impl Unpin for ConstParam",1,["syn::generics::ConstParam"]],["impl Unpin for Constraint",1,["syn::path::Constraint"]],["impl Unpin for DataEnum",1,["syn::derive::DataEnum"]],["impl Unpin for DataStruct",1,["syn::derive::DataStruct"]],["impl Unpin for DataUnion",1,["syn::derive::DataUnion"]],["impl Unpin for DeriveInput",1,["syn::derive::DeriveInput"]],["impl Unpin for ExprArray",1,["syn::expr::ExprArray"]],["impl Unpin for ExprAssign",1,["syn::expr::ExprAssign"]],["impl Unpin for ExprAsync",1,["syn::expr::ExprAsync"]],["impl Unpin for ExprAwait",1,["syn::expr::ExprAwait"]],["impl Unpin for ExprBinary",1,["syn::expr::ExprBinary"]],["impl Unpin for ExprBlock",1,["syn::expr::ExprBlock"]],["impl Unpin for ExprBreak",1,["syn::expr::ExprBreak"]],["impl Unpin for ExprCall",1,["syn::expr::ExprCall"]],["impl Unpin for ExprCast",1,["syn::expr::ExprCast"]],["impl Unpin for ExprClosure",1,["syn::expr::ExprClosure"]],["impl Unpin for ExprConst",1,["syn::expr::ExprConst"]],["impl Unpin for ExprContinue",1,["syn::expr::ExprContinue"]],["impl Unpin for ExprField",1,["syn::expr::ExprField"]],["impl Unpin for ExprForLoop",1,["syn::expr::ExprForLoop"]],["impl Unpin for ExprGroup",1,["syn::expr::ExprGroup"]],["impl Unpin for ExprIf",1,["syn::expr::ExprIf"]],["impl Unpin for ExprIndex",1,["syn::expr::ExprIndex"]],["impl Unpin for ExprInfer",1,["syn::expr::ExprInfer"]],["impl Unpin for ExprLet",1,["syn::expr::ExprLet"]],["impl Unpin for ExprLit",1,["syn::expr::ExprLit"]],["impl Unpin for ExprLoop",1,["syn::expr::ExprLoop"]],["impl Unpin for ExprMacro",1,["syn::expr::ExprMacro"]],["impl Unpin for ExprMatch",1,["syn::expr::ExprMatch"]],["impl Unpin for ExprMethodCall",1,["syn::expr::ExprMethodCall"]],["impl Unpin for ExprParen",1,["syn::expr::ExprParen"]],["impl Unpin for ExprPath",1,["syn::expr::ExprPath"]],["impl Unpin for ExprRange",1,["syn::expr::ExprRange"]],["impl Unpin for ExprRawAddr",1,["syn::expr::ExprRawAddr"]],["impl Unpin for ExprReference",1,["syn::expr::ExprReference"]],["impl Unpin for ExprRepeat",1,["syn::expr::ExprRepeat"]],["impl Unpin for ExprReturn",1,["syn::expr::ExprReturn"]],["impl Unpin for ExprStruct",1,["syn::expr::ExprStruct"]],["impl Unpin for ExprTry",1,["syn::expr::ExprTry"]],["impl Unpin for ExprTryBlock",1,["syn::expr::ExprTryBlock"]],["impl Unpin for ExprTuple",1,["syn::expr::ExprTuple"]],["impl Unpin for ExprUnary",1,["syn::expr::ExprUnary"]],["impl Unpin for ExprUnsafe",1,["syn::expr::ExprUnsafe"]],["impl Unpin for ExprWhile",1,["syn::expr::ExprWhile"]],["impl Unpin for ExprYield",1,["syn::expr::ExprYield"]],["impl Unpin for Field",1,["syn::data::Field"]],["impl Unpin for FieldValue",1,["syn::expr::FieldValue"]],["impl Unpin for FieldsNamed",1,["syn::data::FieldsNamed"]],["impl Unpin for FieldsUnnamed",1,["syn::data::FieldsUnnamed"]],["impl Unpin for Generics",1,["syn::generics::Generics"]],["impl Unpin for Index",1,["syn::expr::Index"]],["impl Unpin for Lifetime",1,["syn::lifetime::Lifetime"]],["impl Unpin for LifetimeParam",1,["syn::generics::LifetimeParam"]],["impl Unpin for LitBool",1,["syn::lit::LitBool"]],["impl Unpin for LitByte",1,["syn::lit::LitByte"]],["impl Unpin for LitByteStr",1,["syn::lit::LitByteStr"]],["impl Unpin for LitCStr",1,["syn::lit::LitCStr"]],["impl Unpin for LitChar",1,["syn::lit::LitChar"]],["impl Unpin for LitFloat",1,["syn::lit::LitFloat"]],["impl Unpin for LitInt",1,["syn::lit::LitInt"]],["impl Unpin for LitStr",1,["syn::lit::LitStr"]],["impl Unpin for Macro",1,["syn::mac::Macro"]],["impl Unpin for MetaList",1,["syn::attr::MetaList"]],["impl Unpin for MetaNameValue",1,["syn::attr::MetaNameValue"]],["impl Unpin for ParenthesizedGenericArguments",1,["syn::path::ParenthesizedGenericArguments"]],["impl Unpin for Path",1,["syn::path::Path"]],["impl Unpin for PathSegment",1,["syn::path::PathSegment"]],["impl Unpin for PredicateLifetime",1,["syn::generics::PredicateLifetime"]],["impl Unpin for PredicateType",1,["syn::generics::PredicateType"]],["impl Unpin for QSelf",1,["syn::path::QSelf"]],["impl Unpin for TraitBound",1,["syn::generics::TraitBound"]],["impl Unpin for TypeArray",1,["syn::ty::TypeArray"]],["impl Unpin for TypeBareFn",1,["syn::ty::TypeBareFn"]],["impl Unpin for TypeGroup",1,["syn::ty::TypeGroup"]],["impl Unpin for TypeImplTrait",1,["syn::ty::TypeImplTrait"]],["impl Unpin for TypeInfer",1,["syn::ty::TypeInfer"]],["impl Unpin for TypeMacro",1,["syn::ty::TypeMacro"]],["impl Unpin for TypeNever",1,["syn::ty::TypeNever"]],["impl Unpin for TypeParam",1,["syn::generics::TypeParam"]],["impl Unpin for TypeParen",1,["syn::ty::TypeParen"]],["impl Unpin for TypePath",1,["syn::ty::TypePath"]],["impl Unpin for TypePtr",1,["syn::ty::TypePtr"]],["impl Unpin for TypeReference",1,["syn::ty::TypeReference"]],["impl Unpin for TypeSlice",1,["syn::ty::TypeSlice"]],["impl Unpin for TypeTraitObject",1,["syn::ty::TypeTraitObject"]],["impl Unpin for TypeTuple",1,["syn::ty::TypeTuple"]],["impl Unpin for Variant",1,["syn::data::Variant"]],["impl Unpin for VisRestricted",1,["syn::restriction::VisRestricted"]],["impl Unpin for WhereClause",1,["syn::generics::WhereClause"]],["impl Unpin for Abstract",1,["syn::token::Abstract"]],["impl Unpin for And",1,["syn::token::And"]],["impl Unpin for AndAnd",1,["syn::token::AndAnd"]],["impl Unpin for AndEq",1,["syn::token::AndEq"]],["impl Unpin for As",1,["syn::token::As"]],["impl Unpin for Async",1,["syn::token::Async"]],["impl Unpin for At",1,["syn::token::At"]],["impl Unpin for Auto",1,["syn::token::Auto"]],["impl Unpin for Await",1,["syn::token::Await"]],["impl Unpin for Become",1,["syn::token::Become"]],["impl Unpin for Box",1,["syn::token::Box"]],["impl Unpin for Brace",1,["syn::token::Brace"]],["impl Unpin for Bracket",1,["syn::token::Bracket"]],["impl Unpin for Break",1,["syn::token::Break"]],["impl Unpin for Caret",1,["syn::token::Caret"]],["impl Unpin for CaretEq",1,["syn::token::CaretEq"]],["impl Unpin for Colon",1,["syn::token::Colon"]],["impl Unpin for Comma",1,["syn::token::Comma"]],["impl Unpin for Const",1,["syn::token::Const"]],["impl Unpin for Continue",1,["syn::token::Continue"]],["impl Unpin for Crate",1,["syn::token::Crate"]],["impl Unpin for Default",1,["syn::token::Default"]],["impl Unpin for Do",1,["syn::token::Do"]],["impl Unpin for Dollar",1,["syn::token::Dollar"]],["impl Unpin for Dot",1,["syn::token::Dot"]],["impl Unpin for DotDot",1,["syn::token::DotDot"]],["impl Unpin for DotDotDot",1,["syn::token::DotDotDot"]],["impl Unpin for DotDotEq",1,["syn::token::DotDotEq"]],["impl Unpin for Dyn",1,["syn::token::Dyn"]],["impl Unpin for Else",1,["syn::token::Else"]],["impl Unpin for Enum",1,["syn::token::Enum"]],["impl Unpin for Eq",1,["syn::token::Eq"]],["impl Unpin for EqEq",1,["syn::token::EqEq"]],["impl Unpin for Extern",1,["syn::token::Extern"]],["impl Unpin for FatArrow",1,["syn::token::FatArrow"]],["impl Unpin for Final",1,["syn::token::Final"]],["impl Unpin for Fn",1,["syn::token::Fn"]],["impl Unpin for For",1,["syn::token::For"]],["impl Unpin for Ge",1,["syn::token::Ge"]],["impl Unpin for Group",1,["syn::token::Group"]],["impl Unpin for Gt",1,["syn::token::Gt"]],["impl Unpin for If",1,["syn::token::If"]],["impl Unpin for Impl",1,["syn::token::Impl"]],["impl Unpin for In",1,["syn::token::In"]],["impl Unpin for LArrow",1,["syn::token::LArrow"]],["impl Unpin for Le",1,["syn::token::Le"]],["impl Unpin for Let",1,["syn::token::Let"]],["impl Unpin for Loop",1,["syn::token::Loop"]],["impl Unpin for Lt",1,["syn::token::Lt"]],["impl Unpin for Macro",1,["syn::token::Macro"]],["impl Unpin for Match",1,["syn::token::Match"]],["impl Unpin for Minus",1,["syn::token::Minus"]],["impl Unpin for MinusEq",1,["syn::token::MinusEq"]],["impl Unpin for Mod",1,["syn::token::Mod"]],["impl Unpin for Move",1,["syn::token::Move"]],["impl Unpin for Mut",1,["syn::token::Mut"]],["impl Unpin for Ne",1,["syn::token::Ne"]],["impl Unpin for Not",1,["syn::token::Not"]],["impl Unpin for Or",1,["syn::token::Or"]],["impl Unpin for OrEq",1,["syn::token::OrEq"]],["impl Unpin for OrOr",1,["syn::token::OrOr"]],["impl Unpin for Override",1,["syn::token::Override"]],["impl Unpin for Paren",1,["syn::token::Paren"]],["impl Unpin for PathSep",1,["syn::token::PathSep"]],["impl Unpin for Percent",1,["syn::token::Percent"]],["impl Unpin for PercentEq",1,["syn::token::PercentEq"]],["impl Unpin for Plus",1,["syn::token::Plus"]],["impl Unpin for PlusEq",1,["syn::token::PlusEq"]],["impl Unpin for Pound",1,["syn::token::Pound"]],["impl Unpin for Priv",1,["syn::token::Priv"]],["impl Unpin for Pub",1,["syn::token::Pub"]],["impl Unpin for Question",1,["syn::token::Question"]],["impl Unpin for RArrow",1,["syn::token::RArrow"]],["impl Unpin for Raw",1,["syn::token::Raw"]],["impl Unpin for Ref",1,["syn::token::Ref"]],["impl Unpin for Return",1,["syn::token::Return"]],["impl Unpin for SelfType",1,["syn::token::SelfType"]],["impl Unpin for SelfValue",1,["syn::token::SelfValue"]],["impl Unpin for Semi",1,["syn::token::Semi"]],["impl Unpin for Shl",1,["syn::token::Shl"]],["impl Unpin for ShlEq",1,["syn::token::ShlEq"]],["impl Unpin for Shr",1,["syn::token::Shr"]],["impl Unpin for ShrEq",1,["syn::token::ShrEq"]],["impl Unpin for Slash",1,["syn::token::Slash"]],["impl Unpin for SlashEq",1,["syn::token::SlashEq"]],["impl Unpin for Star",1,["syn::token::Star"]],["impl Unpin for StarEq",1,["syn::token::StarEq"]],["impl Unpin for Static",1,["syn::token::Static"]],["impl Unpin for Struct",1,["syn::token::Struct"]],["impl Unpin for Super",1,["syn::token::Super"]],["impl Unpin for Tilde",1,["syn::token::Tilde"]],["impl Unpin for Trait",1,["syn::token::Trait"]],["impl Unpin for Try",1,["syn::token::Try"]],["impl Unpin for Type",1,["syn::token::Type"]],["impl Unpin for Typeof",1,["syn::token::Typeof"]],["impl Unpin for Underscore",1,["syn::token::Underscore"]],["impl Unpin for Union",1,["syn::token::Union"]],["impl Unpin for Unsafe",1,["syn::token::Unsafe"]],["impl Unpin for Unsized",1,["syn::token::Unsized"]],["impl Unpin for Use",1,["syn::token::Use"]],["impl Unpin for Virtual",1,["syn::token::Virtual"]],["impl Unpin for Where",1,["syn::token::Where"]],["impl Unpin for While",1,["syn::token::While"]],["impl Unpin for Yield",1,["syn::token::Yield"]],["impl<'a> Unpin for Cursor<'a>",1,["syn::buffer::Cursor"]],["impl<'a> Unpin for ParseNestedMeta<'a>",1,["syn::meta::ParseNestedMeta"]],["impl<'a> Unpin for Lookahead1<'a>",1,["syn::lookahead::Lookahead1"]],["impl<'a> Unpin for ParseBuffer<'a>",1,["syn::parse::ParseBuffer"]],["impl<'a> Unpin for ImplGenerics<'a>",1,["syn::generics::ImplGenerics"]],["impl<'a> Unpin for Turbofish<'a>",1,["syn::generics::Turbofish"]],["impl<'a> Unpin for TypeGenerics<'a>",1,["syn::generics::TypeGenerics"]],["impl<'a, T> Unpin for Iter<'a, T>",1,["syn::punctuated::Iter"]],["impl<'a, T> Unpin for IterMut<'a, T>",1,["syn::punctuated::IterMut"]],["impl<'a, T, P> Unpin for Pairs<'a, T, P>",1,["syn::punctuated::Pairs"]],["impl<'a, T, P> Unpin for PairsMut<'a, T, P>",1,["syn::punctuated::PairsMut"]],["impl<'c, 'a> Unpin for StepCursor<'c, 'a>",1,["syn::parse::StepCursor"]],["impl<T> Unpin for IntoIter<T>
    where\n T: Unpin,
    ",1,["syn::punctuated::IntoIter"]],["impl<T, P> Unpin for Pair<T, P>
    where\n T: Unpin,\n P: Unpin,
    ",1,["syn::punctuated::Pair"]],["impl<T, P> Unpin for IntoPairs<T, P>
    where\n T: Unpin,\n P: Unpin,
    ",1,["syn::punctuated::IntoPairs"]],["impl<T, P> Unpin for Punctuated<T, P>
    where\n T: Unpin,\n P: Unpin,
    ",1,["syn::punctuated::Punctuated"]]]],["synstructure",[["impl Unpin for AddBounds",1,["synstructure::AddBounds"]],["impl Unpin for BindStyle",1,["synstructure::BindStyle"]],["impl<'a> Unpin for BindingInfo<'a>",1,["synstructure::BindingInfo"]],["impl<'a> Unpin for Structure<'a>",1,["synstructure::Structure"]],["impl<'a> Unpin for VariantAst<'a>",1,["synstructure::VariantAst"]],["impl<'a> Unpin for VariantInfo<'a>",1,["synstructure::VariantInfo"]]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[1996,3253,2306,3517,68545,1895]} \ No newline at end of file diff --git a/trait.impl/core/ops/arith/trait.Add.js b/trait.impl/core/ops/arith/trait.Add.js new file mode 100644 index 0000000..63a25dc --- /dev/null +++ b/trait.impl/core/ops/arith/trait.Add.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["flexiber",[["impl Add for Length"],["impl Add<u16> for Length"],["impl Add<u8> for Length"],["impl Add<usize> for Length"],["impl Add<Length> for Result<Length>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[1800]} \ No newline at end of file diff --git a/trait.impl/core/ops/deref/trait.Deref.js b/trait.impl/core/ops/deref/trait.Deref.js new file mode 100644 index 0000000..e47ebbe --- /dev/null +++ b/trait.impl/core/ops/deref/trait.Deref.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["syn",[["impl Deref for And"],["impl Deref for At"],["impl Deref for Caret"],["impl Deref for Colon"],["impl Deref for Comma"],["impl Deref for Dollar"],["impl Deref for Dot"],["impl Deref for Eq"],["impl Deref for Gt"],["impl Deref for Lt"],["impl Deref for Minus"],["impl Deref for Not"],["impl Deref for Or"],["impl Deref for Percent"],["impl Deref for Plus"],["impl Deref for Pound"],["impl Deref for Question"],["impl Deref for Semi"],["impl Deref for Slash"],["impl Deref for Star"],["impl Deref for Tilde"],["impl Deref for Underscore"],["impl<'c, 'a> Deref for StepCursor<'c, 'a>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[5947]} \ No newline at end of file diff --git a/trait.impl/core/ops/deref/trait.DerefMut.js b/trait.impl/core/ops/deref/trait.DerefMut.js new file mode 100644 index 0000000..a511299 --- /dev/null +++ b/trait.impl/core/ops/deref/trait.DerefMut.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["syn",[["impl DerefMut for And"],["impl DerefMut for At"],["impl DerefMut for Caret"],["impl DerefMut for Colon"],["impl DerefMut for Comma"],["impl DerefMut for Dollar"],["impl DerefMut for Dot"],["impl DerefMut for Eq"],["impl DerefMut for Gt"],["impl DerefMut for Lt"],["impl DerefMut for Minus"],["impl DerefMut for Not"],["impl DerefMut for Or"],["impl DerefMut for Percent"],["impl DerefMut for Plus"],["impl DerefMut for Pound"],["impl DerefMut for Question"],["impl DerefMut for Semi"],["impl DerefMut for Slash"],["impl DerefMut for Star"],["impl DerefMut for Tilde"],["impl DerefMut for Underscore"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[5844]} \ No newline at end of file diff --git a/trait.impl/core/ops/drop/trait.Drop.js b/trait.impl/core/ops/drop/trait.Drop.js new file mode 100644 index 0000000..19a5852 --- /dev/null +++ b/trait.impl/core/ops/drop/trait.Drop.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["syn",[["impl<'a> Drop for ParseBuffer<'a>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[300]} \ No newline at end of file diff --git a/trait.impl/core/ops/index/trait.Index.js b/trait.impl/core/ops/index/trait.Index.js new file mode 100644 index 0000000..c871312 --- /dev/null +++ b/trait.impl/core/ops/index/trait.Index.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["syn",[["impl<T, P> Index<usize> for Punctuated<T, P>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[423]} \ No newline at end of file diff --git a/trait.impl/core/ops/index/trait.IndexMut.js b/trait.impl/core/ops/index/trait.IndexMut.js new file mode 100644 index 0000000..5dab498 --- /dev/null +++ b/trait.impl/core/ops/index/trait.IndexMut.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["syn",[["impl<T, P> IndexMut<usize> for Punctuated<T, P>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[432]} \ No newline at end of file diff --git a/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js b/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js new file mode 100644 index 0000000..7f7dd2f --- /dev/null +++ b/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["delog",[["impl RefUnwindSafe for U1",1,["delog::hex::U1"]],["impl RefUnwindSafe for DefaultRenderer",1,["delog::render::DefaultRenderer"]],["impl RefUnwindSafe for RipgrepRenderer",1,["delog::render::RipgrepRenderer"]],["impl RefUnwindSafe for Statistics",1,["delog::logger::Statistics"]],["impl<'a, T, U, S> RefUnwindSafe for HexStr<'a, T, U, S>
    where\n T: RefUnwindSafe + ?Sized,\n U: RefUnwindSafe,\n S: RefUnwindSafe,
    ",1,["delog::hex::HexStr"]]]],["flexiber",[["impl RefUnwindSafe for Class",1,["flexiber::tag::Class"]],["impl RefUnwindSafe for ErrorKind",1,["flexiber::error::ErrorKind"]],["impl RefUnwindSafe for Error",1,["flexiber::error::Error"]],["impl RefUnwindSafe for Length",1,["flexiber::length::Length"]],["impl RefUnwindSafe for SimpleTag",1,["flexiber::simpletag::SimpleTag"]],["impl RefUnwindSafe for Tag",1,["flexiber::tag::Tag"]],["impl<'a> RefUnwindSafe for Decoder<'a>",1,["flexiber::decoder::Decoder"]],["impl<'a> RefUnwindSafe for Encoder<'a>",1,["flexiber::encoder::Encoder"]],["impl<'a> RefUnwindSafe for Slice<'a>",1,["flexiber::slice::Slice"]],["impl<V, T> RefUnwindSafe for TaggedValue<V, T>
    where\n T: RefUnwindSafe,\n V: RefUnwindSafe,
    ",1,["flexiber::tagged::TaggedValue"]]]],["log",[["impl RefUnwindSafe for Level",1,["log::Level"]],["impl RefUnwindSafe for LevelFilter",1,["log::LevelFilter"]],["impl RefUnwindSafe for ParseLevelError",1,["log::ParseLevelError"]],["impl RefUnwindSafe for SetLoggerError",1,["log::SetLoggerError"]],["impl<'a> RefUnwindSafe for Metadata<'a>",1,["log::Metadata"]],["impl<'a> RefUnwindSafe for MetadataBuilder<'a>",1,["log::MetadataBuilder"]],["impl<'a> RefUnwindSafe for Record<'a>",1,["log::Record"]],["impl<'a> RefUnwindSafe for RecordBuilder<'a>",1,["log::RecordBuilder"]]]],["proc_macro2",[["impl RefUnwindSafe for Delimiter",1,["proc_macro2::Delimiter"]],["impl RefUnwindSafe for Spacing",1,["proc_macro2::Spacing"]],["impl RefUnwindSafe for TokenTree",1,["proc_macro2::TokenTree"]],["impl RefUnwindSafe for DelimSpan",1,["proc_macro2::extra::DelimSpan"]],["impl RefUnwindSafe for Group",1,["proc_macro2::Group"]],["impl RefUnwindSafe for Ident",1,["proc_macro2::Ident"]],["impl RefUnwindSafe for LexError",1,["proc_macro2::LexError"]],["impl RefUnwindSafe for Literal",1,["proc_macro2::Literal"]],["impl RefUnwindSafe for Punct",1,["proc_macro2::Punct"]],["impl RefUnwindSafe for Span",1,["proc_macro2::Span"]],["impl RefUnwindSafe for TokenStream",1,["proc_macro2::TokenStream"]],["impl RefUnwindSafe for IntoIter",1,["proc_macro2::token_stream::IntoIter"]]]],["syn",[["impl RefUnwindSafe for AttrStyle",1,["syn::attr::AttrStyle"]],["impl RefUnwindSafe for BinOp",1,["syn::op::BinOp"]],["impl RefUnwindSafe for Data",1,["syn::derive::Data"]],["impl RefUnwindSafe for Expr",1,["syn::expr::Expr"]],["impl RefUnwindSafe for FieldMutability",1,["syn::restriction::FieldMutability"]],["impl RefUnwindSafe for Fields",1,["syn::data::Fields"]],["impl RefUnwindSafe for GenericArgument",1,["syn::path::GenericArgument"]],["impl RefUnwindSafe for GenericParam",1,["syn::generics::GenericParam"]],["impl RefUnwindSafe for Lit",1,["syn::lit::Lit"]],["impl RefUnwindSafe for MacroDelimiter",1,["syn::mac::MacroDelimiter"]],["impl RefUnwindSafe for Member",1,["syn::expr::Member"]],["impl RefUnwindSafe for Meta",1,["syn::attr::Meta"]],["impl RefUnwindSafe for PathArguments",1,["syn::path::PathArguments"]],["impl RefUnwindSafe for ReturnType",1,["syn::ty::ReturnType"]],["impl RefUnwindSafe for TraitBoundModifier",1,["syn::generics::TraitBoundModifier"]],["impl RefUnwindSafe for Type",1,["syn::ty::Type"]],["impl RefUnwindSafe for TypeParamBound",1,["syn::generics::TypeParamBound"]],["impl RefUnwindSafe for UnOp",1,["syn::op::UnOp"]],["impl RefUnwindSafe for Visibility",1,["syn::restriction::Visibility"]],["impl RefUnwindSafe for WherePredicate",1,["syn::generics::WherePredicate"]],["impl RefUnwindSafe for TokenBuffer",1,["syn::buffer::TokenBuffer"]],["impl RefUnwindSafe for End",1,["syn::lookahead::End"]],["impl RefUnwindSafe for Error",1,["syn::error::Error"]],["impl RefUnwindSafe for Nothing",1,["syn::parse::Nothing"]],["impl RefUnwindSafe for Abi",1,["syn::ty::Abi"]],["impl RefUnwindSafe for AngleBracketedGenericArguments",1,["syn::path::AngleBracketedGenericArguments"]],["impl RefUnwindSafe for AssocConst",1,["syn::path::AssocConst"]],["impl RefUnwindSafe for AssocType",1,["syn::path::AssocType"]],["impl RefUnwindSafe for Attribute",1,["syn::attr::Attribute"]],["impl RefUnwindSafe for BareFnArg",1,["syn::ty::BareFnArg"]],["impl RefUnwindSafe for BareVariadic",1,["syn::ty::BareVariadic"]],["impl RefUnwindSafe for BoundLifetimes",1,["syn::generics::BoundLifetimes"]],["impl RefUnwindSafe for ConstParam",1,["syn::generics::ConstParam"]],["impl RefUnwindSafe for Constraint",1,["syn::path::Constraint"]],["impl RefUnwindSafe for DataEnum",1,["syn::derive::DataEnum"]],["impl RefUnwindSafe for DataStruct",1,["syn::derive::DataStruct"]],["impl RefUnwindSafe for DataUnion",1,["syn::derive::DataUnion"]],["impl RefUnwindSafe for DeriveInput",1,["syn::derive::DeriveInput"]],["impl RefUnwindSafe for ExprArray",1,["syn::expr::ExprArray"]],["impl RefUnwindSafe for ExprAssign",1,["syn::expr::ExprAssign"]],["impl RefUnwindSafe for ExprAsync",1,["syn::expr::ExprAsync"]],["impl RefUnwindSafe for ExprAwait",1,["syn::expr::ExprAwait"]],["impl RefUnwindSafe for ExprBinary",1,["syn::expr::ExprBinary"]],["impl RefUnwindSafe for ExprBlock",1,["syn::expr::ExprBlock"]],["impl RefUnwindSafe for ExprBreak",1,["syn::expr::ExprBreak"]],["impl RefUnwindSafe for ExprCall",1,["syn::expr::ExprCall"]],["impl RefUnwindSafe for ExprCast",1,["syn::expr::ExprCast"]],["impl RefUnwindSafe for ExprClosure",1,["syn::expr::ExprClosure"]],["impl RefUnwindSafe for ExprConst",1,["syn::expr::ExprConst"]],["impl RefUnwindSafe for ExprContinue",1,["syn::expr::ExprContinue"]],["impl RefUnwindSafe for ExprField",1,["syn::expr::ExprField"]],["impl RefUnwindSafe for ExprForLoop",1,["syn::expr::ExprForLoop"]],["impl RefUnwindSafe for ExprGroup",1,["syn::expr::ExprGroup"]],["impl RefUnwindSafe for ExprIf",1,["syn::expr::ExprIf"]],["impl RefUnwindSafe for ExprIndex",1,["syn::expr::ExprIndex"]],["impl RefUnwindSafe for ExprInfer",1,["syn::expr::ExprInfer"]],["impl RefUnwindSafe for ExprLet",1,["syn::expr::ExprLet"]],["impl RefUnwindSafe for ExprLit",1,["syn::expr::ExprLit"]],["impl RefUnwindSafe for ExprLoop",1,["syn::expr::ExprLoop"]],["impl RefUnwindSafe for ExprMacro",1,["syn::expr::ExprMacro"]],["impl RefUnwindSafe for ExprMatch",1,["syn::expr::ExprMatch"]],["impl RefUnwindSafe for ExprMethodCall",1,["syn::expr::ExprMethodCall"]],["impl RefUnwindSafe for ExprParen",1,["syn::expr::ExprParen"]],["impl RefUnwindSafe for ExprPath",1,["syn::expr::ExprPath"]],["impl RefUnwindSafe for ExprRange",1,["syn::expr::ExprRange"]],["impl RefUnwindSafe for ExprRawAddr",1,["syn::expr::ExprRawAddr"]],["impl RefUnwindSafe for ExprReference",1,["syn::expr::ExprReference"]],["impl RefUnwindSafe for ExprRepeat",1,["syn::expr::ExprRepeat"]],["impl RefUnwindSafe for ExprReturn",1,["syn::expr::ExprReturn"]],["impl RefUnwindSafe for ExprStruct",1,["syn::expr::ExprStruct"]],["impl RefUnwindSafe for ExprTry",1,["syn::expr::ExprTry"]],["impl RefUnwindSafe for ExprTryBlock",1,["syn::expr::ExprTryBlock"]],["impl RefUnwindSafe for ExprTuple",1,["syn::expr::ExprTuple"]],["impl RefUnwindSafe for ExprUnary",1,["syn::expr::ExprUnary"]],["impl RefUnwindSafe for ExprUnsafe",1,["syn::expr::ExprUnsafe"]],["impl RefUnwindSafe for ExprWhile",1,["syn::expr::ExprWhile"]],["impl RefUnwindSafe for ExprYield",1,["syn::expr::ExprYield"]],["impl RefUnwindSafe for Field",1,["syn::data::Field"]],["impl RefUnwindSafe for FieldValue",1,["syn::expr::FieldValue"]],["impl RefUnwindSafe for FieldsNamed",1,["syn::data::FieldsNamed"]],["impl RefUnwindSafe for FieldsUnnamed",1,["syn::data::FieldsUnnamed"]],["impl RefUnwindSafe for Generics",1,["syn::generics::Generics"]],["impl RefUnwindSafe for Index",1,["syn::expr::Index"]],["impl RefUnwindSafe for Lifetime",1,["syn::lifetime::Lifetime"]],["impl RefUnwindSafe for LifetimeParam",1,["syn::generics::LifetimeParam"]],["impl RefUnwindSafe for LitBool",1,["syn::lit::LitBool"]],["impl RefUnwindSafe for LitByte",1,["syn::lit::LitByte"]],["impl RefUnwindSafe for LitByteStr",1,["syn::lit::LitByteStr"]],["impl RefUnwindSafe for LitCStr",1,["syn::lit::LitCStr"]],["impl RefUnwindSafe for LitChar",1,["syn::lit::LitChar"]],["impl RefUnwindSafe for LitFloat",1,["syn::lit::LitFloat"]],["impl RefUnwindSafe for LitInt",1,["syn::lit::LitInt"]],["impl RefUnwindSafe for LitStr",1,["syn::lit::LitStr"]],["impl RefUnwindSafe for Macro",1,["syn::mac::Macro"]],["impl RefUnwindSafe for MetaList",1,["syn::attr::MetaList"]],["impl RefUnwindSafe for MetaNameValue",1,["syn::attr::MetaNameValue"]],["impl RefUnwindSafe for ParenthesizedGenericArguments",1,["syn::path::ParenthesizedGenericArguments"]],["impl RefUnwindSafe for Path",1,["syn::path::Path"]],["impl RefUnwindSafe for PathSegment",1,["syn::path::PathSegment"]],["impl RefUnwindSafe for PredicateLifetime",1,["syn::generics::PredicateLifetime"]],["impl RefUnwindSafe for PredicateType",1,["syn::generics::PredicateType"]],["impl RefUnwindSafe for QSelf",1,["syn::path::QSelf"]],["impl RefUnwindSafe for TraitBound",1,["syn::generics::TraitBound"]],["impl RefUnwindSafe for TypeArray",1,["syn::ty::TypeArray"]],["impl RefUnwindSafe for TypeBareFn",1,["syn::ty::TypeBareFn"]],["impl RefUnwindSafe for TypeGroup",1,["syn::ty::TypeGroup"]],["impl RefUnwindSafe for TypeImplTrait",1,["syn::ty::TypeImplTrait"]],["impl RefUnwindSafe for TypeInfer",1,["syn::ty::TypeInfer"]],["impl RefUnwindSafe for TypeMacro",1,["syn::ty::TypeMacro"]],["impl RefUnwindSafe for TypeNever",1,["syn::ty::TypeNever"]],["impl RefUnwindSafe for TypeParam",1,["syn::generics::TypeParam"]],["impl RefUnwindSafe for TypeParen",1,["syn::ty::TypeParen"]],["impl RefUnwindSafe for TypePath",1,["syn::ty::TypePath"]],["impl RefUnwindSafe for TypePtr",1,["syn::ty::TypePtr"]],["impl RefUnwindSafe for TypeReference",1,["syn::ty::TypeReference"]],["impl RefUnwindSafe for TypeSlice",1,["syn::ty::TypeSlice"]],["impl RefUnwindSafe for TypeTraitObject",1,["syn::ty::TypeTraitObject"]],["impl RefUnwindSafe for TypeTuple",1,["syn::ty::TypeTuple"]],["impl RefUnwindSafe for Variant",1,["syn::data::Variant"]],["impl RefUnwindSafe for VisRestricted",1,["syn::restriction::VisRestricted"]],["impl RefUnwindSafe for WhereClause",1,["syn::generics::WhereClause"]],["impl RefUnwindSafe for Abstract",1,["syn::token::Abstract"]],["impl RefUnwindSafe for And",1,["syn::token::And"]],["impl RefUnwindSafe for AndAnd",1,["syn::token::AndAnd"]],["impl RefUnwindSafe for AndEq",1,["syn::token::AndEq"]],["impl RefUnwindSafe for As",1,["syn::token::As"]],["impl RefUnwindSafe for Async",1,["syn::token::Async"]],["impl RefUnwindSafe for At",1,["syn::token::At"]],["impl RefUnwindSafe for Auto",1,["syn::token::Auto"]],["impl RefUnwindSafe for Await",1,["syn::token::Await"]],["impl RefUnwindSafe for Become",1,["syn::token::Become"]],["impl RefUnwindSafe for Box",1,["syn::token::Box"]],["impl RefUnwindSafe for Brace",1,["syn::token::Brace"]],["impl RefUnwindSafe for Bracket",1,["syn::token::Bracket"]],["impl RefUnwindSafe for Break",1,["syn::token::Break"]],["impl RefUnwindSafe for Caret",1,["syn::token::Caret"]],["impl RefUnwindSafe for CaretEq",1,["syn::token::CaretEq"]],["impl RefUnwindSafe for Colon",1,["syn::token::Colon"]],["impl RefUnwindSafe for Comma",1,["syn::token::Comma"]],["impl RefUnwindSafe for Const",1,["syn::token::Const"]],["impl RefUnwindSafe for Continue",1,["syn::token::Continue"]],["impl RefUnwindSafe for Crate",1,["syn::token::Crate"]],["impl RefUnwindSafe for Default",1,["syn::token::Default"]],["impl RefUnwindSafe for Do",1,["syn::token::Do"]],["impl RefUnwindSafe for Dollar",1,["syn::token::Dollar"]],["impl RefUnwindSafe for Dot",1,["syn::token::Dot"]],["impl RefUnwindSafe for DotDot",1,["syn::token::DotDot"]],["impl RefUnwindSafe for DotDotDot",1,["syn::token::DotDotDot"]],["impl RefUnwindSafe for DotDotEq",1,["syn::token::DotDotEq"]],["impl RefUnwindSafe for Dyn",1,["syn::token::Dyn"]],["impl RefUnwindSafe for Else",1,["syn::token::Else"]],["impl RefUnwindSafe for Enum",1,["syn::token::Enum"]],["impl RefUnwindSafe for Eq",1,["syn::token::Eq"]],["impl RefUnwindSafe for EqEq",1,["syn::token::EqEq"]],["impl RefUnwindSafe for Extern",1,["syn::token::Extern"]],["impl RefUnwindSafe for FatArrow",1,["syn::token::FatArrow"]],["impl RefUnwindSafe for Final",1,["syn::token::Final"]],["impl RefUnwindSafe for Fn",1,["syn::token::Fn"]],["impl RefUnwindSafe for For",1,["syn::token::For"]],["impl RefUnwindSafe for Ge",1,["syn::token::Ge"]],["impl RefUnwindSafe for Group",1,["syn::token::Group"]],["impl RefUnwindSafe for Gt",1,["syn::token::Gt"]],["impl RefUnwindSafe for If",1,["syn::token::If"]],["impl RefUnwindSafe for Impl",1,["syn::token::Impl"]],["impl RefUnwindSafe for In",1,["syn::token::In"]],["impl RefUnwindSafe for LArrow",1,["syn::token::LArrow"]],["impl RefUnwindSafe for Le",1,["syn::token::Le"]],["impl RefUnwindSafe for Let",1,["syn::token::Let"]],["impl RefUnwindSafe for Loop",1,["syn::token::Loop"]],["impl RefUnwindSafe for Lt",1,["syn::token::Lt"]],["impl RefUnwindSafe for Macro",1,["syn::token::Macro"]],["impl RefUnwindSafe for Match",1,["syn::token::Match"]],["impl RefUnwindSafe for Minus",1,["syn::token::Minus"]],["impl RefUnwindSafe for MinusEq",1,["syn::token::MinusEq"]],["impl RefUnwindSafe for Mod",1,["syn::token::Mod"]],["impl RefUnwindSafe for Move",1,["syn::token::Move"]],["impl RefUnwindSafe for Mut",1,["syn::token::Mut"]],["impl RefUnwindSafe for Ne",1,["syn::token::Ne"]],["impl RefUnwindSafe for Not",1,["syn::token::Not"]],["impl RefUnwindSafe for Or",1,["syn::token::Or"]],["impl RefUnwindSafe for OrEq",1,["syn::token::OrEq"]],["impl RefUnwindSafe for OrOr",1,["syn::token::OrOr"]],["impl RefUnwindSafe for Override",1,["syn::token::Override"]],["impl RefUnwindSafe for Paren",1,["syn::token::Paren"]],["impl RefUnwindSafe for PathSep",1,["syn::token::PathSep"]],["impl RefUnwindSafe for Percent",1,["syn::token::Percent"]],["impl RefUnwindSafe for PercentEq",1,["syn::token::PercentEq"]],["impl RefUnwindSafe for Plus",1,["syn::token::Plus"]],["impl RefUnwindSafe for PlusEq",1,["syn::token::PlusEq"]],["impl RefUnwindSafe for Pound",1,["syn::token::Pound"]],["impl RefUnwindSafe for Priv",1,["syn::token::Priv"]],["impl RefUnwindSafe for Pub",1,["syn::token::Pub"]],["impl RefUnwindSafe for Question",1,["syn::token::Question"]],["impl RefUnwindSafe for RArrow",1,["syn::token::RArrow"]],["impl RefUnwindSafe for Raw",1,["syn::token::Raw"]],["impl RefUnwindSafe for Ref",1,["syn::token::Ref"]],["impl RefUnwindSafe for Return",1,["syn::token::Return"]],["impl RefUnwindSafe for SelfType",1,["syn::token::SelfType"]],["impl RefUnwindSafe for SelfValue",1,["syn::token::SelfValue"]],["impl RefUnwindSafe for Semi",1,["syn::token::Semi"]],["impl RefUnwindSafe for Shl",1,["syn::token::Shl"]],["impl RefUnwindSafe for ShlEq",1,["syn::token::ShlEq"]],["impl RefUnwindSafe for Shr",1,["syn::token::Shr"]],["impl RefUnwindSafe for ShrEq",1,["syn::token::ShrEq"]],["impl RefUnwindSafe for Slash",1,["syn::token::Slash"]],["impl RefUnwindSafe for SlashEq",1,["syn::token::SlashEq"]],["impl RefUnwindSafe for Star",1,["syn::token::Star"]],["impl RefUnwindSafe for StarEq",1,["syn::token::StarEq"]],["impl RefUnwindSafe for Static",1,["syn::token::Static"]],["impl RefUnwindSafe for Struct",1,["syn::token::Struct"]],["impl RefUnwindSafe for Super",1,["syn::token::Super"]],["impl RefUnwindSafe for Tilde",1,["syn::token::Tilde"]],["impl RefUnwindSafe for Trait",1,["syn::token::Trait"]],["impl RefUnwindSafe for Try",1,["syn::token::Try"]],["impl RefUnwindSafe for Type",1,["syn::token::Type"]],["impl RefUnwindSafe for Typeof",1,["syn::token::Typeof"]],["impl RefUnwindSafe for Underscore",1,["syn::token::Underscore"]],["impl RefUnwindSafe for Union",1,["syn::token::Union"]],["impl RefUnwindSafe for Unsafe",1,["syn::token::Unsafe"]],["impl RefUnwindSafe for Unsized",1,["syn::token::Unsized"]],["impl RefUnwindSafe for Use",1,["syn::token::Use"]],["impl RefUnwindSafe for Virtual",1,["syn::token::Virtual"]],["impl RefUnwindSafe for Where",1,["syn::token::Where"]],["impl RefUnwindSafe for While",1,["syn::token::While"]],["impl RefUnwindSafe for Yield",1,["syn::token::Yield"]],["impl<'a> !RefUnwindSafe for Lookahead1<'a>",1,["syn::lookahead::Lookahead1"]],["impl<'a> RefUnwindSafe for Cursor<'a>",1,["syn::buffer::Cursor"]],["impl<'a> RefUnwindSafe for ParseNestedMeta<'a>",1,["syn::meta::ParseNestedMeta"]],["impl<'a> RefUnwindSafe for ParseBuffer<'a>"],["impl<'a> RefUnwindSafe for ImplGenerics<'a>",1,["syn::generics::ImplGenerics"]],["impl<'a> RefUnwindSafe for Turbofish<'a>",1,["syn::generics::Turbofish"]],["impl<'a> RefUnwindSafe for TypeGenerics<'a>",1,["syn::generics::TypeGenerics"]],["impl<'a, T> !RefUnwindSafe for Iter<'a, T>",1,["syn::punctuated::Iter"]],["impl<'a, T> !RefUnwindSafe for IterMut<'a, T>",1,["syn::punctuated::IterMut"]],["impl<'a, T, P> RefUnwindSafe for Pairs<'a, T, P>
    where\n T: RefUnwindSafe,\n P: RefUnwindSafe,
    ",1,["syn::punctuated::Pairs"]],["impl<'a, T, P> RefUnwindSafe for PairsMut<'a, T, P>
    where\n T: RefUnwindSafe,\n P: RefUnwindSafe,
    ",1,["syn::punctuated::PairsMut"]],["impl<'c, 'a> RefUnwindSafe for StepCursor<'c, 'a>",1,["syn::parse::StepCursor"]],["impl<T> RefUnwindSafe for IntoIter<T>
    where\n T: RefUnwindSafe,
    ",1,["syn::punctuated::IntoIter"]],["impl<T, P> RefUnwindSafe for Pair<T, P>
    where\n T: RefUnwindSafe,\n P: RefUnwindSafe,
    ",1,["syn::punctuated::Pair"]],["impl<T, P> RefUnwindSafe for IntoPairs<T, P>
    where\n T: RefUnwindSafe,\n P: RefUnwindSafe,
    ",1,["syn::punctuated::IntoPairs"]],["impl<T, P> RefUnwindSafe for Punctuated<T, P>
    where\n T: RefUnwindSafe,\n P: RefUnwindSafe,
    ",1,["syn::punctuated::Punctuated"]]]],["synstructure",[["impl RefUnwindSafe for AddBounds",1,["synstructure::AddBounds"]],["impl RefUnwindSafe for BindStyle",1,["synstructure::BindStyle"]],["impl<'a> RefUnwindSafe for BindingInfo<'a>",1,["synstructure::BindingInfo"]],["impl<'a> RefUnwindSafe for Structure<'a>",1,["synstructure::Structure"]],["impl<'a> RefUnwindSafe for VariantAst<'a>",1,["synstructure::VariantAst"]],["impl<'a> RefUnwindSafe for VariantInfo<'a>",1,["synstructure::VariantInfo"]]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[2510,3817,2682,4081,81006,2177]} \ No newline at end of file diff --git a/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js b/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js new file mode 100644 index 0000000..acce2a2 --- /dev/null +++ b/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["delog",[["impl UnwindSafe for U1",1,["delog::hex::U1"]],["impl UnwindSafe for DefaultRenderer",1,["delog::render::DefaultRenderer"]],["impl UnwindSafe for RipgrepRenderer",1,["delog::render::RipgrepRenderer"]],["impl UnwindSafe for Statistics",1,["delog::logger::Statistics"]],["impl<'a, T, U, S> UnwindSafe for HexStr<'a, T, U, S>
    where\n T: RefUnwindSafe + ?Sized,\n U: UnwindSafe,\n S: UnwindSafe,
    ",1,["delog::hex::HexStr"]]]],["flexiber",[["impl UnwindSafe for Class",1,["flexiber::tag::Class"]],["impl UnwindSafe for ErrorKind",1,["flexiber::error::ErrorKind"]],["impl UnwindSafe for Error",1,["flexiber::error::Error"]],["impl UnwindSafe for Length",1,["flexiber::length::Length"]],["impl UnwindSafe for SimpleTag",1,["flexiber::simpletag::SimpleTag"]],["impl UnwindSafe for Tag",1,["flexiber::tag::Tag"]],["impl<'a> !UnwindSafe for Encoder<'a>",1,["flexiber::encoder::Encoder"]],["impl<'a> UnwindSafe for Decoder<'a>",1,["flexiber::decoder::Decoder"]],["impl<'a> UnwindSafe for Slice<'a>",1,["flexiber::slice::Slice"]],["impl<V, T> UnwindSafe for TaggedValue<V, T>
    where\n T: UnwindSafe,\n V: UnwindSafe,
    ",1,["flexiber::tagged::TaggedValue"]]]],["log",[["impl UnwindSafe for Level",1,["log::Level"]],["impl UnwindSafe for LevelFilter",1,["log::LevelFilter"]],["impl UnwindSafe for ParseLevelError",1,["log::ParseLevelError"]],["impl UnwindSafe for SetLoggerError",1,["log::SetLoggerError"]],["impl<'a> UnwindSafe for Metadata<'a>",1,["log::Metadata"]],["impl<'a> UnwindSafe for MetadataBuilder<'a>",1,["log::MetadataBuilder"]],["impl<'a> UnwindSafe for Record<'a>",1,["log::Record"]],["impl<'a> UnwindSafe for RecordBuilder<'a>",1,["log::RecordBuilder"]]]],["proc_macro2",[["impl UnwindSafe for Delimiter",1,["proc_macro2::Delimiter"]],["impl UnwindSafe for Spacing",1,["proc_macro2::Spacing"]],["impl UnwindSafe for TokenTree",1,["proc_macro2::TokenTree"]],["impl UnwindSafe for DelimSpan",1,["proc_macro2::extra::DelimSpan"]],["impl UnwindSafe for Group",1,["proc_macro2::Group"]],["impl UnwindSafe for Ident",1,["proc_macro2::Ident"]],["impl UnwindSafe for LexError",1,["proc_macro2::LexError"]],["impl UnwindSafe for Literal",1,["proc_macro2::Literal"]],["impl UnwindSafe for Punct",1,["proc_macro2::Punct"]],["impl UnwindSafe for Span",1,["proc_macro2::Span"]],["impl UnwindSafe for TokenStream",1,["proc_macro2::TokenStream"]],["impl UnwindSafe for IntoIter",1,["proc_macro2::token_stream::IntoIter"]]]],["syn",[["impl UnwindSafe for AttrStyle",1,["syn::attr::AttrStyle"]],["impl UnwindSafe for BinOp",1,["syn::op::BinOp"]],["impl UnwindSafe for Data",1,["syn::derive::Data"]],["impl UnwindSafe for Expr",1,["syn::expr::Expr"]],["impl UnwindSafe for FieldMutability",1,["syn::restriction::FieldMutability"]],["impl UnwindSafe for Fields",1,["syn::data::Fields"]],["impl UnwindSafe for GenericArgument",1,["syn::path::GenericArgument"]],["impl UnwindSafe for GenericParam",1,["syn::generics::GenericParam"]],["impl UnwindSafe for Lit",1,["syn::lit::Lit"]],["impl UnwindSafe for MacroDelimiter",1,["syn::mac::MacroDelimiter"]],["impl UnwindSafe for Member",1,["syn::expr::Member"]],["impl UnwindSafe for Meta",1,["syn::attr::Meta"]],["impl UnwindSafe for PathArguments",1,["syn::path::PathArguments"]],["impl UnwindSafe for ReturnType",1,["syn::ty::ReturnType"]],["impl UnwindSafe for TraitBoundModifier",1,["syn::generics::TraitBoundModifier"]],["impl UnwindSafe for Type",1,["syn::ty::Type"]],["impl UnwindSafe for TypeParamBound",1,["syn::generics::TypeParamBound"]],["impl UnwindSafe for UnOp",1,["syn::op::UnOp"]],["impl UnwindSafe for Visibility",1,["syn::restriction::Visibility"]],["impl UnwindSafe for WherePredicate",1,["syn::generics::WherePredicate"]],["impl UnwindSafe for TokenBuffer",1,["syn::buffer::TokenBuffer"]],["impl UnwindSafe for End",1,["syn::lookahead::End"]],["impl UnwindSafe for Error",1,["syn::error::Error"]],["impl UnwindSafe for Nothing",1,["syn::parse::Nothing"]],["impl UnwindSafe for Abi",1,["syn::ty::Abi"]],["impl UnwindSafe for AngleBracketedGenericArguments",1,["syn::path::AngleBracketedGenericArguments"]],["impl UnwindSafe for AssocConst",1,["syn::path::AssocConst"]],["impl UnwindSafe for AssocType",1,["syn::path::AssocType"]],["impl UnwindSafe for Attribute",1,["syn::attr::Attribute"]],["impl UnwindSafe for BareFnArg",1,["syn::ty::BareFnArg"]],["impl UnwindSafe for BareVariadic",1,["syn::ty::BareVariadic"]],["impl UnwindSafe for BoundLifetimes",1,["syn::generics::BoundLifetimes"]],["impl UnwindSafe for ConstParam",1,["syn::generics::ConstParam"]],["impl UnwindSafe for Constraint",1,["syn::path::Constraint"]],["impl UnwindSafe for DataEnum",1,["syn::derive::DataEnum"]],["impl UnwindSafe for DataStruct",1,["syn::derive::DataStruct"]],["impl UnwindSafe for DataUnion",1,["syn::derive::DataUnion"]],["impl UnwindSafe for DeriveInput",1,["syn::derive::DeriveInput"]],["impl UnwindSafe for ExprArray",1,["syn::expr::ExprArray"]],["impl UnwindSafe for ExprAssign",1,["syn::expr::ExprAssign"]],["impl UnwindSafe for ExprAsync",1,["syn::expr::ExprAsync"]],["impl UnwindSafe for ExprAwait",1,["syn::expr::ExprAwait"]],["impl UnwindSafe for ExprBinary",1,["syn::expr::ExprBinary"]],["impl UnwindSafe for ExprBlock",1,["syn::expr::ExprBlock"]],["impl UnwindSafe for ExprBreak",1,["syn::expr::ExprBreak"]],["impl UnwindSafe for ExprCall",1,["syn::expr::ExprCall"]],["impl UnwindSafe for ExprCast",1,["syn::expr::ExprCast"]],["impl UnwindSafe for ExprClosure",1,["syn::expr::ExprClosure"]],["impl UnwindSafe for ExprConst",1,["syn::expr::ExprConst"]],["impl UnwindSafe for ExprContinue",1,["syn::expr::ExprContinue"]],["impl UnwindSafe for ExprField",1,["syn::expr::ExprField"]],["impl UnwindSafe for ExprForLoop",1,["syn::expr::ExprForLoop"]],["impl UnwindSafe for ExprGroup",1,["syn::expr::ExprGroup"]],["impl UnwindSafe for ExprIf",1,["syn::expr::ExprIf"]],["impl UnwindSafe for ExprIndex",1,["syn::expr::ExprIndex"]],["impl UnwindSafe for ExprInfer",1,["syn::expr::ExprInfer"]],["impl UnwindSafe for ExprLet",1,["syn::expr::ExprLet"]],["impl UnwindSafe for ExprLit",1,["syn::expr::ExprLit"]],["impl UnwindSafe for ExprLoop",1,["syn::expr::ExprLoop"]],["impl UnwindSafe for ExprMacro",1,["syn::expr::ExprMacro"]],["impl UnwindSafe for ExprMatch",1,["syn::expr::ExprMatch"]],["impl UnwindSafe for ExprMethodCall",1,["syn::expr::ExprMethodCall"]],["impl UnwindSafe for ExprParen",1,["syn::expr::ExprParen"]],["impl UnwindSafe for ExprPath",1,["syn::expr::ExprPath"]],["impl UnwindSafe for ExprRange",1,["syn::expr::ExprRange"]],["impl UnwindSafe for ExprRawAddr",1,["syn::expr::ExprRawAddr"]],["impl UnwindSafe for ExprReference",1,["syn::expr::ExprReference"]],["impl UnwindSafe for ExprRepeat",1,["syn::expr::ExprRepeat"]],["impl UnwindSafe for ExprReturn",1,["syn::expr::ExprReturn"]],["impl UnwindSafe for ExprStruct",1,["syn::expr::ExprStruct"]],["impl UnwindSafe for ExprTry",1,["syn::expr::ExprTry"]],["impl UnwindSafe for ExprTryBlock",1,["syn::expr::ExprTryBlock"]],["impl UnwindSafe for ExprTuple",1,["syn::expr::ExprTuple"]],["impl UnwindSafe for ExprUnary",1,["syn::expr::ExprUnary"]],["impl UnwindSafe for ExprUnsafe",1,["syn::expr::ExprUnsafe"]],["impl UnwindSafe for ExprWhile",1,["syn::expr::ExprWhile"]],["impl UnwindSafe for ExprYield",1,["syn::expr::ExprYield"]],["impl UnwindSafe for Field",1,["syn::data::Field"]],["impl UnwindSafe for FieldValue",1,["syn::expr::FieldValue"]],["impl UnwindSafe for FieldsNamed",1,["syn::data::FieldsNamed"]],["impl UnwindSafe for FieldsUnnamed",1,["syn::data::FieldsUnnamed"]],["impl UnwindSafe for Generics",1,["syn::generics::Generics"]],["impl UnwindSafe for Index",1,["syn::expr::Index"]],["impl UnwindSafe for Lifetime",1,["syn::lifetime::Lifetime"]],["impl UnwindSafe for LifetimeParam",1,["syn::generics::LifetimeParam"]],["impl UnwindSafe for LitBool",1,["syn::lit::LitBool"]],["impl UnwindSafe for LitByte",1,["syn::lit::LitByte"]],["impl UnwindSafe for LitByteStr",1,["syn::lit::LitByteStr"]],["impl UnwindSafe for LitCStr",1,["syn::lit::LitCStr"]],["impl UnwindSafe for LitChar",1,["syn::lit::LitChar"]],["impl UnwindSafe for LitFloat",1,["syn::lit::LitFloat"]],["impl UnwindSafe for LitInt",1,["syn::lit::LitInt"]],["impl UnwindSafe for LitStr",1,["syn::lit::LitStr"]],["impl UnwindSafe for Macro",1,["syn::mac::Macro"]],["impl UnwindSafe for MetaList",1,["syn::attr::MetaList"]],["impl UnwindSafe for MetaNameValue",1,["syn::attr::MetaNameValue"]],["impl UnwindSafe for ParenthesizedGenericArguments",1,["syn::path::ParenthesizedGenericArguments"]],["impl UnwindSafe for Path",1,["syn::path::Path"]],["impl UnwindSafe for PathSegment",1,["syn::path::PathSegment"]],["impl UnwindSafe for PredicateLifetime",1,["syn::generics::PredicateLifetime"]],["impl UnwindSafe for PredicateType",1,["syn::generics::PredicateType"]],["impl UnwindSafe for QSelf",1,["syn::path::QSelf"]],["impl UnwindSafe for TraitBound",1,["syn::generics::TraitBound"]],["impl UnwindSafe for TypeArray",1,["syn::ty::TypeArray"]],["impl UnwindSafe for TypeBareFn",1,["syn::ty::TypeBareFn"]],["impl UnwindSafe for TypeGroup",1,["syn::ty::TypeGroup"]],["impl UnwindSafe for TypeImplTrait",1,["syn::ty::TypeImplTrait"]],["impl UnwindSafe for TypeInfer",1,["syn::ty::TypeInfer"]],["impl UnwindSafe for TypeMacro",1,["syn::ty::TypeMacro"]],["impl UnwindSafe for TypeNever",1,["syn::ty::TypeNever"]],["impl UnwindSafe for TypeParam",1,["syn::generics::TypeParam"]],["impl UnwindSafe for TypeParen",1,["syn::ty::TypeParen"]],["impl UnwindSafe for TypePath",1,["syn::ty::TypePath"]],["impl UnwindSafe for TypePtr",1,["syn::ty::TypePtr"]],["impl UnwindSafe for TypeReference",1,["syn::ty::TypeReference"]],["impl UnwindSafe for TypeSlice",1,["syn::ty::TypeSlice"]],["impl UnwindSafe for TypeTraitObject",1,["syn::ty::TypeTraitObject"]],["impl UnwindSafe for TypeTuple",1,["syn::ty::TypeTuple"]],["impl UnwindSafe for Variant",1,["syn::data::Variant"]],["impl UnwindSafe for VisRestricted",1,["syn::restriction::VisRestricted"]],["impl UnwindSafe for WhereClause",1,["syn::generics::WhereClause"]],["impl UnwindSafe for Abstract",1,["syn::token::Abstract"]],["impl UnwindSafe for And",1,["syn::token::And"]],["impl UnwindSafe for AndAnd",1,["syn::token::AndAnd"]],["impl UnwindSafe for AndEq",1,["syn::token::AndEq"]],["impl UnwindSafe for As",1,["syn::token::As"]],["impl UnwindSafe for Async",1,["syn::token::Async"]],["impl UnwindSafe for At",1,["syn::token::At"]],["impl UnwindSafe for Auto",1,["syn::token::Auto"]],["impl UnwindSafe for Await",1,["syn::token::Await"]],["impl UnwindSafe for Become",1,["syn::token::Become"]],["impl UnwindSafe for Box",1,["syn::token::Box"]],["impl UnwindSafe for Brace",1,["syn::token::Brace"]],["impl UnwindSafe for Bracket",1,["syn::token::Bracket"]],["impl UnwindSafe for Break",1,["syn::token::Break"]],["impl UnwindSafe for Caret",1,["syn::token::Caret"]],["impl UnwindSafe for CaretEq",1,["syn::token::CaretEq"]],["impl UnwindSafe for Colon",1,["syn::token::Colon"]],["impl UnwindSafe for Comma",1,["syn::token::Comma"]],["impl UnwindSafe for Const",1,["syn::token::Const"]],["impl UnwindSafe for Continue",1,["syn::token::Continue"]],["impl UnwindSafe for Crate",1,["syn::token::Crate"]],["impl UnwindSafe for Default",1,["syn::token::Default"]],["impl UnwindSafe for Do",1,["syn::token::Do"]],["impl UnwindSafe for Dollar",1,["syn::token::Dollar"]],["impl UnwindSafe for Dot",1,["syn::token::Dot"]],["impl UnwindSafe for DotDot",1,["syn::token::DotDot"]],["impl UnwindSafe for DotDotDot",1,["syn::token::DotDotDot"]],["impl UnwindSafe for DotDotEq",1,["syn::token::DotDotEq"]],["impl UnwindSafe for Dyn",1,["syn::token::Dyn"]],["impl UnwindSafe for Else",1,["syn::token::Else"]],["impl UnwindSafe for Enum",1,["syn::token::Enum"]],["impl UnwindSafe for Eq",1,["syn::token::Eq"]],["impl UnwindSafe for EqEq",1,["syn::token::EqEq"]],["impl UnwindSafe for Extern",1,["syn::token::Extern"]],["impl UnwindSafe for FatArrow",1,["syn::token::FatArrow"]],["impl UnwindSafe for Final",1,["syn::token::Final"]],["impl UnwindSafe for Fn",1,["syn::token::Fn"]],["impl UnwindSafe for For",1,["syn::token::For"]],["impl UnwindSafe for Ge",1,["syn::token::Ge"]],["impl UnwindSafe for Group",1,["syn::token::Group"]],["impl UnwindSafe for Gt",1,["syn::token::Gt"]],["impl UnwindSafe for If",1,["syn::token::If"]],["impl UnwindSafe for Impl",1,["syn::token::Impl"]],["impl UnwindSafe for In",1,["syn::token::In"]],["impl UnwindSafe for LArrow",1,["syn::token::LArrow"]],["impl UnwindSafe for Le",1,["syn::token::Le"]],["impl UnwindSafe for Let",1,["syn::token::Let"]],["impl UnwindSafe for Loop",1,["syn::token::Loop"]],["impl UnwindSafe for Lt",1,["syn::token::Lt"]],["impl UnwindSafe for Macro",1,["syn::token::Macro"]],["impl UnwindSafe for Match",1,["syn::token::Match"]],["impl UnwindSafe for Minus",1,["syn::token::Minus"]],["impl UnwindSafe for MinusEq",1,["syn::token::MinusEq"]],["impl UnwindSafe for Mod",1,["syn::token::Mod"]],["impl UnwindSafe for Move",1,["syn::token::Move"]],["impl UnwindSafe for Mut",1,["syn::token::Mut"]],["impl UnwindSafe for Ne",1,["syn::token::Ne"]],["impl UnwindSafe for Not",1,["syn::token::Not"]],["impl UnwindSafe for Or",1,["syn::token::Or"]],["impl UnwindSafe for OrEq",1,["syn::token::OrEq"]],["impl UnwindSafe for OrOr",1,["syn::token::OrOr"]],["impl UnwindSafe for Override",1,["syn::token::Override"]],["impl UnwindSafe for Paren",1,["syn::token::Paren"]],["impl UnwindSafe for PathSep",1,["syn::token::PathSep"]],["impl UnwindSafe for Percent",1,["syn::token::Percent"]],["impl UnwindSafe for PercentEq",1,["syn::token::PercentEq"]],["impl UnwindSafe for Plus",1,["syn::token::Plus"]],["impl UnwindSafe for PlusEq",1,["syn::token::PlusEq"]],["impl UnwindSafe for Pound",1,["syn::token::Pound"]],["impl UnwindSafe for Priv",1,["syn::token::Priv"]],["impl UnwindSafe for Pub",1,["syn::token::Pub"]],["impl UnwindSafe for Question",1,["syn::token::Question"]],["impl UnwindSafe for RArrow",1,["syn::token::RArrow"]],["impl UnwindSafe for Raw",1,["syn::token::Raw"]],["impl UnwindSafe for Ref",1,["syn::token::Ref"]],["impl UnwindSafe for Return",1,["syn::token::Return"]],["impl UnwindSafe for SelfType",1,["syn::token::SelfType"]],["impl UnwindSafe for SelfValue",1,["syn::token::SelfValue"]],["impl UnwindSafe for Semi",1,["syn::token::Semi"]],["impl UnwindSafe for Shl",1,["syn::token::Shl"]],["impl UnwindSafe for ShlEq",1,["syn::token::ShlEq"]],["impl UnwindSafe for Shr",1,["syn::token::Shr"]],["impl UnwindSafe for ShrEq",1,["syn::token::ShrEq"]],["impl UnwindSafe for Slash",1,["syn::token::Slash"]],["impl UnwindSafe for SlashEq",1,["syn::token::SlashEq"]],["impl UnwindSafe for Star",1,["syn::token::Star"]],["impl UnwindSafe for StarEq",1,["syn::token::StarEq"]],["impl UnwindSafe for Static",1,["syn::token::Static"]],["impl UnwindSafe for Struct",1,["syn::token::Struct"]],["impl UnwindSafe for Super",1,["syn::token::Super"]],["impl UnwindSafe for Tilde",1,["syn::token::Tilde"]],["impl UnwindSafe for Trait",1,["syn::token::Trait"]],["impl UnwindSafe for Try",1,["syn::token::Try"]],["impl UnwindSafe for Type",1,["syn::token::Type"]],["impl UnwindSafe for Typeof",1,["syn::token::Typeof"]],["impl UnwindSafe for Underscore",1,["syn::token::Underscore"]],["impl UnwindSafe for Union",1,["syn::token::Union"]],["impl UnwindSafe for Unsafe",1,["syn::token::Unsafe"]],["impl UnwindSafe for Unsized",1,["syn::token::Unsized"]],["impl UnwindSafe for Use",1,["syn::token::Use"]],["impl UnwindSafe for Virtual",1,["syn::token::Virtual"]],["impl UnwindSafe for Where",1,["syn::token::Where"]],["impl UnwindSafe for While",1,["syn::token::While"]],["impl UnwindSafe for Yield",1,["syn::token::Yield"]],["impl<'a> UnwindSafe for Cursor<'a>",1,["syn::buffer::Cursor"]],["impl<'a> UnwindSafe for ParseNestedMeta<'a>",1,["syn::meta::ParseNestedMeta"]],["impl<'a> UnwindSafe for Lookahead1<'a>",1,["syn::lookahead::Lookahead1"]],["impl<'a> UnwindSafe for ParseBuffer<'a>"],["impl<'a> UnwindSafe for ImplGenerics<'a>",1,["syn::generics::ImplGenerics"]],["impl<'a> UnwindSafe for Turbofish<'a>",1,["syn::generics::Turbofish"]],["impl<'a> UnwindSafe for TypeGenerics<'a>",1,["syn::generics::TypeGenerics"]],["impl<'a, T> !UnwindSafe for Iter<'a, T>",1,["syn::punctuated::Iter"]],["impl<'a, T> !UnwindSafe for IterMut<'a, T>",1,["syn::punctuated::IterMut"]],["impl<'a, T, P> !UnwindSafe for PairsMut<'a, T, P>",1,["syn::punctuated::PairsMut"]],["impl<'a, T, P> UnwindSafe for Pairs<'a, T, P>
    where\n T: RefUnwindSafe,\n P: RefUnwindSafe,
    ",1,["syn::punctuated::Pairs"]],["impl<'c, 'a> UnwindSafe for StepCursor<'c, 'a>",1,["syn::parse::StepCursor"]],["impl<T> UnwindSafe for IntoIter<T>",1,["syn::punctuated::IntoIter"]],["impl<T, P> UnwindSafe for Pair<T, P>
    where\n T: UnwindSafe,\n P: UnwindSafe,
    ",1,["syn::punctuated::Pair"]],["impl<T, P> UnwindSafe for IntoPairs<T, P>",1,["syn::punctuated::IntoPairs"]],["impl<T, P> UnwindSafe for Punctuated<T, P>
    where\n T: UnwindSafe,\n P: UnwindSafe,
    ",1,["syn::punctuated::Punctuated"]]]],["synstructure",[["impl UnwindSafe for AddBounds",1,["synstructure::AddBounds"]],["impl UnwindSafe for BindStyle",1,["synstructure::BindStyle"]],["impl<'a> UnwindSafe for BindingInfo<'a>",1,["synstructure::BindingInfo"]],["impl<'a> UnwindSafe for Structure<'a>",1,["synstructure::Structure"]],["impl<'a> UnwindSafe for VariantAst<'a>",1,["synstructure::VariantAst"]],["impl<'a> UnwindSafe for VariantInfo<'a>",1,["synstructure::VariantInfo"]]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[2447,3710,2610,3973,78913,2123]} \ No newline at end of file diff --git a/trait.impl/core/str/traits/trait.FromStr.js b/trait.impl/core/str/traits/trait.FromStr.js new file mode 100644 index 0000000..be7ef90 --- /dev/null +++ b/trait.impl/core/str/traits/trait.FromStr.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["log",[["impl FromStr for Level"],["impl FromStr for LevelFilter"]]],["proc_macro2",[["impl FromStr for Literal"],["impl FromStr for TokenStream"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[521,580]} \ No newline at end of file diff --git a/trait.impl/delog/hex/trait.Unsigned.js b/trait.impl/delog/hex/trait.Unsigned.js new file mode 100644 index 0000000..53eb11e --- /dev/null +++ b/trait.impl/delog/hex/trait.Unsigned.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["delog",[]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[12]} \ No newline at end of file diff --git a/trait.impl/delog/trait.Renderer.js b/trait.impl/delog/trait.Renderer.js new file mode 100644 index 0000000..53eb11e --- /dev/null +++ b/trait.impl/delog/trait.Renderer.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["delog",[]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[12]} \ No newline at end of file diff --git a/trait.impl/flexiber/tag/trait.TagLike.js b/trait.impl/flexiber/tag/trait.TagLike.js new file mode 100644 index 0000000..3fecb6d --- /dev/null +++ b/trait.impl/flexiber/tag/trait.TagLike.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["flexiber",[]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[15]} \ No newline at end of file diff --git a/trait.impl/flexiber/traits/trait.Decodable.js b/trait.impl/flexiber/traits/trait.Decodable.js new file mode 100644 index 0000000..3fecb6d --- /dev/null +++ b/trait.impl/flexiber/traits/trait.Decodable.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["flexiber",[]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[15]} \ No newline at end of file diff --git a/trait.impl/flexiber/traits/trait.Encodable.js b/trait.impl/flexiber/traits/trait.Encodable.js new file mode 100644 index 0000000..3fecb6d --- /dev/null +++ b/trait.impl/flexiber/traits/trait.Encodable.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["flexiber",[]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[15]} \ No newline at end of file diff --git a/trait.impl/log/trait.Log.js b/trait.impl/log/trait.Log.js new file mode 100644 index 0000000..49492e7 --- /dev/null +++ b/trait.impl/log/trait.Log.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["log",[]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[10]} \ No newline at end of file diff --git a/trait.impl/quote/ext/trait.TokenStreamExt.js b/trait.impl/quote/ext/trait.TokenStreamExt.js new file mode 100644 index 0000000..8afbb16 --- /dev/null +++ b/trait.impl/quote/ext/trait.TokenStreamExt.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["quote",[]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[12]} \ No newline at end of file diff --git a/trait.impl/quote/ident_fragment/trait.IdentFragment.js b/trait.impl/quote/ident_fragment/trait.IdentFragment.js new file mode 100644 index 0000000..a17b43c --- /dev/null +++ b/trait.impl/quote/ident_fragment/trait.IdentFragment.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["quote",[]],["syn",[["impl IdentFragment for Member"],["impl IdentFragment for Index"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[12,501]} \ No newline at end of file diff --git a/trait.impl/quote/to_tokens/trait.ToTokens.js b/trait.impl/quote/to_tokens/trait.ToTokens.js new file mode 100644 index 0000000..b98bb08 --- /dev/null +++ b/trait.impl/quote/to_tokens/trait.ToTokens.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["quote",[]],["syn",[["impl ToTokens for BinOp"],["impl ToTokens for Expr"],["impl ToTokens for Fields"],["impl ToTokens for GenericArgument"],["impl ToTokens for GenericParam"],["impl ToTokens for Lit"],["impl ToTokens for Member"],["impl ToTokens for Meta"],["impl ToTokens for PathArguments"],["impl ToTokens for ReturnType"],["impl ToTokens for TraitBoundModifier"],["impl ToTokens for Type"],["impl ToTokens for TypeParamBound"],["impl ToTokens for UnOp"],["impl ToTokens for Visibility"],["impl ToTokens for WherePredicate"],["impl ToTokens for Nothing"],["impl ToTokens for Abi"],["impl ToTokens for AngleBracketedGenericArguments"],["impl ToTokens for AssocConst"],["impl ToTokens for AssocType"],["impl ToTokens for Attribute"],["impl ToTokens for BareFnArg"],["impl ToTokens for BareVariadic"],["impl ToTokens for BoundLifetimes"],["impl ToTokens for ConstParam"],["impl ToTokens for Constraint"],["impl ToTokens for DeriveInput"],["impl ToTokens for ExprArray"],["impl ToTokens for ExprAssign"],["impl ToTokens for ExprAsync"],["impl ToTokens for ExprAwait"],["impl ToTokens for ExprBinary"],["impl ToTokens for ExprBlock"],["impl ToTokens for ExprBreak"],["impl ToTokens for ExprCall"],["impl ToTokens for ExprCast"],["impl ToTokens for ExprClosure"],["impl ToTokens for ExprConst"],["impl ToTokens for ExprContinue"],["impl ToTokens for ExprField"],["impl ToTokens for ExprForLoop"],["impl ToTokens for ExprGroup"],["impl ToTokens for ExprIf"],["impl ToTokens for ExprIndex"],["impl ToTokens for ExprInfer"],["impl ToTokens for ExprLet"],["impl ToTokens for ExprLit"],["impl ToTokens for ExprLoop"],["impl ToTokens for ExprMacro"],["impl ToTokens for ExprMatch"],["impl ToTokens for ExprMethodCall"],["impl ToTokens for ExprParen"],["impl ToTokens for ExprPath"],["impl ToTokens for ExprRange"],["impl ToTokens for ExprRawAddr"],["impl ToTokens for ExprReference"],["impl ToTokens for ExprRepeat"],["impl ToTokens for ExprReturn"],["impl ToTokens for ExprStruct"],["impl ToTokens for ExprTry"],["impl ToTokens for ExprTryBlock"],["impl ToTokens for ExprTuple"],["impl ToTokens for ExprUnary"],["impl ToTokens for ExprUnsafe"],["impl ToTokens for ExprWhile"],["impl ToTokens for ExprYield"],["impl ToTokens for Field"],["impl ToTokens for FieldValue"],["impl ToTokens for FieldsNamed"],["impl ToTokens for FieldsUnnamed"],["impl ToTokens for Generics"],["impl ToTokens for Index"],["impl ToTokens for Lifetime"],["impl ToTokens for LifetimeParam"],["impl ToTokens for LitBool"],["impl ToTokens for LitByte"],["impl ToTokens for LitByteStr"],["impl ToTokens for LitCStr"],["impl ToTokens for LitChar"],["impl ToTokens for LitFloat"],["impl ToTokens for LitInt"],["impl ToTokens for LitStr"],["impl ToTokens for Macro"],["impl ToTokens for MetaList"],["impl ToTokens for MetaNameValue"],["impl ToTokens for ParenthesizedGenericArguments"],["impl ToTokens for Path"],["impl ToTokens for PathSegment"],["impl ToTokens for PredicateLifetime"],["impl ToTokens for PredicateType"],["impl ToTokens for TraitBound"],["impl ToTokens for TypeArray"],["impl ToTokens for TypeBareFn"],["impl ToTokens for TypeGroup"],["impl ToTokens for TypeImplTrait"],["impl ToTokens for TypeInfer"],["impl ToTokens for TypeMacro"],["impl ToTokens for TypeNever"],["impl ToTokens for TypeParam"],["impl ToTokens for TypeParen"],["impl ToTokens for TypePath"],["impl ToTokens for TypePtr"],["impl ToTokens for TypeReference"],["impl ToTokens for TypeSlice"],["impl ToTokens for TypeTraitObject"],["impl ToTokens for TypeTuple"],["impl ToTokens for Variant"],["impl ToTokens for VisRestricted"],["impl ToTokens for WhereClause"],["impl ToTokens for Abstract"],["impl ToTokens for And"],["impl ToTokens for AndAnd"],["impl ToTokens for AndEq"],["impl ToTokens for As"],["impl ToTokens for Async"],["impl ToTokens for At"],["impl ToTokens for Auto"],["impl ToTokens for Await"],["impl ToTokens for Become"],["impl ToTokens for Box"],["impl ToTokens for Break"],["impl ToTokens for Caret"],["impl ToTokens for CaretEq"],["impl ToTokens for Colon"],["impl ToTokens for Comma"],["impl ToTokens for Const"],["impl ToTokens for Continue"],["impl ToTokens for Crate"],["impl ToTokens for Default"],["impl ToTokens for Do"],["impl ToTokens for Dollar"],["impl ToTokens for Dot"],["impl ToTokens for DotDot"],["impl ToTokens for DotDotDot"],["impl ToTokens for DotDotEq"],["impl ToTokens for Dyn"],["impl ToTokens for Else"],["impl ToTokens for Enum"],["impl ToTokens for Eq"],["impl ToTokens for EqEq"],["impl ToTokens for Extern"],["impl ToTokens for FatArrow"],["impl ToTokens for Final"],["impl ToTokens for Fn"],["impl ToTokens for For"],["impl ToTokens for Ge"],["impl ToTokens for Gt"],["impl ToTokens for If"],["impl ToTokens for Impl"],["impl ToTokens for In"],["impl ToTokens for LArrow"],["impl ToTokens for Le"],["impl ToTokens for Let"],["impl ToTokens for Loop"],["impl ToTokens for Lt"],["impl ToTokens for Macro"],["impl ToTokens for Match"],["impl ToTokens for Minus"],["impl ToTokens for MinusEq"],["impl ToTokens for Mod"],["impl ToTokens for Move"],["impl ToTokens for Mut"],["impl ToTokens for Ne"],["impl ToTokens for Not"],["impl ToTokens for Or"],["impl ToTokens for OrEq"],["impl ToTokens for OrOr"],["impl ToTokens for Override"],["impl ToTokens for PathSep"],["impl ToTokens for Percent"],["impl ToTokens for PercentEq"],["impl ToTokens for Plus"],["impl ToTokens for PlusEq"],["impl ToTokens for Pound"],["impl ToTokens for Priv"],["impl ToTokens for Pub"],["impl ToTokens for Question"],["impl ToTokens for RArrow"],["impl ToTokens for Raw"],["impl ToTokens for Ref"],["impl ToTokens for Return"],["impl ToTokens for SelfType"],["impl ToTokens for SelfValue"],["impl ToTokens for Semi"],["impl ToTokens for Shl"],["impl ToTokens for ShlEq"],["impl ToTokens for Shr"],["impl ToTokens for ShrEq"],["impl ToTokens for Slash"],["impl ToTokens for SlashEq"],["impl ToTokens for Star"],["impl ToTokens for StarEq"],["impl ToTokens for Static"],["impl ToTokens for Struct"],["impl ToTokens for Super"],["impl ToTokens for Tilde"],["impl ToTokens for Trait"],["impl ToTokens for Try"],["impl ToTokens for Type"],["impl ToTokens for Typeof"],["impl ToTokens for Underscore"],["impl ToTokens for Union"],["impl ToTokens for Unsafe"],["impl ToTokens for Unsized"],["impl ToTokens for Use"],["impl ToTokens for Virtual"],["impl ToTokens for Where"],["impl ToTokens for While"],["impl ToTokens for Yield"],["impl<'a> ToTokens for ImplGenerics<'a>"],["impl<'a> ToTokens for Turbofish<'a>"],["impl<'a> ToTokens for TypeGenerics<'a>"],["impl<T, P> ToTokens for Pair<T, P>
    where\n T: ToTokens,\n P: ToTokens,
    "],["impl<T, P> ToTokens for Punctuated<T, P>
    where\n T: ToTokens,\n P: ToTokens,
    "]]],["synstructure",[["impl ToTokens for BindStyle"],["impl<'a> ToTokens for BindingInfo<'a>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[12,51230,543]} \ No newline at end of file diff --git a/trait.impl/syn/ext/trait.IdentExt.js b/trait.impl/syn/ext/trait.IdentExt.js new file mode 100644 index 0000000..13bc262 --- /dev/null +++ b/trait.impl/syn/ext/trait.IdentExt.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["syn",[]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[10]} \ No newline at end of file diff --git a/trait.impl/syn/lookahead/trait.Peek.js b/trait.impl/syn/lookahead/trait.Peek.js new file mode 100644 index 0000000..13bc262 --- /dev/null +++ b/trait.impl/syn/lookahead/trait.Peek.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["syn",[]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[10]} \ No newline at end of file diff --git a/trait.impl/syn/parse/discouraged/trait.AnyDelimiter.js b/trait.impl/syn/parse/discouraged/trait.AnyDelimiter.js new file mode 100644 index 0000000..13bc262 --- /dev/null +++ b/trait.impl/syn/parse/discouraged/trait.AnyDelimiter.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["syn",[]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[10]} \ No newline at end of file diff --git a/trait.impl/syn/parse/discouraged/trait.Speculative.js b/trait.impl/syn/parse/discouraged/trait.Speculative.js new file mode 100644 index 0000000..13bc262 --- /dev/null +++ b/trait.impl/syn/parse/discouraged/trait.Speculative.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["syn",[]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[10]} \ No newline at end of file diff --git a/trait.impl/syn/parse/trait.Parse.js b/trait.impl/syn/parse/trait.Parse.js new file mode 100644 index 0000000..13bc262 --- /dev/null +++ b/trait.impl/syn/parse/trait.Parse.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["syn",[]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[10]} \ No newline at end of file diff --git a/trait.impl/syn/parse/trait.Parser.js b/trait.impl/syn/parse/trait.Parser.js new file mode 100644 index 0000000..13bc262 --- /dev/null +++ b/trait.impl/syn/parse/trait.Parser.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["syn",[]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[10]} \ No newline at end of file diff --git a/trait.impl/syn/spanned/trait.Spanned.js b/trait.impl/syn/spanned/trait.Spanned.js new file mode 100644 index 0000000..13bc262 --- /dev/null +++ b/trait.impl/syn/spanned/trait.Spanned.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["syn",[]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[10]} \ No newline at end of file diff --git a/trait.impl/syn/token/trait.Token.js b/trait.impl/syn/token/trait.Token.js new file mode 100644 index 0000000..13bc262 --- /dev/null +++ b/trait.impl/syn/token/trait.Token.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["syn",[]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[10]} \ No newline at end of file diff --git a/trait.impl/synstructure/trait.MacroResult.js b/trait.impl/synstructure/trait.MacroResult.js new file mode 100644 index 0000000..a9c539c --- /dev/null +++ b/trait.impl/synstructure/trait.MacroResult.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["synstructure",[]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[19]} \ No newline at end of file diff --git a/type.impl/core/result/enum.Result.js b/type.impl/core/result/enum.Result.js new file mode 100644 index 0000000..b3f31fc --- /dev/null +++ b/type.impl/core/result/enum.Result.js @@ -0,0 +1,9 @@ +(function() { + var type_impls = Object.fromEntries([["flexiber",[["
    1.0.0 · source§

    impl<T, E> Clone for Result<T, E>
    where\n T: Clone,\n E: Clone,

    source§

    fn clone(&self) -> Result<T, E>

    Returns a copy of the value. Read more
    source§

    fn clone_from(&mut self, source: &Result<T, E>)

    Performs copy-assignment from source. Read more
    ","Clone","flexiber::error::Result"],["
    1.0.0 · source§

    impl<T, E> Debug for Result<T, E>
    where\n T: Debug,\n E: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Debug","flexiber::error::Result"],["
    1.0.0 · source§

    impl<A, E, V> FromIterator<Result<A, E>> for Result<V, E>
    where\n V: FromIterator<A>,

    source§

    fn from_iter<I>(iter: I) -> Result<V, E>
    where\n I: IntoIterator<Item = Result<A, E>>,

    Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err occur, a\ncontainer with the values of each Result is returned.

    \n

    Here is an example which increments every integer in a vector,\nchecking for overflow:

    \n\n
    let v = vec![1, 2];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n    x.checked_add(1).ok_or(\"Overflow!\")\n).collect();\nassert_eq!(res, Ok(vec![2, 3]));
    \n

    Here is another example that tries to subtract one from another list\nof integers, this time checking for underflow:

    \n\n
    let v = vec![1, 2, 0];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n    x.checked_sub(1).ok_or(\"Underflow!\")\n).collect();\nassert_eq!(res, Err(\"Underflow!\"));
    \n

    Here is a variation on the previous example, showing that no\nfurther elements are taken from iter after the first Err.

    \n\n
    let v = vec![3, 2, 1, 10];\nlet mut shared = 0;\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32| {\n    shared += x;\n    x.checked_sub(2).ok_or(\"Underflow!\")\n}).collect();\nassert_eq!(res, Err(\"Underflow!\"));\nassert_eq!(shared, 6);
    \n

    Since the third element caused an underflow, no further elements were taken,\nso the final value of shared is 6 (= 3 + 2 + 1), not 16.

    \n
    ","FromIterator>","flexiber::error::Result"],["
    source§

    impl<T, E, F> FromResidual<Result<Infallible, E>> for Result<T, F>
    where\n F: From<E>,

    source§

    fn from_residual(residual: Result<Infallible, E>) -> Result<T, F>

    🔬This is a nightly-only experimental API. (try_trait_v2)
    Constructs the type from a compatible Residual type. Read more
    ","FromResidual>","flexiber::error::Result"],["
    source§

    impl<T, E, F> FromResidual<Yeet<E>> for Result<T, F>
    where\n F: From<E>,

    source§

    fn from_residual(_: Yeet<E>) -> Result<T, F>

    🔬This is a nightly-only experimental API. (try_trait_v2)
    Constructs the type from a compatible Residual type. Read more
    ","FromResidual>","flexiber::error::Result"],["
    1.0.0 · source§

    impl<T, E> Hash for Result<T, E>
    where\n T: Hash,\n E: Hash,

    source§

    fn hash<__H>(&self, state: &mut __H)
    where\n __H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where\n H: Hasher,\n Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    ","Hash","flexiber::error::Result"],["
    1.0.0 · source§

    impl<T, E> IntoIterator for Result<T, E>

    source§

    fn into_iter(self) -> IntoIter<T>

    Returns a consuming iterator over the possibly contained value.

    \n

    The iterator yields one value if the result is Result::Ok, otherwise none.

    \n
    §Examples
    \n
    let x: Result<u32, &str> = Ok(5);\nlet v: Vec<u32> = x.into_iter().collect();\nassert_eq!(v, [5]);\n\nlet x: Result<u32, &str> = Err(\"nothing!\");\nlet v: Vec<u32> = x.into_iter().collect();\nassert_eq!(v, []);
    \n
    source§

    type Item = T

    The type of the elements being iterated over.
    source§

    type IntoIter = IntoIter<T>

    Which kind of iterator are we turning this into?
    ","IntoIterator","flexiber::error::Result"],["
    1.0.0 · source§

    impl<T, E> Ord for Result<T, E>
    where\n T: Ord,\n E: Ord,

    source§

    fn cmp(&self, other: &Result<T, E>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where\n Self: Sized,

    Restrict a value to a certain interval. Read more
    ","Ord","flexiber::error::Result"],["
    1.0.0 · source§

    impl<T, E> PartialEq for Result<T, E>
    where\n T: PartialEq,\n E: PartialEq,

    source§

    fn eq(&self, other: &Result<T, E>) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
    ","PartialEq","flexiber::error::Result"],["
    1.0.0 · source§

    impl<T, E> PartialOrd for Result<T, E>
    where\n T: PartialOrd,\n E: PartialOrd,

    source§

    fn partial_cmp(&self, other: &Result<T, E>) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    Tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    Tests less than or equal to (for self and other) and is used by the\n<= operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    Tests greater than (for self and other) and is used by the >\noperator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    Tests greater than or equal to (for self and other) and is used by\nthe >= operator. Read more
    ","PartialOrd","flexiber::error::Result"],["
    1.16.0 · source§

    impl<T, U, E> Product<Result<U, E>> for Result<T, E>
    where\n T: Product<U>,

    source§

    fn product<I>(iter: I) -> Result<T, E>
    where\n I: Iterator<Item = Result<U, E>>,

    Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the product of all elements is returned.

    \n
    §Examples
    \n

    This multiplies each number in a vector of strings,\nif a string could not be parsed the operation returns Err:

    \n\n
    let nums = vec![\"5\", \"10\", \"1\", \"2\"];\nlet total: Result<usize, _> = nums.iter().map(|w| w.parse::<usize>()).product();\nassert_eq!(total, Ok(100));\nlet nums = vec![\"5\", \"10\", \"one\", \"2\"];\nlet total: Result<usize, _> = nums.iter().map(|w| w.parse::<usize>()).product();\nassert!(total.is_err());
    \n
    ","Product>","flexiber::error::Result"],["
    source§

    impl<T, E> Residual<T> for Result<Infallible, E>

    source§

    type TryType = Result<T, E>

    🔬This is a nightly-only experimental API. (try_trait_v2_residual)
    The “return” type of this meta-function.
    ","Residual","flexiber::error::Result"],["
    source§

    impl<T, E> Result<&T, E>

    1.59.0 (const: 1.83.0) · source

    pub const fn copied(self) -> Result<T, E>
    where\n T: Copy,

    Maps a Result<&T, E> to a Result<T, E> by copying the contents of the\nOk part.

    \n
    §Examples
    \n
    let val = 12;\nlet x: Result<&i32, i32> = Ok(&val);\nassert_eq!(x, Ok(&12));\nlet copied = x.copied();\nassert_eq!(copied, Ok(12));
    \n
    1.59.0 · source

    pub fn cloned(self) -> Result<T, E>
    where\n T: Clone,

    Maps a Result<&T, E> to a Result<T, E> by cloning the contents of the\nOk part.

    \n
    §Examples
    \n
    let val = 12;\nlet x: Result<&i32, i32> = Ok(&val);\nassert_eq!(x, Ok(&12));\nlet cloned = x.cloned();\nassert_eq!(cloned, Ok(12));
    \n
    ",0,"flexiber::error::Result"],["
    source§

    impl<T, E> Result<&mut T, E>

    1.59.0 (const: 1.83.0) · source

    pub const fn copied(self) -> Result<T, E>
    where\n T: Copy,

    Maps a Result<&mut T, E> to a Result<T, E> by copying the contents of the\nOk part.

    \n
    §Examples
    \n
    let mut val = 12;\nlet x: Result<&mut i32, i32> = Ok(&mut val);\nassert_eq!(x, Ok(&mut 12));\nlet copied = x.copied();\nassert_eq!(copied, Ok(12));
    \n
    1.59.0 · source

    pub fn cloned(self) -> Result<T, E>
    where\n T: Clone,

    Maps a Result<&mut T, E> to a Result<T, E> by cloning the contents of the\nOk part.

    \n
    §Examples
    \n
    let mut val = 12;\nlet x: Result<&mut i32, i32> = Ok(&mut val);\nassert_eq!(x, Ok(&mut 12));\nlet cloned = x.cloned();\nassert_eq!(cloned, Ok(12));
    \n
    ",0,"flexiber::error::Result"],["
    source§

    impl<T, E> Result<Option<T>, E>

    1.33.0 (const: 1.83.0) · source

    pub const fn transpose(self) -> Option<Result<T, E>>

    Transposes a Result of an Option into an Option of a Result.

    \n

    Ok(None) will be mapped to None.\nOk(Some(_)) and Err(_) will be mapped to Some(Ok(_)) and Some(Err(_)).

    \n
    §Examples
    \n
    #[derive(Debug, Eq, PartialEq)]\nstruct SomeErr;\n\nlet x: Result<Option<i32>, SomeErr> = Ok(Some(5));\nlet y: Option<Result<i32, SomeErr>> = Some(Ok(5));\nassert_eq!(x.transpose(), y);
    \n
    ",0,"flexiber::error::Result"],["
    source§

    impl<T, E> Result<Result<T, E>, E>

    source

    pub const fn flatten(self) -> Result<T, E>

    🔬This is a nightly-only experimental API. (result_flattening)

    Converts from Result<Result<T, E>, E> to Result<T, E>

    \n
    §Examples
    \n
    #![feature(result_flattening)]\nlet x: Result<Result<&'static str, u32>, u32> = Ok(Ok(\"hello\"));\nassert_eq!(Ok(\"hello\"), x.flatten());\n\nlet x: Result<Result<&'static str, u32>, u32> = Ok(Err(6));\nassert_eq!(Err(6), x.flatten());\n\nlet x: Result<Result<&'static str, u32>, u32> = Err(6);\nassert_eq!(Err(6), x.flatten());
    \n

    Flattening only removes one level of nesting at a time:

    \n\n
    #![feature(result_flattening)]\nlet x: Result<Result<Result<&'static str, u32>, u32>, u32> = Ok(Ok(Ok(\"hello\")));\nassert_eq!(Ok(Ok(\"hello\")), x.flatten());\nassert_eq!(Ok(\"hello\"), x.flatten().flatten());
    \n
    ",0,"flexiber::error::Result"],["
    source§

    impl<T, E> Result<T, E>

    1.0.0 (const: 1.48.0) · source

    pub const fn is_ok(&self) -> bool

    Returns true if the result is Ok.

    \n
    §Examples
    \n
    let x: Result<i32, &str> = Ok(-3);\nassert_eq!(x.is_ok(), true);\n\nlet x: Result<i32, &str> = Err(\"Some error message\");\nassert_eq!(x.is_ok(), false);
    \n
    1.70.0 · source

    pub fn is_ok_and(self, f: impl FnOnce(T) -> bool) -> bool

    Returns true if the result is Ok and the value inside of it matches a predicate.

    \n
    §Examples
    \n
    let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.is_ok_and(|x| x > 1), true);\n\nlet x: Result<u32, &str> = Ok(0);\nassert_eq!(x.is_ok_and(|x| x > 1), false);\n\nlet x: Result<u32, &str> = Err(\"hey\");\nassert_eq!(x.is_ok_and(|x| x > 1), false);
    \n
    1.0.0 (const: 1.48.0) · source

    pub const fn is_err(&self) -> bool

    Returns true if the result is Err.

    \n
    §Examples
    \n
    let x: Result<i32, &str> = Ok(-3);\nassert_eq!(x.is_err(), false);\n\nlet x: Result<i32, &str> = Err(\"Some error message\");\nassert_eq!(x.is_err(), true);
    \n
    1.70.0 · source

    pub fn is_err_and(self, f: impl FnOnce(E) -> bool) -> bool

    Returns true if the result is Err and the value inside of it matches a predicate.

    \n
    §Examples
    \n
    use std::io::{Error, ErrorKind};\n\nlet x: Result<u32, Error> = Err(Error::new(ErrorKind::NotFound, \"!\"));\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), true);\n\nlet x: Result<u32, Error> = Err(Error::new(ErrorKind::PermissionDenied, \"!\"));\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false);\n\nlet x: Result<u32, Error> = Ok(123);\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false);
    \n
    1.0.0 · source

    pub fn ok(self) -> Option<T>

    Converts from Result<T, E> to Option<T>.

    \n

    Converts self into an Option<T>, consuming self,\nand discarding the error, if any.

    \n
    §Examples
    \n
    let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.ok(), Some(2));\n\nlet x: Result<u32, &str> = Err(\"Nothing here\");\nassert_eq!(x.ok(), None);
    \n
    1.0.0 · source

    pub fn err(self) -> Option<E>

    Converts from Result<T, E> to Option<E>.

    \n

    Converts self into an Option<E>, consuming self,\nand discarding the success value, if any.

    \n
    §Examples
    \n
    let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.err(), None);\n\nlet x: Result<u32, &str> = Err(\"Nothing here\");\nassert_eq!(x.err(), Some(\"Nothing here\"));
    \n
    1.0.0 (const: 1.48.0) · source

    pub const fn as_ref(&self) -> Result<&T, &E>

    Converts from &Result<T, E> to Result<&T, &E>.

    \n

    Produces a new Result, containing a reference\ninto the original, leaving the original in place.

    \n
    §Examples
    \n
    let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.as_ref(), Ok(&2));\n\nlet x: Result<u32, &str> = Err(\"Error\");\nassert_eq!(x.as_ref(), Err(&\"Error\"));
    \n
    1.0.0 (const: 1.83.0) · source

    pub const fn as_mut(&mut self) -> Result<&mut T, &mut E>

    Converts from &mut Result<T, E> to Result<&mut T, &mut E>.

    \n
    §Examples
    \n
    fn mutate(r: &mut Result<i32, i32>) {\n    match r.as_mut() {\n        Ok(v) => *v = 42,\n        Err(e) => *e = 0,\n    }\n}\n\nlet mut x: Result<i32, i32> = Ok(2);\nmutate(&mut x);\nassert_eq!(x.unwrap(), 42);\n\nlet mut x: Result<i32, i32> = Err(13);\nmutate(&mut x);\nassert_eq!(x.unwrap_err(), 0);
    \n
    1.0.0 · source

    pub fn map<U, F>(self, op: F) -> Result<U, E>
    where\n F: FnOnce(T) -> U,

    Maps a Result<T, E> to Result<U, E> by applying a function to a\ncontained Ok value, leaving an Err value untouched.

    \n

    This function can be used to compose the results of two functions.

    \n
    §Examples
    \n

    Print the numbers on each line of a string multiplied by two.

    \n\n
    let line = \"1\\n2\\n3\\n4\\n\";\n\nfor num in line.lines() {\n    match num.parse::<i32>().map(|i| i * 2) {\n        Ok(n) => println!(\"{n}\"),\n        Err(..) => {}\n    }\n}
    \n
    1.41.0 · source

    pub fn map_or<U, F>(self, default: U, f: F) -> U
    where\n F: FnOnce(T) -> U,

    Returns the provided default (if Err), or\napplies a function to the contained value (if Ok).

    \n

    Arguments passed to map_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use map_or_else,\nwhich is lazily evaluated.

    \n
    §Examples
    \n
    let x: Result<_, &str> = Ok(\"foo\");\nassert_eq!(x.map_or(42, |v| v.len()), 3);\n\nlet x: Result<&str, _> = Err(\"bar\");\nassert_eq!(x.map_or(42, |v| v.len()), 42);
    \n
    1.41.0 · source

    pub fn map_or_else<U, D, F>(self, default: D, f: F) -> U
    where\n D: FnOnce(E) -> U,\n F: FnOnce(T) -> U,

    Maps a Result<T, E> to U by applying fallback function default to\na contained Err value, or function f to a contained Ok value.

    \n

    This function can be used to unpack a successful result\nwhile handling an error.

    \n
    §Examples
    \n
    let k = 21;\n\nlet x : Result<_, &str> = Ok(\"foo\");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 3);\n\nlet x : Result<&str, _> = Err(\"bar\");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 42);
    \n
    1.0.0 · source

    pub fn map_err<F, O>(self, op: O) -> Result<T, F>
    where\n O: FnOnce(E) -> F,

    Maps a Result<T, E> to Result<T, F> by applying a function to a\ncontained Err value, leaving an Ok value untouched.

    \n

    This function can be used to pass through a successful result while handling\nan error.

    \n
    §Examples
    \n
    fn stringify(x: u32) -> String { format!(\"error code: {x}\") }\n\nlet x: Result<u32, u32> = Ok(2);\nassert_eq!(x.map_err(stringify), Ok(2));\n\nlet x: Result<u32, u32> = Err(13);\nassert_eq!(x.map_err(stringify), Err(\"error code: 13\".to_string()));
    \n
    1.76.0 · source

    pub fn inspect<F>(self, f: F) -> Result<T, E>
    where\n F: FnOnce(&T),

    Calls a function with a reference to the contained value if Ok.

    \n

    Returns the original result.

    \n
    §Examples
    \n
    let x: u8 = \"4\"\n    .parse::<u8>()\n    .inspect(|x| println!(\"original: {x}\"))\n    .map(|x| x.pow(3))\n    .expect(\"failed to parse number\");
    \n
    1.76.0 · source

    pub fn inspect_err<F>(self, f: F) -> Result<T, E>
    where\n F: FnOnce(&E),

    Calls a function with a reference to the contained value if Err.

    \n

    Returns the original result.

    \n
    §Examples
    \n
    use std::{fs, io};\n\nfn read() -> io::Result<String> {\n    fs::read_to_string(\"address.txt\")\n        .inspect_err(|e| eprintln!(\"failed to read file: {e}\"))\n}
    \n
    1.47.0 · source

    pub fn as_deref(&self) -> Result<&<T as Deref>::Target, &E>
    where\n T: Deref,

    Converts from Result<T, E> (or &Result<T, E>) to Result<&<T as Deref>::Target, &E>.

    \n

    Coerces the Ok variant of the original Result via Deref\nand returns the new Result.

    \n
    §Examples
    \n
    let x: Result<String, u32> = Ok(\"hello\".to_string());\nlet y: Result<&str, &u32> = Ok(\"hello\");\nassert_eq!(x.as_deref(), y);\n\nlet x: Result<String, u32> = Err(42);\nlet y: Result<&str, &u32> = Err(&42);\nassert_eq!(x.as_deref(), y);
    \n
    1.47.0 · source

    pub fn as_deref_mut(&mut self) -> Result<&mut <T as Deref>::Target, &mut E>
    where\n T: DerefMut,

    Converts from Result<T, E> (or &mut Result<T, E>) to Result<&mut <T as DerefMut>::Target, &mut E>.

    \n

    Coerces the Ok variant of the original Result via DerefMut\nand returns the new Result.

    \n
    §Examples
    \n
    let mut s = \"HELLO\".to_string();\nlet mut x: Result<String, u32> = Ok(\"hello\".to_string());\nlet y: Result<&mut str, &mut u32> = Ok(&mut s);\nassert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);\n\nlet mut i = 42;\nlet mut x: Result<String, u32> = Err(42);\nlet y: Result<&mut str, &mut u32> = Err(&mut i);\nassert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);
    \n
    1.0.0 · source

    pub fn iter(&self) -> Iter<'_, T>

    Returns an iterator over the possibly contained value.

    \n

    The iterator yields one value if the result is Result::Ok, otherwise none.

    \n
    §Examples
    \n
    let x: Result<u32, &str> = Ok(7);\nassert_eq!(x.iter().next(), Some(&7));\n\nlet x: Result<u32, &str> = Err(\"nothing!\");\nassert_eq!(x.iter().next(), None);
    \n
    1.0.0 · source

    pub fn iter_mut(&mut self) -> IterMut<'_, T>

    Returns a mutable iterator over the possibly contained value.

    \n

    The iterator yields one value if the result is Result::Ok, otherwise none.

    \n
    §Examples
    \n
    let mut x: Result<u32, &str> = Ok(7);\nmatch x.iter_mut().next() {\n    Some(v) => *v = 40,\n    None => {},\n}\nassert_eq!(x, Ok(40));\n\nlet mut x: Result<u32, &str> = Err(\"nothing!\");\nassert_eq!(x.iter_mut().next(), None);
    \n
    1.4.0 · source

    pub fn expect(self, msg: &str) -> T
    where\n E: Debug,

    Returns the contained Ok value, consuming the self value.

    \n

    Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.

    \n
    §Panics
    \n

    Panics if the value is an Err, with a panic message including the\npassed message, and the content of the Err.

    \n
    §Examples
    \n
    let x: Result<u32, &str> = Err(\"emergency failure\");\nx.expect(\"Testing expect\"); // panics with `Testing expect: emergency failure`
    \n
    §Recommended Message Style
    \n

    We recommend that expect messages are used to describe the reason you\nexpect the Result should be Ok.

    \n\n
    let path = std::env::var(\"IMPORTANT_PATH\")\n    .expect(\"env variable `IMPORTANT_PATH` should be set by `wrapper_script.sh`\");
    \n

    Hint: If you’re having trouble remembering how to phrase expect\nerror messages remember to focus on the word “should” as in “env\nvariable should be set by blah” or “the given binary should be available\nand executable by the current user”.

    \n

    For more detail on expect message styles and the reasoning behind our recommendation please\nrefer to the section on “Common Message\nStyles” in the\nstd::error module docs.

    \n
    1.0.0 · source

    pub fn unwrap(self) -> T
    where\n E: Debug,

    Returns the contained Ok value, consuming the self value.

    \n

    Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.

    \n
    §Panics
    \n

    Panics if the value is an Err, with a panic message provided by the\nErr’s value.

    \n
    §Examples
    \n

    Basic usage:

    \n\n
    let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.unwrap(), 2);
    \n\n
    let x: Result<u32, &str> = Err(\"emergency failure\");\nx.unwrap(); // panics with `emergency failure`
    \n
    1.16.0 · source

    pub fn unwrap_or_default(self) -> T
    where\n T: Default,

    Returns the contained Ok value or a default

    \n

    Consumes the self argument then, if Ok, returns the contained\nvalue, otherwise if Err, returns the default value for that\ntype.

    \n
    §Examples
    \n

    Converts a string to an integer, turning poorly-formed strings\ninto 0 (the default value for integers). parse converts\na string to any other type that implements FromStr, returning an\nErr on error.

    \n\n
    let good_year_from_input = \"1909\";\nlet bad_year_from_input = \"190blarg\";\nlet good_year = good_year_from_input.parse().unwrap_or_default();\nlet bad_year = bad_year_from_input.parse().unwrap_or_default();\n\nassert_eq!(1909, good_year);\nassert_eq!(0, bad_year);
    \n
    1.17.0 · source

    pub fn expect_err(self, msg: &str) -> E
    where\n T: Debug,

    Returns the contained Err value, consuming the self value.

    \n
    §Panics
    \n

    Panics if the value is an Ok, with a panic message including the\npassed message, and the content of the Ok.

    \n
    §Examples
    \n
    let x: Result<u32, &str> = Ok(10);\nx.expect_err(\"Testing expect_err\"); // panics with `Testing expect_err: 10`
    \n
    1.0.0 · source

    pub fn unwrap_err(self) -> E
    where\n T: Debug,

    Returns the contained Err value, consuming the self value.

    \n
    §Panics
    \n

    Panics if the value is an Ok, with a custom panic message provided\nby the Ok’s value.

    \n
    §Examples
    \n
    let x: Result<u32, &str> = Ok(2);\nx.unwrap_err(); // panics with `2`
    \n\n
    let x: Result<u32, &str> = Err(\"emergency failure\");\nassert_eq!(x.unwrap_err(), \"emergency failure\");
    \n
    source

    pub fn into_ok(self) -> T
    where\n E: Into<!>,

    🔬This is a nightly-only experimental API. (unwrap_infallible)

    Returns the contained Ok value, but never panics.

    \n

    Unlike unwrap, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap as a maintainability safeguard that will fail\nto compile if the error type of the Result is later changed\nto an error that can actually occur.

    \n
    §Examples
    \n
    \nfn only_good_news() -> Result<String, !> {\n    Ok(\"this is fine\".into())\n}\n\nlet s: String = only_good_news().into_ok();\nprintln!(\"{s}\");
    \n
    source

    pub fn into_err(self) -> E
    where\n T: Into<!>,

    🔬This is a nightly-only experimental API. (unwrap_infallible)

    Returns the contained Err value, but never panics.

    \n

    Unlike unwrap_err, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap_err as a maintainability safeguard that will fail\nto compile if the ok type of the Result is later changed\nto a type that can actually occur.

    \n
    §Examples
    \n
    \nfn only_bad_news() -> Result<!, String> {\n    Err(\"Oops, it failed\".into())\n}\n\nlet error: String = only_bad_news().into_err();\nprintln!(\"{error}\");
    \n
    1.0.0 · source

    pub fn and<U>(self, res: Result<U, E>) -> Result<U, E>

    Returns res if the result is Ok, otherwise returns the Err value of self.

    \n

    Arguments passed to and are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use and_then, which is\nlazily evaluated.

    \n
    §Examples
    \n
    let x: Result<u32, &str> = Ok(2);\nlet y: Result<&str, &str> = Err(\"late error\");\nassert_eq!(x.and(y), Err(\"late error\"));\n\nlet x: Result<u32, &str> = Err(\"early error\");\nlet y: Result<&str, &str> = Ok(\"foo\");\nassert_eq!(x.and(y), Err(\"early error\"));\n\nlet x: Result<u32, &str> = Err(\"not a 2\");\nlet y: Result<&str, &str> = Err(\"late error\");\nassert_eq!(x.and(y), Err(\"not a 2\"));\n\nlet x: Result<u32, &str> = Ok(2);\nlet y: Result<&str, &str> = Ok(\"different result type\");\nassert_eq!(x.and(y), Ok(\"different result type\"));
    \n
    1.0.0 · source

    pub fn and_then<U, F>(self, op: F) -> Result<U, E>
    where\n F: FnOnce(T) -> Result<U, E>,

    Calls op if the result is Ok, otherwise returns the Err value of self.

    \n

    This function can be used for control flow based on Result values.

    \n
    §Examples
    \n
    fn sq_then_to_string(x: u32) -> Result<String, &'static str> {\n    x.checked_mul(x).map(|sq| sq.to_string()).ok_or(\"overflowed\")\n}\n\nassert_eq!(Ok(2).and_then(sq_then_to_string), Ok(4.to_string()));\nassert_eq!(Ok(1_000_000).and_then(sq_then_to_string), Err(\"overflowed\"));\nassert_eq!(Err(\"not a number\").and_then(sq_then_to_string), Err(\"not a number\"));
    \n

    Often used to chain fallible operations that may return Err.

    \n\n
    use std::{io::ErrorKind, path::Path};\n\n// Note: on Windows \"/\" maps to \"C:\\\"\nlet root_modified_time = Path::new(\"/\").metadata().and_then(|md| md.modified());\nassert!(root_modified_time.is_ok());\n\nlet should_fail = Path::new(\"/bad/path\").metadata().and_then(|md| md.modified());\nassert!(should_fail.is_err());\nassert_eq!(should_fail.unwrap_err().kind(), ErrorKind::NotFound);
    \n
    1.0.0 · source

    pub fn or<F>(self, res: Result<T, F>) -> Result<T, F>

    Returns res if the result is Err, otherwise returns the Ok value of self.

    \n

    Arguments passed to or are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use or_else, which is\nlazily evaluated.

    \n
    §Examples
    \n
    let x: Result<u32, &str> = Ok(2);\nlet y: Result<u32, &str> = Err(\"late error\");\nassert_eq!(x.or(y), Ok(2));\n\nlet x: Result<u32, &str> = Err(\"early error\");\nlet y: Result<u32, &str> = Ok(2);\nassert_eq!(x.or(y), Ok(2));\n\nlet x: Result<u32, &str> = Err(\"not a 2\");\nlet y: Result<u32, &str> = Err(\"late error\");\nassert_eq!(x.or(y), Err(\"late error\"));\n\nlet x: Result<u32, &str> = Ok(2);\nlet y: Result<u32, &str> = Ok(100);\nassert_eq!(x.or(y), Ok(2));
    \n
    1.0.0 · source

    pub fn or_else<F, O>(self, op: O) -> Result<T, F>
    where\n O: FnOnce(E) -> Result<T, F>,

    Calls op if the result is Err, otherwise returns the Ok value of self.

    \n

    This function can be used for control flow based on result values.

    \n
    §Examples
    \n
    fn sq(x: u32) -> Result<u32, u32> { Ok(x * x) }\nfn err(x: u32) -> Result<u32, u32> { Err(x) }\n\nassert_eq!(Ok(2).or_else(sq).or_else(sq), Ok(2));\nassert_eq!(Ok(2).or_else(err).or_else(sq), Ok(2));\nassert_eq!(Err(3).or_else(sq).or_else(err), Ok(9));\nassert_eq!(Err(3).or_else(err).or_else(err), Err(3));
    \n
    1.0.0 · source

    pub fn unwrap_or(self, default: T) -> T

    Returns the contained Ok value or a provided default.

    \n

    Arguments passed to unwrap_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use unwrap_or_else,\nwhich is lazily evaluated.

    \n
    §Examples
    \n
    let default = 2;\nlet x: Result<u32, &str> = Ok(9);\nassert_eq!(x.unwrap_or(default), 9);\n\nlet x: Result<u32, &str> = Err(\"error\");\nassert_eq!(x.unwrap_or(default), default);
    \n
    1.0.0 · source

    pub fn unwrap_or_else<F>(self, op: F) -> T
    where\n F: FnOnce(E) -> T,

    Returns the contained Ok value or computes it from a closure.

    \n
    §Examples
    \n
    fn count(x: &str) -> usize { x.len() }\n\nassert_eq!(Ok(2).unwrap_or_else(count), 2);\nassert_eq!(Err(\"foo\").unwrap_or_else(count), 3);
    \n
    1.58.0 · source

    pub unsafe fn unwrap_unchecked(self) -> T

    Returns the contained Ok value, consuming the self value,\nwithout checking that the value is not an Err.

    \n
    §Safety
    \n

    Calling this method on an Err is undefined behavior.

    \n
    §Examples
    \n
    let x: Result<u32, &str> = Ok(2);\nassert_eq!(unsafe { x.unwrap_unchecked() }, 2);
    \n\n
    let x: Result<u32, &str> = Err(\"emergency failure\");\nunsafe { x.unwrap_unchecked(); } // Undefined behavior!
    \n
    1.58.0 · source

    pub unsafe fn unwrap_err_unchecked(self) -> E

    Returns the contained Err value, consuming the self value,\nwithout checking that the value is not an Ok.

    \n
    §Safety
    \n

    Calling this method on an Ok is undefined behavior.

    \n
    §Examples
    \n
    let x: Result<u32, &str> = Ok(2);\nunsafe { x.unwrap_err_unchecked() }; // Undefined behavior!
    \n\n
    let x: Result<u32, &str> = Err(\"emergency failure\");\nassert_eq!(unsafe { x.unwrap_err_unchecked() }, \"emergency failure\");
    \n
    ",0,"flexiber::error::Result"],["
    1.16.0 · source§

    impl<T, U, E> Sum<Result<U, E>> for Result<T, E>
    where\n T: Sum<U>,

    source§

    fn sum<I>(iter: I) -> Result<T, E>
    where\n I: Iterator<Item = Result<U, E>>,

    Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the sum of all elements is returned.

    \n
    §Examples
    \n

    This sums up every integer in a vector, rejecting the sum if a negative\nelement is encountered:

    \n\n
    let f = |&x: &i32| if x < 0 { Err(\"Negative element found\") } else { Ok(x) };\nlet v = vec![1, 2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Ok(3));\nlet v = vec![1, -2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Err(\"Negative element found\"));
    \n
    ","Sum>","flexiber::error::Result"],["
    source§

    impl<T, E> Try for Result<T, E>

    source§

    type Output = T

    🔬This is a nightly-only experimental API. (try_trait_v2)
    The type of the value produced by ? when not short-circuiting.
    source§

    type Residual = Result<Infallible, E>

    🔬This is a nightly-only experimental API. (try_trait_v2)
    The type of the value passed to FromResidual::from_residual\nas part of ? when short-circuiting. Read more
    source§

    fn from_output(output: <Result<T, E> as Try>::Output) -> Result<T, E>

    🔬This is a nightly-only experimental API. (try_trait_v2)
    Constructs the type from its Output type. Read more
    source§

    fn branch(\n self,\n) -> ControlFlow<<Result<T, E> as Try>::Residual, <Result<T, E> as Try>::Output>

    🔬This is a nightly-only experimental API. (try_trait_v2)
    Used in ? to decide whether the operator should produce a value\n(because this returned ControlFlow::Continue)\nor propagate a value back to the caller\n(because this returned ControlFlow::Break). Read more
    ","Try","flexiber::error::Result"],["
    1.0.0 · source§

    impl<T, E> Copy for Result<T, E>
    where\n T: Copy,\n E: Copy,

    ","Copy","flexiber::error::Result"],["
    1.0.0 · source§

    impl<T, E> Eq for Result<T, E>
    where\n T: Eq,\n E: Eq,

    ","Eq","flexiber::error::Result"],["
    1.0.0 · source§

    impl<T, E> StructuralPartialEq for Result<T, E>

    ","StructuralPartialEq","flexiber::error::Result"]]],["syn",[["
    1.0.0 · source§

    impl<T, E> Clone for Result<T, E>
    where\n T: Clone,\n E: Clone,

    source§

    fn clone(&self) -> Result<T, E>

    Returns a copy of the value. Read more
    source§

    fn clone_from(&mut self, source: &Result<T, E>)

    Performs copy-assignment from source. Read more
    ","Clone","syn::error::Result"],["
    1.0.0 · source§

    impl<T, E> Debug for Result<T, E>
    where\n T: Debug,\n E: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Debug","syn::error::Result"],["
    1.0.0 · source§

    impl<A, E, V> FromIterator<Result<A, E>> for Result<V, E>
    where\n V: FromIterator<A>,

    source§

    fn from_iter<I>(iter: I) -> Result<V, E>
    where\n I: IntoIterator<Item = Result<A, E>>,

    Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err occur, a\ncontainer with the values of each Result is returned.

    \n

    Here is an example which increments every integer in a vector,\nchecking for overflow:

    \n\n
    let v = vec![1, 2];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n    x.checked_add(1).ok_or(\"Overflow!\")\n).collect();\nassert_eq!(res, Ok(vec![2, 3]));
    \n

    Here is another example that tries to subtract one from another list\nof integers, this time checking for underflow:

    \n\n
    let v = vec![1, 2, 0];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n    x.checked_sub(1).ok_or(\"Underflow!\")\n).collect();\nassert_eq!(res, Err(\"Underflow!\"));
    \n

    Here is a variation on the previous example, showing that no\nfurther elements are taken from iter after the first Err.

    \n\n
    let v = vec![3, 2, 1, 10];\nlet mut shared = 0;\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32| {\n    shared += x;\n    x.checked_sub(2).ok_or(\"Underflow!\")\n}).collect();\nassert_eq!(res, Err(\"Underflow!\"));\nassert_eq!(shared, 6);
    \n

    Since the third element caused an underflow, no further elements were taken,\nso the final value of shared is 6 (= 3 + 2 + 1), not 16.

    \n
    ","FromIterator>","syn::error::Result"],["
    source§

    impl<T, E, F> FromResidual<Result<Infallible, E>> for Result<T, F>
    where\n F: From<E>,

    source§

    fn from_residual(residual: Result<Infallible, E>) -> Result<T, F>

    🔬This is a nightly-only experimental API. (try_trait_v2)
    Constructs the type from a compatible Residual type. Read more
    ","FromResidual>","syn::error::Result"],["
    source§

    impl<T, E, F> FromResidual<Yeet<E>> for Result<T, F>
    where\n F: From<E>,

    source§

    fn from_residual(_: Yeet<E>) -> Result<T, F>

    🔬This is a nightly-only experimental API. (try_trait_v2)
    Constructs the type from a compatible Residual type. Read more
    ","FromResidual>","syn::error::Result"],["
    1.0.0 · source§

    impl<T, E> Hash for Result<T, E>
    where\n T: Hash,\n E: Hash,

    source§

    fn hash<__H>(&self, state: &mut __H)
    where\n __H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where\n H: Hasher,\n Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    ","Hash","syn::error::Result"],["
    1.0.0 · source§

    impl<T, E> IntoIterator for Result<T, E>

    source§

    fn into_iter(self) -> IntoIter<T>

    Returns a consuming iterator over the possibly contained value.

    \n

    The iterator yields one value if the result is Result::Ok, otherwise none.

    \n
    §Examples
    \n
    let x: Result<u32, &str> = Ok(5);\nlet v: Vec<u32> = x.into_iter().collect();\nassert_eq!(v, [5]);\n\nlet x: Result<u32, &str> = Err(\"nothing!\");\nlet v: Vec<u32> = x.into_iter().collect();\nassert_eq!(v, []);
    \n
    source§

    type Item = T

    The type of the elements being iterated over.
    source§

    type IntoIter = IntoIter<T>

    Which kind of iterator are we turning this into?
    ","IntoIterator","syn::error::Result"],["
    1.0.0 · source§

    impl<T, E> Ord for Result<T, E>
    where\n T: Ord,\n E: Ord,

    source§

    fn cmp(&self, other: &Result<T, E>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where\n Self: Sized,

    Restrict a value to a certain interval. Read more
    ","Ord","syn::error::Result"],["
    1.0.0 · source§

    impl<T, E> PartialEq for Result<T, E>
    where\n T: PartialEq,\n E: PartialEq,

    source§

    fn eq(&self, other: &Result<T, E>) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
    ","PartialEq","syn::error::Result"],["
    1.0.0 · source§

    impl<T, E> PartialOrd for Result<T, E>
    where\n T: PartialOrd,\n E: PartialOrd,

    source§

    fn partial_cmp(&self, other: &Result<T, E>) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    Tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    Tests less than or equal to (for self and other) and is used by the\n<= operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    Tests greater than (for self and other) and is used by the >\noperator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    Tests greater than or equal to (for self and other) and is used by\nthe >= operator. Read more
    ","PartialOrd","syn::error::Result"],["
    1.16.0 · source§

    impl<T, U, E> Product<Result<U, E>> for Result<T, E>
    where\n T: Product<U>,

    source§

    fn product<I>(iter: I) -> Result<T, E>
    where\n I: Iterator<Item = Result<U, E>>,

    Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the product of all elements is returned.

    \n
    §Examples
    \n

    This multiplies each number in a vector of strings,\nif a string could not be parsed the operation returns Err:

    \n\n
    let nums = vec![\"5\", \"10\", \"1\", \"2\"];\nlet total: Result<usize, _> = nums.iter().map(|w| w.parse::<usize>()).product();\nassert_eq!(total, Ok(100));\nlet nums = vec![\"5\", \"10\", \"one\", \"2\"];\nlet total: Result<usize, _> = nums.iter().map(|w| w.parse::<usize>()).product();\nassert!(total.is_err());
    \n
    ","Product>","syn::error::Result"],["
    source§

    impl<T, E> Residual<T> for Result<Infallible, E>

    source§

    type TryType = Result<T, E>

    🔬This is a nightly-only experimental API. (try_trait_v2_residual)
    The “return” type of this meta-function.
    ","Residual","syn::error::Result"],["
    source§

    impl<T, E> Result<&T, E>

    1.59.0 (const: 1.83.0) · source

    pub const fn copied(self) -> Result<T, E>
    where\n T: Copy,

    Maps a Result<&T, E> to a Result<T, E> by copying the contents of the\nOk part.

    \n
    §Examples
    \n
    let val = 12;\nlet x: Result<&i32, i32> = Ok(&val);\nassert_eq!(x, Ok(&12));\nlet copied = x.copied();\nassert_eq!(copied, Ok(12));
    \n
    1.59.0 · source

    pub fn cloned(self) -> Result<T, E>
    where\n T: Clone,

    Maps a Result<&T, E> to a Result<T, E> by cloning the contents of the\nOk part.

    \n
    §Examples
    \n
    let val = 12;\nlet x: Result<&i32, i32> = Ok(&val);\nassert_eq!(x, Ok(&12));\nlet cloned = x.cloned();\nassert_eq!(cloned, Ok(12));
    \n
    ",0,"syn::error::Result"],["
    source§

    impl<T, E> Result<&mut T, E>

    1.59.0 (const: 1.83.0) · source

    pub const fn copied(self) -> Result<T, E>
    where\n T: Copy,

    Maps a Result<&mut T, E> to a Result<T, E> by copying the contents of the\nOk part.

    \n
    §Examples
    \n
    let mut val = 12;\nlet x: Result<&mut i32, i32> = Ok(&mut val);\nassert_eq!(x, Ok(&mut 12));\nlet copied = x.copied();\nassert_eq!(copied, Ok(12));
    \n
    1.59.0 · source

    pub fn cloned(self) -> Result<T, E>
    where\n T: Clone,

    Maps a Result<&mut T, E> to a Result<T, E> by cloning the contents of the\nOk part.

    \n
    §Examples
    \n
    let mut val = 12;\nlet x: Result<&mut i32, i32> = Ok(&mut val);\nassert_eq!(x, Ok(&mut 12));\nlet cloned = x.cloned();\nassert_eq!(cloned, Ok(12));
    \n
    ",0,"syn::error::Result"],["
    source§

    impl<T, E> Result<Option<T>, E>

    1.33.0 (const: 1.83.0) · source

    pub const fn transpose(self) -> Option<Result<T, E>>

    Transposes a Result of an Option into an Option of a Result.

    \n

    Ok(None) will be mapped to None.\nOk(Some(_)) and Err(_) will be mapped to Some(Ok(_)) and Some(Err(_)).

    \n
    §Examples
    \n
    #[derive(Debug, Eq, PartialEq)]\nstruct SomeErr;\n\nlet x: Result<Option<i32>, SomeErr> = Ok(Some(5));\nlet y: Option<Result<i32, SomeErr>> = Some(Ok(5));\nassert_eq!(x.transpose(), y);
    \n
    ",0,"syn::error::Result"],["
    source§

    impl<T, E> Result<Result<T, E>, E>

    source

    pub const fn flatten(self) -> Result<T, E>

    🔬This is a nightly-only experimental API. (result_flattening)

    Converts from Result<Result<T, E>, E> to Result<T, E>

    \n
    §Examples
    \n
    #![feature(result_flattening)]\nlet x: Result<Result<&'static str, u32>, u32> = Ok(Ok(\"hello\"));\nassert_eq!(Ok(\"hello\"), x.flatten());\n\nlet x: Result<Result<&'static str, u32>, u32> = Ok(Err(6));\nassert_eq!(Err(6), x.flatten());\n\nlet x: Result<Result<&'static str, u32>, u32> = Err(6);\nassert_eq!(Err(6), x.flatten());
    \n

    Flattening only removes one level of nesting at a time:

    \n\n
    #![feature(result_flattening)]\nlet x: Result<Result<Result<&'static str, u32>, u32>, u32> = Ok(Ok(Ok(\"hello\")));\nassert_eq!(Ok(Ok(\"hello\")), x.flatten());\nassert_eq!(Ok(\"hello\"), x.flatten().flatten());
    \n
    ",0,"syn::error::Result"],["
    source§

    impl<T, E> Result<T, E>

    1.0.0 (const: 1.48.0) · source

    pub const fn is_ok(&self) -> bool

    Returns true if the result is Ok.

    \n
    §Examples
    \n
    let x: Result<i32, &str> = Ok(-3);\nassert_eq!(x.is_ok(), true);\n\nlet x: Result<i32, &str> = Err(\"Some error message\");\nassert_eq!(x.is_ok(), false);
    \n
    1.70.0 · source

    pub fn is_ok_and(self, f: impl FnOnce(T) -> bool) -> bool

    Returns true if the result is Ok and the value inside of it matches a predicate.

    \n
    §Examples
    \n
    let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.is_ok_and(|x| x > 1), true);\n\nlet x: Result<u32, &str> = Ok(0);\nassert_eq!(x.is_ok_and(|x| x > 1), false);\n\nlet x: Result<u32, &str> = Err(\"hey\");\nassert_eq!(x.is_ok_and(|x| x > 1), false);
    \n
    1.0.0 (const: 1.48.0) · source

    pub const fn is_err(&self) -> bool

    Returns true if the result is Err.

    \n
    §Examples
    \n
    let x: Result<i32, &str> = Ok(-3);\nassert_eq!(x.is_err(), false);\n\nlet x: Result<i32, &str> = Err(\"Some error message\");\nassert_eq!(x.is_err(), true);
    \n
    1.70.0 · source

    pub fn is_err_and(self, f: impl FnOnce(E) -> bool) -> bool

    Returns true if the result is Err and the value inside of it matches a predicate.

    \n
    §Examples
    \n
    use std::io::{Error, ErrorKind};\n\nlet x: Result<u32, Error> = Err(Error::new(ErrorKind::NotFound, \"!\"));\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), true);\n\nlet x: Result<u32, Error> = Err(Error::new(ErrorKind::PermissionDenied, \"!\"));\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false);\n\nlet x: Result<u32, Error> = Ok(123);\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false);
    \n
    1.0.0 · source

    pub fn ok(self) -> Option<T>

    Converts from Result<T, E> to Option<T>.

    \n

    Converts self into an Option<T>, consuming self,\nand discarding the error, if any.

    \n
    §Examples
    \n
    let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.ok(), Some(2));\n\nlet x: Result<u32, &str> = Err(\"Nothing here\");\nassert_eq!(x.ok(), None);
    \n
    1.0.0 · source

    pub fn err(self) -> Option<E>

    Converts from Result<T, E> to Option<E>.

    \n

    Converts self into an Option<E>, consuming self,\nand discarding the success value, if any.

    \n
    §Examples
    \n
    let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.err(), None);\n\nlet x: Result<u32, &str> = Err(\"Nothing here\");\nassert_eq!(x.err(), Some(\"Nothing here\"));
    \n
    1.0.0 (const: 1.48.0) · source

    pub const fn as_ref(&self) -> Result<&T, &E>

    Converts from &Result<T, E> to Result<&T, &E>.

    \n

    Produces a new Result, containing a reference\ninto the original, leaving the original in place.

    \n
    §Examples
    \n
    let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.as_ref(), Ok(&2));\n\nlet x: Result<u32, &str> = Err(\"Error\");\nassert_eq!(x.as_ref(), Err(&\"Error\"));
    \n
    1.0.0 (const: 1.83.0) · source

    pub const fn as_mut(&mut self) -> Result<&mut T, &mut E>

    Converts from &mut Result<T, E> to Result<&mut T, &mut E>.

    \n
    §Examples
    \n
    fn mutate(r: &mut Result<i32, i32>) {\n    match r.as_mut() {\n        Ok(v) => *v = 42,\n        Err(e) => *e = 0,\n    }\n}\n\nlet mut x: Result<i32, i32> = Ok(2);\nmutate(&mut x);\nassert_eq!(x.unwrap(), 42);\n\nlet mut x: Result<i32, i32> = Err(13);\nmutate(&mut x);\nassert_eq!(x.unwrap_err(), 0);
    \n
    1.0.0 · source

    pub fn map<U, F>(self, op: F) -> Result<U, E>
    where\n F: FnOnce(T) -> U,

    Maps a Result<T, E> to Result<U, E> by applying a function to a\ncontained Ok value, leaving an Err value untouched.

    \n

    This function can be used to compose the results of two functions.

    \n
    §Examples
    \n

    Print the numbers on each line of a string multiplied by two.

    \n\n
    let line = \"1\\n2\\n3\\n4\\n\";\n\nfor num in line.lines() {\n    match num.parse::<i32>().map(|i| i * 2) {\n        Ok(n) => println!(\"{n}\"),\n        Err(..) => {}\n    }\n}
    \n
    1.41.0 · source

    pub fn map_or<U, F>(self, default: U, f: F) -> U
    where\n F: FnOnce(T) -> U,

    Returns the provided default (if Err), or\napplies a function to the contained value (if Ok).

    \n

    Arguments passed to map_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use map_or_else,\nwhich is lazily evaluated.

    \n
    §Examples
    \n
    let x: Result<_, &str> = Ok(\"foo\");\nassert_eq!(x.map_or(42, |v| v.len()), 3);\n\nlet x: Result<&str, _> = Err(\"bar\");\nassert_eq!(x.map_or(42, |v| v.len()), 42);
    \n
    1.41.0 · source

    pub fn map_or_else<U, D, F>(self, default: D, f: F) -> U
    where\n D: FnOnce(E) -> U,\n F: FnOnce(T) -> U,

    Maps a Result<T, E> to U by applying fallback function default to\na contained Err value, or function f to a contained Ok value.

    \n

    This function can be used to unpack a successful result\nwhile handling an error.

    \n
    §Examples
    \n
    let k = 21;\n\nlet x : Result<_, &str> = Ok(\"foo\");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 3);\n\nlet x : Result<&str, _> = Err(\"bar\");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 42);
    \n
    1.0.0 · source

    pub fn map_err<F, O>(self, op: O) -> Result<T, F>
    where\n O: FnOnce(E) -> F,

    Maps a Result<T, E> to Result<T, F> by applying a function to a\ncontained Err value, leaving an Ok value untouched.

    \n

    This function can be used to pass through a successful result while handling\nan error.

    \n
    §Examples
    \n
    fn stringify(x: u32) -> String { format!(\"error code: {x}\") }\n\nlet x: Result<u32, u32> = Ok(2);\nassert_eq!(x.map_err(stringify), Ok(2));\n\nlet x: Result<u32, u32> = Err(13);\nassert_eq!(x.map_err(stringify), Err(\"error code: 13\".to_string()));
    \n
    1.76.0 · source

    pub fn inspect<F>(self, f: F) -> Result<T, E>
    where\n F: FnOnce(&T),

    Calls a function with a reference to the contained value if Ok.

    \n

    Returns the original result.

    \n
    §Examples
    \n
    let x: u8 = \"4\"\n    .parse::<u8>()\n    .inspect(|x| println!(\"original: {x}\"))\n    .map(|x| x.pow(3))\n    .expect(\"failed to parse number\");
    \n
    1.76.0 · source

    pub fn inspect_err<F>(self, f: F) -> Result<T, E>
    where\n F: FnOnce(&E),

    Calls a function with a reference to the contained value if Err.

    \n

    Returns the original result.

    \n
    §Examples
    \n
    use std::{fs, io};\n\nfn read() -> io::Result<String> {\n    fs::read_to_string(\"address.txt\")\n        .inspect_err(|e| eprintln!(\"failed to read file: {e}\"))\n}
    \n
    1.47.0 · source

    pub fn as_deref(&self) -> Result<&<T as Deref>::Target, &E>
    where\n T: Deref,

    Converts from Result<T, E> (or &Result<T, E>) to Result<&<T as Deref>::Target, &E>.

    \n

    Coerces the Ok variant of the original Result via Deref\nand returns the new Result.

    \n
    §Examples
    \n
    let x: Result<String, u32> = Ok(\"hello\".to_string());\nlet y: Result<&str, &u32> = Ok(\"hello\");\nassert_eq!(x.as_deref(), y);\n\nlet x: Result<String, u32> = Err(42);\nlet y: Result<&str, &u32> = Err(&42);\nassert_eq!(x.as_deref(), y);
    \n
    1.47.0 · source

    pub fn as_deref_mut(&mut self) -> Result<&mut <T as Deref>::Target, &mut E>
    where\n T: DerefMut,

    Converts from Result<T, E> (or &mut Result<T, E>) to Result<&mut <T as DerefMut>::Target, &mut E>.

    \n

    Coerces the Ok variant of the original Result via DerefMut\nand returns the new Result.

    \n
    §Examples
    \n
    let mut s = \"HELLO\".to_string();\nlet mut x: Result<String, u32> = Ok(\"hello\".to_string());\nlet y: Result<&mut str, &mut u32> = Ok(&mut s);\nassert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);\n\nlet mut i = 42;\nlet mut x: Result<String, u32> = Err(42);\nlet y: Result<&mut str, &mut u32> = Err(&mut i);\nassert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);
    \n
    1.0.0 · source

    pub fn iter(&self) -> Iter<'_, T>

    Returns an iterator over the possibly contained value.

    \n

    The iterator yields one value if the result is Result::Ok, otherwise none.

    \n
    §Examples
    \n
    let x: Result<u32, &str> = Ok(7);\nassert_eq!(x.iter().next(), Some(&7));\n\nlet x: Result<u32, &str> = Err(\"nothing!\");\nassert_eq!(x.iter().next(), None);
    \n
    1.0.0 · source

    pub fn iter_mut(&mut self) -> IterMut<'_, T>

    Returns a mutable iterator over the possibly contained value.

    \n

    The iterator yields one value if the result is Result::Ok, otherwise none.

    \n
    §Examples
    \n
    let mut x: Result<u32, &str> = Ok(7);\nmatch x.iter_mut().next() {\n    Some(v) => *v = 40,\n    None => {},\n}\nassert_eq!(x, Ok(40));\n\nlet mut x: Result<u32, &str> = Err(\"nothing!\");\nassert_eq!(x.iter_mut().next(), None);
    \n
    1.4.0 · source

    pub fn expect(self, msg: &str) -> T
    where\n E: Debug,

    Returns the contained Ok value, consuming the self value.

    \n

    Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.

    \n
    §Panics
    \n

    Panics if the value is an Err, with a panic message including the\npassed message, and the content of the Err.

    \n
    §Examples
    \n
    let x: Result<u32, &str> = Err(\"emergency failure\");\nx.expect(\"Testing expect\"); // panics with `Testing expect: emergency failure`
    \n
    §Recommended Message Style
    \n

    We recommend that expect messages are used to describe the reason you\nexpect the Result should be Ok.

    \n\n
    let path = std::env::var(\"IMPORTANT_PATH\")\n    .expect(\"env variable `IMPORTANT_PATH` should be set by `wrapper_script.sh`\");
    \n

    Hint: If you’re having trouble remembering how to phrase expect\nerror messages remember to focus on the word “should” as in “env\nvariable should be set by blah” or “the given binary should be available\nand executable by the current user”.

    \n

    For more detail on expect message styles and the reasoning behind our recommendation please\nrefer to the section on “Common Message\nStyles” in the\nstd::error module docs.

    \n
    1.0.0 · source

    pub fn unwrap(self) -> T
    where\n E: Debug,

    Returns the contained Ok value, consuming the self value.

    \n

    Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.

    \n
    §Panics
    \n

    Panics if the value is an Err, with a panic message provided by the\nErr’s value.

    \n
    §Examples
    \n

    Basic usage:

    \n\n
    let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.unwrap(), 2);
    \n\n
    let x: Result<u32, &str> = Err(\"emergency failure\");\nx.unwrap(); // panics with `emergency failure`
    \n
    1.16.0 · source

    pub fn unwrap_or_default(self) -> T
    where\n T: Default,

    Returns the contained Ok value or a default

    \n

    Consumes the self argument then, if Ok, returns the contained\nvalue, otherwise if Err, returns the default value for that\ntype.

    \n
    §Examples
    \n

    Converts a string to an integer, turning poorly-formed strings\ninto 0 (the default value for integers). parse converts\na string to any other type that implements FromStr, returning an\nErr on error.

    \n\n
    let good_year_from_input = \"1909\";\nlet bad_year_from_input = \"190blarg\";\nlet good_year = good_year_from_input.parse().unwrap_or_default();\nlet bad_year = bad_year_from_input.parse().unwrap_or_default();\n\nassert_eq!(1909, good_year);\nassert_eq!(0, bad_year);
    \n
    1.17.0 · source

    pub fn expect_err(self, msg: &str) -> E
    where\n T: Debug,

    Returns the contained Err value, consuming the self value.

    \n
    §Panics
    \n

    Panics if the value is an Ok, with a panic message including the\npassed message, and the content of the Ok.

    \n
    §Examples
    \n
    let x: Result<u32, &str> = Ok(10);\nx.expect_err(\"Testing expect_err\"); // panics with `Testing expect_err: 10`
    \n
    1.0.0 · source

    pub fn unwrap_err(self) -> E
    where\n T: Debug,

    Returns the contained Err value, consuming the self value.

    \n
    §Panics
    \n

    Panics if the value is an Ok, with a custom panic message provided\nby the Ok’s value.

    \n
    §Examples
    \n
    let x: Result<u32, &str> = Ok(2);\nx.unwrap_err(); // panics with `2`
    \n\n
    let x: Result<u32, &str> = Err(\"emergency failure\");\nassert_eq!(x.unwrap_err(), \"emergency failure\");
    \n
    source

    pub fn into_ok(self) -> T
    where\n E: Into<!>,

    🔬This is a nightly-only experimental API. (unwrap_infallible)

    Returns the contained Ok value, but never panics.

    \n

    Unlike unwrap, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap as a maintainability safeguard that will fail\nto compile if the error type of the Result is later changed\nto an error that can actually occur.

    \n
    §Examples
    \n
    \nfn only_good_news() -> Result<String, !> {\n    Ok(\"this is fine\".into())\n}\n\nlet s: String = only_good_news().into_ok();\nprintln!(\"{s}\");
    \n
    source

    pub fn into_err(self) -> E
    where\n T: Into<!>,

    🔬This is a nightly-only experimental API. (unwrap_infallible)

    Returns the contained Err value, but never panics.

    \n

    Unlike unwrap_err, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap_err as a maintainability safeguard that will fail\nto compile if the ok type of the Result is later changed\nto a type that can actually occur.

    \n
    §Examples
    \n
    \nfn only_bad_news() -> Result<!, String> {\n    Err(\"Oops, it failed\".into())\n}\n\nlet error: String = only_bad_news().into_err();\nprintln!(\"{error}\");
    \n
    1.0.0 · source

    pub fn and<U>(self, res: Result<U, E>) -> Result<U, E>

    Returns res if the result is Ok, otherwise returns the Err value of self.

    \n

    Arguments passed to and are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use and_then, which is\nlazily evaluated.

    \n
    §Examples
    \n
    let x: Result<u32, &str> = Ok(2);\nlet y: Result<&str, &str> = Err(\"late error\");\nassert_eq!(x.and(y), Err(\"late error\"));\n\nlet x: Result<u32, &str> = Err(\"early error\");\nlet y: Result<&str, &str> = Ok(\"foo\");\nassert_eq!(x.and(y), Err(\"early error\"));\n\nlet x: Result<u32, &str> = Err(\"not a 2\");\nlet y: Result<&str, &str> = Err(\"late error\");\nassert_eq!(x.and(y), Err(\"not a 2\"));\n\nlet x: Result<u32, &str> = Ok(2);\nlet y: Result<&str, &str> = Ok(\"different result type\");\nassert_eq!(x.and(y), Ok(\"different result type\"));
    \n
    1.0.0 · source

    pub fn and_then<U, F>(self, op: F) -> Result<U, E>
    where\n F: FnOnce(T) -> Result<U, E>,

    Calls op if the result is Ok, otherwise returns the Err value of self.

    \n

    This function can be used for control flow based on Result values.

    \n
    §Examples
    \n
    fn sq_then_to_string(x: u32) -> Result<String, &'static str> {\n    x.checked_mul(x).map(|sq| sq.to_string()).ok_or(\"overflowed\")\n}\n\nassert_eq!(Ok(2).and_then(sq_then_to_string), Ok(4.to_string()));\nassert_eq!(Ok(1_000_000).and_then(sq_then_to_string), Err(\"overflowed\"));\nassert_eq!(Err(\"not a number\").and_then(sq_then_to_string), Err(\"not a number\"));
    \n

    Often used to chain fallible operations that may return Err.

    \n\n
    use std::{io::ErrorKind, path::Path};\n\n// Note: on Windows \"/\" maps to \"C:\\\"\nlet root_modified_time = Path::new(\"/\").metadata().and_then(|md| md.modified());\nassert!(root_modified_time.is_ok());\n\nlet should_fail = Path::new(\"/bad/path\").metadata().and_then(|md| md.modified());\nassert!(should_fail.is_err());\nassert_eq!(should_fail.unwrap_err().kind(), ErrorKind::NotFound);
    \n
    1.0.0 · source

    pub fn or<F>(self, res: Result<T, F>) -> Result<T, F>

    Returns res if the result is Err, otherwise returns the Ok value of self.

    \n

    Arguments passed to or are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use or_else, which is\nlazily evaluated.

    \n
    §Examples
    \n
    let x: Result<u32, &str> = Ok(2);\nlet y: Result<u32, &str> = Err(\"late error\");\nassert_eq!(x.or(y), Ok(2));\n\nlet x: Result<u32, &str> = Err(\"early error\");\nlet y: Result<u32, &str> = Ok(2);\nassert_eq!(x.or(y), Ok(2));\n\nlet x: Result<u32, &str> = Err(\"not a 2\");\nlet y: Result<u32, &str> = Err(\"late error\");\nassert_eq!(x.or(y), Err(\"late error\"));\n\nlet x: Result<u32, &str> = Ok(2);\nlet y: Result<u32, &str> = Ok(100);\nassert_eq!(x.or(y), Ok(2));
    \n
    1.0.0 · source

    pub fn or_else<F, O>(self, op: O) -> Result<T, F>
    where\n O: FnOnce(E) -> Result<T, F>,

    Calls op if the result is Err, otherwise returns the Ok value of self.

    \n

    This function can be used for control flow based on result values.

    \n
    §Examples
    \n
    fn sq(x: u32) -> Result<u32, u32> { Ok(x * x) }\nfn err(x: u32) -> Result<u32, u32> { Err(x) }\n\nassert_eq!(Ok(2).or_else(sq).or_else(sq), Ok(2));\nassert_eq!(Ok(2).or_else(err).or_else(sq), Ok(2));\nassert_eq!(Err(3).or_else(sq).or_else(err), Ok(9));\nassert_eq!(Err(3).or_else(err).or_else(err), Err(3));
    \n
    1.0.0 · source

    pub fn unwrap_or(self, default: T) -> T

    Returns the contained Ok value or a provided default.

    \n

    Arguments passed to unwrap_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use unwrap_or_else,\nwhich is lazily evaluated.

    \n
    §Examples
    \n
    let default = 2;\nlet x: Result<u32, &str> = Ok(9);\nassert_eq!(x.unwrap_or(default), 9);\n\nlet x: Result<u32, &str> = Err(\"error\");\nassert_eq!(x.unwrap_or(default), default);
    \n
    1.0.0 · source

    pub fn unwrap_or_else<F>(self, op: F) -> T
    where\n F: FnOnce(E) -> T,

    Returns the contained Ok value or computes it from a closure.

    \n
    §Examples
    \n
    fn count(x: &str) -> usize { x.len() }\n\nassert_eq!(Ok(2).unwrap_or_else(count), 2);\nassert_eq!(Err(\"foo\").unwrap_or_else(count), 3);
    \n
    1.58.0 · source

    pub unsafe fn unwrap_unchecked(self) -> T

    Returns the contained Ok value, consuming the self value,\nwithout checking that the value is not an Err.

    \n
    §Safety
    \n

    Calling this method on an Err is undefined behavior.

    \n
    §Examples
    \n
    let x: Result<u32, &str> = Ok(2);\nassert_eq!(unsafe { x.unwrap_unchecked() }, 2);
    \n\n
    let x: Result<u32, &str> = Err(\"emergency failure\");\nunsafe { x.unwrap_unchecked(); } // Undefined behavior!
    \n
    1.58.0 · source

    pub unsafe fn unwrap_err_unchecked(self) -> E

    Returns the contained Err value, consuming the self value,\nwithout checking that the value is not an Ok.

    \n
    §Safety
    \n

    Calling this method on an Ok is undefined behavior.

    \n
    §Examples
    \n
    let x: Result<u32, &str> = Ok(2);\nunsafe { x.unwrap_err_unchecked() }; // Undefined behavior!
    \n\n
    let x: Result<u32, &str> = Err(\"emergency failure\");\nassert_eq!(unsafe { x.unwrap_err_unchecked() }, \"emergency failure\");
    \n
    ",0,"syn::error::Result"],["
    1.16.0 · source§

    impl<T, U, E> Sum<Result<U, E>> for Result<T, E>
    where\n T: Sum<U>,

    source§

    fn sum<I>(iter: I) -> Result<T, E>
    where\n I: Iterator<Item = Result<U, E>>,

    Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the sum of all elements is returned.

    \n
    §Examples
    \n

    This sums up every integer in a vector, rejecting the sum if a negative\nelement is encountered:

    \n\n
    let f = |&x: &i32| if x < 0 { Err(\"Negative element found\") } else { Ok(x) };\nlet v = vec![1, 2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Ok(3));\nlet v = vec![1, -2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Err(\"Negative element found\"));
    \n
    ","Sum>","syn::error::Result"],["
    1.61.0 · source§

    impl<T, E> Termination for Result<T, E>
    where\n T: Termination,\n E: Debug,

    source§

    fn report(self) -> ExitCode

    Is called to get the representation of the value as status code.\nThis status code is returned to the operating system.
    ","Termination","syn::error::Result"],["
    source§

    impl<T, E> Try for Result<T, E>

    source§

    type Output = T

    🔬This is a nightly-only experimental API. (try_trait_v2)
    The type of the value produced by ? when not short-circuiting.
    source§

    type Residual = Result<Infallible, E>

    🔬This is a nightly-only experimental API. (try_trait_v2)
    The type of the value passed to FromResidual::from_residual\nas part of ? when short-circuiting. Read more
    source§

    fn from_output(output: <Result<T, E> as Try>::Output) -> Result<T, E>

    🔬This is a nightly-only experimental API. (try_trait_v2)
    Constructs the type from its Output type. Read more
    source§

    fn branch(\n self,\n) -> ControlFlow<<Result<T, E> as Try>::Residual, <Result<T, E> as Try>::Output>

    🔬This is a nightly-only experimental API. (try_trait_v2)
    Used in ? to decide whether the operator should produce a value\n(because this returned ControlFlow::Continue)\nor propagate a value back to the caller\n(because this returned ControlFlow::Break). Read more
    ","Try","syn::error::Result"],["
    1.0.0 · source§

    impl<T, E> Copy for Result<T, E>
    where\n T: Copy,\n E: Copy,

    ","Copy","syn::error::Result"],["
    1.0.0 · source§

    impl<T, E> Eq for Result<T, E>
    where\n T: Eq,\n E: Eq,

    ","Eq","syn::error::Result"],["
    1.0.0 · source§

    impl<T, E> StructuralPartialEq for Result<T, E>

    ","StructuralPartialEq","syn::error::Result"]]]]); + if (window.register_type_impls) { + window.register_type_impls(type_impls); + } else { + window.pending_type_impls = type_impls; + } +})() +//{"start":55,"fragment_lengths":[157277,159093]} \ No newline at end of file diff --git a/type.impl/flexiber/struct.TaggedValue.js b/type.impl/flexiber/struct.TaggedValue.js new file mode 100644 index 0000000..4fdbdad --- /dev/null +++ b/type.impl/flexiber/struct.TaggedValue.js @@ -0,0 +1,9 @@ +(function() { + var type_impls = Object.fromEntries([["flexiber",[["
    source§

    impl<V: Clone, T: Clone> Clone for TaggedValue<V, T>

    source§

    fn clone(&self) -> TaggedValue<V, T>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    ","Clone","flexiber::tagged::TaggedSlice"],["
    source§

    impl<V: Debug, T: Debug> Debug for TaggedValue<V, T>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    ","Debug","flexiber::tagged::TaggedSlice"],["
    source§

    impl<V: PartialEq, T: PartialEq> PartialEq for TaggedValue<V, T>

    source§

    fn eq(&self, other: &TaggedValue<V, T>) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
    ","PartialEq","flexiber::tagged::TaggedSlice"],["
    source§

    impl<V, T> TaggedValue<V, T>
    where\n T: Copy,

    source

    pub fn new(tag: T, value: V) -> Self

    source

    pub fn tag(&self) -> T

    ",0,"flexiber::tagged::TaggedSlice"],["
    source§

    impl<V: Copy, T: Copy> Copy for TaggedValue<V, T>

    ","Copy","flexiber::tagged::TaggedSlice"],["
    source§

    impl<V: Eq, T: Eq> Eq for TaggedValue<V, T>

    ","Eq","flexiber::tagged::TaggedSlice"],["
    source§

    impl<V, T> StructuralPartialEq for TaggedValue<V, T>

    ","StructuralPartialEq","flexiber::tagged::TaggedSlice"]]]]); + if (window.register_type_impls) { + window.register_type_impls(type_impls); + } else { + window.pending_type_impls = type_impls; + } +})() +//{"start":55,"fragment_lengths":[10633]} \ No newline at end of file diff --git a/type.impl/syn/parse/struct.ParseBuffer.js b/type.impl/syn/parse/struct.ParseBuffer.js new file mode 100644 index 0000000..a1672a8 --- /dev/null +++ b/type.impl/syn/parse/struct.ParseBuffer.js @@ -0,0 +1,9 @@ +(function() { + var type_impls = Object.fromEntries([["syn",[]]]); + if (window.register_type_impls) { + window.register_type_impls(type_impls); + } else { + window.pending_type_impls = type_impls; + } +})() +//{"start":55,"fragment_lengths":[10]} \ No newline at end of file diff --git a/unicode_ident/all.html b/unicode_ident/all.html index 80c8489..d23cee9 100644 --- a/unicode_ident/all.html +++ b/unicode_ident/all.html @@ -1 +1 @@ -List of all items in this crate

    List of all items

    Functions

    \ No newline at end of file +List of all items in this crate

    List of all items

    Functions

    \ No newline at end of file diff --git a/unicode_ident/fn.is_xid_continue.html b/unicode_ident/fn.is_xid_continue.html index 1d06b59..6f08959 100644 --- a/unicode_ident/fn.is_xid_continue.html +++ b/unicode_ident/fn.is_xid_continue.html @@ -1 +1 @@ -is_xid_continue in unicode_ident - Rust
    pub fn is_xid_continue(ch: char) -> bool
    \ No newline at end of file +is_xid_continue in unicode_ident - Rust
    unicode_ident

    Function is_xid_continue

    source
    pub fn is_xid_continue(ch: char) -> bool
    \ No newline at end of file diff --git a/unicode_ident/fn.is_xid_start.html b/unicode_ident/fn.is_xid_start.html index bece16b..e348999 100644 --- a/unicode_ident/fn.is_xid_start.html +++ b/unicode_ident/fn.is_xid_start.html @@ -1 +1 @@ -is_xid_start in unicode_ident - Rust
    pub fn is_xid_start(ch: char) -> bool
    \ No newline at end of file +is_xid_start in unicode_ident - Rust
    unicode_ident

    Function is_xid_start

    source
    pub fn is_xid_start(ch: char) -> bool
    \ No newline at end of file diff --git a/unicode_ident/index.html b/unicode_ident/index.html index 9ab46c1..95fb273 100644 --- a/unicode_ident/index.html +++ b/unicode_ident/index.html @@ -1,4 +1,4 @@ -unicode_ident - Rust

    Crate unicode_ident

    source ·
    Expand description

    githubcrates-iodocs-rs

    +unicode_ident - Rust

    Crate unicode_ident

    source
    Expand description

    githubcrates-iodocs-rs


    Implementation of Unicode Standard Annex #31 for determining which char values are valid in programming language identifiers.

    @@ -7,7 +7,7 @@ crate. This crate uses less static storage, and is able to classify both ASCII and non-ASCII codepoints with better performance, 2–10× faster than unicode-xid.


    -

    Comparison of performance

    +

    §Comparison of performance

    The following table shows a comparison between five Unicode identifier implementations.

      @@ -24,25 +24,25 @@ single char has the XID_Start or XID_Continue Unicode property, comparing across different ratios of ASCII to non-ASCII codepoints in the input data.

      - - - - + + + +
      static storage0% nonascii1%10%100% nonascii
      unicode-ident10.1 K0.96 ns0.95 ns1.09 ns1.55 ns
      unicode-xid11.5 K1.88 ns2.14 ns3.48 ns15.63 ns
      ucd-trie10.2 K1.29 ns1.28 ns1.36 ns2.15 ns
      fst139 K55.1 ns54.9 ns53.2 ns28.5 ns
      unicode-ident10.4 K0.96 ns0.95 ns1.09 ns1.55 ns
      unicode-xid11.8 K1.88 ns2.14 ns3.48 ns15.63 ns
      ucd-trie10.3 K1.29 ns1.28 ns1.36 ns2.15 ns
      fst144 K55.1 ns54.9 ns53.2 ns28.5 ns
      roaring66.1 K2.78 ns3.09 ns3.37 ns4.70 ns

      Source code for the benchmark is provided in the bench directory of this repo and may be repeated by running cargo criterion.


      -

      Comparison of data structures

      unicode-xid
      +

      §Comparison of data structures

      §unicode-xid

      They use a sorted array of character ranges, and do a binary search to look up whether a given character lands inside one of those ranges.

      static XID_Continue_table: [(char, char); 763] = [
      -    ('\u{30}', '\u{39}'),  // 0-9
      -    ('\u{41}', '\u{5a}'),  // A-Z
      +    ('\u{30}', '\u{39}'),  // 0-9
      +    ('\u{41}', '\u{5a}'),  // A-Z
           …
      -    ('\u{e0100}', '\u{e01ef}'),
      +    ('\u{e0100}', '\u{e01ef}'),
       ];

      The static storage used by this data structure scales with the number of contiguous ranges of identifier codepoints in Unicode. Every table entry @@ -68,18 +68,18 @@ possible to fit in 5 bytes or even 4 bytes by storing a low char and an extent, instead of low char and high char. I don’t expect that performance would improve much but this could be the most efficient for space across all the libraries, needing only about 7 K to store.

      -
      ucd-trie
      +
      §ucd-trie

      Their data structure is a compressed trie set specifically tailored for Unicode codepoints. The design is credited to Raph Levien in rust-lang/rust#33098.

      pub struct TrieSet {
      -    tree1_level1: &'static [u64; 32],
      -    tree2_level1: &'static [u8; 992],
      -    tree2_level2: &'static [u64],
      -    tree3_level1: &'static [u8; 256],
      -    tree3_level2: &'static [u8],
      -    tree3_level3: &'static [u64],
      +    tree1_level1: &'static [u64; 32],
      +    tree2_level1: &'static [u8; 992],
      +    tree2_level2: &'static [u64],
      +    tree3_level1: &'static [u8; 256],
      +    tree3_level2: &'static [u8],
      +    tree3_level3: &'static [u64],
       }

      It represents codepoint sets using a trie to achieve prefix compression. The final states of the trie are embedded in leaves or “chunks”, where each @@ -104,7 +104,7 @@ corresponding to the first character in the string. Without such an API, the caller is required to tokenize their UTF-8 encoded input data into char, hand the char into ucd-trie, only for ucd-trie to undo that work by converting back into the variable-length representation for trie traversal.

      -
      fst
      +
      §fst

      Uses a finite state transducer. This representation is built into ucd-generate but I am not aware of any advantage over the ucd-trie representation. In particular ucd-trie is optimized for storing Unicode @@ -114,7 +114,7 @@ and slow lookups for this use case relative to ucd-trie is that it not specialize for the fact that only 21 of the 32 bits in a char are meaningful. There are some dense arrays in the structure with large ranges that could never possibly be used.

      -
      roaring
      +
      §roaring

      This crate is a pure-Rust implementation of Roaring Bitmap, a data structure designed for storing sets of 32-bit unsigned integers.

      Roaring bitmaps are compressed bitmaps which tend to outperform conventional @@ -129,7 +129,7 @@ the data structure.

      C reference implementation of Roaring Bitmap. This crate was consistently about 15% slower than pure-Rust roaring, which could just be FFI overhead. I did not investigate further.

      -
      unicode-ident
      +
      §unicode-ident

      This crate is most similar to the ucd-trie library, in that it’s based on bitmaps stored in the leafs of a trie representation, achieving both prefix compression and suffix compression.

      @@ -172,4 +172,4 @@ not the same as using chunks which are half the size, because it does not necessitate raising the size of the trie’s first level.

      In contrast to binary search or the ucd-trie crate, performing lookups in this data structure is straight-line code with no need for branching.

      -

    Functions

    \ No newline at end of file +

    Functions§

    \ No newline at end of file diff --git a/unicode_xid/all.html b/unicode_xid/all.html deleted file mode 100644 index e34a130..0000000 --- a/unicode_xid/all.html +++ /dev/null @@ -1 +0,0 @@ -List of all items in this crate

    List of all items

    Traits

    Constants

    \ No newline at end of file diff --git a/unicode_xid/constant.UNICODE_VERSION.html b/unicode_xid/constant.UNICODE_VERSION.html deleted file mode 100644 index 88579eb..0000000 --- a/unicode_xid/constant.UNICODE_VERSION.html +++ /dev/null @@ -1,3 +0,0 @@ -UNICODE_VERSION in unicode_xid - Rust
    pub const UNICODE_VERSION: (u64, u64, u64);
    Expand description

    The version of Unicode -that this version of unicode-xid is based on.

    -
    \ No newline at end of file diff --git a/unicode_xid/index.html b/unicode_xid/index.html deleted file mode 100644 index b718775..0000000 --- a/unicode_xid/index.html +++ /dev/null @@ -1,16 +0,0 @@ -unicode_xid - Rust

    Crate unicode_xid

    source ·
    Expand description

    Determine if a char is a valid identifier for a parser and/or lexer according to -Unicode Standard Annex #31 rules.

    - -
    extern crate unicode_xid;
    -
    -use unicode_xid::UnicodeXID;
    -
    -fn main() {
    -    let ch = 'a';
    -    println!("Is {} a valid start of an identifier? {}", ch, UnicodeXID::is_xid_start(ch));
    -}
    -

    features

    -

    unicode-xid supports a no_std feature. This eliminates dependence -on std, and instead uses equivalent functions from core.

    -

    Constants

    Traits

    • Methods for determining if a character is a valid identifier character.
    \ No newline at end of file diff --git a/unicode_xid/sidebar-items.js b/unicode_xid/sidebar-items.js deleted file mode 100644 index 0a8b447..0000000 --- a/unicode_xid/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -window.SIDEBAR_ITEMS = {"constant":["UNICODE_VERSION"],"trait":["UnicodeXID"]}; \ No newline at end of file diff --git a/unicode_xid/tables/constant.UNICODE_VERSION.html b/unicode_xid/tables/constant.UNICODE_VERSION.html deleted file mode 100644 index 64c9df4..0000000 --- a/unicode_xid/tables/constant.UNICODE_VERSION.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

    Redirecting to ../../unicode_xid/constant.UNICODE_VERSION.html...

    - - - \ No newline at end of file diff --git a/unicode_xid/trait.UnicodeXID.html b/unicode_xid/trait.UnicodeXID.html deleted file mode 100644 index e2684f9..0000000 --- a/unicode_xid/trait.UnicodeXID.html +++ /dev/null @@ -1,16 +0,0 @@ -UnicodeXID in unicode_xid - Rust
    pub trait UnicodeXID {
    -    // Required methods
    -    fn is_xid_start(self) -> bool;
    -    fn is_xid_continue(self) -> bool;
    -}
    Expand description

    Methods for determining if a character is a valid identifier character.

    -

    Required Methods§

    source

    fn is_xid_start(self) -> bool

    Returns whether the specified character satisfies the ‘XID_Start’ -Unicode property.

    -

    ‘XID_Start’ is a Unicode Derived Property specified in -UAX #31, -mostly similar to ID_Start but modified for closure under NFKx.

    -
    source

    fn is_xid_continue(self) -> bool

    Returns whether the specified char satisfies the ‘XID_Continue’ -Unicode property.

    -

    ‘XID_Continue’ is a Unicode Derived Property specified in -UAX #31, -mostly similar to ‘ID_Continue’ but modified for closure under NFKx.

    -

    Implementations on Foreign Types§

    source§

    impl UnicodeXID for char

    Implementors§

    \ No newline at end of file