2、数组(Array) 3、字符串(String) 三、自定义数据类型 1、结构体(Struct) 2、枚举(Enum) 四、其他数据类型 1、切片(Slice) 2、Option类型 3、Result类型 总结 导言 Rust是一种现代的、安全的系统编程语言,注重内存安全和并发性。在Rust中,数据类型是程序中最基本的构建块之一。本篇博客将详细解释Rust的各种...
字符串是一种文本数据类型,它由一系列Unicode字符组成。在Rust中,字符串类型使用String表示,它是一个可增长的、可变的字符串类型。 以下是一个字符串的示例: 代码语言:javascript 复制 fnmain(){letmessage:String=String::from("Hello, Rust!");println!("Message: {}",message);} 三、自定义数据类型 Rust允...
address: String::from("::1"), }; 但,rust 可以简化类型的定义: enum IpAddr { V4(String), V6(String), } let home = IpAddr::V4(String::from("127.0.0.1")); let loopback = IpAddr::V6(String::from("::1")); Where structs give you a way of grouping together related fields and ...
let v: Vec<String> = vec![ "Odin".to_string(), "Thor".to_string(), "Loki".to_string(), ]; 现在我们看一下需要在堆上分配数据的情况。此处示例一个在堆上分配了 String 的 Vector,每个字符串使用三个 usize 表示,分别存储着数据地址、容量和长度。在为 Vector 分配的堆内存中,用于存储字符串 ...
enum 和使用enum作为字段的struct,都需要实现对应的trait: #![allow(dead_code)] use std::fmt::Display; #[derive(Debug)] enum FileState { Open, Closed, } #[derive(Debug)] struct File { name: String, data: Vec<u8>, state: FileState, } impl File { fn new(name: &str) -> File { ...
use std::fs::File;use std::io::{self,Read};fnread_file()->Result<(),io::Error>{letmut file=File::open("file.txt")?;letmut contents=String::new();file.read_to_string(&mut contents)?;println!("文件内容:{}",contents);Ok(())}fnmain(){matchread_file(){Ok(_)=>println!("...
除基本类型外最常用的类型是字符串String、结构体struct、枚举enum、向量Vector和字典HashMap(也叫哈希图)。string、struct、enum、vector、HashMap的数据都是在堆内存上分配空间,然后在栈空间分配指向堆内存的指针信息。函数也可以算是一种类型,此外还有闭包、trait。这些类型各有实现方式,复杂度也高。
扩展的信息就无法直接在enum中定义, 只能通过impl给其实现label()或code()方法: implResponseCode{pubfncode(self)->String{matchself{Success=>"200".to_string(),Error=>"200".to_string(),}}...} 这是一个机械的添加过程, 那我们可以实现一个过程宏来实现这些方法: ...
name: "TOM".to_string(), age: 32 }; p.name = "TOM2".to_string(); 1. 2. 3. 4. 5. 6. 7. 在rust 的开发中,我们需要明确告诉编译器变量的可变与不可变,习惯了这一点,rust 的学习就进展了一大步。 复制 // 这样表示不可变
usestd::io;usestd::io::Read;usestd::fs::File;fnread_username_from_file() ->Result<String, io::Error> {letmutf = File::open("hello.txt")?;letmuts =String::new(); f.read_to_string(&muts)?;Ok(s) } 代码中第6行的?操作符会被展开成类似下面的代码: ...