// Generated by `wit-bindgen` 0.62.0. DO NOT EDIT!

///|
/// A resource which represents some error information.
///
/// The only method provided by this resource is `to-debug-string`,
/// which provides some human-readable information about the error.
///
/// In the `wasi:io` package, this resource is returned through the
/// `wasi:io/streams/stream-error` type.
///
/// To provide more specific error information, other interfaces may
/// provide functions to further "downcast" this error into more specific
/// error information. For example, `error`s returned in streams derived
/// from filesystem types to be described using the filesystem's own
/// error-code type, using the function
/// `wasi:filesystem/types/filesystem-error-code`, which takes a parameter
/// `borrow` and returns
/// `option`.
///
/// The set of functions which can "downcast" an `error` into a more
/// concrete type is open.
pub(all) struct Error_(Int32) derive(Debug, Eq)

///|
pub extend Error_ with @debug.Debug::{to_repr}

///|
pub extend Error_ with Eq::{equal}

///|
#deprecated("Use `!=` instead", skip_current_package=true)
#doc(hidden)
pub extend Error_ with Eq::{not_equal}

///|
/// Drops a resource handle.
pub fn Error_::drop(self : Error_) -> Unit {
  let Error_(resource) = self
  wasmImportResourceDropError_(resource)
}

///|
/// Returns a string that is suitable to assist humans in debugging
/// this error.
///
/// WARNING: The returned string should not be consumed mechanically!
/// It may change across platforms, hosts, or other implementation
/// details. Parsing this string is a major platform-compatibility
/// hazard.
pub fn Error_::to_debug_string(self : Error_) -> String {
  let Error_(handle) = self
  let return_area = @ffi.malloc(8)
  wasmImportMethodErrorToDebugString(handle, return_area)

  let result = @ffi.ptr2str(
    @ffi.load32(return_area + 0),
    @ffi.load32(return_area + 4),
  )
  let ret = result
  @ffi.free(return_area)
  return ret
}