オフセットを使用する
// Copyright 2026 Google LLC // SPDX-License-Identifier: Apache-2.0 #[derive(Debug)] pub struct SelfReferentialBuffer { data: [u8; 1024], position: usize, } impl SelfReferentialBuffer { pub fn new() -> Self { SelfReferentialBuffer { data: [0; 1024], position: 0 } } pub fn read(&self, n_bytes: usize) -> &[u8] { let available = self.data.len().saturating_sub(self.position); let len = n_bytes.min(available); &self.data[self.position..self.position + len] } pub fn write(&mut self, bytes: &[u8]) { let available = self.data.len().saturating_sub(self.position); let len = bytes.len().min(available); self.data[self.position..self.position + len].copy_from_slice(&bytes[..len]); self.position += len; } }
Rust では、オフセット変数を使用し、必要に応じて参照を作成するほうが、より慣用的です。