diff options
Diffstat (limited to 'vim/bundle/vim-snippets/snippets/rust.snippets')
-rw-r--r-- | vim/bundle/vim-snippets/snippets/rust.snippets | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/vim/bundle/vim-snippets/snippets/rust.snippets b/vim/bundle/vim-snippets/snippets/rust.snippets new file mode 100644 index 0000000..20532f7 --- /dev/null +++ b/vim/bundle/vim-snippets/snippets/rust.snippets @@ -0,0 +1,186 @@ +################# +# Rust Snippets # +################# + +# Functions +snippet fn "Function definition" + fn ${1:function_name}(${2})${3} { + ${0} + } +snippet pfn "Function definition" + pub fn ${1:function_name}(${2})${3} { + ${0} + } +snippet test "Unit test function" + #[test] + fn ${1:test_function_name}() { + ${0} + } +snippet bench "Bench function" b + #[bench] + fn ${1:bench_function_name}(b: &mut test::Bencher) { + b.iter(|| { + ${0} + }) + } +snippet new "Constructor function" + pub fn new(${2}) -> ${1:Name} { + $1 { ${3} } + } +snippet main "Main function" + pub fn main() { + ${0} + } +snippet let "let variable declaration with type inference" + let ${1} = ${2}; +snippet lett "let variable declaration with explicit type annotation" + let ${1}: ${2} = ${3}; +snippet letm "let mut variable declaration with type inference" + let mut ${1} = ${2}; +snippet lettm "let mut variable declaration with explicit type annotation" + let mut ${1}: ${2} = ${3}; +snippet pln "println!" + println!("${1}"); +snippet pln, "println! with format param" + println!("${1}", ${2}); +# Modules +snippet ec "extern crate" + extern crate ${1:sync}; +snippet ecl "extern crate log" + #[macro_use] + extern crate log; +snippet mod + mod ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} { + ${0} + } /* $1 */ +snippet testmod "Test module" b + #[cfg(test)] + mod tests { + use super::${1:*}; + + test${0} + } +# Attributes +snippet allow "allow lint attribute" b + #[allow(${1:unused_variable})] +snippet cfg "cfg attribute" b + #[cfg(${1:target_os = "linux"})] +snippet feat "feature attribute" b + #![feature(${1:plugin})] +snippet der "#[derive(..)]" b + #[derive(${1:Debug})] +snippet attr "#[..]" b + #[${1:inline}] +snippet crate "Define create meta attributes" + // Crate name + #![crate_name = "${1:crate_name}"] + // Additional metadata attributes + #![desc = "${2:Descrption.}"] + #![license = "${3:BSD}"] + #![comment = "${4:Comment.}"] + // Specify the output type + #![crate_type = "${5:lib}"] +# Common types +snippet opt "Option<T>" + Option<${1:i32}> +snippet res "Result<T, E>" + Result<${1:~str}, ${2:()}> +# Control structures +snippet if + if ${1} { + ${0} + } +snippet ife "if / else" + if ${1} { + ${2} + } else { + ${0} + } +snippet el "else" + else { + ${0} + } +snippet eli "else if" + else if ${1} { + ${0} + } +snippet mat "match pattern" + match ${1} { + ${2} => ${3} + } +snippet case "Case clause of pattern match" + ${1:_} => ${2:expression} +snippet loop "loop {}" b + loop { + ${0} + } +snippet wh "while loop" + while ${1:condition} { + ${0} + } +snippet for "for ... in ... loop" + for ${1:i} in ${2} { + ${0} + } +# TODO commenting +snippet todo "TODO comment" + // [TODO]: ${0:Description} +snippet fixme "FIXME comment" + // FIXME: $0 +# Struct +snippet st "Struct definition" + struct ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} { + ${0} + } +snippet impl "Struct/Trait implementation" + impl ${1:Type/Trait}${2: for ${3:Type}} { + ${0} + } +snippet stn "Struct with new constructor" + pub struct ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} { + ${0} + } + + impl $1 { + pub fn new(${2}) -> $1 { + $1 { ${3} } + } + } +snippet type "Type alias" + type ${1:NewName} = $2; +snippet enum "enum definition" + enum ${1:Name} { + ${2}, + } +# Traits +snippet trait "Trait definition" + trait ${1:Name} { + ${0} + } +snippet drop "Drop trait implementation (destructor)" + impl Drop for ${1:Name} { + fn drop(&mut self) { + ${0} + } + } +# Statics +snippet ss "static string declaration" + static ${1}: &'static str = "${0}"; +snippet stat "static item declaration" + static ${1}: ${2:usize} = ${0}; +# Concurrency +snippet scoped "spawn a scoped thread" + thread::scoped(${1:move }|| { + ${0} + }); +snippet spawn "spawn a thread" + thread::spawn(${1:move }|| { + ${0} + }); +snippet chan "Declare (Sender, Receiver) pair of asynchronous channel()" + let (${1:tx}, ${2:rx}): (Sender<${3:i32}>, Receiver<${4:i32}>) = channel(); +# Testing +snippet as "assert!" + assert!(${1:predicate}) +snippet ase "assert_eq!" + assert_eq!(${1:expected}, ${2:actual}) |