1#include "taichi/common/cleanup.h"
2#include <utility>
3
4namespace taichi {
5
6RaiiCleanup::RaiiCleanup(Func fn) : fn_(std::move(fn)) {
7}
8
9RaiiCleanup::~RaiiCleanup() {
10 if (fn_) {
11 fn_();
12 fn_ = nullptr;
13 }
14}
15
16RaiiCleanup make_cleanup(RaiiCleanup::Func fn) {
17 return RaiiCleanup{std::move(fn)};
18}
19
20} // namespace taichi
21