{"id":"ablacksock/result","name":"result","scope":"ablacksock","platform":"roblox","description":"A small, typed `Result<T, E>` utility for Luau","version":"0.1.0","latest":"0.1.0","versions":["0.1.0"],"license":"MIT","licenseRating":"safe","licenseCaveats":[],"licenseVerified":true,"dependencies":{},"integrity":"ba538f98baadacbac06b3dceb55e67e3820482a7a0928ede016b2fb0cb7c08bd","likes":0,"downloads":1,"install":"forest install ablacksock/result","url":"https://forest.dev/p/roblox/ablacksock/result","files":"https://api.forest.dev/ai/package/roblox/ablacksock/result/files","readme":"# Result\n\nA small, typed `Result<T, E>` utility for Luau\n\nPorted from [Rust](https://doc.rust-lang.org/std/result/)\n\n```luau\nlocal Result = require(path.to.Result)\n```\n\n## Example\n\n```luau\nlocal result = Result.ok(10)\n\nlocal doubled = Result.map(result, function(value)\n\treturn value * 2\nend)\n\nprint(Result.unwrap(doubled)) -- 20\n```\n\n## API\n\n**Create**\n\n```luau\nResult.ok(value: T): Ok<T>\nResult.err(error: E): Err<E>\nResult.try(callback: () -> T): Result<T, string>\nResult.validate(value: T, predicate: (T) -> boolean, error: E): Result<T, E>\n```\n\n**Extract**\n\n```luau\nResult.unwrap(result: Result<T, E>): T\nResult.unwrap_err(result: Result<T, E>): E\nResult.unwrap_or(result: Result<T, E>, fallback: T): T\nResult.unwrap_or_else(result: Result<T, E>, callback: (E) -> T): T\n\nResult.expect(result: Result<T, E>, message: string): T\nResult.expect_err(result: Result<T, E>, message: string): E\n```\n\n**Transform**\n\n```luau\nResult.map(result: Result<T, E>, callback: (T) -> U): Result<U, E>\nResult.map_err(result: Result<T, E>, callback: (E) -> F): Result<T, F>\nResult.map_or(result: Result<T, E>, fallback: U, callback: (T) -> U): U\nResult.map_or_else(result: Result<T, E>, err: (E) -> U, ok: (T) -> U): U\n\nResult.filter(result: Result<T, E>, predicate: (T) -> boolean): Result<T, E>\n```\n\n**Process**\n\n```luau\nResult.chain(result: Result<T, E>, callback: (T) -> Result<U, E>): Result<U, E>\nResult.recover(result: Result<T, E>, callback: (E) -> Result<T, F>): Result<T, F>\n\nResult.inspect(result: Result<T, E>, callback: (T) -> ()): Result<T, E>\nResult.inspect_err(result: Result<T, E>, callback: (E) -> ()): Result<T, E>\n\nResult.all(results: { Result<T, E> }): Result<{ T }, E>\nResult.any(results: { Result<T, E> }): Result<T, { E }>\n```\n\n## Types\n\n```luau\nResult.Ok<T>\nResult.Err<E>\nResult.Result<T, E>\n```\n","readmeTruncated":false}