runtime(rust): fix rust indent (#12542)

diff --git a/runtime/indent/rust.vim b/runtime/indent/rust.vim
index d30629b..2b544f4 100644
--- a/runtime/indent/rust.vim
+++ b/runtime/indent/rust.vim
@@ -132,6 +132,22 @@
 		return indent(prevlinenum) + 6
 	endif
 
+	"match newline after struct with generic bound like
+	"struct SomeThing<T>
+	"| <-- newline indent should same as prevline
+	if prevline[len(prevline) - 1] == ">"
+				\ && prevline =~# "\s*struct.*>$"
+		return indent(prevlinenum)
+	endif
+
+	"match newline after where like:
+	"struct SomeThing<T>
+	"where
+	"     T: Display,
+	if prevline =~# '^\s*where$'
+		return indent(prevlinenum) + 4
+	endif
+
 	if prevline[len(prevline) - 1] == ","
 				\ && s:get_line_trimmed(a:lnum) !~ '^\s*[\[\]{}]'
 				\ && prevline !~ '^\s*fn\s'