blob: 6c2a2fa64b46a8405793b54a81082cfcb1a1f321 [file] [log] [blame]
#pragma once
#include <functional>
namespace torch {
namespace jit {
class ResourceGuard {
std::function<void()> _destructor;
bool _released{false};
public:
ResourceGuard(std::function<void()> destructor)
: _destructor(std::move(destructor)) {}
// NOLINTNEXTLINE(bugprone-exception-escape)
~ResourceGuard() {
if (!_released)
_destructor();
}
void release() {
_released = true;
}
};
} // namespace jit
} // namespace torch