(self: MutableRef<boolean>): MutableRef<boolean>Switches a boolean MutableRef between true and false, then returns the
reference.
When to use
Use when you need an in-place boolean MutableRef toggle that returns the
same MutableRef.
Example (Toggling boolean refs)
import { MutableRef } from "effect"
const flag = MutableRef.make(false)
// Toggle the flag
MutableRef.toggle(flag)
console.log(MutableRef.get(flag)) // true
// Toggle again
MutableRef.toggle(flag)
console.log(MutableRef.get(flag)) // false
// Useful for state switches
const isVisible = MutableRef.make(true)
MutableRef.toggle(isVisible) // Hide
console.log(MutableRef.get(isVisible)) // false
// Toggle button implementation
const darkMode = MutableRef.make(false)
const toggleDarkMode = () => {
MutableRef.toggle(darkMode)
console.log(`Dark mode: ${MutableRef.get(darkMode) ? "ON" : "OFF"}`)
}
toggleDarkMode() // "Dark mode: ON"
toggleDarkMode() // "Dark mode: OFF"
// Returns the reference for chaining
const result = MutableRef.toggle(flag)
console.log(result === flag) // trueexport const const toggle: (
self: MutableRef<boolean>
) => MutableRef<boolean>
Switches a boolean MutableRef between true and false, then returns the
reference.
When to use
Use when you need an in-place boolean MutableRef toggle that returns the
same MutableRef.
Example (Toggling boolean refs)
import { MutableRef } from "effect"
const flag = MutableRef.make(false)
// Toggle the flag
MutableRef.toggle(flag)
console.log(MutableRef.get(flag)) // true
// Toggle again
MutableRef.toggle(flag)
console.log(MutableRef.get(flag)) // false
// Useful for state switches
const isVisible = MutableRef.make(true)
MutableRef.toggle(isVisible) // Hide
console.log(MutableRef.get(isVisible)) // false
// Toggle button implementation
const darkMode = MutableRef.make(false)
const toggleDarkMode = () => {
MutableRef.toggle(darkMode)
console.log(`Dark mode: ${MutableRef.get(darkMode) ? "ON" : "OFF"}`)
}
toggleDarkMode() // "Dark mode: ON"
toggleDarkMode() // "Dark mode: OFF"
// Returns the reference for chaining
const result = MutableRef.toggle(flag)
console.log(result === flag) // true
toggle = (self: MutableRef<boolean>(parameter) self: {
current: T;
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
self: interface MutableRef<out T>A synchronous mutable reference that stores a current value.
When to use
Use to keep local mutable state in a stable, pipeable reference.
Details
Read or write the value directly through .current, or use the MutableRef
helpers for pipeable updates such as get, set, update, and
compareAndSet. All operations mutate the same reference in place.
Example (Creating and updating refs)
import { MutableRef } from "effect"
// Create a mutable reference
const ref: MutableRef.MutableRef<number> = MutableRef.make(42)
// Read the current value
console.log(ref.current) // 42
console.log(MutableRef.get(ref)) // 42
// Update the value
ref.current = 100
console.log(MutableRef.get(ref)) // 100
// Use with complex types
interface Config {
timeout: number
retries: number
}
const config: MutableRef.MutableRef<Config> = MutableRef.make({
timeout: 5000,
retries: 3
})
// Update through the interface
config.current = { timeout: 10000, retries: 5 }
console.log(config.current.timeout) // 10000
MutableRef<boolean>): interface MutableRef<out T>A synchronous mutable reference that stores a current value.
When to use
Use to keep local mutable state in a stable, pipeable reference.
Details
Read or write the value directly through .current, or use the MutableRef
helpers for pipeable updates such as get, set, update, and
compareAndSet. All operations mutate the same reference in place.
Example (Creating and updating refs)
import { MutableRef } from "effect"
// Create a mutable reference
const ref: MutableRef.MutableRef<number> = MutableRef.make(42)
// Read the current value
console.log(ref.current) // 42
console.log(MutableRef.get(ref)) // 42
// Update the value
ref.current = 100
console.log(MutableRef.get(ref)) // 100
// Use with complex types
interface Config {
timeout: number
retries: number
}
const config: MutableRef.MutableRef<Config> = MutableRef.make({
timeout: 5000,
retries: 3
})
// Update through the interface
config.current = { timeout: 10000, retries: 5 }
console.log(config.current.timeout) // 10000
MutableRef<boolean> => const update: {
<T>(f: (value: T) => T): (
self: MutableRef<T>
) => MutableRef<T>
<T>(
self: MutableRef<T>,
f: (value: T) => T
): MutableRef<T>
}
update(self: MutableRef<boolean>(parameter) self: {
current: T;
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
self, (_: boolean_) => !_: boolean_)