diff --git a/gcc/rust/ast/rust-ast-collector.cc b/gcc/rust/ast/rust-ast-collector.cc
index 05c9630bf523ac9ad911d541f0b4b4635777b6fe..cb8dfd800162f69d6b8d5a8136a5d865f67e9105 100644
--- a/gcc/rust/ast/rust-ast-collector.cc
+++ b/gcc/rust/ast/rust-ast-collector.cc
@@ -54,76 +54,6 @@ TokenCollector::visit (AST::Item &item)
   item.accept_vis (*this);
 }
 
-template <typename T>
-void
-TokenCollector::visit (T &node)
-{
-  node.accept_vis (*this);
-}
-
-template <typename T>
-void
-TokenCollector::visit_items_joined_by_separator (T &collection,
-						 TokenId separator,
-						 size_t start_offset,
-						 size_t end_offset)
-{
-  if (collection.size () > start_offset)
-    {
-      visit (collection.at (start_offset));
-      auto size = collection.size () - end_offset;
-      for (size_t i = start_offset + 1; i < size; i++)
-	{
-	  push (Rust::Token::make (separator, UNDEF_LOCATION));
-	  visit (collection.at (i));
-	}
-    }
-}
-
-template <typename T>
-void
-TokenCollector::visit_as_line (T &item, std::vector<TokenPtr> trailing)
-{
-  indentation ();
-  visit (item);
-  for (auto &token : trailing)
-    push (token);
-  newline ();
-}
-
-template <typename T>
-void
-TokenCollector::visit_items_as_lines (T &collection,
-				      std::vector<TokenPtr> trailing)
-{
-  for (auto &item : collection)
-    visit_as_line (item, trailing);
-}
-
-template <typename T>
-void
-TokenCollector::visit_items_as_block (T &collection,
-				      std::vector<TokenPtr> trailing,
-				      TokenId left_brace, TokenId right_brace)
-{
-  push (Rust::Token::make (left_brace, UNDEF_LOCATION));
-  if (collection.empty ())
-    {
-      push (Rust::Token::make (right_brace, UNDEF_LOCATION));
-      newline ();
-    }
-  else
-    {
-      newline ();
-      increment_indentation ();
-      visit_items_as_lines (collection, trailing);
-      decrement_indentation ();
-      indentation ();
-      push (Rust::Token::make (right_brace, UNDEF_LOCATION));
-      newline ();
-    }
-}
-
 void
 TokenCollector::trailing_comma ()
 {
diff --git a/gcc/rust/ast/rust-ast-collector.h b/gcc/rust/ast/rust-ast-collector.h
index 20ffd8e65abf283a80f0eaa96d2effcfdea010fb..55c13d103d052a042381818e4598363a4bddd1a5 100644
--- a/gcc/rust/ast/rust-ast-collector.h
+++ b/gcc/rust/ast/rust-ast-collector.h
@@ -97,13 +97,32 @@ private:
   void visit_items_joined_by_separator (T &collection,
 					TokenId separator = COMMA,
 					size_t start_offset = 0,
-					size_t end_offset = 0);
+					size_t end_offset = 0)
+  {
+    if (collection.size () > start_offset)
+      {
+	visit (collection.at (start_offset));
+	auto size = collection.size () - end_offset;
+	for (size_t i = start_offset + 1; i < size; i++)
+	  {
+	    push (Rust::Token::make (separator, UNDEF_LOCATION));
+	    visit (collection.at (i));
+	  }
+      }
+  }
 
   /**
    * Visit item placing end of line after.
    */
   template <typename T>
-  void visit_as_line (T &item, std::vector<TokenPtr> trailing = {});
+  void visit_as_line (T &item, std::vector<TokenPtr> trailing = {})
+  {
+    indentation ();
+    visit (item);
+    for (auto &token : trailing)
+      push (token);
+    newline ();
+  }
 
   /**
    * Visit each item in @collection "as line".
@@ -111,8 +130,11 @@ private:
    * @see visit_as_line
    */
   template <typename T>
-  void visit_items_as_lines (T &collection,
-			     std::vector<TokenPtr> trailing = {});
+  void visit_items_as_lines (T &collection, std::vector<TokenPtr> trailing = {})
+  {
+    for (auto &item : collection)
+      visit_as_line (item, trailing);
+  }
 
   /**
    * Visit each item in @collection as lines inside a block delimited by braces
@@ -122,7 +144,25 @@ private:
   template <typename T>
   void visit_items_as_block (T &collection, std::vector<TokenPtr> trailing = {},
 			     TokenId left_brace = LEFT_CURLY,
-			     TokenId right_brace = RIGHT_CURLY);
+			     TokenId right_brace = RIGHT_CURLY)
+  {
+    push (Rust::Token::make (left_brace, UNDEF_LOCATION));
+    if (collection.empty ())
+      {
+	push (Rust::Token::make (right_brace, UNDEF_LOCATION));
+	newline ();
+      }
+    else
+      {
+	newline ();
+	increment_indentation ();
+	visit_items_as_lines (collection, trailing);
+	decrement_indentation ();
+	indentation ();
+	push (Rust::Token::make (right_brace, UNDEF_LOCATION));
+	newline ();
+      }
+  }
 
   void trailing_comma ();
   void newline ();
@@ -155,7 +195,7 @@ public:
   /**
    * @see visit<std::unique_ptr<T>>
    */
-  template <typename T> void visit (T &node);
+  template <typename T> void visit (T &node) { node.accept_vis (*this); }
 
   void visit (Visitable &v);
   void visit (LoopLabel &label);