这是该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? 为什么是参考?
我正在编写一个函数,它将在终端中创建一个菜单界面。要使用该函数,需要传递一个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)