####################################################################### # Rust Snippets # ####################################################################### priority -50 snippet let "let variable declaration" b let ${1:name}${2:: ${3:type}} = $4; endsnippet snippet letm "let mut variable declaration" b let mut ${1:name}${2:: ${3:type}} = $4; endsnippet snippet fn "A function, optionally with arguments and return type." fn ${1:function_name}($2)${3/..*/ -> /}$3 { ${VISUAL}$0 } endsnippet snippet pfn "A public function, optionally with arguments and return type." pub fn ${1:function_name}($2)${3/..*/ -> /}$3 { ${VISUAL}$0 } endsnippet snippet arg "Function Arguments" i ${1:a}: ${2:T}${3:, arg} endsnippet snippet || "Closure, anonymous function (inline)" i ${1:move }|$2| { $3 } endsnippet snippet |} "Closure, anonymous function (block)" i ${1:move }|$2| { $3 } endsnippet snippet pri "print!(..)" b print!("$1"${2/..*/, /}$2); endsnippet snippet pln "println!(..)" b println!("$1"${2/..*/, /}$2); endsnippet snippet fmt "format!(..)" format!("$1"${2/..*/, /}$2); endsnippet snippet macro "macro_rules!" b macro_rules! ${1:name} { (${2:matcher}) => ( $3 ) } endsnippet snippet mod "A module" b mod ${1:`!p snip.rv = snip.basename.lower() or "name"`} { ${VISUAL}$0 } endsnippet snippet for "for .. in .." b for ${1:i} in $2 { ${VISUAL}$0 } endsnippet snippet todo "A Todo comment" // [TODO]: ${1:Description} - `!v strftime("%Y-%m-%d %I:%M%P")` endsnippet snippet st "Struct" b struct ${1:`!p snip.rv = snip.basename.title() or "Name"`} { ${VISUAL}$0 } endsnippet # TODO: fancy dynamic field mirroring like Python slotclass snippet stn "Struct with new constructor." b pub struct ${1:`!p snip.rv = snip.basename.title() or "Name"`} { fd$0 } impl $1 { pub fn new($2) -> $1 { $1 { $3 } } } endsnippet snippet fd "Struct field definition" w ${1:name}: ${2:Type}, endsnippet snippet impl "Struct/Trait implementation" b impl ${1:Type/Trait}${2: for ${3:Type}} { $0 } endsnippet # vim:ft=snippets: