kubo39's blog

ただの雑記です。

自己肯定感の失われが激しい。交互に波がくるかんじなんだけれども、まあそのうち他人の評価とかどうでもよくなってくるのでそれまで待つしかないですね。

Rust

労のあいだの空き時間にリハビリとして触っていた。

Boxのコピーは単に clone() を呼び出せば良さそう。

fn main() {
    let a = Box::new(1);  // allocated on the heap.
    let _ = a;  // moved, a is no longer accessable.
    // println!("{}", a); << panic!

    let a = Box::new(2);  // allocated on the heap.
    let _ = a.clone();  // copied.
    println!("{}", a);  // we can access.
}

Boxのcloneは malloc + memset + memcpy が走っているのだと思うんだけど、objdump -drSで追うのはなかなかきついものがある。

fn main() {
    let mut a = Box::new(2);  // allocated on the heap.
    let b = a.clone();  // copied.
    *a = 3;
    println!("{}", a);  // a = 3.
    println!("{}", b);  // b = 2.
}

D言語

D言語でBoxを表現するとどうなるかな。

一旦所有権を無視して、内部的におこっていることをみるとこうなる。

import std.stdio;
import core.stdc.string : memcpy;

void main()
{
    auto a = new int(1);  // allocated on the heap.
    auto b = new int;
    memcpy(b, a, int.sizeof);
    *a = 2;
    writefln("a = %d.", *a);  // a = 2.
    writefln("b = %d.", *b);  // b = 1.
}

上のmoveはどう表現するのかな、std.typecons.Uniqueはなんだか使用感が違う感じがする。

アニメ

まといちゃんをみました。キャラデザがけっこういいです。