viewimage.php?id=2ab4c42ef0d0&no=24b0d769e1d32ca73ced82fa11d02831fe384ecd5bf5471a0304a0eb0d941586cc0af8ee8e10920272faf427e4c79bae1d5d296ad8ff0e2a4866f2bb668c7a469ae7d5ebe2fbd56cb35eda90ad2cf09f59a12d989be02f5a5b3b7918c763ce930ea6f589


할당을 단순히 크기만큼 잘라서 던져주는 간단한 방식으로 만들어서 존나 빠름

대신 만든 객체에대해 safe하게 Drop을 호출할 방법이 없음

unsafe쓰거나 Drop이 아닌 타입을 쓰거나 그냥 메모리릭 시켜야함



용도는 임시로 할당해둘 객체들이 많고 해제시점이 명확할때 쓰면 좋음

만약 전부 같은 타입이라면 typed_arena를 쓰는것을 고려할수도 있음


viewimage.php?id=2ab4c42ef0d0&no=24b0d769e1d32ca73ced82fa11d02831fe384ecd5bf5471a0304a0eb0d941586cc0af8ee8e10920272faf427e4c79bae1d5d296ad8f9582d1e63a7b9358c7a46859362c6e8e007e4eca1f07389adfc9ebcff75373a7b6bae2f7f238db4420b023a290e03




핵심함수

여기서 &mut T가 &Bump의 수명을 들고있음

&라서 한 Bump로 여러번 할당이 가능함

동시에 Bump가 빌려진 상태로 있기때문에 레퍼런스를 쓰는 도중에 Bump가 드랍되는등 댕글링이 될 위험이 없음




viewimage.php?id=2ab4c42ef0d0&no=24b0d769e1d32ca73ced82fa11d02831fe384ecd5bf5471a0304a0eb0d941586cc0af8ee8e10920272faf427e4c79bae1d5d296ad8fa08284f35a5bd618c7a465ef07e0f86e0753fcbcdaa687587066c322d5ead060d5fd764a341ceeab1b3aab6b5c8c0



그리고 이건 여태까지 Bump가 할당해준 메모리를 전부 재사용 가능하게 바꿈

여기서 &mut self를 먹는것이 중요함

앞에서 할당된 애들이 &Bump의 수명을 먹는다고 얘기했는데

여기선 &mut Bump를 요구함 즉 다른 할당된 애들이 하나도 없는 유일한 참조 일때만 이걸 쓸수있음