小编Qur*_*erd的帖子

为什么 str 主要以借用形式存在?

这是该str类型的使用方式:

let hello = "Hello, world!";

// with an explicit type annotation
let hello: &'static str = "Hello, world!";
Run Code Online (Sandbox Code Playgroud)

let hello: str = "Hello, world!"; 造成 expected `str`, found `&str`

为什么文本的默认类型str与所有原始类型、向量和String? 为什么是参考?

string types reference rust borrowing

6
推荐指数
1
解决办法
554
查看次数

当使用泛型和函数指针克隆结构时,如何修复“方法‘clone’存在,但不满足以下特征边界”?

我正在编写一个函数,它将在终端中创建一个菜单界面。要使用该函数,需要传递一个Vec<menu_option>

#[derive(Clone)]
pub struct menu_option<'a, T> {
    pub command: &'a str,
    pub description: &'a str,
    pub action: menu_option_action<'a, T>,
}

#[derive(Clone)]
pub enum menu_option_action<'a, T> {
    sub_menu(Vec<menu_option<'a, T>>),
    callback(fn(state: T) -> T),
    leave,
}
Run Code Online (Sandbox Code Playgroud)

当我设计菜单时,它可以有多个级别,并且可以有重复menu_action。即每一层都有一个“离开”/“返回”:

// In my actual code I construct a vector of `menu_option`s
fn example() {
    type StateType = i32;
    let mut state: StateType = 88;
    let leave_option: menu_option<&mut StateType> = menu_option::<&mut StateType> {
        command: "l",
        description: "leave",
        action: menu_option_action::leave,
    };

    let a = …
Run Code Online (Sandbox Code Playgroud)

pointers clone function rust

6
推荐指数
1
解决办法
4911
查看次数

标签 统计

rust ×2

borrowing ×1

clone ×1

function ×1

pointers ×1

reference ×1

string ×1

types ×1