Rust 宏
Rust 的功能和语法可以通过称为宏的自定义定义进行扩展。它们被命名,并通过一致的语法调用:some_extension!(...)。 调用 // Used as an expression. let x = vec![1,2,3]; // Used as a statement. println!("Hello!"); // Used in a pattern. macro_rul...
Rust 的功能和语法可以通过称为宏的自定义定义进行扩展。它们被命名,并通过一致的语法调用:some_extension!(...)。 调用 // Used as an expression. let x = vec![1,2,3]; // Used as a statement. println!("Hello!"); // Used in a pattern. macro_rul...
在 rust 中生命周期是另外一种常用的泛型,主要用来修饰引用。生命周期不是确保类型具有预期行为,而是确保引用在使用时保持有效。每个引用都有一个自己的生命周期,并且在作用域内是有效的。大部分时候生命周期都是隐式的,由编译器进行推断。只有在可能有多种类型时,才必须注释类型。以类似的方式,当引用的生命周期可以以几种不同的方式关联时,就必须注释生命周期。 Rust 要求使用通用生命周期参数来注释关...
方法是一类特殊的函数,函数可以成为独立的方法,而方法是在结构上下文上被定义的,语法基本一致,不同之处就是方法的第一个参数必须是 调用方法结构的引用(&self)。方法的调用需要通过结构对象进行调用。 需要通过 impl 关键字去实现一个结构,并在 {} 内进行方法声明。可以多次使用 impl。 struct Rectangle { width: u32, height: u...
一个包由一个或多个 crate 提供的功能组成。包含了 Cargo.toml 描述文件,用于描述构建 crate。 引入外部包 在 Cargo.toml 文件里面的 [dependencies] 下面写入格式为 <package_name> = "version" 即可导入外部包。 [dependencies] rand = "0.8.3" Crate Crate 可...
使用宏 panic! 可以手动的中断程序,该操作造成的错误是不可以被恢复,程序中断后不会立刻释放和清除 Stack(堆)数据,等系统来回收。如果需要直接释放需要在 Cargo.toml 里加一个配置。 [profile.release] panic = 'abort' 调用一个 panic。 fn main(){ panic!("crash and run"); } 错误回溯...
整型(integer) 浮点型(floating-point number) 布尔值(Boolean) 字符(character) 元组(tuple) 数组(array) Slice Type 切片允许您引用集合中的连续元素序列,而不是整个集合。切片是一种引用,因此它没有所有权。 字符串切片 let s = String::from("hello world")...
在 rust 中闭包就是一个可以保存变量的匿名函数,或者是作为参数传递的匿名函数。 创建匿名函数 匿名函数使用 ||{} 的写法,可以声明变量类型,也可以声明声明返回值类型,伸直 {} 也可以省略。 fn add_one_v1 (x: u32) -> u32 { x + 1 } let add_one_v2 = |x: u32| -> u32 { x + 1 }; l...
变量 变量通过 **let **关键字来进行声明,并分为不可变变量和可变变量,相同变量名可以重复声明,重复声明后会得到一个全新的变量。不可变只能进行一次赋值,再次赋值会抛出异常。可以通过添加 mut 关键字来赋予变量可变属性。变量可先声明,后赋值。变量不能在全局作用域内声明。 let x = 5; x = 6; // cannot assign twice to immutable va...
常见优化措施 加速某些操作 避免冗余操作 应用之前优化 编译缓存 集成式处理中的编译缓存 程序式处理中的编译缓存 面向对象式处理中的编译缓存 预查必须字符/子字符串优化 长度判断优化 通过传动转置优化 字符串起始/行锚点优化 隐式锚点优化 字符串结束/行锚点优化 开头字符/字...
引擎 正则引擎是一种对正则表达式进行匹配的程序,根据不同的标准和方式实现。 分类 引擎主要分为:DFA、传统型 NFA和POSIX NFA,有时候还有DFA/NFA混合型。 判断 支持忽略优先量词的只能是传统型 NFA DFA 不支持捕获型括号和回溯 echo =XX========================================== | egrep ...