コンセプトから理解するRust

サポートページ

この記事を読むのに必要な時間:およそ 0.5 分

お詫びと訂正(正誤表)

本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。

(2024年10月28日最終更新)

P.183 図4.12 「カウンタ:3」部分

child: Node
child: None

(以下2024年5月30日更新)

P.320 リスト8.7

最後の行に以下が必要でした。

print_sum_hello(10000000)

(以下2024年4月1日更新)

P.190 図4.13中のテキスト(2ヵ所)

chaild
child

P.191 図4.14中のテキスト(2ヵ所)

chaild
child

P.193 図4.15中のテキスト(2ヵ所)

chaild
child

P.190 図4.16中のテキスト(2ヵ所)

chaild
child

P.214 下から8行目

また、EqおよびOrdは比較が必ずできる(失敗しない)型に対して、PartialEqおよびPartialOrdは比較ができない場合がある型に対して実装します。i32型などの整数型には、前者の"Partial"なしのトレイトが実装されているのに対し、f64、f32などの浮動小数点型には後者の"Partial" 付きのトレイトが実装されています。浮動小数点型の場合にはNaN(Not A Number)との比較ができないため、"Partial"付きになっています。
また、同じ型の同じ値同士の等値比較において、EqやOrdはいつでも真となることを前提にできる型に実装できるのに対し、PartialEqおよびPartialOrdはそれを前提にできる型に加え、できない型にも実装できます(数学的な言葉でいえば、PartialEqやPartialOrdは「その型に属する値が反射律を満たすことを要求されない型」に対して実装できるものです)。EqやOrdが実装される型には、自動的にPartialEqやPartialOrdも実装されています(EqやOrdがPartialEqやPartialOrdのサブトレイト(p216参照)であるため)。たとえば、浮動小数点型f32、f64はNaN(Not A Number)という値を含んでいますが、NaN == NaNの等値比較の結果は偽となるため、これらの型には"Partial"付きのトレイトのみが実装されています。一方、i32型などの整数型には、"Partial"なし、および"Partial"付きの両方のトレイトが実装されています。

(以下2023年7月31日更新)

P.57 上から4行目

=で結び付けたときの挙動はC言語と同じように考えることができます。
=で結び付けたときの挙動は次のように確認することができます。

P.57 下から3行目

すなわち、xやyというラベルが貼られた値は異なるメモリ領域に確保されており、xに何らかの操作をしてもxというラベルが貼られたメモリ領域の値が変わるだけで、yというラベルが貼られたメモリ領域の値はなんら影響を受けません(図3.8)。
すなわち、x、yのラベルが貼られている同一のイミュータブルな変数の値があるときに、x = x + 1のような操作をした場合、その計算結果を格納する新しいメモリ領域が確保され、その新しいメモリ領域のラベルがxになります。このとき、yというラベルが貼られた元のメモリ領域の値はなんら影響を受けません(図3.8)。

P.58 図3.8

中央の図の内容に誤りがありました。以下が正しい図です。

rust_image_p57_old.png
rust_image_p57_new.png

(以下2023年1月11日更新)

P.192 下から4行目

Rc::clone()
Rc::new()

(以下2022年12月26日更新)

P.23 3行目

std::fmt::Displayいうトレイト
std::fmt::Displayいうトレイト

P.71 3つ目のコード囲み10行目

myclear(&s);
myclear(s_ref);

P.142 リスト4.14のキャプション

Result<T,E>}
Result<T,E>

余計な「}」がありました。

P.154 Pythonのコード 10行目

print("The capital of {} is {}.".format(
print("The capital of {} is {}".format(

余計な「.」がありました。

P.154 Pythonのコード 14行目

print(The capital of {} is not found.".format(tg))
print("The capital of {} is not found".format(tg))

「"」が抜けており,余計な「.」がありました。

P.151 本文5行目

Some(“medium) を返却
Some(“large") を返却

P.154 Pythonのコード 11行目

tf, capitals["Japan"]
tg, capitals[tg]

P.171 リスト4.19 29行目

"to b3 12, 12: {}, {}",
"to be 12, 12: {}, {}",

P.171 エラー画面 1行目

rror[E0597]:
error[E0597]:

「e」が抜けていました。

P.174 エラー画面 2行目

to b3 12, 12: 12, 12
to be 12, 12: 12, 12

P.180 リスト4.22 31行目

"to b3 12, 12: {}, {}",
"to be 12, 12: {}, {}",

P.184 本文7行目

変換するのもので
変換するもので

「の」が不要です。

P.213 本文14行目

+演算子を使って表示
+演算子を使って表現

P.218 リスト5.11 32,41行目

// distance_eqの大小を、
// distance_sqの大小を、

(以下2022年12月1日更新)

P.17 端末画面

$ cargp clippy # clippyを実行
$ cargo clippy # clippyを実行

(以下2022年11月24日更新)

P.154 Pythonのコード 2行目

capticals["Japan"] = "Tokyo"
capitals["Japan"] = "Tokyo"

(以下2022年9月15日更新)

P.34 1行目

クレート名(json_serde)に変えるだけです。
クレート名(serde_json)に変えるだけです。

(以下2022年7月19日更新)

P.171 リスト 4.19の10行目

let number = Box::new(value + 10);
let number = value + 10;

(以下2022年6月1日更新)

P.245 本文9行目

実はこれは20行目と同じ意味になります。
実はこれは21行目と同じ意味になります。

(以下2022年3月30日更新)

P.289 3行目の漸化式

誤
正

最初のSの下付きは「N-1」ではなく「-1」であるべきでした。