Nim 2는 복사냐 이동이냐를 호출 지점마다 정한다. proc 단위로 정하지 않는다.
proc take(s: sink seq[int]) =
echo s.len
proc main() =
var a = @[1, 2, 3]
take(a) # copied, `a` is read again below
take(a) # last read of `a`, moved
main()
같은 인자, 같은 proc. 첫 호출은 a가 아직 쓰이니 복사한다. 둘째 호출은 이동한다. 호출 지점에는 어느 쪽인지 아무 표시가 없다. nim c --expandArc:main을 돌리면 다시 쓴 본문이 나오고 둘 다 보인다.
지역 변수만 해당한다. 소멸자 문서에 따르면 이 분석은 지역 변수에 한정된다. 그래서 테스트는 proc 안에 두고, 어차피 --expandArc도 그 proc 이름을 받는다.
