C++ でのモデル化

#include <cstddef>
#include <cstring>

class SelfReferentialBuffer {
    std::byte data[1024];
    std::byte* cursor = data;
    
public:
    SelfReferentialBuffer(SelfReferentialBuffer&& other) 
        : cursor{data + (other.cursor - other.data)}
    {
        std::memcpy(data, other.data, 1024);
    }
};

Compiler Explorer で確認する

SelfReferentialBuffer には 2 つのメンバーがあり、data は 1 キロバイトのメモリで、cursor はその前者を指すポインタです。

そのムーブコンストラクタは、cursor が新しいメモリアドレスに更新されることを保証します。

この型を Rust で簡単に表現することはできません。