#include #include #include "borrow_checker.hpp" void func_borrow(ref> vec) { for (auto& el : *vec) std::cout << el << ' '; std::cout << '\n'; } void func_mut_borrow(mut_ref> vec) { vec->push_back(4); } void func_destructive_move(std::vector vec) { std::cout << "Now it's mine!\n"; } int main() { destructive_moveable(std::vector, vec, {1, 2, 3}) { vec.push_back(42); func_borrow(borrow(vec)); func_mut_borrow(mut_borrow(vec)); func_borrow(borrow(vec)); func_destructive_move(destructive_move(vec)); }; }