# Function: succeed()

Creates a [Success](../types/Result.Success.md) result from a given value.
Automatically wraps the value in a `Promise` if it is asynchronous.

## Type Param

**T**

The type of the value to wrap.

## Examples

**Synchronous Usage**

```ts
import { Result } from '@praha/byethrow';

const result = Result.succeed(42);
// Result.Result<number, never>
```

**Asynchronous Usage**

```ts
import { Result } from '@praha/byethrow';

const result = Result.succeed(Promise.resolve(42));
// Result.ResultAsync<number, never>
```

**With No Value**

```ts
import { Result } from '@praha/byethrow';

const result = Result.succeed();
// Result.Result<void, never>
```

## See

[collect](./Result.collect.md) - For collect multiple Results into a single Result.

## Call Signature

> **succeed**(): [`Result`](../types/Result.Result.md)\<`void`, `never`>

### Returns

[`Result`](../types/Result.Result.md)\<`void`, `never`>

## Call Signature

> **succeed**\<`T`>(`value`): [`ResultFor`](../types/Result.ResultFor.md)\<`T`, `Awaited`\<`T`>, `never`>

### Type Parameters

#### T

`T`

### Parameters

#### value

`T`

### Returns

[`ResultFor`](../types/Result.ResultFor.md)\<`T`, `Awaited`\<`T`>, `never`>
