在JS 中:'a'、'abc' 这样的都叫字符串,数据类型是 String,但是在 Rust 中不太一样,字符串还会细分分为三种类型,上一小节的「字符类型」还有「字符串切片类型:String」和「字符串类型: &str」。 let _char: char = 'hello'; let _str: &str = "hello world"; let _str
publicstringmessage{get;privateset;} publicError(intcode,stringmessage) { this.code=code; this.message=message; } } 这也是C#的enum鸡肋的地方。当然这并不是枚举了,只不过到达了相似效果。 接着我们来看Java的enum,就会发现它比较好一些了。还拿上面这个例子来说,比如: 1 2 3 4 5 6 7 8 9 10 11...
如果你可以不用 using enum,那么你可能应该尝试将其改为 use trait!这是 Rust 的方式!我们的猫和狗仍将是struct,但让我们将我们的Animal改为trait! trait Animal { fn get_noise(&self) -> String; } 然后我们将为Animal trait我们的Cat和实现Dog。 struct Cat; impl Animal for Cat { fn get_noise(&s...
有些场景也可以使用 Enum 来代替 trait 对象。参见 `enum_dispatch`[22]。 5. 使用基于栈的可变长度数据类型 定长度的数据类型可以简单地存储在堆栈上,但对于动态大小的数据,它并不是那么简单。但是,`smallvec`[23], `smallstring`[24]和`tendril`[25]都是可变长度数据类型,允许在栈上存储少量元素。像smallvec...
String::from() 允许从字符串内容(即切片)生成自有字符串 使用vec! 宏来模拟一个空文件 通过点运算符.访问字段,使用引用避免在移动( move,转移所有权)后使用的问题 函数执行结果: 示例代码的详细分析: (1)第 1-5 行定义了 File 结构,包括字段和对应的类型,还包括每个字段的生命周期(示例中省略了),当某个...
enumResult<T,E>{ Ok(T), Err(E), } fndivide(a:i32,b:i32)->Result<i32,String>{ ifb==0{ Err(String::from("Division by zero")) }else{ Ok(a/b) } } Option: 实例 fnget_element(index:usize,vec:&Vec<i32>)->Option<i32>{ ...
struct Address {street: String,city: String,state: String,}struct Person {name: String,age: u8,address: Address,} 结构体方法 方法(method)是在结构体上定义的功能,可以访问结构体的字段并执行一些操作。使用关键字impl,结构体可以对应一个或多个impl代码块。
parse_ini_string(input: &str) -> HashMap<String, HashMap<String, String>> {let mut state = StatesEnum::Start;let mut current_section = String::new();let mut properties: HashMap<String, HashMap<String, String>> = HashMap::new();let mut comments: HashMap<String, Vec<String>> = ...
自定义错误的类型是enum, 和其他语言相比,这有点奇怪。 代码如下: // 定义自定义错误类型#[derive(Debug)]pubenumMyError{FileOpenError(String),ParseError(String),Common(String), }// 实现Error特质implErrorforMyError{}// 实现Display特质以便打印错误信息implfmt::DisplayforMyError{fnfmt(&self, f: &mut...
let s1:&str="banana";let s2:&str=&String::from("banana");let arr=[1,2,3,4,5];let s3:&[i32]=&arr[1..3]; 1. 2. 3. 4. 5. 6. 这段代码就可以正常通过,原因在于这些切片引用的大小在编译器都是已知的。 总结 我们常常说使用切片,实际上我们在用的是切片的引用,我们也在频繁说使用字...