@rustable/trait
Version:
A TypeScript library that implements Rust-like traits with compile-time type checking and runtime verification.
35 lines (32 loc) • 1.03 kB
JavaScript
;
;
class TraitError extends Error {
constructor(message) {
super(message);
}
}
class MultipleImplementationError extends TraitError {
constructor(targetName, methodName) {
super(`Multiple implementations of method ${methodName} for ${targetName}, please use Type<Trait>.wrap`);
}
}
class NotImplementedError extends TraitError {
constructor() {
super("Not implemented.");
}
}
class TraitNotImplementedError extends TraitError {
constructor(targetName, traitName) {
super(`Trait ${traitName} not implemented for ${targetName}`);
}
}
class MethodNotImplementedError extends TraitError {
constructor(traitName, methodName) {
super(`Method ${methodName} not defined in trait ${traitName}`);
}
}
exports.MethodNotImplementedError = MethodNotImplementedError;
exports.MultipleImplementationError = MultipleImplementationError;
exports.NotImplementedError = NotImplementedError;
exports.TraitError = TraitError;
exports.TraitNotImplementedError = TraitNotImplementedError;