fold.rs 134 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904
  1. // SPDX-License-Identifier: Apache-2.0 OR MIT
  2. // This file is @generated by syn-internal-codegen.
  3. // It is not intended for manual editing.
  4. #![allow(unreachable_code, unused_variables)]
  5. #![allow(
  6. clippy::match_wildcard_for_single_variants,
  7. clippy::needless_match,
  8. clippy::needless_pass_by_ref_mut,
  9. )]
  10. #[cfg(feature = "full")]
  11. macro_rules! full {
  12. ($e:expr) => {
  13. $e
  14. };
  15. }
  16. #[cfg(all(feature = "derive", not(feature = "full")))]
  17. macro_rules! full {
  18. ($e:expr) => {
  19. unreachable!()
  20. };
  21. }
  22. /// Syntax tree traversal to transform the nodes of an owned syntax tree.
  23. ///
  24. /// See the [module documentation] for details.
  25. ///
  26. /// [module documentation]: self
  27. pub trait Fold {
  28. #[cfg(any(feature = "derive", feature = "full"))]
  29. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  30. fn fold_abi(&mut self, i: crate::Abi) -> crate::Abi {
  31. fold_abi(self, i)
  32. }
  33. #[cfg(any(feature = "derive", feature = "full"))]
  34. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  35. fn fold_angle_bracketed_generic_arguments(
  36. &mut self,
  37. i: crate::AngleBracketedGenericArguments,
  38. ) -> crate::AngleBracketedGenericArguments {
  39. fold_angle_bracketed_generic_arguments(self, i)
  40. }
  41. #[cfg(feature = "full")]
  42. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  43. fn fold_arm(&mut self, i: crate::Arm) -> crate::Arm {
  44. fold_arm(self, i)
  45. }
  46. #[cfg(any(feature = "derive", feature = "full"))]
  47. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  48. fn fold_assoc_const(&mut self, i: crate::AssocConst) -> crate::AssocConst {
  49. fold_assoc_const(self, i)
  50. }
  51. #[cfg(any(feature = "derive", feature = "full"))]
  52. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  53. fn fold_assoc_type(&mut self, i: crate::AssocType) -> crate::AssocType {
  54. fold_assoc_type(self, i)
  55. }
  56. #[cfg(any(feature = "derive", feature = "full"))]
  57. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  58. fn fold_attr_style(&mut self, i: crate::AttrStyle) -> crate::AttrStyle {
  59. fold_attr_style(self, i)
  60. }
  61. #[cfg(any(feature = "derive", feature = "full"))]
  62. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  63. fn fold_attribute(&mut self, i: crate::Attribute) -> crate::Attribute {
  64. fold_attribute(self, i)
  65. }
  66. #[cfg(any(feature = "derive", feature = "full"))]
  67. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  68. fn fold_attributes(&mut self, i: Vec<crate::Attribute>) -> Vec<crate::Attribute> {
  69. fold_vec(i, self, Self::fold_attribute)
  70. }
  71. #[cfg(any(feature = "derive", feature = "full"))]
  72. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  73. fn fold_bare_fn_arg(&mut self, i: crate::BareFnArg) -> crate::BareFnArg {
  74. fold_bare_fn_arg(self, i)
  75. }
  76. #[cfg(any(feature = "derive", feature = "full"))]
  77. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  78. fn fold_bare_variadic(&mut self, i: crate::BareVariadic) -> crate::BareVariadic {
  79. fold_bare_variadic(self, i)
  80. }
  81. #[cfg(any(feature = "derive", feature = "full"))]
  82. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  83. fn fold_bin_op(&mut self, i: crate::BinOp) -> crate::BinOp {
  84. fold_bin_op(self, i)
  85. }
  86. #[cfg(feature = "full")]
  87. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  88. fn fold_block(&mut self, i: crate::Block) -> crate::Block {
  89. fold_block(self, i)
  90. }
  91. #[cfg(any(feature = "derive", feature = "full"))]
  92. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  93. fn fold_bound_lifetimes(
  94. &mut self,
  95. i: crate::BoundLifetimes,
  96. ) -> crate::BoundLifetimes {
  97. fold_bound_lifetimes(self, i)
  98. }
  99. #[cfg(feature = "full")]
  100. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  101. fn fold_captured_param(&mut self, i: crate::CapturedParam) -> crate::CapturedParam {
  102. fold_captured_param(self, i)
  103. }
  104. #[cfg(any(feature = "derive", feature = "full"))]
  105. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  106. fn fold_const_param(&mut self, i: crate::ConstParam) -> crate::ConstParam {
  107. fold_const_param(self, i)
  108. }
  109. #[cfg(any(feature = "derive", feature = "full"))]
  110. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  111. fn fold_constraint(&mut self, i: crate::Constraint) -> crate::Constraint {
  112. fold_constraint(self, i)
  113. }
  114. #[cfg(feature = "derive")]
  115. #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
  116. fn fold_data(&mut self, i: crate::Data) -> crate::Data {
  117. fold_data(self, i)
  118. }
  119. #[cfg(feature = "derive")]
  120. #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
  121. fn fold_data_enum(&mut self, i: crate::DataEnum) -> crate::DataEnum {
  122. fold_data_enum(self, i)
  123. }
  124. #[cfg(feature = "derive")]
  125. #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
  126. fn fold_data_struct(&mut self, i: crate::DataStruct) -> crate::DataStruct {
  127. fold_data_struct(self, i)
  128. }
  129. #[cfg(feature = "derive")]
  130. #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
  131. fn fold_data_union(&mut self, i: crate::DataUnion) -> crate::DataUnion {
  132. fold_data_union(self, i)
  133. }
  134. #[cfg(feature = "derive")]
  135. #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
  136. fn fold_derive_input(&mut self, i: crate::DeriveInput) -> crate::DeriveInput {
  137. fold_derive_input(self, i)
  138. }
  139. #[cfg(any(feature = "derive", feature = "full"))]
  140. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  141. fn fold_expr(&mut self, i: crate::Expr) -> crate::Expr {
  142. fold_expr(self, i)
  143. }
  144. #[cfg(feature = "full")]
  145. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  146. fn fold_expr_array(&mut self, i: crate::ExprArray) -> crate::ExprArray {
  147. fold_expr_array(self, i)
  148. }
  149. #[cfg(feature = "full")]
  150. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  151. fn fold_expr_assign(&mut self, i: crate::ExprAssign) -> crate::ExprAssign {
  152. fold_expr_assign(self, i)
  153. }
  154. #[cfg(feature = "full")]
  155. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  156. fn fold_expr_async(&mut self, i: crate::ExprAsync) -> crate::ExprAsync {
  157. fold_expr_async(self, i)
  158. }
  159. #[cfg(feature = "full")]
  160. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  161. fn fold_expr_await(&mut self, i: crate::ExprAwait) -> crate::ExprAwait {
  162. fold_expr_await(self, i)
  163. }
  164. #[cfg(any(feature = "derive", feature = "full"))]
  165. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  166. fn fold_expr_binary(&mut self, i: crate::ExprBinary) -> crate::ExprBinary {
  167. fold_expr_binary(self, i)
  168. }
  169. #[cfg(feature = "full")]
  170. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  171. fn fold_expr_block(&mut self, i: crate::ExprBlock) -> crate::ExprBlock {
  172. fold_expr_block(self, i)
  173. }
  174. #[cfg(feature = "full")]
  175. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  176. fn fold_expr_break(&mut self, i: crate::ExprBreak) -> crate::ExprBreak {
  177. fold_expr_break(self, i)
  178. }
  179. #[cfg(any(feature = "derive", feature = "full"))]
  180. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  181. fn fold_expr_call(&mut self, i: crate::ExprCall) -> crate::ExprCall {
  182. fold_expr_call(self, i)
  183. }
  184. #[cfg(any(feature = "derive", feature = "full"))]
  185. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  186. fn fold_expr_cast(&mut self, i: crate::ExprCast) -> crate::ExprCast {
  187. fold_expr_cast(self, i)
  188. }
  189. #[cfg(feature = "full")]
  190. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  191. fn fold_expr_closure(&mut self, i: crate::ExprClosure) -> crate::ExprClosure {
  192. fold_expr_closure(self, i)
  193. }
  194. #[cfg(feature = "full")]
  195. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  196. fn fold_expr_const(&mut self, i: crate::ExprConst) -> crate::ExprConst {
  197. fold_expr_const(self, i)
  198. }
  199. #[cfg(feature = "full")]
  200. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  201. fn fold_expr_continue(&mut self, i: crate::ExprContinue) -> crate::ExprContinue {
  202. fold_expr_continue(self, i)
  203. }
  204. #[cfg(any(feature = "derive", feature = "full"))]
  205. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  206. fn fold_expr_field(&mut self, i: crate::ExprField) -> crate::ExprField {
  207. fold_expr_field(self, i)
  208. }
  209. #[cfg(feature = "full")]
  210. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  211. fn fold_expr_for_loop(&mut self, i: crate::ExprForLoop) -> crate::ExprForLoop {
  212. fold_expr_for_loop(self, i)
  213. }
  214. #[cfg(any(feature = "derive", feature = "full"))]
  215. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  216. fn fold_expr_group(&mut self, i: crate::ExprGroup) -> crate::ExprGroup {
  217. fold_expr_group(self, i)
  218. }
  219. #[cfg(feature = "full")]
  220. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  221. fn fold_expr_if(&mut self, i: crate::ExprIf) -> crate::ExprIf {
  222. fold_expr_if(self, i)
  223. }
  224. #[cfg(any(feature = "derive", feature = "full"))]
  225. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  226. fn fold_expr_index(&mut self, i: crate::ExprIndex) -> crate::ExprIndex {
  227. fold_expr_index(self, i)
  228. }
  229. #[cfg(feature = "full")]
  230. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  231. fn fold_expr_infer(&mut self, i: crate::ExprInfer) -> crate::ExprInfer {
  232. fold_expr_infer(self, i)
  233. }
  234. #[cfg(feature = "full")]
  235. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  236. fn fold_expr_let(&mut self, i: crate::ExprLet) -> crate::ExprLet {
  237. fold_expr_let(self, i)
  238. }
  239. #[cfg(any(feature = "derive", feature = "full"))]
  240. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  241. fn fold_expr_lit(&mut self, i: crate::ExprLit) -> crate::ExprLit {
  242. fold_expr_lit(self, i)
  243. }
  244. #[cfg(feature = "full")]
  245. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  246. fn fold_expr_loop(&mut self, i: crate::ExprLoop) -> crate::ExprLoop {
  247. fold_expr_loop(self, i)
  248. }
  249. #[cfg(any(feature = "derive", feature = "full"))]
  250. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  251. fn fold_expr_macro(&mut self, i: crate::ExprMacro) -> crate::ExprMacro {
  252. fold_expr_macro(self, i)
  253. }
  254. #[cfg(feature = "full")]
  255. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  256. fn fold_expr_match(&mut self, i: crate::ExprMatch) -> crate::ExprMatch {
  257. fold_expr_match(self, i)
  258. }
  259. #[cfg(any(feature = "derive", feature = "full"))]
  260. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  261. fn fold_expr_method_call(
  262. &mut self,
  263. i: crate::ExprMethodCall,
  264. ) -> crate::ExprMethodCall {
  265. fold_expr_method_call(self, i)
  266. }
  267. #[cfg(any(feature = "derive", feature = "full"))]
  268. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  269. fn fold_expr_paren(&mut self, i: crate::ExprParen) -> crate::ExprParen {
  270. fold_expr_paren(self, i)
  271. }
  272. #[cfg(any(feature = "derive", feature = "full"))]
  273. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  274. fn fold_expr_path(&mut self, i: crate::ExprPath) -> crate::ExprPath {
  275. fold_expr_path(self, i)
  276. }
  277. #[cfg(feature = "full")]
  278. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  279. fn fold_expr_range(&mut self, i: crate::ExprRange) -> crate::ExprRange {
  280. fold_expr_range(self, i)
  281. }
  282. #[cfg(feature = "full")]
  283. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  284. fn fold_expr_raw_addr(&mut self, i: crate::ExprRawAddr) -> crate::ExprRawAddr {
  285. fold_expr_raw_addr(self, i)
  286. }
  287. #[cfg(any(feature = "derive", feature = "full"))]
  288. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  289. fn fold_expr_reference(&mut self, i: crate::ExprReference) -> crate::ExprReference {
  290. fold_expr_reference(self, i)
  291. }
  292. #[cfg(feature = "full")]
  293. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  294. fn fold_expr_repeat(&mut self, i: crate::ExprRepeat) -> crate::ExprRepeat {
  295. fold_expr_repeat(self, i)
  296. }
  297. #[cfg(feature = "full")]
  298. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  299. fn fold_expr_return(&mut self, i: crate::ExprReturn) -> crate::ExprReturn {
  300. fold_expr_return(self, i)
  301. }
  302. #[cfg(any(feature = "derive", feature = "full"))]
  303. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  304. fn fold_expr_struct(&mut self, i: crate::ExprStruct) -> crate::ExprStruct {
  305. fold_expr_struct(self, i)
  306. }
  307. #[cfg(feature = "full")]
  308. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  309. fn fold_expr_try(&mut self, i: crate::ExprTry) -> crate::ExprTry {
  310. fold_expr_try(self, i)
  311. }
  312. #[cfg(feature = "full")]
  313. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  314. fn fold_expr_try_block(&mut self, i: crate::ExprTryBlock) -> crate::ExprTryBlock {
  315. fold_expr_try_block(self, i)
  316. }
  317. #[cfg(any(feature = "derive", feature = "full"))]
  318. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  319. fn fold_expr_tuple(&mut self, i: crate::ExprTuple) -> crate::ExprTuple {
  320. fold_expr_tuple(self, i)
  321. }
  322. #[cfg(any(feature = "derive", feature = "full"))]
  323. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  324. fn fold_expr_unary(&mut self, i: crate::ExprUnary) -> crate::ExprUnary {
  325. fold_expr_unary(self, i)
  326. }
  327. #[cfg(feature = "full")]
  328. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  329. fn fold_expr_unsafe(&mut self, i: crate::ExprUnsafe) -> crate::ExprUnsafe {
  330. fold_expr_unsafe(self, i)
  331. }
  332. #[cfg(feature = "full")]
  333. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  334. fn fold_expr_while(&mut self, i: crate::ExprWhile) -> crate::ExprWhile {
  335. fold_expr_while(self, i)
  336. }
  337. #[cfg(feature = "full")]
  338. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  339. fn fold_expr_yield(&mut self, i: crate::ExprYield) -> crate::ExprYield {
  340. fold_expr_yield(self, i)
  341. }
  342. #[cfg(any(feature = "derive", feature = "full"))]
  343. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  344. fn fold_field(&mut self, i: crate::Field) -> crate::Field {
  345. fold_field(self, i)
  346. }
  347. #[cfg(any(feature = "derive", feature = "full"))]
  348. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  349. fn fold_field_mutability(
  350. &mut self,
  351. i: crate::FieldMutability,
  352. ) -> crate::FieldMutability {
  353. fold_field_mutability(self, i)
  354. }
  355. #[cfg(feature = "full")]
  356. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  357. fn fold_field_pat(&mut self, i: crate::FieldPat) -> crate::FieldPat {
  358. fold_field_pat(self, i)
  359. }
  360. #[cfg(any(feature = "derive", feature = "full"))]
  361. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  362. fn fold_field_value(&mut self, i: crate::FieldValue) -> crate::FieldValue {
  363. fold_field_value(self, i)
  364. }
  365. #[cfg(any(feature = "derive", feature = "full"))]
  366. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  367. fn fold_fields(&mut self, i: crate::Fields) -> crate::Fields {
  368. fold_fields(self, i)
  369. }
  370. #[cfg(any(feature = "derive", feature = "full"))]
  371. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  372. fn fold_fields_named(&mut self, i: crate::FieldsNamed) -> crate::FieldsNamed {
  373. fold_fields_named(self, i)
  374. }
  375. #[cfg(any(feature = "derive", feature = "full"))]
  376. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  377. fn fold_fields_unnamed(&mut self, i: crate::FieldsUnnamed) -> crate::FieldsUnnamed {
  378. fold_fields_unnamed(self, i)
  379. }
  380. #[cfg(feature = "full")]
  381. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  382. fn fold_file(&mut self, i: crate::File) -> crate::File {
  383. fold_file(self, i)
  384. }
  385. #[cfg(feature = "full")]
  386. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  387. fn fold_fn_arg(&mut self, i: crate::FnArg) -> crate::FnArg {
  388. fold_fn_arg(self, i)
  389. }
  390. #[cfg(feature = "full")]
  391. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  392. fn fold_foreign_item(&mut self, i: crate::ForeignItem) -> crate::ForeignItem {
  393. fold_foreign_item(self, i)
  394. }
  395. #[cfg(feature = "full")]
  396. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  397. fn fold_foreign_item_fn(&mut self, i: crate::ForeignItemFn) -> crate::ForeignItemFn {
  398. fold_foreign_item_fn(self, i)
  399. }
  400. #[cfg(feature = "full")]
  401. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  402. fn fold_foreign_item_macro(
  403. &mut self,
  404. i: crate::ForeignItemMacro,
  405. ) -> crate::ForeignItemMacro {
  406. fold_foreign_item_macro(self, i)
  407. }
  408. #[cfg(feature = "full")]
  409. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  410. fn fold_foreign_item_static(
  411. &mut self,
  412. i: crate::ForeignItemStatic,
  413. ) -> crate::ForeignItemStatic {
  414. fold_foreign_item_static(self, i)
  415. }
  416. #[cfg(feature = "full")]
  417. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  418. fn fold_foreign_item_type(
  419. &mut self,
  420. i: crate::ForeignItemType,
  421. ) -> crate::ForeignItemType {
  422. fold_foreign_item_type(self, i)
  423. }
  424. #[cfg(any(feature = "derive", feature = "full"))]
  425. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  426. fn fold_generic_argument(
  427. &mut self,
  428. i: crate::GenericArgument,
  429. ) -> crate::GenericArgument {
  430. fold_generic_argument(self, i)
  431. }
  432. #[cfg(any(feature = "derive", feature = "full"))]
  433. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  434. fn fold_generic_param(&mut self, i: crate::GenericParam) -> crate::GenericParam {
  435. fold_generic_param(self, i)
  436. }
  437. #[cfg(any(feature = "derive", feature = "full"))]
  438. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  439. fn fold_generics(&mut self, i: crate::Generics) -> crate::Generics {
  440. fold_generics(self, i)
  441. }
  442. fn fold_ident(&mut self, i: proc_macro2::Ident) -> proc_macro2::Ident {
  443. fold_ident(self, i)
  444. }
  445. #[cfg(feature = "full")]
  446. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  447. fn fold_impl_item(&mut self, i: crate::ImplItem) -> crate::ImplItem {
  448. fold_impl_item(self, i)
  449. }
  450. #[cfg(feature = "full")]
  451. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  452. fn fold_impl_item_const(&mut self, i: crate::ImplItemConst) -> crate::ImplItemConst {
  453. fold_impl_item_const(self, i)
  454. }
  455. #[cfg(feature = "full")]
  456. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  457. fn fold_impl_item_fn(&mut self, i: crate::ImplItemFn) -> crate::ImplItemFn {
  458. fold_impl_item_fn(self, i)
  459. }
  460. #[cfg(feature = "full")]
  461. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  462. fn fold_impl_item_macro(&mut self, i: crate::ImplItemMacro) -> crate::ImplItemMacro {
  463. fold_impl_item_macro(self, i)
  464. }
  465. #[cfg(feature = "full")]
  466. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  467. fn fold_impl_item_type(&mut self, i: crate::ImplItemType) -> crate::ImplItemType {
  468. fold_impl_item_type(self, i)
  469. }
  470. #[cfg(feature = "full")]
  471. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  472. fn fold_impl_restriction(
  473. &mut self,
  474. i: crate::ImplRestriction,
  475. ) -> crate::ImplRestriction {
  476. fold_impl_restriction(self, i)
  477. }
  478. #[cfg(any(feature = "derive", feature = "full"))]
  479. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  480. fn fold_index(&mut self, i: crate::Index) -> crate::Index {
  481. fold_index(self, i)
  482. }
  483. #[cfg(feature = "full")]
  484. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  485. fn fold_item(&mut self, i: crate::Item) -> crate::Item {
  486. fold_item(self, i)
  487. }
  488. #[cfg(feature = "full")]
  489. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  490. fn fold_item_const(&mut self, i: crate::ItemConst) -> crate::ItemConst {
  491. fold_item_const(self, i)
  492. }
  493. #[cfg(feature = "full")]
  494. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  495. fn fold_item_enum(&mut self, i: crate::ItemEnum) -> crate::ItemEnum {
  496. fold_item_enum(self, i)
  497. }
  498. #[cfg(feature = "full")]
  499. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  500. fn fold_item_extern_crate(
  501. &mut self,
  502. i: crate::ItemExternCrate,
  503. ) -> crate::ItemExternCrate {
  504. fold_item_extern_crate(self, i)
  505. }
  506. #[cfg(feature = "full")]
  507. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  508. fn fold_item_fn(&mut self, i: crate::ItemFn) -> crate::ItemFn {
  509. fold_item_fn(self, i)
  510. }
  511. #[cfg(feature = "full")]
  512. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  513. fn fold_item_foreign_mod(
  514. &mut self,
  515. i: crate::ItemForeignMod,
  516. ) -> crate::ItemForeignMod {
  517. fold_item_foreign_mod(self, i)
  518. }
  519. #[cfg(feature = "full")]
  520. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  521. fn fold_item_impl(&mut self, i: crate::ItemImpl) -> crate::ItemImpl {
  522. fold_item_impl(self, i)
  523. }
  524. #[cfg(feature = "full")]
  525. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  526. fn fold_item_macro(&mut self, i: crate::ItemMacro) -> crate::ItemMacro {
  527. fold_item_macro(self, i)
  528. }
  529. #[cfg(feature = "full")]
  530. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  531. fn fold_item_mod(&mut self, i: crate::ItemMod) -> crate::ItemMod {
  532. fold_item_mod(self, i)
  533. }
  534. #[cfg(feature = "full")]
  535. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  536. fn fold_item_static(&mut self, i: crate::ItemStatic) -> crate::ItemStatic {
  537. fold_item_static(self, i)
  538. }
  539. #[cfg(feature = "full")]
  540. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  541. fn fold_item_struct(&mut self, i: crate::ItemStruct) -> crate::ItemStruct {
  542. fold_item_struct(self, i)
  543. }
  544. #[cfg(feature = "full")]
  545. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  546. fn fold_item_trait(&mut self, i: crate::ItemTrait) -> crate::ItemTrait {
  547. fold_item_trait(self, i)
  548. }
  549. #[cfg(feature = "full")]
  550. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  551. fn fold_item_trait_alias(
  552. &mut self,
  553. i: crate::ItemTraitAlias,
  554. ) -> crate::ItemTraitAlias {
  555. fold_item_trait_alias(self, i)
  556. }
  557. #[cfg(feature = "full")]
  558. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  559. fn fold_item_type(&mut self, i: crate::ItemType) -> crate::ItemType {
  560. fold_item_type(self, i)
  561. }
  562. #[cfg(feature = "full")]
  563. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  564. fn fold_item_union(&mut self, i: crate::ItemUnion) -> crate::ItemUnion {
  565. fold_item_union(self, i)
  566. }
  567. #[cfg(feature = "full")]
  568. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  569. fn fold_item_use(&mut self, i: crate::ItemUse) -> crate::ItemUse {
  570. fold_item_use(self, i)
  571. }
  572. #[cfg(feature = "full")]
  573. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  574. fn fold_label(&mut self, i: crate::Label) -> crate::Label {
  575. fold_label(self, i)
  576. }
  577. fn fold_lifetime(&mut self, i: crate::Lifetime) -> crate::Lifetime {
  578. fold_lifetime(self, i)
  579. }
  580. #[cfg(any(feature = "derive", feature = "full"))]
  581. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  582. fn fold_lifetime_param(&mut self, i: crate::LifetimeParam) -> crate::LifetimeParam {
  583. fold_lifetime_param(self, i)
  584. }
  585. fn fold_lit(&mut self, i: crate::Lit) -> crate::Lit {
  586. fold_lit(self, i)
  587. }
  588. fn fold_lit_bool(&mut self, i: crate::LitBool) -> crate::LitBool {
  589. fold_lit_bool(self, i)
  590. }
  591. fn fold_lit_byte(&mut self, i: crate::LitByte) -> crate::LitByte {
  592. fold_lit_byte(self, i)
  593. }
  594. fn fold_lit_byte_str(&mut self, i: crate::LitByteStr) -> crate::LitByteStr {
  595. fold_lit_byte_str(self, i)
  596. }
  597. fn fold_lit_cstr(&mut self, i: crate::LitCStr) -> crate::LitCStr {
  598. fold_lit_cstr(self, i)
  599. }
  600. fn fold_lit_char(&mut self, i: crate::LitChar) -> crate::LitChar {
  601. fold_lit_char(self, i)
  602. }
  603. fn fold_lit_float(&mut self, i: crate::LitFloat) -> crate::LitFloat {
  604. fold_lit_float(self, i)
  605. }
  606. fn fold_lit_int(&mut self, i: crate::LitInt) -> crate::LitInt {
  607. fold_lit_int(self, i)
  608. }
  609. fn fold_lit_str(&mut self, i: crate::LitStr) -> crate::LitStr {
  610. fold_lit_str(self, i)
  611. }
  612. #[cfg(feature = "full")]
  613. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  614. fn fold_local(&mut self, i: crate::Local) -> crate::Local {
  615. fold_local(self, i)
  616. }
  617. #[cfg(feature = "full")]
  618. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  619. fn fold_local_init(&mut self, i: crate::LocalInit) -> crate::LocalInit {
  620. fold_local_init(self, i)
  621. }
  622. #[cfg(any(feature = "derive", feature = "full"))]
  623. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  624. fn fold_macro(&mut self, i: crate::Macro) -> crate::Macro {
  625. fold_macro(self, i)
  626. }
  627. #[cfg(any(feature = "derive", feature = "full"))]
  628. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  629. fn fold_macro_delimiter(
  630. &mut self,
  631. i: crate::MacroDelimiter,
  632. ) -> crate::MacroDelimiter {
  633. fold_macro_delimiter(self, i)
  634. }
  635. #[cfg(any(feature = "derive", feature = "full"))]
  636. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  637. fn fold_member(&mut self, i: crate::Member) -> crate::Member {
  638. fold_member(self, i)
  639. }
  640. #[cfg(any(feature = "derive", feature = "full"))]
  641. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  642. fn fold_meta(&mut self, i: crate::Meta) -> crate::Meta {
  643. fold_meta(self, i)
  644. }
  645. #[cfg(any(feature = "derive", feature = "full"))]
  646. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  647. fn fold_meta_list(&mut self, i: crate::MetaList) -> crate::MetaList {
  648. fold_meta_list(self, i)
  649. }
  650. #[cfg(any(feature = "derive", feature = "full"))]
  651. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  652. fn fold_meta_name_value(&mut self, i: crate::MetaNameValue) -> crate::MetaNameValue {
  653. fold_meta_name_value(self, i)
  654. }
  655. #[cfg(any(feature = "derive", feature = "full"))]
  656. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  657. fn fold_parenthesized_generic_arguments(
  658. &mut self,
  659. i: crate::ParenthesizedGenericArguments,
  660. ) -> crate::ParenthesizedGenericArguments {
  661. fold_parenthesized_generic_arguments(self, i)
  662. }
  663. #[cfg(feature = "full")]
  664. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  665. fn fold_pat(&mut self, i: crate::Pat) -> crate::Pat {
  666. fold_pat(self, i)
  667. }
  668. #[cfg(feature = "full")]
  669. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  670. fn fold_pat_ident(&mut self, i: crate::PatIdent) -> crate::PatIdent {
  671. fold_pat_ident(self, i)
  672. }
  673. #[cfg(feature = "full")]
  674. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  675. fn fold_pat_or(&mut self, i: crate::PatOr) -> crate::PatOr {
  676. fold_pat_or(self, i)
  677. }
  678. #[cfg(feature = "full")]
  679. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  680. fn fold_pat_paren(&mut self, i: crate::PatParen) -> crate::PatParen {
  681. fold_pat_paren(self, i)
  682. }
  683. #[cfg(feature = "full")]
  684. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  685. fn fold_pat_reference(&mut self, i: crate::PatReference) -> crate::PatReference {
  686. fold_pat_reference(self, i)
  687. }
  688. #[cfg(feature = "full")]
  689. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  690. fn fold_pat_rest(&mut self, i: crate::PatRest) -> crate::PatRest {
  691. fold_pat_rest(self, i)
  692. }
  693. #[cfg(feature = "full")]
  694. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  695. fn fold_pat_slice(&mut self, i: crate::PatSlice) -> crate::PatSlice {
  696. fold_pat_slice(self, i)
  697. }
  698. #[cfg(feature = "full")]
  699. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  700. fn fold_pat_struct(&mut self, i: crate::PatStruct) -> crate::PatStruct {
  701. fold_pat_struct(self, i)
  702. }
  703. #[cfg(feature = "full")]
  704. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  705. fn fold_pat_tuple(&mut self, i: crate::PatTuple) -> crate::PatTuple {
  706. fold_pat_tuple(self, i)
  707. }
  708. #[cfg(feature = "full")]
  709. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  710. fn fold_pat_tuple_struct(
  711. &mut self,
  712. i: crate::PatTupleStruct,
  713. ) -> crate::PatTupleStruct {
  714. fold_pat_tuple_struct(self, i)
  715. }
  716. #[cfg(feature = "full")]
  717. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  718. fn fold_pat_type(&mut self, i: crate::PatType) -> crate::PatType {
  719. fold_pat_type(self, i)
  720. }
  721. #[cfg(feature = "full")]
  722. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  723. fn fold_pat_wild(&mut self, i: crate::PatWild) -> crate::PatWild {
  724. fold_pat_wild(self, i)
  725. }
  726. #[cfg(any(feature = "derive", feature = "full"))]
  727. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  728. fn fold_path(&mut self, i: crate::Path) -> crate::Path {
  729. fold_path(self, i)
  730. }
  731. #[cfg(any(feature = "derive", feature = "full"))]
  732. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  733. fn fold_path_arguments(&mut self, i: crate::PathArguments) -> crate::PathArguments {
  734. fold_path_arguments(self, i)
  735. }
  736. #[cfg(any(feature = "derive", feature = "full"))]
  737. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  738. fn fold_path_segment(&mut self, i: crate::PathSegment) -> crate::PathSegment {
  739. fold_path_segment(self, i)
  740. }
  741. #[cfg(feature = "full")]
  742. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  743. fn fold_pointer_mutability(
  744. &mut self,
  745. i: crate::PointerMutability,
  746. ) -> crate::PointerMutability {
  747. fold_pointer_mutability(self, i)
  748. }
  749. #[cfg(feature = "full")]
  750. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  751. fn fold_precise_capture(
  752. &mut self,
  753. i: crate::PreciseCapture,
  754. ) -> crate::PreciseCapture {
  755. fold_precise_capture(self, i)
  756. }
  757. #[cfg(any(feature = "derive", feature = "full"))]
  758. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  759. fn fold_predicate_lifetime(
  760. &mut self,
  761. i: crate::PredicateLifetime,
  762. ) -> crate::PredicateLifetime {
  763. fold_predicate_lifetime(self, i)
  764. }
  765. #[cfg(any(feature = "derive", feature = "full"))]
  766. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  767. fn fold_predicate_type(&mut self, i: crate::PredicateType) -> crate::PredicateType {
  768. fold_predicate_type(self, i)
  769. }
  770. #[cfg(any(feature = "derive", feature = "full"))]
  771. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  772. fn fold_qself(&mut self, i: crate::QSelf) -> crate::QSelf {
  773. fold_qself(self, i)
  774. }
  775. #[cfg(feature = "full")]
  776. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  777. fn fold_range_limits(&mut self, i: crate::RangeLimits) -> crate::RangeLimits {
  778. fold_range_limits(self, i)
  779. }
  780. #[cfg(feature = "full")]
  781. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  782. fn fold_receiver(&mut self, i: crate::Receiver) -> crate::Receiver {
  783. fold_receiver(self, i)
  784. }
  785. #[cfg(any(feature = "derive", feature = "full"))]
  786. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  787. fn fold_return_type(&mut self, i: crate::ReturnType) -> crate::ReturnType {
  788. fold_return_type(self, i)
  789. }
  790. #[cfg(feature = "full")]
  791. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  792. fn fold_signature(&mut self, i: crate::Signature) -> crate::Signature {
  793. fold_signature(self, i)
  794. }
  795. fn fold_span(&mut self, i: proc_macro2::Span) -> proc_macro2::Span {
  796. i
  797. }
  798. #[cfg(feature = "full")]
  799. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  800. fn fold_static_mutability(
  801. &mut self,
  802. i: crate::StaticMutability,
  803. ) -> crate::StaticMutability {
  804. fold_static_mutability(self, i)
  805. }
  806. #[cfg(feature = "full")]
  807. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  808. fn fold_stmt(&mut self, i: crate::Stmt) -> crate::Stmt {
  809. fold_stmt(self, i)
  810. }
  811. #[cfg(feature = "full")]
  812. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  813. fn fold_stmt_macro(&mut self, i: crate::StmtMacro) -> crate::StmtMacro {
  814. fold_stmt_macro(self, i)
  815. }
  816. fn fold_token_stream(
  817. &mut self,
  818. i: proc_macro2::TokenStream,
  819. ) -> proc_macro2::TokenStream {
  820. i
  821. }
  822. #[cfg(any(feature = "derive", feature = "full"))]
  823. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  824. fn fold_trait_bound(&mut self, i: crate::TraitBound) -> crate::TraitBound {
  825. fold_trait_bound(self, i)
  826. }
  827. #[cfg(any(feature = "derive", feature = "full"))]
  828. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  829. fn fold_trait_bound_modifier(
  830. &mut self,
  831. i: crate::TraitBoundModifier,
  832. ) -> crate::TraitBoundModifier {
  833. fold_trait_bound_modifier(self, i)
  834. }
  835. #[cfg(feature = "full")]
  836. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  837. fn fold_trait_item(&mut self, i: crate::TraitItem) -> crate::TraitItem {
  838. fold_trait_item(self, i)
  839. }
  840. #[cfg(feature = "full")]
  841. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  842. fn fold_trait_item_const(
  843. &mut self,
  844. i: crate::TraitItemConst,
  845. ) -> crate::TraitItemConst {
  846. fold_trait_item_const(self, i)
  847. }
  848. #[cfg(feature = "full")]
  849. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  850. fn fold_trait_item_fn(&mut self, i: crate::TraitItemFn) -> crate::TraitItemFn {
  851. fold_trait_item_fn(self, i)
  852. }
  853. #[cfg(feature = "full")]
  854. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  855. fn fold_trait_item_macro(
  856. &mut self,
  857. i: crate::TraitItemMacro,
  858. ) -> crate::TraitItemMacro {
  859. fold_trait_item_macro(self, i)
  860. }
  861. #[cfg(feature = "full")]
  862. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  863. fn fold_trait_item_type(&mut self, i: crate::TraitItemType) -> crate::TraitItemType {
  864. fold_trait_item_type(self, i)
  865. }
  866. #[cfg(any(feature = "derive", feature = "full"))]
  867. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  868. fn fold_type(&mut self, i: crate::Type) -> crate::Type {
  869. fold_type(self, i)
  870. }
  871. #[cfg(any(feature = "derive", feature = "full"))]
  872. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  873. fn fold_type_array(&mut self, i: crate::TypeArray) -> crate::TypeArray {
  874. fold_type_array(self, i)
  875. }
  876. #[cfg(any(feature = "derive", feature = "full"))]
  877. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  878. fn fold_type_bare_fn(&mut self, i: crate::TypeBareFn) -> crate::TypeBareFn {
  879. fold_type_bare_fn(self, i)
  880. }
  881. #[cfg(any(feature = "derive", feature = "full"))]
  882. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  883. fn fold_type_group(&mut self, i: crate::TypeGroup) -> crate::TypeGroup {
  884. fold_type_group(self, i)
  885. }
  886. #[cfg(any(feature = "derive", feature = "full"))]
  887. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  888. fn fold_type_impl_trait(&mut self, i: crate::TypeImplTrait) -> crate::TypeImplTrait {
  889. fold_type_impl_trait(self, i)
  890. }
  891. #[cfg(any(feature = "derive", feature = "full"))]
  892. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  893. fn fold_type_infer(&mut self, i: crate::TypeInfer) -> crate::TypeInfer {
  894. fold_type_infer(self, i)
  895. }
  896. #[cfg(any(feature = "derive", feature = "full"))]
  897. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  898. fn fold_type_macro(&mut self, i: crate::TypeMacro) -> crate::TypeMacro {
  899. fold_type_macro(self, i)
  900. }
  901. #[cfg(any(feature = "derive", feature = "full"))]
  902. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  903. fn fold_type_never(&mut self, i: crate::TypeNever) -> crate::TypeNever {
  904. fold_type_never(self, i)
  905. }
  906. #[cfg(any(feature = "derive", feature = "full"))]
  907. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  908. fn fold_type_param(&mut self, i: crate::TypeParam) -> crate::TypeParam {
  909. fold_type_param(self, i)
  910. }
  911. #[cfg(any(feature = "derive", feature = "full"))]
  912. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  913. fn fold_type_param_bound(
  914. &mut self,
  915. i: crate::TypeParamBound,
  916. ) -> crate::TypeParamBound {
  917. fold_type_param_bound(self, i)
  918. }
  919. #[cfg(any(feature = "derive", feature = "full"))]
  920. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  921. fn fold_type_paren(&mut self, i: crate::TypeParen) -> crate::TypeParen {
  922. fold_type_paren(self, i)
  923. }
  924. #[cfg(any(feature = "derive", feature = "full"))]
  925. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  926. fn fold_type_path(&mut self, i: crate::TypePath) -> crate::TypePath {
  927. fold_type_path(self, i)
  928. }
  929. #[cfg(any(feature = "derive", feature = "full"))]
  930. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  931. fn fold_type_ptr(&mut self, i: crate::TypePtr) -> crate::TypePtr {
  932. fold_type_ptr(self, i)
  933. }
  934. #[cfg(any(feature = "derive", feature = "full"))]
  935. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  936. fn fold_type_reference(&mut self, i: crate::TypeReference) -> crate::TypeReference {
  937. fold_type_reference(self, i)
  938. }
  939. #[cfg(any(feature = "derive", feature = "full"))]
  940. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  941. fn fold_type_slice(&mut self, i: crate::TypeSlice) -> crate::TypeSlice {
  942. fold_type_slice(self, i)
  943. }
  944. #[cfg(any(feature = "derive", feature = "full"))]
  945. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  946. fn fold_type_trait_object(
  947. &mut self,
  948. i: crate::TypeTraitObject,
  949. ) -> crate::TypeTraitObject {
  950. fold_type_trait_object(self, i)
  951. }
  952. #[cfg(any(feature = "derive", feature = "full"))]
  953. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  954. fn fold_type_tuple(&mut self, i: crate::TypeTuple) -> crate::TypeTuple {
  955. fold_type_tuple(self, i)
  956. }
  957. #[cfg(any(feature = "derive", feature = "full"))]
  958. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  959. fn fold_un_op(&mut self, i: crate::UnOp) -> crate::UnOp {
  960. fold_un_op(self, i)
  961. }
  962. #[cfg(feature = "full")]
  963. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  964. fn fold_use_glob(&mut self, i: crate::UseGlob) -> crate::UseGlob {
  965. fold_use_glob(self, i)
  966. }
  967. #[cfg(feature = "full")]
  968. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  969. fn fold_use_group(&mut self, i: crate::UseGroup) -> crate::UseGroup {
  970. fold_use_group(self, i)
  971. }
  972. #[cfg(feature = "full")]
  973. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  974. fn fold_use_name(&mut self, i: crate::UseName) -> crate::UseName {
  975. fold_use_name(self, i)
  976. }
  977. #[cfg(feature = "full")]
  978. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  979. fn fold_use_path(&mut self, i: crate::UsePath) -> crate::UsePath {
  980. fold_use_path(self, i)
  981. }
  982. #[cfg(feature = "full")]
  983. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  984. fn fold_use_rename(&mut self, i: crate::UseRename) -> crate::UseRename {
  985. fold_use_rename(self, i)
  986. }
  987. #[cfg(feature = "full")]
  988. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  989. fn fold_use_tree(&mut self, i: crate::UseTree) -> crate::UseTree {
  990. fold_use_tree(self, i)
  991. }
  992. #[cfg(feature = "full")]
  993. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  994. fn fold_variadic(&mut self, i: crate::Variadic) -> crate::Variadic {
  995. fold_variadic(self, i)
  996. }
  997. #[cfg(any(feature = "derive", feature = "full"))]
  998. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  999. fn fold_variant(&mut self, i: crate::Variant) -> crate::Variant {
  1000. fold_variant(self, i)
  1001. }
  1002. #[cfg(any(feature = "derive", feature = "full"))]
  1003. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1004. fn fold_vis_restricted(&mut self, i: crate::VisRestricted) -> crate::VisRestricted {
  1005. fold_vis_restricted(self, i)
  1006. }
  1007. #[cfg(any(feature = "derive", feature = "full"))]
  1008. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1009. fn fold_visibility(&mut self, i: crate::Visibility) -> crate::Visibility {
  1010. fold_visibility(self, i)
  1011. }
  1012. #[cfg(any(feature = "derive", feature = "full"))]
  1013. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1014. fn fold_where_clause(&mut self, i: crate::WhereClause) -> crate::WhereClause {
  1015. fold_where_clause(self, i)
  1016. }
  1017. #[cfg(any(feature = "derive", feature = "full"))]
  1018. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1019. fn fold_where_predicate(
  1020. &mut self,
  1021. i: crate::WherePredicate,
  1022. ) -> crate::WherePredicate {
  1023. fold_where_predicate(self, i)
  1024. }
  1025. }
  1026. #[cfg(any(feature = "derive", feature = "full"))]
  1027. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1028. pub fn fold_abi<F>(f: &mut F, node: crate::Abi) -> crate::Abi
  1029. where
  1030. F: Fold + ?Sized,
  1031. {
  1032. crate::Abi {
  1033. extern_token: node.extern_token,
  1034. name: (node.name).map(|it| f.fold_lit_str(it)),
  1035. }
  1036. }
  1037. #[cfg(any(feature = "derive", feature = "full"))]
  1038. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1039. pub fn fold_angle_bracketed_generic_arguments<F>(
  1040. f: &mut F,
  1041. node: crate::AngleBracketedGenericArguments,
  1042. ) -> crate::AngleBracketedGenericArguments
  1043. where
  1044. F: Fold + ?Sized,
  1045. {
  1046. crate::AngleBracketedGenericArguments {
  1047. colon2_token: node.colon2_token,
  1048. lt_token: node.lt_token,
  1049. args: crate::punctuated::fold(node.args, f, F::fold_generic_argument),
  1050. gt_token: node.gt_token,
  1051. }
  1052. }
  1053. #[cfg(feature = "full")]
  1054. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  1055. pub fn fold_arm<F>(f: &mut F, node: crate::Arm) -> crate::Arm
  1056. where
  1057. F: Fold + ?Sized,
  1058. {
  1059. crate::Arm {
  1060. attrs: f.fold_attributes(node.attrs),
  1061. pat: f.fold_pat(node.pat),
  1062. guard: (node.guard).map(|it| ((it).0, Box::new(f.fold_expr(*(it).1)))),
  1063. fat_arrow_token: node.fat_arrow_token,
  1064. body: Box::new(f.fold_expr(*node.body)),
  1065. comma: node.comma,
  1066. }
  1067. }
  1068. #[cfg(any(feature = "derive", feature = "full"))]
  1069. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1070. pub fn fold_assoc_const<F>(f: &mut F, node: crate::AssocConst) -> crate::AssocConst
  1071. where
  1072. F: Fold + ?Sized,
  1073. {
  1074. crate::AssocConst {
  1075. ident: f.fold_ident(node.ident),
  1076. generics: (node.generics).map(|it| f.fold_angle_bracketed_generic_arguments(it)),
  1077. eq_token: node.eq_token,
  1078. value: f.fold_expr(node.value),
  1079. }
  1080. }
  1081. #[cfg(any(feature = "derive", feature = "full"))]
  1082. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1083. pub fn fold_assoc_type<F>(f: &mut F, node: crate::AssocType) -> crate::AssocType
  1084. where
  1085. F: Fold + ?Sized,
  1086. {
  1087. crate::AssocType {
  1088. ident: f.fold_ident(node.ident),
  1089. generics: (node.generics).map(|it| f.fold_angle_bracketed_generic_arguments(it)),
  1090. eq_token: node.eq_token,
  1091. ty: f.fold_type(node.ty),
  1092. }
  1093. }
  1094. #[cfg(any(feature = "derive", feature = "full"))]
  1095. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1096. pub fn fold_attr_style<F>(f: &mut F, node: crate::AttrStyle) -> crate::AttrStyle
  1097. where
  1098. F: Fold + ?Sized,
  1099. {
  1100. match node {
  1101. crate::AttrStyle::Outer => crate::AttrStyle::Outer,
  1102. crate::AttrStyle::Inner(_binding_0) => crate::AttrStyle::Inner(_binding_0),
  1103. }
  1104. }
  1105. #[cfg(any(feature = "derive", feature = "full"))]
  1106. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1107. pub fn fold_attribute<F>(f: &mut F, node: crate::Attribute) -> crate::Attribute
  1108. where
  1109. F: Fold + ?Sized,
  1110. {
  1111. crate::Attribute {
  1112. pound_token: node.pound_token,
  1113. style: f.fold_attr_style(node.style),
  1114. bracket_token: node.bracket_token,
  1115. meta: f.fold_meta(node.meta),
  1116. }
  1117. }
  1118. #[cfg(any(feature = "derive", feature = "full"))]
  1119. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1120. pub fn fold_bare_fn_arg<F>(f: &mut F, node: crate::BareFnArg) -> crate::BareFnArg
  1121. where
  1122. F: Fold + ?Sized,
  1123. {
  1124. crate::BareFnArg {
  1125. attrs: f.fold_attributes(node.attrs),
  1126. name: (node.name).map(|it| (f.fold_ident((it).0), (it).1)),
  1127. ty: f.fold_type(node.ty),
  1128. }
  1129. }
  1130. #[cfg(any(feature = "derive", feature = "full"))]
  1131. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1132. pub fn fold_bare_variadic<F>(f: &mut F, node: crate::BareVariadic) -> crate::BareVariadic
  1133. where
  1134. F: Fold + ?Sized,
  1135. {
  1136. crate::BareVariadic {
  1137. attrs: f.fold_attributes(node.attrs),
  1138. name: (node.name).map(|it| (f.fold_ident((it).0), (it).1)),
  1139. dots: node.dots,
  1140. comma: node.comma,
  1141. }
  1142. }
  1143. #[cfg(any(feature = "derive", feature = "full"))]
  1144. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1145. pub fn fold_bin_op<F>(f: &mut F, node: crate::BinOp) -> crate::BinOp
  1146. where
  1147. F: Fold + ?Sized,
  1148. {
  1149. match node {
  1150. crate::BinOp::Add(_binding_0) => crate::BinOp::Add(_binding_0),
  1151. crate::BinOp::Sub(_binding_0) => crate::BinOp::Sub(_binding_0),
  1152. crate::BinOp::Mul(_binding_0) => crate::BinOp::Mul(_binding_0),
  1153. crate::BinOp::Div(_binding_0) => crate::BinOp::Div(_binding_0),
  1154. crate::BinOp::Rem(_binding_0) => crate::BinOp::Rem(_binding_0),
  1155. crate::BinOp::And(_binding_0) => crate::BinOp::And(_binding_0),
  1156. crate::BinOp::Or(_binding_0) => crate::BinOp::Or(_binding_0),
  1157. crate::BinOp::BitXor(_binding_0) => crate::BinOp::BitXor(_binding_0),
  1158. crate::BinOp::BitAnd(_binding_0) => crate::BinOp::BitAnd(_binding_0),
  1159. crate::BinOp::BitOr(_binding_0) => crate::BinOp::BitOr(_binding_0),
  1160. crate::BinOp::Shl(_binding_0) => crate::BinOp::Shl(_binding_0),
  1161. crate::BinOp::Shr(_binding_0) => crate::BinOp::Shr(_binding_0),
  1162. crate::BinOp::Eq(_binding_0) => crate::BinOp::Eq(_binding_0),
  1163. crate::BinOp::Lt(_binding_0) => crate::BinOp::Lt(_binding_0),
  1164. crate::BinOp::Le(_binding_0) => crate::BinOp::Le(_binding_0),
  1165. crate::BinOp::Ne(_binding_0) => crate::BinOp::Ne(_binding_0),
  1166. crate::BinOp::Ge(_binding_0) => crate::BinOp::Ge(_binding_0),
  1167. crate::BinOp::Gt(_binding_0) => crate::BinOp::Gt(_binding_0),
  1168. crate::BinOp::AddAssign(_binding_0) => crate::BinOp::AddAssign(_binding_0),
  1169. crate::BinOp::SubAssign(_binding_0) => crate::BinOp::SubAssign(_binding_0),
  1170. crate::BinOp::MulAssign(_binding_0) => crate::BinOp::MulAssign(_binding_0),
  1171. crate::BinOp::DivAssign(_binding_0) => crate::BinOp::DivAssign(_binding_0),
  1172. crate::BinOp::RemAssign(_binding_0) => crate::BinOp::RemAssign(_binding_0),
  1173. crate::BinOp::BitXorAssign(_binding_0) => crate::BinOp::BitXorAssign(_binding_0),
  1174. crate::BinOp::BitAndAssign(_binding_0) => crate::BinOp::BitAndAssign(_binding_0),
  1175. crate::BinOp::BitOrAssign(_binding_0) => crate::BinOp::BitOrAssign(_binding_0),
  1176. crate::BinOp::ShlAssign(_binding_0) => crate::BinOp::ShlAssign(_binding_0),
  1177. crate::BinOp::ShrAssign(_binding_0) => crate::BinOp::ShrAssign(_binding_0),
  1178. }
  1179. }
  1180. #[cfg(feature = "full")]
  1181. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  1182. pub fn fold_block<F>(f: &mut F, node: crate::Block) -> crate::Block
  1183. where
  1184. F: Fold + ?Sized,
  1185. {
  1186. crate::Block {
  1187. brace_token: node.brace_token,
  1188. stmts: fold_vec(node.stmts, f, F::fold_stmt),
  1189. }
  1190. }
  1191. #[cfg(any(feature = "derive", feature = "full"))]
  1192. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1193. pub fn fold_bound_lifetimes<F>(
  1194. f: &mut F,
  1195. node: crate::BoundLifetimes,
  1196. ) -> crate::BoundLifetimes
  1197. where
  1198. F: Fold + ?Sized,
  1199. {
  1200. crate::BoundLifetimes {
  1201. for_token: node.for_token,
  1202. lt_token: node.lt_token,
  1203. lifetimes: crate::punctuated::fold(node.lifetimes, f, F::fold_generic_param),
  1204. gt_token: node.gt_token,
  1205. }
  1206. }
  1207. #[cfg(feature = "full")]
  1208. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  1209. pub fn fold_captured_param<F>(
  1210. f: &mut F,
  1211. node: crate::CapturedParam,
  1212. ) -> crate::CapturedParam
  1213. where
  1214. F: Fold + ?Sized,
  1215. {
  1216. match node {
  1217. crate::CapturedParam::Lifetime(_binding_0) => {
  1218. crate::CapturedParam::Lifetime(f.fold_lifetime(_binding_0))
  1219. }
  1220. crate::CapturedParam::Ident(_binding_0) => {
  1221. crate::CapturedParam::Ident(f.fold_ident(_binding_0))
  1222. }
  1223. }
  1224. }
  1225. #[cfg(any(feature = "derive", feature = "full"))]
  1226. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1227. pub fn fold_const_param<F>(f: &mut F, node: crate::ConstParam) -> crate::ConstParam
  1228. where
  1229. F: Fold + ?Sized,
  1230. {
  1231. crate::ConstParam {
  1232. attrs: f.fold_attributes(node.attrs),
  1233. const_token: node.const_token,
  1234. ident: f.fold_ident(node.ident),
  1235. colon_token: node.colon_token,
  1236. ty: f.fold_type(node.ty),
  1237. eq_token: node.eq_token,
  1238. default: (node.default).map(|it| f.fold_expr(it)),
  1239. }
  1240. }
  1241. #[cfg(any(feature = "derive", feature = "full"))]
  1242. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1243. pub fn fold_constraint<F>(f: &mut F, node: crate::Constraint) -> crate::Constraint
  1244. where
  1245. F: Fold + ?Sized,
  1246. {
  1247. crate::Constraint {
  1248. ident: f.fold_ident(node.ident),
  1249. generics: (node.generics).map(|it| f.fold_angle_bracketed_generic_arguments(it)),
  1250. colon_token: node.colon_token,
  1251. bounds: crate::punctuated::fold(node.bounds, f, F::fold_type_param_bound),
  1252. }
  1253. }
  1254. #[cfg(feature = "derive")]
  1255. #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
  1256. pub fn fold_data<F>(f: &mut F, node: crate::Data) -> crate::Data
  1257. where
  1258. F: Fold + ?Sized,
  1259. {
  1260. match node {
  1261. crate::Data::Struct(_binding_0) => {
  1262. crate::Data::Struct(f.fold_data_struct(_binding_0))
  1263. }
  1264. crate::Data::Enum(_binding_0) => crate::Data::Enum(f.fold_data_enum(_binding_0)),
  1265. crate::Data::Union(_binding_0) => {
  1266. crate::Data::Union(f.fold_data_union(_binding_0))
  1267. }
  1268. }
  1269. }
  1270. #[cfg(feature = "derive")]
  1271. #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
  1272. pub fn fold_data_enum<F>(f: &mut F, node: crate::DataEnum) -> crate::DataEnum
  1273. where
  1274. F: Fold + ?Sized,
  1275. {
  1276. crate::DataEnum {
  1277. enum_token: node.enum_token,
  1278. brace_token: node.brace_token,
  1279. variants: crate::punctuated::fold(node.variants, f, F::fold_variant),
  1280. }
  1281. }
  1282. #[cfg(feature = "derive")]
  1283. #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
  1284. pub fn fold_data_struct<F>(f: &mut F, node: crate::DataStruct) -> crate::DataStruct
  1285. where
  1286. F: Fold + ?Sized,
  1287. {
  1288. crate::DataStruct {
  1289. struct_token: node.struct_token,
  1290. fields: f.fold_fields(node.fields),
  1291. semi_token: node.semi_token,
  1292. }
  1293. }
  1294. #[cfg(feature = "derive")]
  1295. #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
  1296. pub fn fold_data_union<F>(f: &mut F, node: crate::DataUnion) -> crate::DataUnion
  1297. where
  1298. F: Fold + ?Sized,
  1299. {
  1300. crate::DataUnion {
  1301. union_token: node.union_token,
  1302. fields: f.fold_fields_named(node.fields),
  1303. }
  1304. }
  1305. #[cfg(feature = "derive")]
  1306. #[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
  1307. pub fn fold_derive_input<F>(f: &mut F, node: crate::DeriveInput) -> crate::DeriveInput
  1308. where
  1309. F: Fold + ?Sized,
  1310. {
  1311. crate::DeriveInput {
  1312. attrs: f.fold_attributes(node.attrs),
  1313. vis: f.fold_visibility(node.vis),
  1314. ident: f.fold_ident(node.ident),
  1315. generics: f.fold_generics(node.generics),
  1316. data: f.fold_data(node.data),
  1317. }
  1318. }
  1319. #[cfg(any(feature = "derive", feature = "full"))]
  1320. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1321. pub fn fold_expr<F>(f: &mut F, node: crate::Expr) -> crate::Expr
  1322. where
  1323. F: Fold + ?Sized,
  1324. {
  1325. match node {
  1326. crate::Expr::Array(_binding_0) => {
  1327. crate::Expr::Array(full!(f.fold_expr_array(_binding_0)))
  1328. }
  1329. crate::Expr::Assign(_binding_0) => {
  1330. crate::Expr::Assign(full!(f.fold_expr_assign(_binding_0)))
  1331. }
  1332. crate::Expr::Async(_binding_0) => {
  1333. crate::Expr::Async(full!(f.fold_expr_async(_binding_0)))
  1334. }
  1335. crate::Expr::Await(_binding_0) => {
  1336. crate::Expr::Await(full!(f.fold_expr_await(_binding_0)))
  1337. }
  1338. crate::Expr::Binary(_binding_0) => {
  1339. crate::Expr::Binary(f.fold_expr_binary(_binding_0))
  1340. }
  1341. crate::Expr::Block(_binding_0) => {
  1342. crate::Expr::Block(full!(f.fold_expr_block(_binding_0)))
  1343. }
  1344. crate::Expr::Break(_binding_0) => {
  1345. crate::Expr::Break(full!(f.fold_expr_break(_binding_0)))
  1346. }
  1347. crate::Expr::Call(_binding_0) => crate::Expr::Call(f.fold_expr_call(_binding_0)),
  1348. crate::Expr::Cast(_binding_0) => crate::Expr::Cast(f.fold_expr_cast(_binding_0)),
  1349. crate::Expr::Closure(_binding_0) => {
  1350. crate::Expr::Closure(full!(f.fold_expr_closure(_binding_0)))
  1351. }
  1352. crate::Expr::Const(_binding_0) => {
  1353. crate::Expr::Const(full!(f.fold_expr_const(_binding_0)))
  1354. }
  1355. crate::Expr::Continue(_binding_0) => {
  1356. crate::Expr::Continue(full!(f.fold_expr_continue(_binding_0)))
  1357. }
  1358. crate::Expr::Field(_binding_0) => {
  1359. crate::Expr::Field(f.fold_expr_field(_binding_0))
  1360. }
  1361. crate::Expr::ForLoop(_binding_0) => {
  1362. crate::Expr::ForLoop(full!(f.fold_expr_for_loop(_binding_0)))
  1363. }
  1364. crate::Expr::Group(_binding_0) => {
  1365. crate::Expr::Group(f.fold_expr_group(_binding_0))
  1366. }
  1367. crate::Expr::If(_binding_0) => crate::Expr::If(full!(f.fold_expr_if(_binding_0))),
  1368. crate::Expr::Index(_binding_0) => {
  1369. crate::Expr::Index(f.fold_expr_index(_binding_0))
  1370. }
  1371. crate::Expr::Infer(_binding_0) => {
  1372. crate::Expr::Infer(full!(f.fold_expr_infer(_binding_0)))
  1373. }
  1374. crate::Expr::Let(_binding_0) => {
  1375. crate::Expr::Let(full!(f.fold_expr_let(_binding_0)))
  1376. }
  1377. crate::Expr::Lit(_binding_0) => crate::Expr::Lit(f.fold_expr_lit(_binding_0)),
  1378. crate::Expr::Loop(_binding_0) => {
  1379. crate::Expr::Loop(full!(f.fold_expr_loop(_binding_0)))
  1380. }
  1381. crate::Expr::Macro(_binding_0) => {
  1382. crate::Expr::Macro(f.fold_expr_macro(_binding_0))
  1383. }
  1384. crate::Expr::Match(_binding_0) => {
  1385. crate::Expr::Match(full!(f.fold_expr_match(_binding_0)))
  1386. }
  1387. crate::Expr::MethodCall(_binding_0) => {
  1388. crate::Expr::MethodCall(f.fold_expr_method_call(_binding_0))
  1389. }
  1390. crate::Expr::Paren(_binding_0) => {
  1391. crate::Expr::Paren(f.fold_expr_paren(_binding_0))
  1392. }
  1393. crate::Expr::Path(_binding_0) => crate::Expr::Path(f.fold_expr_path(_binding_0)),
  1394. crate::Expr::Range(_binding_0) => {
  1395. crate::Expr::Range(full!(f.fold_expr_range(_binding_0)))
  1396. }
  1397. crate::Expr::RawAddr(_binding_0) => {
  1398. crate::Expr::RawAddr(full!(f.fold_expr_raw_addr(_binding_0)))
  1399. }
  1400. crate::Expr::Reference(_binding_0) => {
  1401. crate::Expr::Reference(f.fold_expr_reference(_binding_0))
  1402. }
  1403. crate::Expr::Repeat(_binding_0) => {
  1404. crate::Expr::Repeat(full!(f.fold_expr_repeat(_binding_0)))
  1405. }
  1406. crate::Expr::Return(_binding_0) => {
  1407. crate::Expr::Return(full!(f.fold_expr_return(_binding_0)))
  1408. }
  1409. crate::Expr::Struct(_binding_0) => {
  1410. crate::Expr::Struct(f.fold_expr_struct(_binding_0))
  1411. }
  1412. crate::Expr::Try(_binding_0) => {
  1413. crate::Expr::Try(full!(f.fold_expr_try(_binding_0)))
  1414. }
  1415. crate::Expr::TryBlock(_binding_0) => {
  1416. crate::Expr::TryBlock(full!(f.fold_expr_try_block(_binding_0)))
  1417. }
  1418. crate::Expr::Tuple(_binding_0) => {
  1419. crate::Expr::Tuple(f.fold_expr_tuple(_binding_0))
  1420. }
  1421. crate::Expr::Unary(_binding_0) => {
  1422. crate::Expr::Unary(f.fold_expr_unary(_binding_0))
  1423. }
  1424. crate::Expr::Unsafe(_binding_0) => {
  1425. crate::Expr::Unsafe(full!(f.fold_expr_unsafe(_binding_0)))
  1426. }
  1427. crate::Expr::Verbatim(_binding_0) => {
  1428. crate::Expr::Verbatim(f.fold_token_stream(_binding_0))
  1429. }
  1430. crate::Expr::While(_binding_0) => {
  1431. crate::Expr::While(full!(f.fold_expr_while(_binding_0)))
  1432. }
  1433. crate::Expr::Yield(_binding_0) => {
  1434. crate::Expr::Yield(full!(f.fold_expr_yield(_binding_0)))
  1435. }
  1436. }
  1437. }
  1438. #[cfg(feature = "full")]
  1439. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  1440. pub fn fold_expr_array<F>(f: &mut F, node: crate::ExprArray) -> crate::ExprArray
  1441. where
  1442. F: Fold + ?Sized,
  1443. {
  1444. crate::ExprArray {
  1445. attrs: f.fold_attributes(node.attrs),
  1446. bracket_token: node.bracket_token,
  1447. elems: crate::punctuated::fold(node.elems, f, F::fold_expr),
  1448. }
  1449. }
  1450. #[cfg(feature = "full")]
  1451. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  1452. pub fn fold_expr_assign<F>(f: &mut F, node: crate::ExprAssign) -> crate::ExprAssign
  1453. where
  1454. F: Fold + ?Sized,
  1455. {
  1456. crate::ExprAssign {
  1457. attrs: f.fold_attributes(node.attrs),
  1458. left: Box::new(f.fold_expr(*node.left)),
  1459. eq_token: node.eq_token,
  1460. right: Box::new(f.fold_expr(*node.right)),
  1461. }
  1462. }
  1463. #[cfg(feature = "full")]
  1464. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  1465. pub fn fold_expr_async<F>(f: &mut F, node: crate::ExprAsync) -> crate::ExprAsync
  1466. where
  1467. F: Fold + ?Sized,
  1468. {
  1469. crate::ExprAsync {
  1470. attrs: f.fold_attributes(node.attrs),
  1471. async_token: node.async_token,
  1472. capture: node.capture,
  1473. block: f.fold_block(node.block),
  1474. }
  1475. }
  1476. #[cfg(feature = "full")]
  1477. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  1478. pub fn fold_expr_await<F>(f: &mut F, node: crate::ExprAwait) -> crate::ExprAwait
  1479. where
  1480. F: Fold + ?Sized,
  1481. {
  1482. crate::ExprAwait {
  1483. attrs: f.fold_attributes(node.attrs),
  1484. base: Box::new(f.fold_expr(*node.base)),
  1485. dot_token: node.dot_token,
  1486. await_token: node.await_token,
  1487. }
  1488. }
  1489. #[cfg(any(feature = "derive", feature = "full"))]
  1490. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1491. pub fn fold_expr_binary<F>(f: &mut F, node: crate::ExprBinary) -> crate::ExprBinary
  1492. where
  1493. F: Fold + ?Sized,
  1494. {
  1495. crate::ExprBinary {
  1496. attrs: f.fold_attributes(node.attrs),
  1497. left: Box::new(f.fold_expr(*node.left)),
  1498. op: f.fold_bin_op(node.op),
  1499. right: Box::new(f.fold_expr(*node.right)),
  1500. }
  1501. }
  1502. #[cfg(feature = "full")]
  1503. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  1504. pub fn fold_expr_block<F>(f: &mut F, node: crate::ExprBlock) -> crate::ExprBlock
  1505. where
  1506. F: Fold + ?Sized,
  1507. {
  1508. crate::ExprBlock {
  1509. attrs: f.fold_attributes(node.attrs),
  1510. label: (node.label).map(|it| f.fold_label(it)),
  1511. block: f.fold_block(node.block),
  1512. }
  1513. }
  1514. #[cfg(feature = "full")]
  1515. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  1516. pub fn fold_expr_break<F>(f: &mut F, node: crate::ExprBreak) -> crate::ExprBreak
  1517. where
  1518. F: Fold + ?Sized,
  1519. {
  1520. crate::ExprBreak {
  1521. attrs: f.fold_attributes(node.attrs),
  1522. break_token: node.break_token,
  1523. label: (node.label).map(|it| f.fold_lifetime(it)),
  1524. expr: (node.expr).map(|it| Box::new(f.fold_expr(*it))),
  1525. }
  1526. }
  1527. #[cfg(any(feature = "derive", feature = "full"))]
  1528. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1529. pub fn fold_expr_call<F>(f: &mut F, node: crate::ExprCall) -> crate::ExprCall
  1530. where
  1531. F: Fold + ?Sized,
  1532. {
  1533. crate::ExprCall {
  1534. attrs: f.fold_attributes(node.attrs),
  1535. func: Box::new(f.fold_expr(*node.func)),
  1536. paren_token: node.paren_token,
  1537. args: crate::punctuated::fold(node.args, f, F::fold_expr),
  1538. }
  1539. }
  1540. #[cfg(any(feature = "derive", feature = "full"))]
  1541. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1542. pub fn fold_expr_cast<F>(f: &mut F, node: crate::ExprCast) -> crate::ExprCast
  1543. where
  1544. F: Fold + ?Sized,
  1545. {
  1546. crate::ExprCast {
  1547. attrs: f.fold_attributes(node.attrs),
  1548. expr: Box::new(f.fold_expr(*node.expr)),
  1549. as_token: node.as_token,
  1550. ty: Box::new(f.fold_type(*node.ty)),
  1551. }
  1552. }
  1553. #[cfg(feature = "full")]
  1554. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  1555. pub fn fold_expr_closure<F>(f: &mut F, node: crate::ExprClosure) -> crate::ExprClosure
  1556. where
  1557. F: Fold + ?Sized,
  1558. {
  1559. crate::ExprClosure {
  1560. attrs: f.fold_attributes(node.attrs),
  1561. lifetimes: (node.lifetimes).map(|it| f.fold_bound_lifetimes(it)),
  1562. constness: node.constness,
  1563. movability: node.movability,
  1564. asyncness: node.asyncness,
  1565. capture: node.capture,
  1566. or1_token: node.or1_token,
  1567. inputs: crate::punctuated::fold(node.inputs, f, F::fold_pat),
  1568. or2_token: node.or2_token,
  1569. output: f.fold_return_type(node.output),
  1570. body: Box::new(f.fold_expr(*node.body)),
  1571. }
  1572. }
  1573. #[cfg(feature = "full")]
  1574. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  1575. pub fn fold_expr_const<F>(f: &mut F, node: crate::ExprConst) -> crate::ExprConst
  1576. where
  1577. F: Fold + ?Sized,
  1578. {
  1579. crate::ExprConst {
  1580. attrs: f.fold_attributes(node.attrs),
  1581. const_token: node.const_token,
  1582. block: f.fold_block(node.block),
  1583. }
  1584. }
  1585. #[cfg(feature = "full")]
  1586. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  1587. pub fn fold_expr_continue<F>(f: &mut F, node: crate::ExprContinue) -> crate::ExprContinue
  1588. where
  1589. F: Fold + ?Sized,
  1590. {
  1591. crate::ExprContinue {
  1592. attrs: f.fold_attributes(node.attrs),
  1593. continue_token: node.continue_token,
  1594. label: (node.label).map(|it| f.fold_lifetime(it)),
  1595. }
  1596. }
  1597. #[cfg(any(feature = "derive", feature = "full"))]
  1598. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1599. pub fn fold_expr_field<F>(f: &mut F, node: crate::ExprField) -> crate::ExprField
  1600. where
  1601. F: Fold + ?Sized,
  1602. {
  1603. crate::ExprField {
  1604. attrs: f.fold_attributes(node.attrs),
  1605. base: Box::new(f.fold_expr(*node.base)),
  1606. dot_token: node.dot_token,
  1607. member: f.fold_member(node.member),
  1608. }
  1609. }
  1610. #[cfg(feature = "full")]
  1611. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  1612. pub fn fold_expr_for_loop<F>(f: &mut F, node: crate::ExprForLoop) -> crate::ExprForLoop
  1613. where
  1614. F: Fold + ?Sized,
  1615. {
  1616. crate::ExprForLoop {
  1617. attrs: f.fold_attributes(node.attrs),
  1618. label: (node.label).map(|it| f.fold_label(it)),
  1619. for_token: node.for_token,
  1620. pat: Box::new(f.fold_pat(*node.pat)),
  1621. in_token: node.in_token,
  1622. expr: Box::new(f.fold_expr(*node.expr)),
  1623. body: f.fold_block(node.body),
  1624. }
  1625. }
  1626. #[cfg(any(feature = "derive", feature = "full"))]
  1627. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1628. pub fn fold_expr_group<F>(f: &mut F, node: crate::ExprGroup) -> crate::ExprGroup
  1629. where
  1630. F: Fold + ?Sized,
  1631. {
  1632. crate::ExprGroup {
  1633. attrs: f.fold_attributes(node.attrs),
  1634. group_token: node.group_token,
  1635. expr: Box::new(f.fold_expr(*node.expr)),
  1636. }
  1637. }
  1638. #[cfg(feature = "full")]
  1639. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  1640. pub fn fold_expr_if<F>(f: &mut F, node: crate::ExprIf) -> crate::ExprIf
  1641. where
  1642. F: Fold + ?Sized,
  1643. {
  1644. crate::ExprIf {
  1645. attrs: f.fold_attributes(node.attrs),
  1646. if_token: node.if_token,
  1647. cond: Box::new(f.fold_expr(*node.cond)),
  1648. then_branch: f.fold_block(node.then_branch),
  1649. else_branch: (node.else_branch)
  1650. .map(|it| ((it).0, Box::new(f.fold_expr(*(it).1)))),
  1651. }
  1652. }
  1653. #[cfg(any(feature = "derive", feature = "full"))]
  1654. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1655. pub fn fold_expr_index<F>(f: &mut F, node: crate::ExprIndex) -> crate::ExprIndex
  1656. where
  1657. F: Fold + ?Sized,
  1658. {
  1659. crate::ExprIndex {
  1660. attrs: f.fold_attributes(node.attrs),
  1661. expr: Box::new(f.fold_expr(*node.expr)),
  1662. bracket_token: node.bracket_token,
  1663. index: Box::new(f.fold_expr(*node.index)),
  1664. }
  1665. }
  1666. #[cfg(feature = "full")]
  1667. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  1668. pub fn fold_expr_infer<F>(f: &mut F, node: crate::ExprInfer) -> crate::ExprInfer
  1669. where
  1670. F: Fold + ?Sized,
  1671. {
  1672. crate::ExprInfer {
  1673. attrs: f.fold_attributes(node.attrs),
  1674. underscore_token: node.underscore_token,
  1675. }
  1676. }
  1677. #[cfg(feature = "full")]
  1678. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  1679. pub fn fold_expr_let<F>(f: &mut F, node: crate::ExprLet) -> crate::ExprLet
  1680. where
  1681. F: Fold + ?Sized,
  1682. {
  1683. crate::ExprLet {
  1684. attrs: f.fold_attributes(node.attrs),
  1685. let_token: node.let_token,
  1686. pat: Box::new(f.fold_pat(*node.pat)),
  1687. eq_token: node.eq_token,
  1688. expr: Box::new(f.fold_expr(*node.expr)),
  1689. }
  1690. }
  1691. #[cfg(any(feature = "derive", feature = "full"))]
  1692. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1693. pub fn fold_expr_lit<F>(f: &mut F, node: crate::ExprLit) -> crate::ExprLit
  1694. where
  1695. F: Fold + ?Sized,
  1696. {
  1697. crate::ExprLit {
  1698. attrs: f.fold_attributes(node.attrs),
  1699. lit: f.fold_lit(node.lit),
  1700. }
  1701. }
  1702. #[cfg(feature = "full")]
  1703. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  1704. pub fn fold_expr_loop<F>(f: &mut F, node: crate::ExprLoop) -> crate::ExprLoop
  1705. where
  1706. F: Fold + ?Sized,
  1707. {
  1708. crate::ExprLoop {
  1709. attrs: f.fold_attributes(node.attrs),
  1710. label: (node.label).map(|it| f.fold_label(it)),
  1711. loop_token: node.loop_token,
  1712. body: f.fold_block(node.body),
  1713. }
  1714. }
  1715. #[cfg(any(feature = "derive", feature = "full"))]
  1716. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1717. pub fn fold_expr_macro<F>(f: &mut F, node: crate::ExprMacro) -> crate::ExprMacro
  1718. where
  1719. F: Fold + ?Sized,
  1720. {
  1721. crate::ExprMacro {
  1722. attrs: f.fold_attributes(node.attrs),
  1723. mac: f.fold_macro(node.mac),
  1724. }
  1725. }
  1726. #[cfg(feature = "full")]
  1727. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  1728. pub fn fold_expr_match<F>(f: &mut F, node: crate::ExprMatch) -> crate::ExprMatch
  1729. where
  1730. F: Fold + ?Sized,
  1731. {
  1732. crate::ExprMatch {
  1733. attrs: f.fold_attributes(node.attrs),
  1734. match_token: node.match_token,
  1735. expr: Box::new(f.fold_expr(*node.expr)),
  1736. brace_token: node.brace_token,
  1737. arms: fold_vec(node.arms, f, F::fold_arm),
  1738. }
  1739. }
  1740. #[cfg(any(feature = "derive", feature = "full"))]
  1741. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1742. pub fn fold_expr_method_call<F>(
  1743. f: &mut F,
  1744. node: crate::ExprMethodCall,
  1745. ) -> crate::ExprMethodCall
  1746. where
  1747. F: Fold + ?Sized,
  1748. {
  1749. crate::ExprMethodCall {
  1750. attrs: f.fold_attributes(node.attrs),
  1751. receiver: Box::new(f.fold_expr(*node.receiver)),
  1752. dot_token: node.dot_token,
  1753. method: f.fold_ident(node.method),
  1754. turbofish: (node.turbofish)
  1755. .map(|it| f.fold_angle_bracketed_generic_arguments(it)),
  1756. paren_token: node.paren_token,
  1757. args: crate::punctuated::fold(node.args, f, F::fold_expr),
  1758. }
  1759. }
  1760. #[cfg(any(feature = "derive", feature = "full"))]
  1761. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1762. pub fn fold_expr_paren<F>(f: &mut F, node: crate::ExprParen) -> crate::ExprParen
  1763. where
  1764. F: Fold + ?Sized,
  1765. {
  1766. crate::ExprParen {
  1767. attrs: f.fold_attributes(node.attrs),
  1768. paren_token: node.paren_token,
  1769. expr: Box::new(f.fold_expr(*node.expr)),
  1770. }
  1771. }
  1772. #[cfg(any(feature = "derive", feature = "full"))]
  1773. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1774. pub fn fold_expr_path<F>(f: &mut F, node: crate::ExprPath) -> crate::ExprPath
  1775. where
  1776. F: Fold + ?Sized,
  1777. {
  1778. crate::ExprPath {
  1779. attrs: f.fold_attributes(node.attrs),
  1780. qself: (node.qself).map(|it| f.fold_qself(it)),
  1781. path: f.fold_path(node.path),
  1782. }
  1783. }
  1784. #[cfg(feature = "full")]
  1785. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  1786. pub fn fold_expr_range<F>(f: &mut F, node: crate::ExprRange) -> crate::ExprRange
  1787. where
  1788. F: Fold + ?Sized,
  1789. {
  1790. crate::ExprRange {
  1791. attrs: f.fold_attributes(node.attrs),
  1792. start: (node.start).map(|it| Box::new(f.fold_expr(*it))),
  1793. limits: f.fold_range_limits(node.limits),
  1794. end: (node.end).map(|it| Box::new(f.fold_expr(*it))),
  1795. }
  1796. }
  1797. #[cfg(feature = "full")]
  1798. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  1799. pub fn fold_expr_raw_addr<F>(f: &mut F, node: crate::ExprRawAddr) -> crate::ExprRawAddr
  1800. where
  1801. F: Fold + ?Sized,
  1802. {
  1803. crate::ExprRawAddr {
  1804. attrs: f.fold_attributes(node.attrs),
  1805. and_token: node.and_token,
  1806. raw: node.raw,
  1807. mutability: f.fold_pointer_mutability(node.mutability),
  1808. expr: Box::new(f.fold_expr(*node.expr)),
  1809. }
  1810. }
  1811. #[cfg(any(feature = "derive", feature = "full"))]
  1812. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1813. pub fn fold_expr_reference<F>(
  1814. f: &mut F,
  1815. node: crate::ExprReference,
  1816. ) -> crate::ExprReference
  1817. where
  1818. F: Fold + ?Sized,
  1819. {
  1820. crate::ExprReference {
  1821. attrs: f.fold_attributes(node.attrs),
  1822. and_token: node.and_token,
  1823. mutability: node.mutability,
  1824. expr: Box::new(f.fold_expr(*node.expr)),
  1825. }
  1826. }
  1827. #[cfg(feature = "full")]
  1828. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  1829. pub fn fold_expr_repeat<F>(f: &mut F, node: crate::ExprRepeat) -> crate::ExprRepeat
  1830. where
  1831. F: Fold + ?Sized,
  1832. {
  1833. crate::ExprRepeat {
  1834. attrs: f.fold_attributes(node.attrs),
  1835. bracket_token: node.bracket_token,
  1836. expr: Box::new(f.fold_expr(*node.expr)),
  1837. semi_token: node.semi_token,
  1838. len: Box::new(f.fold_expr(*node.len)),
  1839. }
  1840. }
  1841. #[cfg(feature = "full")]
  1842. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  1843. pub fn fold_expr_return<F>(f: &mut F, node: crate::ExprReturn) -> crate::ExprReturn
  1844. where
  1845. F: Fold + ?Sized,
  1846. {
  1847. crate::ExprReturn {
  1848. attrs: f.fold_attributes(node.attrs),
  1849. return_token: node.return_token,
  1850. expr: (node.expr).map(|it| Box::new(f.fold_expr(*it))),
  1851. }
  1852. }
  1853. #[cfg(any(feature = "derive", feature = "full"))]
  1854. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1855. pub fn fold_expr_struct<F>(f: &mut F, node: crate::ExprStruct) -> crate::ExprStruct
  1856. where
  1857. F: Fold + ?Sized,
  1858. {
  1859. crate::ExprStruct {
  1860. attrs: f.fold_attributes(node.attrs),
  1861. qself: (node.qself).map(|it| f.fold_qself(it)),
  1862. path: f.fold_path(node.path),
  1863. brace_token: node.brace_token,
  1864. fields: crate::punctuated::fold(node.fields, f, F::fold_field_value),
  1865. dot2_token: node.dot2_token,
  1866. rest: (node.rest).map(|it| Box::new(f.fold_expr(*it))),
  1867. }
  1868. }
  1869. #[cfg(feature = "full")]
  1870. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  1871. pub fn fold_expr_try<F>(f: &mut F, node: crate::ExprTry) -> crate::ExprTry
  1872. where
  1873. F: Fold + ?Sized,
  1874. {
  1875. crate::ExprTry {
  1876. attrs: f.fold_attributes(node.attrs),
  1877. expr: Box::new(f.fold_expr(*node.expr)),
  1878. question_token: node.question_token,
  1879. }
  1880. }
  1881. #[cfg(feature = "full")]
  1882. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  1883. pub fn fold_expr_try_block<F>(
  1884. f: &mut F,
  1885. node: crate::ExprTryBlock,
  1886. ) -> crate::ExprTryBlock
  1887. where
  1888. F: Fold + ?Sized,
  1889. {
  1890. crate::ExprTryBlock {
  1891. attrs: f.fold_attributes(node.attrs),
  1892. try_token: node.try_token,
  1893. block: f.fold_block(node.block),
  1894. }
  1895. }
  1896. #[cfg(any(feature = "derive", feature = "full"))]
  1897. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1898. pub fn fold_expr_tuple<F>(f: &mut F, node: crate::ExprTuple) -> crate::ExprTuple
  1899. where
  1900. F: Fold + ?Sized,
  1901. {
  1902. crate::ExprTuple {
  1903. attrs: f.fold_attributes(node.attrs),
  1904. paren_token: node.paren_token,
  1905. elems: crate::punctuated::fold(node.elems, f, F::fold_expr),
  1906. }
  1907. }
  1908. #[cfg(any(feature = "derive", feature = "full"))]
  1909. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1910. pub fn fold_expr_unary<F>(f: &mut F, node: crate::ExprUnary) -> crate::ExprUnary
  1911. where
  1912. F: Fold + ?Sized,
  1913. {
  1914. crate::ExprUnary {
  1915. attrs: f.fold_attributes(node.attrs),
  1916. op: f.fold_un_op(node.op),
  1917. expr: Box::new(f.fold_expr(*node.expr)),
  1918. }
  1919. }
  1920. #[cfg(feature = "full")]
  1921. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  1922. pub fn fold_expr_unsafe<F>(f: &mut F, node: crate::ExprUnsafe) -> crate::ExprUnsafe
  1923. where
  1924. F: Fold + ?Sized,
  1925. {
  1926. crate::ExprUnsafe {
  1927. attrs: f.fold_attributes(node.attrs),
  1928. unsafe_token: node.unsafe_token,
  1929. block: f.fold_block(node.block),
  1930. }
  1931. }
  1932. #[cfg(feature = "full")]
  1933. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  1934. pub fn fold_expr_while<F>(f: &mut F, node: crate::ExprWhile) -> crate::ExprWhile
  1935. where
  1936. F: Fold + ?Sized,
  1937. {
  1938. crate::ExprWhile {
  1939. attrs: f.fold_attributes(node.attrs),
  1940. label: (node.label).map(|it| f.fold_label(it)),
  1941. while_token: node.while_token,
  1942. cond: Box::new(f.fold_expr(*node.cond)),
  1943. body: f.fold_block(node.body),
  1944. }
  1945. }
  1946. #[cfg(feature = "full")]
  1947. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  1948. pub fn fold_expr_yield<F>(f: &mut F, node: crate::ExprYield) -> crate::ExprYield
  1949. where
  1950. F: Fold + ?Sized,
  1951. {
  1952. crate::ExprYield {
  1953. attrs: f.fold_attributes(node.attrs),
  1954. yield_token: node.yield_token,
  1955. expr: (node.expr).map(|it| Box::new(f.fold_expr(*it))),
  1956. }
  1957. }
  1958. #[cfg(any(feature = "derive", feature = "full"))]
  1959. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1960. pub fn fold_field<F>(f: &mut F, node: crate::Field) -> crate::Field
  1961. where
  1962. F: Fold + ?Sized,
  1963. {
  1964. crate::Field {
  1965. attrs: f.fold_attributes(node.attrs),
  1966. vis: f.fold_visibility(node.vis),
  1967. mutability: f.fold_field_mutability(node.mutability),
  1968. ident: (node.ident).map(|it| f.fold_ident(it)),
  1969. colon_token: node.colon_token,
  1970. ty: f.fold_type(node.ty),
  1971. }
  1972. }
  1973. #[cfg(any(feature = "derive", feature = "full"))]
  1974. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  1975. pub fn fold_field_mutability<F>(
  1976. f: &mut F,
  1977. node: crate::FieldMutability,
  1978. ) -> crate::FieldMutability
  1979. where
  1980. F: Fold + ?Sized,
  1981. {
  1982. match node {
  1983. crate::FieldMutability::None => crate::FieldMutability::None,
  1984. }
  1985. }
  1986. #[cfg(feature = "full")]
  1987. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  1988. pub fn fold_field_pat<F>(f: &mut F, node: crate::FieldPat) -> crate::FieldPat
  1989. where
  1990. F: Fold + ?Sized,
  1991. {
  1992. crate::FieldPat {
  1993. attrs: f.fold_attributes(node.attrs),
  1994. member: f.fold_member(node.member),
  1995. colon_token: node.colon_token,
  1996. pat: Box::new(f.fold_pat(*node.pat)),
  1997. }
  1998. }
  1999. #[cfg(any(feature = "derive", feature = "full"))]
  2000. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  2001. pub fn fold_field_value<F>(f: &mut F, node: crate::FieldValue) -> crate::FieldValue
  2002. where
  2003. F: Fold + ?Sized,
  2004. {
  2005. crate::FieldValue {
  2006. attrs: f.fold_attributes(node.attrs),
  2007. member: f.fold_member(node.member),
  2008. colon_token: node.colon_token,
  2009. expr: f.fold_expr(node.expr),
  2010. }
  2011. }
  2012. #[cfg(any(feature = "derive", feature = "full"))]
  2013. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  2014. pub fn fold_fields<F>(f: &mut F, node: crate::Fields) -> crate::Fields
  2015. where
  2016. F: Fold + ?Sized,
  2017. {
  2018. match node {
  2019. crate::Fields::Named(_binding_0) => {
  2020. crate::Fields::Named(f.fold_fields_named(_binding_0))
  2021. }
  2022. crate::Fields::Unnamed(_binding_0) => {
  2023. crate::Fields::Unnamed(f.fold_fields_unnamed(_binding_0))
  2024. }
  2025. crate::Fields::Unit => crate::Fields::Unit,
  2026. }
  2027. }
  2028. #[cfg(any(feature = "derive", feature = "full"))]
  2029. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  2030. pub fn fold_fields_named<F>(f: &mut F, node: crate::FieldsNamed) -> crate::FieldsNamed
  2031. where
  2032. F: Fold + ?Sized,
  2033. {
  2034. crate::FieldsNamed {
  2035. brace_token: node.brace_token,
  2036. named: crate::punctuated::fold(node.named, f, F::fold_field),
  2037. }
  2038. }
  2039. #[cfg(any(feature = "derive", feature = "full"))]
  2040. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  2041. pub fn fold_fields_unnamed<F>(
  2042. f: &mut F,
  2043. node: crate::FieldsUnnamed,
  2044. ) -> crate::FieldsUnnamed
  2045. where
  2046. F: Fold + ?Sized,
  2047. {
  2048. crate::FieldsUnnamed {
  2049. paren_token: node.paren_token,
  2050. unnamed: crate::punctuated::fold(node.unnamed, f, F::fold_field),
  2051. }
  2052. }
  2053. #[cfg(feature = "full")]
  2054. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2055. pub fn fold_file<F>(f: &mut F, node: crate::File) -> crate::File
  2056. where
  2057. F: Fold + ?Sized,
  2058. {
  2059. crate::File {
  2060. shebang: node.shebang,
  2061. attrs: f.fold_attributes(node.attrs),
  2062. items: fold_vec(node.items, f, F::fold_item),
  2063. }
  2064. }
  2065. #[cfg(feature = "full")]
  2066. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2067. pub fn fold_fn_arg<F>(f: &mut F, node: crate::FnArg) -> crate::FnArg
  2068. where
  2069. F: Fold + ?Sized,
  2070. {
  2071. match node {
  2072. crate::FnArg::Receiver(_binding_0) => {
  2073. crate::FnArg::Receiver(f.fold_receiver(_binding_0))
  2074. }
  2075. crate::FnArg::Typed(_binding_0) => {
  2076. crate::FnArg::Typed(f.fold_pat_type(_binding_0))
  2077. }
  2078. }
  2079. }
  2080. #[cfg(feature = "full")]
  2081. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2082. pub fn fold_foreign_item<F>(f: &mut F, node: crate::ForeignItem) -> crate::ForeignItem
  2083. where
  2084. F: Fold + ?Sized,
  2085. {
  2086. match node {
  2087. crate::ForeignItem::Fn(_binding_0) => {
  2088. crate::ForeignItem::Fn(f.fold_foreign_item_fn(_binding_0))
  2089. }
  2090. crate::ForeignItem::Static(_binding_0) => {
  2091. crate::ForeignItem::Static(f.fold_foreign_item_static(_binding_0))
  2092. }
  2093. crate::ForeignItem::Type(_binding_0) => {
  2094. crate::ForeignItem::Type(f.fold_foreign_item_type(_binding_0))
  2095. }
  2096. crate::ForeignItem::Macro(_binding_0) => {
  2097. crate::ForeignItem::Macro(f.fold_foreign_item_macro(_binding_0))
  2098. }
  2099. crate::ForeignItem::Verbatim(_binding_0) => {
  2100. crate::ForeignItem::Verbatim(f.fold_token_stream(_binding_0))
  2101. }
  2102. }
  2103. }
  2104. #[cfg(feature = "full")]
  2105. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2106. pub fn fold_foreign_item_fn<F>(
  2107. f: &mut F,
  2108. node: crate::ForeignItemFn,
  2109. ) -> crate::ForeignItemFn
  2110. where
  2111. F: Fold + ?Sized,
  2112. {
  2113. crate::ForeignItemFn {
  2114. attrs: f.fold_attributes(node.attrs),
  2115. vis: f.fold_visibility(node.vis),
  2116. sig: f.fold_signature(node.sig),
  2117. semi_token: node.semi_token,
  2118. }
  2119. }
  2120. #[cfg(feature = "full")]
  2121. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2122. pub fn fold_foreign_item_macro<F>(
  2123. f: &mut F,
  2124. node: crate::ForeignItemMacro,
  2125. ) -> crate::ForeignItemMacro
  2126. where
  2127. F: Fold + ?Sized,
  2128. {
  2129. crate::ForeignItemMacro {
  2130. attrs: f.fold_attributes(node.attrs),
  2131. mac: f.fold_macro(node.mac),
  2132. semi_token: node.semi_token,
  2133. }
  2134. }
  2135. #[cfg(feature = "full")]
  2136. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2137. pub fn fold_foreign_item_static<F>(
  2138. f: &mut F,
  2139. node: crate::ForeignItemStatic,
  2140. ) -> crate::ForeignItemStatic
  2141. where
  2142. F: Fold + ?Sized,
  2143. {
  2144. crate::ForeignItemStatic {
  2145. attrs: f.fold_attributes(node.attrs),
  2146. vis: f.fold_visibility(node.vis),
  2147. static_token: node.static_token,
  2148. mutability: f.fold_static_mutability(node.mutability),
  2149. ident: f.fold_ident(node.ident),
  2150. colon_token: node.colon_token,
  2151. ty: Box::new(f.fold_type(*node.ty)),
  2152. semi_token: node.semi_token,
  2153. }
  2154. }
  2155. #[cfg(feature = "full")]
  2156. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2157. pub fn fold_foreign_item_type<F>(
  2158. f: &mut F,
  2159. node: crate::ForeignItemType,
  2160. ) -> crate::ForeignItemType
  2161. where
  2162. F: Fold + ?Sized,
  2163. {
  2164. crate::ForeignItemType {
  2165. attrs: f.fold_attributes(node.attrs),
  2166. vis: f.fold_visibility(node.vis),
  2167. type_token: node.type_token,
  2168. ident: f.fold_ident(node.ident),
  2169. generics: f.fold_generics(node.generics),
  2170. semi_token: node.semi_token,
  2171. }
  2172. }
  2173. #[cfg(any(feature = "derive", feature = "full"))]
  2174. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  2175. pub fn fold_generic_argument<F>(
  2176. f: &mut F,
  2177. node: crate::GenericArgument,
  2178. ) -> crate::GenericArgument
  2179. where
  2180. F: Fold + ?Sized,
  2181. {
  2182. match node {
  2183. crate::GenericArgument::Lifetime(_binding_0) => {
  2184. crate::GenericArgument::Lifetime(f.fold_lifetime(_binding_0))
  2185. }
  2186. crate::GenericArgument::Type(_binding_0) => {
  2187. crate::GenericArgument::Type(f.fold_type(_binding_0))
  2188. }
  2189. crate::GenericArgument::Const(_binding_0) => {
  2190. crate::GenericArgument::Const(f.fold_expr(_binding_0))
  2191. }
  2192. crate::GenericArgument::AssocType(_binding_0) => {
  2193. crate::GenericArgument::AssocType(f.fold_assoc_type(_binding_0))
  2194. }
  2195. crate::GenericArgument::AssocConst(_binding_0) => {
  2196. crate::GenericArgument::AssocConst(f.fold_assoc_const(_binding_0))
  2197. }
  2198. crate::GenericArgument::Constraint(_binding_0) => {
  2199. crate::GenericArgument::Constraint(f.fold_constraint(_binding_0))
  2200. }
  2201. }
  2202. }
  2203. #[cfg(any(feature = "derive", feature = "full"))]
  2204. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  2205. pub fn fold_generic_param<F>(f: &mut F, node: crate::GenericParam) -> crate::GenericParam
  2206. where
  2207. F: Fold + ?Sized,
  2208. {
  2209. match node {
  2210. crate::GenericParam::Lifetime(_binding_0) => {
  2211. crate::GenericParam::Lifetime(f.fold_lifetime_param(_binding_0))
  2212. }
  2213. crate::GenericParam::Type(_binding_0) => {
  2214. crate::GenericParam::Type(f.fold_type_param(_binding_0))
  2215. }
  2216. crate::GenericParam::Const(_binding_0) => {
  2217. crate::GenericParam::Const(f.fold_const_param(_binding_0))
  2218. }
  2219. }
  2220. }
  2221. #[cfg(any(feature = "derive", feature = "full"))]
  2222. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  2223. pub fn fold_generics<F>(f: &mut F, node: crate::Generics) -> crate::Generics
  2224. where
  2225. F: Fold + ?Sized,
  2226. {
  2227. crate::Generics {
  2228. lt_token: node.lt_token,
  2229. params: crate::punctuated::fold(node.params, f, F::fold_generic_param),
  2230. gt_token: node.gt_token,
  2231. where_clause: (node.where_clause).map(|it| f.fold_where_clause(it)),
  2232. }
  2233. }
  2234. pub fn fold_ident<F>(f: &mut F, node: proc_macro2::Ident) -> proc_macro2::Ident
  2235. where
  2236. F: Fold + ?Sized,
  2237. {
  2238. let mut node = node;
  2239. let span = f.fold_span(node.span());
  2240. node.set_span(span);
  2241. node
  2242. }
  2243. #[cfg(feature = "full")]
  2244. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2245. pub fn fold_impl_item<F>(f: &mut F, node: crate::ImplItem) -> crate::ImplItem
  2246. where
  2247. F: Fold + ?Sized,
  2248. {
  2249. match node {
  2250. crate::ImplItem::Const(_binding_0) => {
  2251. crate::ImplItem::Const(f.fold_impl_item_const(_binding_0))
  2252. }
  2253. crate::ImplItem::Fn(_binding_0) => {
  2254. crate::ImplItem::Fn(f.fold_impl_item_fn(_binding_0))
  2255. }
  2256. crate::ImplItem::Type(_binding_0) => {
  2257. crate::ImplItem::Type(f.fold_impl_item_type(_binding_0))
  2258. }
  2259. crate::ImplItem::Macro(_binding_0) => {
  2260. crate::ImplItem::Macro(f.fold_impl_item_macro(_binding_0))
  2261. }
  2262. crate::ImplItem::Verbatim(_binding_0) => {
  2263. crate::ImplItem::Verbatim(f.fold_token_stream(_binding_0))
  2264. }
  2265. }
  2266. }
  2267. #[cfg(feature = "full")]
  2268. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2269. pub fn fold_impl_item_const<F>(
  2270. f: &mut F,
  2271. node: crate::ImplItemConst,
  2272. ) -> crate::ImplItemConst
  2273. where
  2274. F: Fold + ?Sized,
  2275. {
  2276. crate::ImplItemConst {
  2277. attrs: f.fold_attributes(node.attrs),
  2278. vis: f.fold_visibility(node.vis),
  2279. defaultness: node.defaultness,
  2280. const_token: node.const_token,
  2281. ident: f.fold_ident(node.ident),
  2282. generics: f.fold_generics(node.generics),
  2283. colon_token: node.colon_token,
  2284. ty: f.fold_type(node.ty),
  2285. eq_token: node.eq_token,
  2286. expr: f.fold_expr(node.expr),
  2287. semi_token: node.semi_token,
  2288. }
  2289. }
  2290. #[cfg(feature = "full")]
  2291. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2292. pub fn fold_impl_item_fn<F>(f: &mut F, node: crate::ImplItemFn) -> crate::ImplItemFn
  2293. where
  2294. F: Fold + ?Sized,
  2295. {
  2296. crate::ImplItemFn {
  2297. attrs: f.fold_attributes(node.attrs),
  2298. vis: f.fold_visibility(node.vis),
  2299. defaultness: node.defaultness,
  2300. sig: f.fold_signature(node.sig),
  2301. block: f.fold_block(node.block),
  2302. }
  2303. }
  2304. #[cfg(feature = "full")]
  2305. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2306. pub fn fold_impl_item_macro<F>(
  2307. f: &mut F,
  2308. node: crate::ImplItemMacro,
  2309. ) -> crate::ImplItemMacro
  2310. where
  2311. F: Fold + ?Sized,
  2312. {
  2313. crate::ImplItemMacro {
  2314. attrs: f.fold_attributes(node.attrs),
  2315. mac: f.fold_macro(node.mac),
  2316. semi_token: node.semi_token,
  2317. }
  2318. }
  2319. #[cfg(feature = "full")]
  2320. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2321. pub fn fold_impl_item_type<F>(
  2322. f: &mut F,
  2323. node: crate::ImplItemType,
  2324. ) -> crate::ImplItemType
  2325. where
  2326. F: Fold + ?Sized,
  2327. {
  2328. crate::ImplItemType {
  2329. attrs: f.fold_attributes(node.attrs),
  2330. vis: f.fold_visibility(node.vis),
  2331. defaultness: node.defaultness,
  2332. type_token: node.type_token,
  2333. ident: f.fold_ident(node.ident),
  2334. generics: f.fold_generics(node.generics),
  2335. eq_token: node.eq_token,
  2336. ty: f.fold_type(node.ty),
  2337. semi_token: node.semi_token,
  2338. }
  2339. }
  2340. #[cfg(feature = "full")]
  2341. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2342. pub fn fold_impl_restriction<F>(
  2343. f: &mut F,
  2344. node: crate::ImplRestriction,
  2345. ) -> crate::ImplRestriction
  2346. where
  2347. F: Fold + ?Sized,
  2348. {
  2349. match node {}
  2350. }
  2351. #[cfg(any(feature = "derive", feature = "full"))]
  2352. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  2353. pub fn fold_index<F>(f: &mut F, node: crate::Index) -> crate::Index
  2354. where
  2355. F: Fold + ?Sized,
  2356. {
  2357. crate::Index {
  2358. index: node.index,
  2359. span: f.fold_span(node.span),
  2360. }
  2361. }
  2362. #[cfg(feature = "full")]
  2363. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2364. pub fn fold_item<F>(f: &mut F, node: crate::Item) -> crate::Item
  2365. where
  2366. F: Fold + ?Sized,
  2367. {
  2368. match node {
  2369. crate::Item::Const(_binding_0) => {
  2370. crate::Item::Const(f.fold_item_const(_binding_0))
  2371. }
  2372. crate::Item::Enum(_binding_0) => crate::Item::Enum(f.fold_item_enum(_binding_0)),
  2373. crate::Item::ExternCrate(_binding_0) => {
  2374. crate::Item::ExternCrate(f.fold_item_extern_crate(_binding_0))
  2375. }
  2376. crate::Item::Fn(_binding_0) => crate::Item::Fn(f.fold_item_fn(_binding_0)),
  2377. crate::Item::ForeignMod(_binding_0) => {
  2378. crate::Item::ForeignMod(f.fold_item_foreign_mod(_binding_0))
  2379. }
  2380. crate::Item::Impl(_binding_0) => crate::Item::Impl(f.fold_item_impl(_binding_0)),
  2381. crate::Item::Macro(_binding_0) => {
  2382. crate::Item::Macro(f.fold_item_macro(_binding_0))
  2383. }
  2384. crate::Item::Mod(_binding_0) => crate::Item::Mod(f.fold_item_mod(_binding_0)),
  2385. crate::Item::Static(_binding_0) => {
  2386. crate::Item::Static(f.fold_item_static(_binding_0))
  2387. }
  2388. crate::Item::Struct(_binding_0) => {
  2389. crate::Item::Struct(f.fold_item_struct(_binding_0))
  2390. }
  2391. crate::Item::Trait(_binding_0) => {
  2392. crate::Item::Trait(f.fold_item_trait(_binding_0))
  2393. }
  2394. crate::Item::TraitAlias(_binding_0) => {
  2395. crate::Item::TraitAlias(f.fold_item_trait_alias(_binding_0))
  2396. }
  2397. crate::Item::Type(_binding_0) => crate::Item::Type(f.fold_item_type(_binding_0)),
  2398. crate::Item::Union(_binding_0) => {
  2399. crate::Item::Union(f.fold_item_union(_binding_0))
  2400. }
  2401. crate::Item::Use(_binding_0) => crate::Item::Use(f.fold_item_use(_binding_0)),
  2402. crate::Item::Verbatim(_binding_0) => {
  2403. crate::Item::Verbatim(f.fold_token_stream(_binding_0))
  2404. }
  2405. }
  2406. }
  2407. #[cfg(feature = "full")]
  2408. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2409. pub fn fold_item_const<F>(f: &mut F, node: crate::ItemConst) -> crate::ItemConst
  2410. where
  2411. F: Fold + ?Sized,
  2412. {
  2413. crate::ItemConst {
  2414. attrs: f.fold_attributes(node.attrs),
  2415. vis: f.fold_visibility(node.vis),
  2416. const_token: node.const_token,
  2417. ident: f.fold_ident(node.ident),
  2418. generics: f.fold_generics(node.generics),
  2419. colon_token: node.colon_token,
  2420. ty: Box::new(f.fold_type(*node.ty)),
  2421. eq_token: node.eq_token,
  2422. expr: Box::new(f.fold_expr(*node.expr)),
  2423. semi_token: node.semi_token,
  2424. }
  2425. }
  2426. #[cfg(feature = "full")]
  2427. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2428. pub fn fold_item_enum<F>(f: &mut F, node: crate::ItemEnum) -> crate::ItemEnum
  2429. where
  2430. F: Fold + ?Sized,
  2431. {
  2432. crate::ItemEnum {
  2433. attrs: f.fold_attributes(node.attrs),
  2434. vis: f.fold_visibility(node.vis),
  2435. enum_token: node.enum_token,
  2436. ident: f.fold_ident(node.ident),
  2437. generics: f.fold_generics(node.generics),
  2438. brace_token: node.brace_token,
  2439. variants: crate::punctuated::fold(node.variants, f, F::fold_variant),
  2440. }
  2441. }
  2442. #[cfg(feature = "full")]
  2443. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2444. pub fn fold_item_extern_crate<F>(
  2445. f: &mut F,
  2446. node: crate::ItemExternCrate,
  2447. ) -> crate::ItemExternCrate
  2448. where
  2449. F: Fold + ?Sized,
  2450. {
  2451. crate::ItemExternCrate {
  2452. attrs: f.fold_attributes(node.attrs),
  2453. vis: f.fold_visibility(node.vis),
  2454. extern_token: node.extern_token,
  2455. crate_token: node.crate_token,
  2456. ident: f.fold_ident(node.ident),
  2457. rename: (node.rename).map(|it| ((it).0, f.fold_ident((it).1))),
  2458. semi_token: node.semi_token,
  2459. }
  2460. }
  2461. #[cfg(feature = "full")]
  2462. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2463. pub fn fold_item_fn<F>(f: &mut F, node: crate::ItemFn) -> crate::ItemFn
  2464. where
  2465. F: Fold + ?Sized,
  2466. {
  2467. crate::ItemFn {
  2468. attrs: f.fold_attributes(node.attrs),
  2469. vis: f.fold_visibility(node.vis),
  2470. sig: f.fold_signature(node.sig),
  2471. block: Box::new(f.fold_block(*node.block)),
  2472. }
  2473. }
  2474. #[cfg(feature = "full")]
  2475. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2476. pub fn fold_item_foreign_mod<F>(
  2477. f: &mut F,
  2478. node: crate::ItemForeignMod,
  2479. ) -> crate::ItemForeignMod
  2480. where
  2481. F: Fold + ?Sized,
  2482. {
  2483. crate::ItemForeignMod {
  2484. attrs: f.fold_attributes(node.attrs),
  2485. unsafety: node.unsafety,
  2486. abi: f.fold_abi(node.abi),
  2487. brace_token: node.brace_token,
  2488. items: fold_vec(node.items, f, F::fold_foreign_item),
  2489. }
  2490. }
  2491. #[cfg(feature = "full")]
  2492. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2493. pub fn fold_item_impl<F>(f: &mut F, node: crate::ItemImpl) -> crate::ItemImpl
  2494. where
  2495. F: Fold + ?Sized,
  2496. {
  2497. crate::ItemImpl {
  2498. attrs: f.fold_attributes(node.attrs),
  2499. defaultness: node.defaultness,
  2500. unsafety: node.unsafety,
  2501. impl_token: node.impl_token,
  2502. generics: f.fold_generics(node.generics),
  2503. trait_: (node.trait_).map(|it| ((it).0, f.fold_path((it).1), (it).2)),
  2504. self_ty: Box::new(f.fold_type(*node.self_ty)),
  2505. brace_token: node.brace_token,
  2506. items: fold_vec(node.items, f, F::fold_impl_item),
  2507. }
  2508. }
  2509. #[cfg(feature = "full")]
  2510. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2511. pub fn fold_item_macro<F>(f: &mut F, node: crate::ItemMacro) -> crate::ItemMacro
  2512. where
  2513. F: Fold + ?Sized,
  2514. {
  2515. crate::ItemMacro {
  2516. attrs: f.fold_attributes(node.attrs),
  2517. ident: (node.ident).map(|it| f.fold_ident(it)),
  2518. mac: f.fold_macro(node.mac),
  2519. semi_token: node.semi_token,
  2520. }
  2521. }
  2522. #[cfg(feature = "full")]
  2523. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2524. pub fn fold_item_mod<F>(f: &mut F, node: crate::ItemMod) -> crate::ItemMod
  2525. where
  2526. F: Fold + ?Sized,
  2527. {
  2528. crate::ItemMod {
  2529. attrs: f.fold_attributes(node.attrs),
  2530. vis: f.fold_visibility(node.vis),
  2531. unsafety: node.unsafety,
  2532. mod_token: node.mod_token,
  2533. ident: f.fold_ident(node.ident),
  2534. content: (node.content).map(|it| ((it).0, fold_vec((it).1, f, F::fold_item))),
  2535. semi: node.semi,
  2536. }
  2537. }
  2538. #[cfg(feature = "full")]
  2539. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2540. pub fn fold_item_static<F>(f: &mut F, node: crate::ItemStatic) -> crate::ItemStatic
  2541. where
  2542. F: Fold + ?Sized,
  2543. {
  2544. crate::ItemStatic {
  2545. attrs: f.fold_attributes(node.attrs),
  2546. vis: f.fold_visibility(node.vis),
  2547. static_token: node.static_token,
  2548. mutability: f.fold_static_mutability(node.mutability),
  2549. ident: f.fold_ident(node.ident),
  2550. colon_token: node.colon_token,
  2551. ty: Box::new(f.fold_type(*node.ty)),
  2552. eq_token: node.eq_token,
  2553. expr: Box::new(f.fold_expr(*node.expr)),
  2554. semi_token: node.semi_token,
  2555. }
  2556. }
  2557. #[cfg(feature = "full")]
  2558. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2559. pub fn fold_item_struct<F>(f: &mut F, node: crate::ItemStruct) -> crate::ItemStruct
  2560. where
  2561. F: Fold + ?Sized,
  2562. {
  2563. crate::ItemStruct {
  2564. attrs: f.fold_attributes(node.attrs),
  2565. vis: f.fold_visibility(node.vis),
  2566. struct_token: node.struct_token,
  2567. ident: f.fold_ident(node.ident),
  2568. generics: f.fold_generics(node.generics),
  2569. fields: f.fold_fields(node.fields),
  2570. semi_token: node.semi_token,
  2571. }
  2572. }
  2573. #[cfg(feature = "full")]
  2574. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2575. pub fn fold_item_trait<F>(f: &mut F, node: crate::ItemTrait) -> crate::ItemTrait
  2576. where
  2577. F: Fold + ?Sized,
  2578. {
  2579. crate::ItemTrait {
  2580. attrs: f.fold_attributes(node.attrs),
  2581. vis: f.fold_visibility(node.vis),
  2582. unsafety: node.unsafety,
  2583. auto_token: node.auto_token,
  2584. restriction: (node.restriction).map(|it| f.fold_impl_restriction(it)),
  2585. trait_token: node.trait_token,
  2586. ident: f.fold_ident(node.ident),
  2587. generics: f.fold_generics(node.generics),
  2588. colon_token: node.colon_token,
  2589. supertraits: crate::punctuated::fold(
  2590. node.supertraits,
  2591. f,
  2592. F::fold_type_param_bound,
  2593. ),
  2594. brace_token: node.brace_token,
  2595. items: fold_vec(node.items, f, F::fold_trait_item),
  2596. }
  2597. }
  2598. #[cfg(feature = "full")]
  2599. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2600. pub fn fold_item_trait_alias<F>(
  2601. f: &mut F,
  2602. node: crate::ItemTraitAlias,
  2603. ) -> crate::ItemTraitAlias
  2604. where
  2605. F: Fold + ?Sized,
  2606. {
  2607. crate::ItemTraitAlias {
  2608. attrs: f.fold_attributes(node.attrs),
  2609. vis: f.fold_visibility(node.vis),
  2610. trait_token: node.trait_token,
  2611. ident: f.fold_ident(node.ident),
  2612. generics: f.fold_generics(node.generics),
  2613. eq_token: node.eq_token,
  2614. bounds: crate::punctuated::fold(node.bounds, f, F::fold_type_param_bound),
  2615. semi_token: node.semi_token,
  2616. }
  2617. }
  2618. #[cfg(feature = "full")]
  2619. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2620. pub fn fold_item_type<F>(f: &mut F, node: crate::ItemType) -> crate::ItemType
  2621. where
  2622. F: Fold + ?Sized,
  2623. {
  2624. crate::ItemType {
  2625. attrs: f.fold_attributes(node.attrs),
  2626. vis: f.fold_visibility(node.vis),
  2627. type_token: node.type_token,
  2628. ident: f.fold_ident(node.ident),
  2629. generics: f.fold_generics(node.generics),
  2630. eq_token: node.eq_token,
  2631. ty: Box::new(f.fold_type(*node.ty)),
  2632. semi_token: node.semi_token,
  2633. }
  2634. }
  2635. #[cfg(feature = "full")]
  2636. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2637. pub fn fold_item_union<F>(f: &mut F, node: crate::ItemUnion) -> crate::ItemUnion
  2638. where
  2639. F: Fold + ?Sized,
  2640. {
  2641. crate::ItemUnion {
  2642. attrs: f.fold_attributes(node.attrs),
  2643. vis: f.fold_visibility(node.vis),
  2644. union_token: node.union_token,
  2645. ident: f.fold_ident(node.ident),
  2646. generics: f.fold_generics(node.generics),
  2647. fields: f.fold_fields_named(node.fields),
  2648. }
  2649. }
  2650. #[cfg(feature = "full")]
  2651. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2652. pub fn fold_item_use<F>(f: &mut F, node: crate::ItemUse) -> crate::ItemUse
  2653. where
  2654. F: Fold + ?Sized,
  2655. {
  2656. crate::ItemUse {
  2657. attrs: f.fold_attributes(node.attrs),
  2658. vis: f.fold_visibility(node.vis),
  2659. use_token: node.use_token,
  2660. leading_colon: node.leading_colon,
  2661. tree: f.fold_use_tree(node.tree),
  2662. semi_token: node.semi_token,
  2663. }
  2664. }
  2665. #[cfg(feature = "full")]
  2666. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2667. pub fn fold_label<F>(f: &mut F, node: crate::Label) -> crate::Label
  2668. where
  2669. F: Fold + ?Sized,
  2670. {
  2671. crate::Label {
  2672. name: f.fold_lifetime(node.name),
  2673. colon_token: node.colon_token,
  2674. }
  2675. }
  2676. pub fn fold_lifetime<F>(f: &mut F, node: crate::Lifetime) -> crate::Lifetime
  2677. where
  2678. F: Fold + ?Sized,
  2679. {
  2680. crate::Lifetime {
  2681. apostrophe: f.fold_span(node.apostrophe),
  2682. ident: f.fold_ident(node.ident),
  2683. }
  2684. }
  2685. #[cfg(any(feature = "derive", feature = "full"))]
  2686. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  2687. pub fn fold_lifetime_param<F>(
  2688. f: &mut F,
  2689. node: crate::LifetimeParam,
  2690. ) -> crate::LifetimeParam
  2691. where
  2692. F: Fold + ?Sized,
  2693. {
  2694. crate::LifetimeParam {
  2695. attrs: f.fold_attributes(node.attrs),
  2696. lifetime: f.fold_lifetime(node.lifetime),
  2697. colon_token: node.colon_token,
  2698. bounds: crate::punctuated::fold(node.bounds, f, F::fold_lifetime),
  2699. }
  2700. }
  2701. pub fn fold_lit<F>(f: &mut F, node: crate::Lit) -> crate::Lit
  2702. where
  2703. F: Fold + ?Sized,
  2704. {
  2705. match node {
  2706. crate::Lit::Str(_binding_0) => crate::Lit::Str(f.fold_lit_str(_binding_0)),
  2707. crate::Lit::ByteStr(_binding_0) => {
  2708. crate::Lit::ByteStr(f.fold_lit_byte_str(_binding_0))
  2709. }
  2710. crate::Lit::CStr(_binding_0) => crate::Lit::CStr(f.fold_lit_cstr(_binding_0)),
  2711. crate::Lit::Byte(_binding_0) => crate::Lit::Byte(f.fold_lit_byte(_binding_0)),
  2712. crate::Lit::Char(_binding_0) => crate::Lit::Char(f.fold_lit_char(_binding_0)),
  2713. crate::Lit::Int(_binding_0) => crate::Lit::Int(f.fold_lit_int(_binding_0)),
  2714. crate::Lit::Float(_binding_0) => crate::Lit::Float(f.fold_lit_float(_binding_0)),
  2715. crate::Lit::Bool(_binding_0) => crate::Lit::Bool(f.fold_lit_bool(_binding_0)),
  2716. crate::Lit::Verbatim(_binding_0) => crate::Lit::Verbatim(_binding_0),
  2717. }
  2718. }
  2719. pub fn fold_lit_bool<F>(f: &mut F, node: crate::LitBool) -> crate::LitBool
  2720. where
  2721. F: Fold + ?Sized,
  2722. {
  2723. crate::LitBool {
  2724. value: node.value,
  2725. span: f.fold_span(node.span),
  2726. }
  2727. }
  2728. pub fn fold_lit_byte<F>(f: &mut F, node: crate::LitByte) -> crate::LitByte
  2729. where
  2730. F: Fold + ?Sized,
  2731. {
  2732. let span = f.fold_span(node.span());
  2733. let mut node = node;
  2734. node.set_span(span);
  2735. node
  2736. }
  2737. pub fn fold_lit_byte_str<F>(f: &mut F, node: crate::LitByteStr) -> crate::LitByteStr
  2738. where
  2739. F: Fold + ?Sized,
  2740. {
  2741. let span = f.fold_span(node.span());
  2742. let mut node = node;
  2743. node.set_span(span);
  2744. node
  2745. }
  2746. pub fn fold_lit_cstr<F>(f: &mut F, node: crate::LitCStr) -> crate::LitCStr
  2747. where
  2748. F: Fold + ?Sized,
  2749. {
  2750. let span = f.fold_span(node.span());
  2751. let mut node = node;
  2752. node.set_span(span);
  2753. node
  2754. }
  2755. pub fn fold_lit_char<F>(f: &mut F, node: crate::LitChar) -> crate::LitChar
  2756. where
  2757. F: Fold + ?Sized,
  2758. {
  2759. let span = f.fold_span(node.span());
  2760. let mut node = node;
  2761. node.set_span(span);
  2762. node
  2763. }
  2764. pub fn fold_lit_float<F>(f: &mut F, node: crate::LitFloat) -> crate::LitFloat
  2765. where
  2766. F: Fold + ?Sized,
  2767. {
  2768. let span = f.fold_span(node.span());
  2769. let mut node = node;
  2770. node.set_span(span);
  2771. node
  2772. }
  2773. pub fn fold_lit_int<F>(f: &mut F, node: crate::LitInt) -> crate::LitInt
  2774. where
  2775. F: Fold + ?Sized,
  2776. {
  2777. let span = f.fold_span(node.span());
  2778. let mut node = node;
  2779. node.set_span(span);
  2780. node
  2781. }
  2782. pub fn fold_lit_str<F>(f: &mut F, node: crate::LitStr) -> crate::LitStr
  2783. where
  2784. F: Fold + ?Sized,
  2785. {
  2786. let span = f.fold_span(node.span());
  2787. let mut node = node;
  2788. node.set_span(span);
  2789. node
  2790. }
  2791. #[cfg(feature = "full")]
  2792. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2793. pub fn fold_local<F>(f: &mut F, node: crate::Local) -> crate::Local
  2794. where
  2795. F: Fold + ?Sized,
  2796. {
  2797. crate::Local {
  2798. attrs: f.fold_attributes(node.attrs),
  2799. let_token: node.let_token,
  2800. pat: f.fold_pat(node.pat),
  2801. init: (node.init).map(|it| f.fold_local_init(it)),
  2802. semi_token: node.semi_token,
  2803. }
  2804. }
  2805. #[cfg(feature = "full")]
  2806. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2807. pub fn fold_local_init<F>(f: &mut F, node: crate::LocalInit) -> crate::LocalInit
  2808. where
  2809. F: Fold + ?Sized,
  2810. {
  2811. crate::LocalInit {
  2812. eq_token: node.eq_token,
  2813. expr: Box::new(f.fold_expr(*node.expr)),
  2814. diverge: (node.diverge).map(|it| ((it).0, Box::new(f.fold_expr(*(it).1)))),
  2815. }
  2816. }
  2817. #[cfg(any(feature = "derive", feature = "full"))]
  2818. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  2819. pub fn fold_macro<F>(f: &mut F, node: crate::Macro) -> crate::Macro
  2820. where
  2821. F: Fold + ?Sized,
  2822. {
  2823. crate::Macro {
  2824. path: f.fold_path(node.path),
  2825. bang_token: node.bang_token,
  2826. delimiter: f.fold_macro_delimiter(node.delimiter),
  2827. tokens: f.fold_token_stream(node.tokens),
  2828. }
  2829. }
  2830. #[cfg(any(feature = "derive", feature = "full"))]
  2831. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  2832. pub fn fold_macro_delimiter<F>(
  2833. f: &mut F,
  2834. node: crate::MacroDelimiter,
  2835. ) -> crate::MacroDelimiter
  2836. where
  2837. F: Fold + ?Sized,
  2838. {
  2839. match node {
  2840. crate::MacroDelimiter::Paren(_binding_0) => {
  2841. crate::MacroDelimiter::Paren(_binding_0)
  2842. }
  2843. crate::MacroDelimiter::Brace(_binding_0) => {
  2844. crate::MacroDelimiter::Brace(_binding_0)
  2845. }
  2846. crate::MacroDelimiter::Bracket(_binding_0) => {
  2847. crate::MacroDelimiter::Bracket(_binding_0)
  2848. }
  2849. }
  2850. }
  2851. #[cfg(any(feature = "derive", feature = "full"))]
  2852. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  2853. pub fn fold_member<F>(f: &mut F, node: crate::Member) -> crate::Member
  2854. where
  2855. F: Fold + ?Sized,
  2856. {
  2857. match node {
  2858. crate::Member::Named(_binding_0) => {
  2859. crate::Member::Named(f.fold_ident(_binding_0))
  2860. }
  2861. crate::Member::Unnamed(_binding_0) => {
  2862. crate::Member::Unnamed(f.fold_index(_binding_0))
  2863. }
  2864. }
  2865. }
  2866. #[cfg(any(feature = "derive", feature = "full"))]
  2867. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  2868. pub fn fold_meta<F>(f: &mut F, node: crate::Meta) -> crate::Meta
  2869. where
  2870. F: Fold + ?Sized,
  2871. {
  2872. match node {
  2873. crate::Meta::Path(_binding_0) => crate::Meta::Path(f.fold_path(_binding_0)),
  2874. crate::Meta::List(_binding_0) => crate::Meta::List(f.fold_meta_list(_binding_0)),
  2875. crate::Meta::NameValue(_binding_0) => {
  2876. crate::Meta::NameValue(f.fold_meta_name_value(_binding_0))
  2877. }
  2878. }
  2879. }
  2880. #[cfg(any(feature = "derive", feature = "full"))]
  2881. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  2882. pub fn fold_meta_list<F>(f: &mut F, node: crate::MetaList) -> crate::MetaList
  2883. where
  2884. F: Fold + ?Sized,
  2885. {
  2886. crate::MetaList {
  2887. path: f.fold_path(node.path),
  2888. delimiter: f.fold_macro_delimiter(node.delimiter),
  2889. tokens: f.fold_token_stream(node.tokens),
  2890. }
  2891. }
  2892. #[cfg(any(feature = "derive", feature = "full"))]
  2893. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  2894. pub fn fold_meta_name_value<F>(
  2895. f: &mut F,
  2896. node: crate::MetaNameValue,
  2897. ) -> crate::MetaNameValue
  2898. where
  2899. F: Fold + ?Sized,
  2900. {
  2901. crate::MetaNameValue {
  2902. path: f.fold_path(node.path),
  2903. eq_token: node.eq_token,
  2904. value: f.fold_expr(node.value),
  2905. }
  2906. }
  2907. #[cfg(any(feature = "derive", feature = "full"))]
  2908. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  2909. pub fn fold_parenthesized_generic_arguments<F>(
  2910. f: &mut F,
  2911. node: crate::ParenthesizedGenericArguments,
  2912. ) -> crate::ParenthesizedGenericArguments
  2913. where
  2914. F: Fold + ?Sized,
  2915. {
  2916. crate::ParenthesizedGenericArguments {
  2917. paren_token: node.paren_token,
  2918. inputs: crate::punctuated::fold(node.inputs, f, F::fold_type),
  2919. output: f.fold_return_type(node.output),
  2920. }
  2921. }
  2922. #[cfg(feature = "full")]
  2923. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2924. pub fn fold_pat<F>(f: &mut F, node: crate::Pat) -> crate::Pat
  2925. where
  2926. F: Fold + ?Sized,
  2927. {
  2928. match node {
  2929. crate::Pat::Const(_binding_0) => crate::Pat::Const(f.fold_expr_const(_binding_0)),
  2930. crate::Pat::Ident(_binding_0) => crate::Pat::Ident(f.fold_pat_ident(_binding_0)),
  2931. crate::Pat::Lit(_binding_0) => crate::Pat::Lit(f.fold_expr_lit(_binding_0)),
  2932. crate::Pat::Macro(_binding_0) => crate::Pat::Macro(f.fold_expr_macro(_binding_0)),
  2933. crate::Pat::Or(_binding_0) => crate::Pat::Or(f.fold_pat_or(_binding_0)),
  2934. crate::Pat::Paren(_binding_0) => crate::Pat::Paren(f.fold_pat_paren(_binding_0)),
  2935. crate::Pat::Path(_binding_0) => crate::Pat::Path(f.fold_expr_path(_binding_0)),
  2936. crate::Pat::Range(_binding_0) => crate::Pat::Range(f.fold_expr_range(_binding_0)),
  2937. crate::Pat::Reference(_binding_0) => {
  2938. crate::Pat::Reference(f.fold_pat_reference(_binding_0))
  2939. }
  2940. crate::Pat::Rest(_binding_0) => crate::Pat::Rest(f.fold_pat_rest(_binding_0)),
  2941. crate::Pat::Slice(_binding_0) => crate::Pat::Slice(f.fold_pat_slice(_binding_0)),
  2942. crate::Pat::Struct(_binding_0) => {
  2943. crate::Pat::Struct(f.fold_pat_struct(_binding_0))
  2944. }
  2945. crate::Pat::Tuple(_binding_0) => crate::Pat::Tuple(f.fold_pat_tuple(_binding_0)),
  2946. crate::Pat::TupleStruct(_binding_0) => {
  2947. crate::Pat::TupleStruct(f.fold_pat_tuple_struct(_binding_0))
  2948. }
  2949. crate::Pat::Type(_binding_0) => crate::Pat::Type(f.fold_pat_type(_binding_0)),
  2950. crate::Pat::Verbatim(_binding_0) => {
  2951. crate::Pat::Verbatim(f.fold_token_stream(_binding_0))
  2952. }
  2953. crate::Pat::Wild(_binding_0) => crate::Pat::Wild(f.fold_pat_wild(_binding_0)),
  2954. }
  2955. }
  2956. #[cfg(feature = "full")]
  2957. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2958. pub fn fold_pat_ident<F>(f: &mut F, node: crate::PatIdent) -> crate::PatIdent
  2959. where
  2960. F: Fold + ?Sized,
  2961. {
  2962. crate::PatIdent {
  2963. attrs: f.fold_attributes(node.attrs),
  2964. by_ref: node.by_ref,
  2965. mutability: node.mutability,
  2966. ident: f.fold_ident(node.ident),
  2967. subpat: (node.subpat).map(|it| ((it).0, Box::new(f.fold_pat(*(it).1)))),
  2968. }
  2969. }
  2970. #[cfg(feature = "full")]
  2971. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2972. pub fn fold_pat_or<F>(f: &mut F, node: crate::PatOr) -> crate::PatOr
  2973. where
  2974. F: Fold + ?Sized,
  2975. {
  2976. crate::PatOr {
  2977. attrs: f.fold_attributes(node.attrs),
  2978. leading_vert: node.leading_vert,
  2979. cases: crate::punctuated::fold(node.cases, f, F::fold_pat),
  2980. }
  2981. }
  2982. #[cfg(feature = "full")]
  2983. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2984. pub fn fold_pat_paren<F>(f: &mut F, node: crate::PatParen) -> crate::PatParen
  2985. where
  2986. F: Fold + ?Sized,
  2987. {
  2988. crate::PatParen {
  2989. attrs: f.fold_attributes(node.attrs),
  2990. paren_token: node.paren_token,
  2991. pat: Box::new(f.fold_pat(*node.pat)),
  2992. }
  2993. }
  2994. #[cfg(feature = "full")]
  2995. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  2996. pub fn fold_pat_reference<F>(f: &mut F, node: crate::PatReference) -> crate::PatReference
  2997. where
  2998. F: Fold + ?Sized,
  2999. {
  3000. crate::PatReference {
  3001. attrs: f.fold_attributes(node.attrs),
  3002. and_token: node.and_token,
  3003. mutability: node.mutability,
  3004. pat: Box::new(f.fold_pat(*node.pat)),
  3005. }
  3006. }
  3007. #[cfg(feature = "full")]
  3008. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  3009. pub fn fold_pat_rest<F>(f: &mut F, node: crate::PatRest) -> crate::PatRest
  3010. where
  3011. F: Fold + ?Sized,
  3012. {
  3013. crate::PatRest {
  3014. attrs: f.fold_attributes(node.attrs),
  3015. dot2_token: node.dot2_token,
  3016. }
  3017. }
  3018. #[cfg(feature = "full")]
  3019. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  3020. pub fn fold_pat_slice<F>(f: &mut F, node: crate::PatSlice) -> crate::PatSlice
  3021. where
  3022. F: Fold + ?Sized,
  3023. {
  3024. crate::PatSlice {
  3025. attrs: f.fold_attributes(node.attrs),
  3026. bracket_token: node.bracket_token,
  3027. elems: crate::punctuated::fold(node.elems, f, F::fold_pat),
  3028. }
  3029. }
  3030. #[cfg(feature = "full")]
  3031. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  3032. pub fn fold_pat_struct<F>(f: &mut F, node: crate::PatStruct) -> crate::PatStruct
  3033. where
  3034. F: Fold + ?Sized,
  3035. {
  3036. crate::PatStruct {
  3037. attrs: f.fold_attributes(node.attrs),
  3038. qself: (node.qself).map(|it| f.fold_qself(it)),
  3039. path: f.fold_path(node.path),
  3040. brace_token: node.brace_token,
  3041. fields: crate::punctuated::fold(node.fields, f, F::fold_field_pat),
  3042. rest: (node.rest).map(|it| f.fold_pat_rest(it)),
  3043. }
  3044. }
  3045. #[cfg(feature = "full")]
  3046. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  3047. pub fn fold_pat_tuple<F>(f: &mut F, node: crate::PatTuple) -> crate::PatTuple
  3048. where
  3049. F: Fold + ?Sized,
  3050. {
  3051. crate::PatTuple {
  3052. attrs: f.fold_attributes(node.attrs),
  3053. paren_token: node.paren_token,
  3054. elems: crate::punctuated::fold(node.elems, f, F::fold_pat),
  3055. }
  3056. }
  3057. #[cfg(feature = "full")]
  3058. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  3059. pub fn fold_pat_tuple_struct<F>(
  3060. f: &mut F,
  3061. node: crate::PatTupleStruct,
  3062. ) -> crate::PatTupleStruct
  3063. where
  3064. F: Fold + ?Sized,
  3065. {
  3066. crate::PatTupleStruct {
  3067. attrs: f.fold_attributes(node.attrs),
  3068. qself: (node.qself).map(|it| f.fold_qself(it)),
  3069. path: f.fold_path(node.path),
  3070. paren_token: node.paren_token,
  3071. elems: crate::punctuated::fold(node.elems, f, F::fold_pat),
  3072. }
  3073. }
  3074. #[cfg(feature = "full")]
  3075. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  3076. pub fn fold_pat_type<F>(f: &mut F, node: crate::PatType) -> crate::PatType
  3077. where
  3078. F: Fold + ?Sized,
  3079. {
  3080. crate::PatType {
  3081. attrs: f.fold_attributes(node.attrs),
  3082. pat: Box::new(f.fold_pat(*node.pat)),
  3083. colon_token: node.colon_token,
  3084. ty: Box::new(f.fold_type(*node.ty)),
  3085. }
  3086. }
  3087. #[cfg(feature = "full")]
  3088. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  3089. pub fn fold_pat_wild<F>(f: &mut F, node: crate::PatWild) -> crate::PatWild
  3090. where
  3091. F: Fold + ?Sized,
  3092. {
  3093. crate::PatWild {
  3094. attrs: f.fold_attributes(node.attrs),
  3095. underscore_token: node.underscore_token,
  3096. }
  3097. }
  3098. #[cfg(any(feature = "derive", feature = "full"))]
  3099. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3100. pub fn fold_path<F>(f: &mut F, node: crate::Path) -> crate::Path
  3101. where
  3102. F: Fold + ?Sized,
  3103. {
  3104. crate::Path {
  3105. leading_colon: node.leading_colon,
  3106. segments: crate::punctuated::fold(node.segments, f, F::fold_path_segment),
  3107. }
  3108. }
  3109. #[cfg(any(feature = "derive", feature = "full"))]
  3110. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3111. pub fn fold_path_arguments<F>(
  3112. f: &mut F,
  3113. node: crate::PathArguments,
  3114. ) -> crate::PathArguments
  3115. where
  3116. F: Fold + ?Sized,
  3117. {
  3118. match node {
  3119. crate::PathArguments::None => crate::PathArguments::None,
  3120. crate::PathArguments::AngleBracketed(_binding_0) => {
  3121. crate::PathArguments::AngleBracketed(
  3122. f.fold_angle_bracketed_generic_arguments(_binding_0),
  3123. )
  3124. }
  3125. crate::PathArguments::Parenthesized(_binding_0) => {
  3126. crate::PathArguments::Parenthesized(
  3127. f.fold_parenthesized_generic_arguments(_binding_0),
  3128. )
  3129. }
  3130. }
  3131. }
  3132. #[cfg(any(feature = "derive", feature = "full"))]
  3133. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3134. pub fn fold_path_segment<F>(f: &mut F, node: crate::PathSegment) -> crate::PathSegment
  3135. where
  3136. F: Fold + ?Sized,
  3137. {
  3138. crate::PathSegment {
  3139. ident: f.fold_ident(node.ident),
  3140. arguments: f.fold_path_arguments(node.arguments),
  3141. }
  3142. }
  3143. #[cfg(feature = "full")]
  3144. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  3145. pub fn fold_pointer_mutability<F>(
  3146. f: &mut F,
  3147. node: crate::PointerMutability,
  3148. ) -> crate::PointerMutability
  3149. where
  3150. F: Fold + ?Sized,
  3151. {
  3152. match node {
  3153. crate::PointerMutability::Const(_binding_0) => {
  3154. crate::PointerMutability::Const(_binding_0)
  3155. }
  3156. crate::PointerMutability::Mut(_binding_0) => {
  3157. crate::PointerMutability::Mut(_binding_0)
  3158. }
  3159. }
  3160. }
  3161. #[cfg(feature = "full")]
  3162. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  3163. pub fn fold_precise_capture<F>(
  3164. f: &mut F,
  3165. node: crate::PreciseCapture,
  3166. ) -> crate::PreciseCapture
  3167. where
  3168. F: Fold + ?Sized,
  3169. {
  3170. crate::PreciseCapture {
  3171. use_token: node.use_token,
  3172. lt_token: node.lt_token,
  3173. params: crate::punctuated::fold(node.params, f, F::fold_captured_param),
  3174. gt_token: node.gt_token,
  3175. }
  3176. }
  3177. #[cfg(any(feature = "derive", feature = "full"))]
  3178. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3179. pub fn fold_predicate_lifetime<F>(
  3180. f: &mut F,
  3181. node: crate::PredicateLifetime,
  3182. ) -> crate::PredicateLifetime
  3183. where
  3184. F: Fold + ?Sized,
  3185. {
  3186. crate::PredicateLifetime {
  3187. lifetime: f.fold_lifetime(node.lifetime),
  3188. colon_token: node.colon_token,
  3189. bounds: crate::punctuated::fold(node.bounds, f, F::fold_lifetime),
  3190. }
  3191. }
  3192. #[cfg(any(feature = "derive", feature = "full"))]
  3193. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3194. pub fn fold_predicate_type<F>(
  3195. f: &mut F,
  3196. node: crate::PredicateType,
  3197. ) -> crate::PredicateType
  3198. where
  3199. F: Fold + ?Sized,
  3200. {
  3201. crate::PredicateType {
  3202. lifetimes: (node.lifetimes).map(|it| f.fold_bound_lifetimes(it)),
  3203. bounded_ty: f.fold_type(node.bounded_ty),
  3204. colon_token: node.colon_token,
  3205. bounds: crate::punctuated::fold(node.bounds, f, F::fold_type_param_bound),
  3206. }
  3207. }
  3208. #[cfg(any(feature = "derive", feature = "full"))]
  3209. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3210. pub fn fold_qself<F>(f: &mut F, node: crate::QSelf) -> crate::QSelf
  3211. where
  3212. F: Fold + ?Sized,
  3213. {
  3214. crate::QSelf {
  3215. lt_token: node.lt_token,
  3216. ty: Box::new(f.fold_type(*node.ty)),
  3217. position: node.position,
  3218. as_token: node.as_token,
  3219. gt_token: node.gt_token,
  3220. }
  3221. }
  3222. #[cfg(feature = "full")]
  3223. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  3224. pub fn fold_range_limits<F>(f: &mut F, node: crate::RangeLimits) -> crate::RangeLimits
  3225. where
  3226. F: Fold + ?Sized,
  3227. {
  3228. match node {
  3229. crate::RangeLimits::HalfOpen(_binding_0) => {
  3230. crate::RangeLimits::HalfOpen(_binding_0)
  3231. }
  3232. crate::RangeLimits::Closed(_binding_0) => crate::RangeLimits::Closed(_binding_0),
  3233. }
  3234. }
  3235. #[cfg(feature = "full")]
  3236. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  3237. pub fn fold_receiver<F>(f: &mut F, node: crate::Receiver) -> crate::Receiver
  3238. where
  3239. F: Fold + ?Sized,
  3240. {
  3241. crate::Receiver {
  3242. attrs: f.fold_attributes(node.attrs),
  3243. reference: (node.reference)
  3244. .map(|it| ((it).0, ((it).1).map(|it| f.fold_lifetime(it)))),
  3245. mutability: node.mutability,
  3246. self_token: node.self_token,
  3247. colon_token: node.colon_token,
  3248. ty: Box::new(f.fold_type(*node.ty)),
  3249. }
  3250. }
  3251. #[cfg(any(feature = "derive", feature = "full"))]
  3252. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3253. pub fn fold_return_type<F>(f: &mut F, node: crate::ReturnType) -> crate::ReturnType
  3254. where
  3255. F: Fold + ?Sized,
  3256. {
  3257. match node {
  3258. crate::ReturnType::Default => crate::ReturnType::Default,
  3259. crate::ReturnType::Type(_binding_0, _binding_1) => {
  3260. crate::ReturnType::Type(_binding_0, Box::new(f.fold_type(*_binding_1)))
  3261. }
  3262. }
  3263. }
  3264. #[cfg(feature = "full")]
  3265. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  3266. pub fn fold_signature<F>(f: &mut F, node: crate::Signature) -> crate::Signature
  3267. where
  3268. F: Fold + ?Sized,
  3269. {
  3270. crate::Signature {
  3271. constness: node.constness,
  3272. asyncness: node.asyncness,
  3273. unsafety: node.unsafety,
  3274. abi: (node.abi).map(|it| f.fold_abi(it)),
  3275. fn_token: node.fn_token,
  3276. ident: f.fold_ident(node.ident),
  3277. generics: f.fold_generics(node.generics),
  3278. paren_token: node.paren_token,
  3279. inputs: crate::punctuated::fold(node.inputs, f, F::fold_fn_arg),
  3280. variadic: (node.variadic).map(|it| f.fold_variadic(it)),
  3281. output: f.fold_return_type(node.output),
  3282. }
  3283. }
  3284. pub fn fold_span<F>(f: &mut F, node: proc_macro2::Span) -> proc_macro2::Span
  3285. where
  3286. F: Fold + ?Sized,
  3287. {
  3288. node
  3289. }
  3290. #[cfg(feature = "full")]
  3291. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  3292. pub fn fold_static_mutability<F>(
  3293. f: &mut F,
  3294. node: crate::StaticMutability,
  3295. ) -> crate::StaticMutability
  3296. where
  3297. F: Fold + ?Sized,
  3298. {
  3299. match node {
  3300. crate::StaticMutability::Mut(_binding_0) => {
  3301. crate::StaticMutability::Mut(_binding_0)
  3302. }
  3303. crate::StaticMutability::None => crate::StaticMutability::None,
  3304. }
  3305. }
  3306. #[cfg(feature = "full")]
  3307. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  3308. pub fn fold_stmt<F>(f: &mut F, node: crate::Stmt) -> crate::Stmt
  3309. where
  3310. F: Fold + ?Sized,
  3311. {
  3312. match node {
  3313. crate::Stmt::Local(_binding_0) => crate::Stmt::Local(f.fold_local(_binding_0)),
  3314. crate::Stmt::Item(_binding_0) => crate::Stmt::Item(f.fold_item(_binding_0)),
  3315. crate::Stmt::Expr(_binding_0, _binding_1) => {
  3316. crate::Stmt::Expr(f.fold_expr(_binding_0), _binding_1)
  3317. }
  3318. crate::Stmt::Macro(_binding_0) => {
  3319. crate::Stmt::Macro(f.fold_stmt_macro(_binding_0))
  3320. }
  3321. }
  3322. }
  3323. #[cfg(feature = "full")]
  3324. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  3325. pub fn fold_stmt_macro<F>(f: &mut F, node: crate::StmtMacro) -> crate::StmtMacro
  3326. where
  3327. F: Fold + ?Sized,
  3328. {
  3329. crate::StmtMacro {
  3330. attrs: f.fold_attributes(node.attrs),
  3331. mac: f.fold_macro(node.mac),
  3332. semi_token: node.semi_token,
  3333. }
  3334. }
  3335. #[cfg(any(feature = "derive", feature = "full"))]
  3336. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3337. pub fn fold_trait_bound<F>(f: &mut F, node: crate::TraitBound) -> crate::TraitBound
  3338. where
  3339. F: Fold + ?Sized,
  3340. {
  3341. crate::TraitBound {
  3342. paren_token: node.paren_token,
  3343. modifier: f.fold_trait_bound_modifier(node.modifier),
  3344. lifetimes: (node.lifetimes).map(|it| f.fold_bound_lifetimes(it)),
  3345. path: f.fold_path(node.path),
  3346. }
  3347. }
  3348. #[cfg(any(feature = "derive", feature = "full"))]
  3349. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3350. pub fn fold_trait_bound_modifier<F>(
  3351. f: &mut F,
  3352. node: crate::TraitBoundModifier,
  3353. ) -> crate::TraitBoundModifier
  3354. where
  3355. F: Fold + ?Sized,
  3356. {
  3357. match node {
  3358. crate::TraitBoundModifier::None => crate::TraitBoundModifier::None,
  3359. crate::TraitBoundModifier::Maybe(_binding_0) => {
  3360. crate::TraitBoundModifier::Maybe(_binding_0)
  3361. }
  3362. }
  3363. }
  3364. #[cfg(feature = "full")]
  3365. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  3366. pub fn fold_trait_item<F>(f: &mut F, node: crate::TraitItem) -> crate::TraitItem
  3367. where
  3368. F: Fold + ?Sized,
  3369. {
  3370. match node {
  3371. crate::TraitItem::Const(_binding_0) => {
  3372. crate::TraitItem::Const(f.fold_trait_item_const(_binding_0))
  3373. }
  3374. crate::TraitItem::Fn(_binding_0) => {
  3375. crate::TraitItem::Fn(f.fold_trait_item_fn(_binding_0))
  3376. }
  3377. crate::TraitItem::Type(_binding_0) => {
  3378. crate::TraitItem::Type(f.fold_trait_item_type(_binding_0))
  3379. }
  3380. crate::TraitItem::Macro(_binding_0) => {
  3381. crate::TraitItem::Macro(f.fold_trait_item_macro(_binding_0))
  3382. }
  3383. crate::TraitItem::Verbatim(_binding_0) => {
  3384. crate::TraitItem::Verbatim(f.fold_token_stream(_binding_0))
  3385. }
  3386. }
  3387. }
  3388. #[cfg(feature = "full")]
  3389. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  3390. pub fn fold_trait_item_const<F>(
  3391. f: &mut F,
  3392. node: crate::TraitItemConst,
  3393. ) -> crate::TraitItemConst
  3394. where
  3395. F: Fold + ?Sized,
  3396. {
  3397. crate::TraitItemConst {
  3398. attrs: f.fold_attributes(node.attrs),
  3399. const_token: node.const_token,
  3400. ident: f.fold_ident(node.ident),
  3401. generics: f.fold_generics(node.generics),
  3402. colon_token: node.colon_token,
  3403. ty: f.fold_type(node.ty),
  3404. default: (node.default).map(|it| ((it).0, f.fold_expr((it).1))),
  3405. semi_token: node.semi_token,
  3406. }
  3407. }
  3408. #[cfg(feature = "full")]
  3409. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  3410. pub fn fold_trait_item_fn<F>(f: &mut F, node: crate::TraitItemFn) -> crate::TraitItemFn
  3411. where
  3412. F: Fold + ?Sized,
  3413. {
  3414. crate::TraitItemFn {
  3415. attrs: f.fold_attributes(node.attrs),
  3416. sig: f.fold_signature(node.sig),
  3417. default: (node.default).map(|it| f.fold_block(it)),
  3418. semi_token: node.semi_token,
  3419. }
  3420. }
  3421. #[cfg(feature = "full")]
  3422. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  3423. pub fn fold_trait_item_macro<F>(
  3424. f: &mut F,
  3425. node: crate::TraitItemMacro,
  3426. ) -> crate::TraitItemMacro
  3427. where
  3428. F: Fold + ?Sized,
  3429. {
  3430. crate::TraitItemMacro {
  3431. attrs: f.fold_attributes(node.attrs),
  3432. mac: f.fold_macro(node.mac),
  3433. semi_token: node.semi_token,
  3434. }
  3435. }
  3436. #[cfg(feature = "full")]
  3437. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  3438. pub fn fold_trait_item_type<F>(
  3439. f: &mut F,
  3440. node: crate::TraitItemType,
  3441. ) -> crate::TraitItemType
  3442. where
  3443. F: Fold + ?Sized,
  3444. {
  3445. crate::TraitItemType {
  3446. attrs: f.fold_attributes(node.attrs),
  3447. type_token: node.type_token,
  3448. ident: f.fold_ident(node.ident),
  3449. generics: f.fold_generics(node.generics),
  3450. colon_token: node.colon_token,
  3451. bounds: crate::punctuated::fold(node.bounds, f, F::fold_type_param_bound),
  3452. default: (node.default).map(|it| ((it).0, f.fold_type((it).1))),
  3453. semi_token: node.semi_token,
  3454. }
  3455. }
  3456. #[cfg(any(feature = "derive", feature = "full"))]
  3457. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3458. pub fn fold_type<F>(f: &mut F, node: crate::Type) -> crate::Type
  3459. where
  3460. F: Fold + ?Sized,
  3461. {
  3462. match node {
  3463. crate::Type::Array(_binding_0) => {
  3464. crate::Type::Array(f.fold_type_array(_binding_0))
  3465. }
  3466. crate::Type::BareFn(_binding_0) => {
  3467. crate::Type::BareFn(f.fold_type_bare_fn(_binding_0))
  3468. }
  3469. crate::Type::Group(_binding_0) => {
  3470. crate::Type::Group(f.fold_type_group(_binding_0))
  3471. }
  3472. crate::Type::ImplTrait(_binding_0) => {
  3473. crate::Type::ImplTrait(f.fold_type_impl_trait(_binding_0))
  3474. }
  3475. crate::Type::Infer(_binding_0) => {
  3476. crate::Type::Infer(f.fold_type_infer(_binding_0))
  3477. }
  3478. crate::Type::Macro(_binding_0) => {
  3479. crate::Type::Macro(f.fold_type_macro(_binding_0))
  3480. }
  3481. crate::Type::Never(_binding_0) => {
  3482. crate::Type::Never(f.fold_type_never(_binding_0))
  3483. }
  3484. crate::Type::Paren(_binding_0) => {
  3485. crate::Type::Paren(f.fold_type_paren(_binding_0))
  3486. }
  3487. crate::Type::Path(_binding_0) => crate::Type::Path(f.fold_type_path(_binding_0)),
  3488. crate::Type::Ptr(_binding_0) => crate::Type::Ptr(f.fold_type_ptr(_binding_0)),
  3489. crate::Type::Reference(_binding_0) => {
  3490. crate::Type::Reference(f.fold_type_reference(_binding_0))
  3491. }
  3492. crate::Type::Slice(_binding_0) => {
  3493. crate::Type::Slice(f.fold_type_slice(_binding_0))
  3494. }
  3495. crate::Type::TraitObject(_binding_0) => {
  3496. crate::Type::TraitObject(f.fold_type_trait_object(_binding_0))
  3497. }
  3498. crate::Type::Tuple(_binding_0) => {
  3499. crate::Type::Tuple(f.fold_type_tuple(_binding_0))
  3500. }
  3501. crate::Type::Verbatim(_binding_0) => {
  3502. crate::Type::Verbatim(f.fold_token_stream(_binding_0))
  3503. }
  3504. }
  3505. }
  3506. #[cfg(any(feature = "derive", feature = "full"))]
  3507. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3508. pub fn fold_type_array<F>(f: &mut F, node: crate::TypeArray) -> crate::TypeArray
  3509. where
  3510. F: Fold + ?Sized,
  3511. {
  3512. crate::TypeArray {
  3513. bracket_token: node.bracket_token,
  3514. elem: Box::new(f.fold_type(*node.elem)),
  3515. semi_token: node.semi_token,
  3516. len: f.fold_expr(node.len),
  3517. }
  3518. }
  3519. #[cfg(any(feature = "derive", feature = "full"))]
  3520. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3521. pub fn fold_type_bare_fn<F>(f: &mut F, node: crate::TypeBareFn) -> crate::TypeBareFn
  3522. where
  3523. F: Fold + ?Sized,
  3524. {
  3525. crate::TypeBareFn {
  3526. lifetimes: (node.lifetimes).map(|it| f.fold_bound_lifetimes(it)),
  3527. unsafety: node.unsafety,
  3528. abi: (node.abi).map(|it| f.fold_abi(it)),
  3529. fn_token: node.fn_token,
  3530. paren_token: node.paren_token,
  3531. inputs: crate::punctuated::fold(node.inputs, f, F::fold_bare_fn_arg),
  3532. variadic: (node.variadic).map(|it| f.fold_bare_variadic(it)),
  3533. output: f.fold_return_type(node.output),
  3534. }
  3535. }
  3536. #[cfg(any(feature = "derive", feature = "full"))]
  3537. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3538. pub fn fold_type_group<F>(f: &mut F, node: crate::TypeGroup) -> crate::TypeGroup
  3539. where
  3540. F: Fold + ?Sized,
  3541. {
  3542. crate::TypeGroup {
  3543. group_token: node.group_token,
  3544. elem: Box::new(f.fold_type(*node.elem)),
  3545. }
  3546. }
  3547. #[cfg(any(feature = "derive", feature = "full"))]
  3548. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3549. pub fn fold_type_impl_trait<F>(
  3550. f: &mut F,
  3551. node: crate::TypeImplTrait,
  3552. ) -> crate::TypeImplTrait
  3553. where
  3554. F: Fold + ?Sized,
  3555. {
  3556. crate::TypeImplTrait {
  3557. impl_token: node.impl_token,
  3558. bounds: crate::punctuated::fold(node.bounds, f, F::fold_type_param_bound),
  3559. }
  3560. }
  3561. #[cfg(any(feature = "derive", feature = "full"))]
  3562. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3563. pub fn fold_type_infer<F>(f: &mut F, node: crate::TypeInfer) -> crate::TypeInfer
  3564. where
  3565. F: Fold + ?Sized,
  3566. {
  3567. crate::TypeInfer {
  3568. underscore_token: node.underscore_token,
  3569. }
  3570. }
  3571. #[cfg(any(feature = "derive", feature = "full"))]
  3572. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3573. pub fn fold_type_macro<F>(f: &mut F, node: crate::TypeMacro) -> crate::TypeMacro
  3574. where
  3575. F: Fold + ?Sized,
  3576. {
  3577. crate::TypeMacro {
  3578. mac: f.fold_macro(node.mac),
  3579. }
  3580. }
  3581. #[cfg(any(feature = "derive", feature = "full"))]
  3582. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3583. pub fn fold_type_never<F>(f: &mut F, node: crate::TypeNever) -> crate::TypeNever
  3584. where
  3585. F: Fold + ?Sized,
  3586. {
  3587. crate::TypeNever {
  3588. bang_token: node.bang_token,
  3589. }
  3590. }
  3591. #[cfg(any(feature = "derive", feature = "full"))]
  3592. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3593. pub fn fold_type_param<F>(f: &mut F, node: crate::TypeParam) -> crate::TypeParam
  3594. where
  3595. F: Fold + ?Sized,
  3596. {
  3597. crate::TypeParam {
  3598. attrs: f.fold_attributes(node.attrs),
  3599. ident: f.fold_ident(node.ident),
  3600. colon_token: node.colon_token,
  3601. bounds: crate::punctuated::fold(node.bounds, f, F::fold_type_param_bound),
  3602. eq_token: node.eq_token,
  3603. default: (node.default).map(|it| f.fold_type(it)),
  3604. }
  3605. }
  3606. #[cfg(any(feature = "derive", feature = "full"))]
  3607. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3608. pub fn fold_type_param_bound<F>(
  3609. f: &mut F,
  3610. node: crate::TypeParamBound,
  3611. ) -> crate::TypeParamBound
  3612. where
  3613. F: Fold + ?Sized,
  3614. {
  3615. match node {
  3616. crate::TypeParamBound::Trait(_binding_0) => {
  3617. crate::TypeParamBound::Trait(f.fold_trait_bound(_binding_0))
  3618. }
  3619. crate::TypeParamBound::Lifetime(_binding_0) => {
  3620. crate::TypeParamBound::Lifetime(f.fold_lifetime(_binding_0))
  3621. }
  3622. crate::TypeParamBound::PreciseCapture(_binding_0) => {
  3623. crate::TypeParamBound::PreciseCapture(
  3624. full!(f.fold_precise_capture(_binding_0)),
  3625. )
  3626. }
  3627. crate::TypeParamBound::Verbatim(_binding_0) => {
  3628. crate::TypeParamBound::Verbatim(f.fold_token_stream(_binding_0))
  3629. }
  3630. }
  3631. }
  3632. #[cfg(any(feature = "derive", feature = "full"))]
  3633. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3634. pub fn fold_type_paren<F>(f: &mut F, node: crate::TypeParen) -> crate::TypeParen
  3635. where
  3636. F: Fold + ?Sized,
  3637. {
  3638. crate::TypeParen {
  3639. paren_token: node.paren_token,
  3640. elem: Box::new(f.fold_type(*node.elem)),
  3641. }
  3642. }
  3643. #[cfg(any(feature = "derive", feature = "full"))]
  3644. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3645. pub fn fold_type_path<F>(f: &mut F, node: crate::TypePath) -> crate::TypePath
  3646. where
  3647. F: Fold + ?Sized,
  3648. {
  3649. crate::TypePath {
  3650. qself: (node.qself).map(|it| f.fold_qself(it)),
  3651. path: f.fold_path(node.path),
  3652. }
  3653. }
  3654. #[cfg(any(feature = "derive", feature = "full"))]
  3655. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3656. pub fn fold_type_ptr<F>(f: &mut F, node: crate::TypePtr) -> crate::TypePtr
  3657. where
  3658. F: Fold + ?Sized,
  3659. {
  3660. crate::TypePtr {
  3661. star_token: node.star_token,
  3662. const_token: node.const_token,
  3663. mutability: node.mutability,
  3664. elem: Box::new(f.fold_type(*node.elem)),
  3665. }
  3666. }
  3667. #[cfg(any(feature = "derive", feature = "full"))]
  3668. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3669. pub fn fold_type_reference<F>(
  3670. f: &mut F,
  3671. node: crate::TypeReference,
  3672. ) -> crate::TypeReference
  3673. where
  3674. F: Fold + ?Sized,
  3675. {
  3676. crate::TypeReference {
  3677. and_token: node.and_token,
  3678. lifetime: (node.lifetime).map(|it| f.fold_lifetime(it)),
  3679. mutability: node.mutability,
  3680. elem: Box::new(f.fold_type(*node.elem)),
  3681. }
  3682. }
  3683. #[cfg(any(feature = "derive", feature = "full"))]
  3684. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3685. pub fn fold_type_slice<F>(f: &mut F, node: crate::TypeSlice) -> crate::TypeSlice
  3686. where
  3687. F: Fold + ?Sized,
  3688. {
  3689. crate::TypeSlice {
  3690. bracket_token: node.bracket_token,
  3691. elem: Box::new(f.fold_type(*node.elem)),
  3692. }
  3693. }
  3694. #[cfg(any(feature = "derive", feature = "full"))]
  3695. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3696. pub fn fold_type_trait_object<F>(
  3697. f: &mut F,
  3698. node: crate::TypeTraitObject,
  3699. ) -> crate::TypeTraitObject
  3700. where
  3701. F: Fold + ?Sized,
  3702. {
  3703. crate::TypeTraitObject {
  3704. dyn_token: node.dyn_token,
  3705. bounds: crate::punctuated::fold(node.bounds, f, F::fold_type_param_bound),
  3706. }
  3707. }
  3708. #[cfg(any(feature = "derive", feature = "full"))]
  3709. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3710. pub fn fold_type_tuple<F>(f: &mut F, node: crate::TypeTuple) -> crate::TypeTuple
  3711. where
  3712. F: Fold + ?Sized,
  3713. {
  3714. crate::TypeTuple {
  3715. paren_token: node.paren_token,
  3716. elems: crate::punctuated::fold(node.elems, f, F::fold_type),
  3717. }
  3718. }
  3719. #[cfg(any(feature = "derive", feature = "full"))]
  3720. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3721. pub fn fold_un_op<F>(f: &mut F, node: crate::UnOp) -> crate::UnOp
  3722. where
  3723. F: Fold + ?Sized,
  3724. {
  3725. match node {
  3726. crate::UnOp::Deref(_binding_0) => crate::UnOp::Deref(_binding_0),
  3727. crate::UnOp::Not(_binding_0) => crate::UnOp::Not(_binding_0),
  3728. crate::UnOp::Neg(_binding_0) => crate::UnOp::Neg(_binding_0),
  3729. }
  3730. }
  3731. #[cfg(feature = "full")]
  3732. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  3733. pub fn fold_use_glob<F>(f: &mut F, node: crate::UseGlob) -> crate::UseGlob
  3734. where
  3735. F: Fold + ?Sized,
  3736. {
  3737. crate::UseGlob {
  3738. star_token: node.star_token,
  3739. }
  3740. }
  3741. #[cfg(feature = "full")]
  3742. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  3743. pub fn fold_use_group<F>(f: &mut F, node: crate::UseGroup) -> crate::UseGroup
  3744. where
  3745. F: Fold + ?Sized,
  3746. {
  3747. crate::UseGroup {
  3748. brace_token: node.brace_token,
  3749. items: crate::punctuated::fold(node.items, f, F::fold_use_tree),
  3750. }
  3751. }
  3752. #[cfg(feature = "full")]
  3753. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  3754. pub fn fold_use_name<F>(f: &mut F, node: crate::UseName) -> crate::UseName
  3755. where
  3756. F: Fold + ?Sized,
  3757. {
  3758. crate::UseName {
  3759. ident: f.fold_ident(node.ident),
  3760. }
  3761. }
  3762. #[cfg(feature = "full")]
  3763. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  3764. pub fn fold_use_path<F>(f: &mut F, node: crate::UsePath) -> crate::UsePath
  3765. where
  3766. F: Fold + ?Sized,
  3767. {
  3768. crate::UsePath {
  3769. ident: f.fold_ident(node.ident),
  3770. colon2_token: node.colon2_token,
  3771. tree: Box::new(f.fold_use_tree(*node.tree)),
  3772. }
  3773. }
  3774. #[cfg(feature = "full")]
  3775. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  3776. pub fn fold_use_rename<F>(f: &mut F, node: crate::UseRename) -> crate::UseRename
  3777. where
  3778. F: Fold + ?Sized,
  3779. {
  3780. crate::UseRename {
  3781. ident: f.fold_ident(node.ident),
  3782. as_token: node.as_token,
  3783. rename: f.fold_ident(node.rename),
  3784. }
  3785. }
  3786. #[cfg(feature = "full")]
  3787. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  3788. pub fn fold_use_tree<F>(f: &mut F, node: crate::UseTree) -> crate::UseTree
  3789. where
  3790. F: Fold + ?Sized,
  3791. {
  3792. match node {
  3793. crate::UseTree::Path(_binding_0) => {
  3794. crate::UseTree::Path(f.fold_use_path(_binding_0))
  3795. }
  3796. crate::UseTree::Name(_binding_0) => {
  3797. crate::UseTree::Name(f.fold_use_name(_binding_0))
  3798. }
  3799. crate::UseTree::Rename(_binding_0) => {
  3800. crate::UseTree::Rename(f.fold_use_rename(_binding_0))
  3801. }
  3802. crate::UseTree::Glob(_binding_0) => {
  3803. crate::UseTree::Glob(f.fold_use_glob(_binding_0))
  3804. }
  3805. crate::UseTree::Group(_binding_0) => {
  3806. crate::UseTree::Group(f.fold_use_group(_binding_0))
  3807. }
  3808. }
  3809. }
  3810. #[cfg(feature = "full")]
  3811. #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
  3812. pub fn fold_variadic<F>(f: &mut F, node: crate::Variadic) -> crate::Variadic
  3813. where
  3814. F: Fold + ?Sized,
  3815. {
  3816. crate::Variadic {
  3817. attrs: f.fold_attributes(node.attrs),
  3818. pat: (node.pat).map(|it| (Box::new(f.fold_pat(*(it).0)), (it).1)),
  3819. dots: node.dots,
  3820. comma: node.comma,
  3821. }
  3822. }
  3823. #[cfg(any(feature = "derive", feature = "full"))]
  3824. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3825. pub fn fold_variant<F>(f: &mut F, node: crate::Variant) -> crate::Variant
  3826. where
  3827. F: Fold + ?Sized,
  3828. {
  3829. crate::Variant {
  3830. attrs: f.fold_attributes(node.attrs),
  3831. ident: f.fold_ident(node.ident),
  3832. fields: f.fold_fields(node.fields),
  3833. discriminant: (node.discriminant).map(|it| ((it).0, f.fold_expr((it).1))),
  3834. }
  3835. }
  3836. #[cfg(any(feature = "derive", feature = "full"))]
  3837. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3838. pub fn fold_vis_restricted<F>(
  3839. f: &mut F,
  3840. node: crate::VisRestricted,
  3841. ) -> crate::VisRestricted
  3842. where
  3843. F: Fold + ?Sized,
  3844. {
  3845. crate::VisRestricted {
  3846. pub_token: node.pub_token,
  3847. paren_token: node.paren_token,
  3848. in_token: node.in_token,
  3849. path: Box::new(f.fold_path(*node.path)),
  3850. }
  3851. }
  3852. #[cfg(any(feature = "derive", feature = "full"))]
  3853. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3854. pub fn fold_visibility<F>(f: &mut F, node: crate::Visibility) -> crate::Visibility
  3855. where
  3856. F: Fold + ?Sized,
  3857. {
  3858. match node {
  3859. crate::Visibility::Public(_binding_0) => crate::Visibility::Public(_binding_0),
  3860. crate::Visibility::Restricted(_binding_0) => {
  3861. crate::Visibility::Restricted(f.fold_vis_restricted(_binding_0))
  3862. }
  3863. crate::Visibility::Inherited => crate::Visibility::Inherited,
  3864. }
  3865. }
  3866. #[cfg(any(feature = "derive", feature = "full"))]
  3867. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3868. pub fn fold_where_clause<F>(f: &mut F, node: crate::WhereClause) -> crate::WhereClause
  3869. where
  3870. F: Fold + ?Sized,
  3871. {
  3872. crate::WhereClause {
  3873. where_token: node.where_token,
  3874. predicates: crate::punctuated::fold(node.predicates, f, F::fold_where_predicate),
  3875. }
  3876. }
  3877. #[cfg(any(feature = "derive", feature = "full"))]
  3878. #[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
  3879. pub fn fold_where_predicate<F>(
  3880. f: &mut F,
  3881. node: crate::WherePredicate,
  3882. ) -> crate::WherePredicate
  3883. where
  3884. F: Fold + ?Sized,
  3885. {
  3886. match node {
  3887. crate::WherePredicate::Lifetime(_binding_0) => {
  3888. crate::WherePredicate::Lifetime(f.fold_predicate_lifetime(_binding_0))
  3889. }
  3890. crate::WherePredicate::Type(_binding_0) => {
  3891. crate::WherePredicate::Type(f.fold_predicate_type(_binding_0))
  3892. }
  3893. }
  3894. }
  3895. #[cfg(any(feature = "derive", feature = "full"))]
  3896. fn fold_vec<T, V, F>(vec: Vec<T>, fold: &mut V, mut f: F) -> Vec<T>
  3897. where
  3898. V: ?Sized,
  3899. F: FnMut(&mut V, T) -> T,
  3900. {
  3901. vec.into_iter().map(|it| f(fold, it)).collect()
  3902. }