#pragma once
#include <functional>
namespace torch {
namespace jit {
class ResourceGuard {
std::function<void()> _destructor;
bool _released;
public:
ResourceGuard(std::function<void()> destructor)
: _destructor(std::move(destructor)), _released(false) {}
~ResourceGuard() {
if (!_released)
_destructor();
}
void release() {
_released = true;
}
};
} // namespace jit
} // namespace torch