Vapor Documentation

Structure Storage

public struct Storage  

A container providing arbitrary storage for extensions of an existing type, designed to obviate the problem of being unable to add stored properties to a type in an extension. Each stored item is keyed by a type conforming to StorageKey protocol.



public init(logger: Logger = .init(label: ""))  

Create a new Storage container using the given logger.



public mutating func clear()  

Delete all values from the container. Does not invoke shutdown closures.


public func contains<Key>(_ key: Key.Type) -> Bool  

Test whether the given key exists in the container.


public func get<Key>(_ key: Key.Type) -> Key.Value?
        where Key: StorageKey

Get the value of the given key if it exists and is of the proper type.


public mutating func set<Key>(
        _ key: Key.Type,
        to value: Key.Value?,
        onShutdown: ((Key.Value) throws -> ())? = nil
        where Key: StorageKey

Set or remove a value for a given key, optionally providing a shutdown closure for the value.

If a key that has a shutdown closure is removed by this method, the closure is invoked.


public func shutdown()  

For every key in the container having a shutdown closure, invoke the closure. Designed to be invoked during an explicit app shutdown process or in a reference type's deinit.