^[ ]*((pub(\([^)\]+\))?[ ]+)?((async|const|unsafe|extern[ ]+"[^"]+")[ ]+)?(struct|enum|union|mod|trait|fn|impl|macro_rules!)[< ][^;]*)$