コンストラクターとしての with
コンストラクターとしての with は、型の構成要素のうち 1 つの値を設定し、 残りにはデフォルト値を使用します。
with は「特定の設定を持つ <Type>」のような意味です。
// Copyright 2025 Google LLC // SPDX-License-Identifier: Apache-2.0 impl<T> Vec<T> { // 少なくとも N 要素分のメモリを初期化します。len はまだ 0 のままです。 fn with_capacity(capacity: usize) -> Vec<T>; }
-
withはコンストラクターの接頭辞として使われることがあり、最も一般的 なのは、コンテナー型向けのヒープメモリを初期化するときです。この場合、
newコンストラクターとは異なります。これは、通常 API 利用者 が気にしないものの値を指定するためです。 -
クラスへの問い: なぜ
from_capacityではないのでしょうか?答え: メソッド呼び出しとしての
Vec::with_capacityは、「capacity を持つ Vec を作る」として自然に読めます。Vec::new_capacityやVec::from_capacityを書いたときにどう読めるかを考えると、何が起きて いるのかをうまく伝えられません。