コンストラクターとしての 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_capacityVec::from_capacity を書いたときにどう読めるかを考えると、何が起きて いるのかをうまく伝えられません。