index.html 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `visit` mod in crate `syn`."><meta name="keywords" content="rust, rustlang, rust-lang, visit"><title>syn::visit - Rust</title><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../dark.css"><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script src="../../storage.js"></script></head><body class="rustdoc mod"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><p class='location'>Module visit</p><div class="sidebar-elems"><div class="block items"><ul><li><a href="#traits">Traits</a></li><li><a href="#functions">Functions</a></li></ul></div><p class='location'><a href='../index.html'>syn</a></p><script>window.sidebarCurrent = {name: 'visit', ty: 'mod', relpath: '../'};</script><script defer src="../sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../theme.js"></script><nav class="sub"><form class="search-form js-only"><div class="search-container"><input class="search-input" name="search" autocomplete="off" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><a id="settings-menu" href="../../settings.html"><img src="../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='in-band'>Module <a href='../index.html'>syn</a>::<wbr><a class="mod" href=''>visit</a></span><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../../src/syn/visit.rs.html#3-778' title='goto source code'>[src]</a></span></h1><div class='docblock'><p>AST walker. Each overridden visit method has full control over what
  2. happens with its node, it can do its own traversal of the node's children,
  3. call <code>visit::walk_*</code> to apply the default traversal algorithm, or prevent
  4. deeper traversal by doing nothing.</p>
  5. <p>Note: it is an important invariant that the default visitor walks the body
  6. of a function in &quot;execution order&quot; (more concretely, reverse post-order
  7. with respect to the CFG implied by the AST), meaning that if AST node A may
  8. execute before AST node B, then A is visited first. The borrow checker in
  9. particular relies on this property.</p>
  10. <p>Note: walking an AST before macro expansion is probably a bad idea. For
  11. instance, a walker looking for item names in a module will miss all of
  12. those that are created by the expansion of a macro.</p>
  13. </div><h2 id='traits' class='section-header'><a href="#traits">Traits</a></h2>
  14. <table>
  15. <tr class=' module-item'>
  16. <td><a class="trait" href="trait.Visitor.html"
  17. title='trait syn::visit::Visitor'>Visitor</a></td>
  18. <td class='docblock-short'>
  19. <p>Each method of the Visitor trait is a hook to be potentially
  20. overridden. Each method's default implementation recursively visits
  21. the substructure of the input via the corresponding <code>walk</code> method;
  22. e.g. the <code>visit_mod</code> method by default calls <code>visit::walk_mod</code>.</p>
  23. </td>
  24. </tr></table><h2 id='functions' class='section-header'><a href="#functions">Functions</a></h2>
  25. <table>
  26. <tr class=' module-item'>
  27. <td><a class="fn" href="fn.walk_assoc_type_binding.html"
  28. title='fn syn::visit::walk_assoc_type_binding'>walk_assoc_type_binding</a></td>
  29. <td class='docblock-short'>
  30. </td>
  31. </tr>
  32. <tr class=' module-item'>
  33. <td><a class="fn" href="fn.walk_const_expr.html"
  34. title='fn syn::visit::walk_const_expr'>walk_const_expr</a></td>
  35. <td class='docblock-short'>
  36. </td>
  37. </tr>
  38. <tr class=' module-item'>
  39. <td><a class="fn" href="fn.walk_derive_input.html"
  40. title='fn syn::visit::walk_derive_input'>walk_derive_input</a></td>
  41. <td class='docblock-short'>
  42. </td>
  43. </tr>
  44. <tr class=' module-item'>
  45. <td><a class="fn" href="fn.walk_field.html"
  46. title='fn syn::visit::walk_field'>walk_field</a></td>
  47. <td class='docblock-short'>
  48. </td>
  49. </tr>
  50. <tr class=' module-item'>
  51. <td><a class="fn" href="fn.walk_fn_ret_ty.html"
  52. title='fn syn::visit::walk_fn_ret_ty'>walk_fn_ret_ty</a></td>
  53. <td class='docblock-short'>
  54. </td>
  55. </tr>
  56. <tr class=' module-item'>
  57. <td><a class="fn" href="fn.walk_generics.html"
  58. title='fn syn::visit::walk_generics'>walk_generics</a></td>
  59. <td class='docblock-short'>
  60. </td>
  61. </tr>
  62. <tr class=' module-item'>
  63. <td><a class="fn" href="fn.walk_lifetime_def.html"
  64. title='fn syn::visit::walk_lifetime_def'>walk_lifetime_def</a></td>
  65. <td class='docblock-short'>
  66. </td>
  67. </tr>
  68. <tr class=' module-item'>
  69. <td><a class="fn" href="fn.walk_mac.html"
  70. title='fn syn::visit::walk_mac'>walk_mac</a></td>
  71. <td class='docblock-short'>
  72. </td>
  73. </tr>
  74. <tr class=' module-item'>
  75. <td><a class="fn" href="fn.walk_opt_ident.html"
  76. title='fn syn::visit::walk_opt_ident'>walk_opt_ident</a></td>
  77. <td class='docblock-short'>
  78. </td>
  79. </tr>
  80. <tr class=' module-item'>
  81. <td><a class="fn" href="fn.walk_path.html"
  82. title='fn syn::visit::walk_path'>walk_path</a></td>
  83. <td class='docblock-short'>
  84. </td>
  85. </tr>
  86. <tr class=' module-item'>
  87. <td><a class="fn" href="fn.walk_path_parameters.html"
  88. title='fn syn::visit::walk_path_parameters'>walk_path_parameters</a></td>
  89. <td class='docblock-short'>
  90. </td>
  91. </tr>
  92. <tr class=' module-item'>
  93. <td><a class="fn" href="fn.walk_path_segment.html"
  94. title='fn syn::visit::walk_path_segment'>walk_path_segment</a></td>
  95. <td class='docblock-short'>
  96. </td>
  97. </tr>
  98. <tr class=' module-item'>
  99. <td><a class="fn" href="fn.walk_poly_trait_ref.html"
  100. title='fn syn::visit::walk_poly_trait_ref'>walk_poly_trait_ref</a></td>
  101. <td class='docblock-short'>
  102. </td>
  103. </tr>
  104. <tr class=' module-item'>
  105. <td><a class="fn" href="fn.walk_ty.html"
  106. title='fn syn::visit::walk_ty'>walk_ty</a></td>
  107. <td class='docblock-short'>
  108. </td>
  109. </tr>
  110. <tr class=' module-item'>
  111. <td><a class="fn" href="fn.walk_ty_param_bound.html"
  112. title='fn syn::visit::walk_ty_param_bound'>walk_ty_param_bound</a></td>
  113. <td class='docblock-short'>
  114. </td>
  115. </tr>
  116. <tr class=' module-item'>
  117. <td><a class="fn" href="fn.walk_variant.html"
  118. title='fn syn::visit::walk_variant'>walk_variant</a></td>
  119. <td class='docblock-short'>
  120. </td>
  121. </tr>
  122. <tr class=' module-item'>
  123. <td><a class="fn" href="fn.walk_variant_data.html"
  124. title='fn syn::visit::walk_variant_data'>walk_variant_data</a></td>
  125. <td class='docblock-short'>
  126. </td>
  127. </tr></table></section><section id="search" class="content hidden"></section><section class="footer"></section><aside id="help" class="hidden"><div><h1 class="hidden">Help</h1><div class="shortcuts"><h2>Keyboard Shortcuts</h2><dl><dt><kbd>?</kbd></dt><dd>Show this help dialog</dd><dt><kbd>S</kbd></dt><dd>Focus the search field</dd><dt><kbd>↑</kbd></dt><dd>Move up in search results</dd><dt><kbd>↓</kbd></dt><dd>Move down in search results</dd><dt><kbd>↹</kbd></dt><dd>Switch tab</dd><dt><kbd>&#9166;</kbd></dt><dd>Go to active search result</dd><dt><kbd>+</kbd></dt><dd>Expand all sections</dd><dt><kbd>-</kbd></dt><dd>Collapse all sections</dd></dl></div><div class="infos"><h2>Search Tricks</h2><p>Prefix searches with a type followed by a colon (e.g. <code>fn:</code>) to restrict the search to a given type.</p><p>Accepted types are: <code>fn</code>, <code>mod</code>, <code>struct</code>, <code>enum</code>, <code>trait</code>, <code>type</code>, <code>macro</code>, and <code>const</code>.</p><p>Search functions by type signature (e.g. <code>vec -> usize</code> or <code>* -> vec</code>)</p><p>Search multiple things at once by splitting your query with comma (e.g. <code>str,u8</code> or <code>String,struct:Vec,test</code>)</p></div></div></aside><script>window.rootPath = "../../";window.currentCrate = "syn";</script><script src="../../aliases.js"></script><script src="../../main.js"></script><script defer src="../../search-index.js"></script></body></html>