
おお分かったかと驚いている柴犬です。
概要
2023年1月18日投稿の「RUST 列挙型連結リスト」中で次の課題とした「use crate::Rist」は何?としたことについて自分なりの理解ができましたので投稿します。
useキーワードでパスをスコープに持ち込む
RUSTの次のホームページの中で
https://doc.rust-jp.rs/book-ja/ch07-04-bringing-paths-into-scope-with-the-use-keyword.html
次のように書かれています。
これまで関数呼び出しのために書いてきたパスは、長く、繰り返しも多くて不便なものでした。
例えば、Listing 7-7 においては、絶対パスを使うか相対パスを使うかにかかわらず、add_to_waitlist関数を呼ぼうと思うたびにfront_of_houseとhostingも指定しないといけませんでした。
ありがたいことに、この手続きを簡単化する方法があります。
useキーワードを使うことで、パスを一度スコープに持ち込んでしまえば、それ以降はパス内の要素がローカルにあるかのように呼び出すことができるのです。
Listing 7-11 では、crate::front_of_house::hostingモジュールをeat_at_restaurant関数のスコープに持ち込むことで、eat_at_restaurantにおいて、hosting::add_to_waitlistと指定するだけでadd_to_waitlist関数を呼び出せるようにしています。
このことから、次の記述は
use crate::Rist::*;
Rist の列挙子の呼び出しを簡単化(Rist::ConsをCons)するために記述していることになります。
use crate::Rist::*を削除してみる
確かめてみます。
単にuse crate::Rist::*削除
単に use crate::Rist::* 行を削除して実行してみます。
enum Rist {
Cons(u32, Box<Rist>),
Nil,
}
impl Rist {
fn new() -> Rist {
Nil
}
fn prepend(self, elem: u32) -> Rist {
Cons(elem, Box::new(self))
}
以下省略
このスコープに見つからないとエラーになりました。
そして、use crate::Rist::Nil、use crate::Rist::Consを使うように促しています。

Nil、Consに Rist:: を付加
次に Rist:: を付加してみます。
use crate::Rist::* を削除して、Nil という呼び出しを Rist::Nil に、Cons という呼び出しをRist::Cons とし、次のコードを実行してみます。
enum Rist {
Cons(u32, Box<Rist>),
Nil,
}
impl Rist {
fn new() -> Rist {
Rist::Nil
}
fn prepend(self, elem: u32) -> Rist {
Rist::Cons(elem, Box::new(self))
}
fn len(&self) -> u32 {
match *self {
Rist::Cons(_, ref tail) => 1 + tail.len(),
Rist::Nil => 0
}
}
fn stringify(&self) -> String {
match *self {
Rist::Cons(head, ref tail) => {
format!("{} {}", head, tail.stringify())
},
Rist::Nil => {
format!("Nil")
},
}
}
}
fn main() {
let mut list = Rist::new();
list = list.prepend(1);
list = list.prepend(2);
list = list.prepend(3);
println!("linked list has length: {}", list.len());
println!("{}", list.stringify());
}
何の問題もなくコンパイルでき実行できました。

結論
use crate::Rist::*はパスをとおして表現を簡単化するため使っています。