Repository navigation
Immutable
release. Only release title and notes can be modified.
The first release of loko as a services library. It is version 0.2.0 because the loko name on crates.io carries an
unrelated 0.1.0 from 2022 (task scripting), by the same owner.
Added
loko-clock: theClockservice (now,now_ms,sleep),TestClock,StdClock,TokioClock(feature
tokio),JsClock(featurejs), andOffsetClock, a clock ahead or behind another.loko-random: theRandomservice, a source ofrand_coregenerators (rng(), drawn from with no locks);
SeededRandom(SeededRng, SplitMix64, for tests),OsRandom(featuregetrandom,OsRng),JsRandom(feature
js,JsRng), andRandomfor aMutexaround any seedablerand_coregenerator. The OS and JavaScript generators
areCryptoRng, so code that makes secrets can ask forRandom<Rng: CryptoRng>.loko-env: theEnvservice (var,vars),SystemEnv, andMapEnv.loko-console: theConsoleservice (print_line,print_error_line),StdConsole,TestConsole, and
JsConsole(featurejs).loko-store: theStoreservice (objects by URI, with put-if-absent, multipart uploads, and prefix listing),
MemoryStore, an error type, and the wrappersCountingStore(counts calls),ReadOnlyStore(refuses writes), and
PrefixedStore(passes on only URIs under a prefix).loko-object-store: aStoreover anobject_storeclient, from a client or a URL.- The service crates depend on nothing but
rand_core(forloko-random); the macros are needed only to define
new services. loko-macros:#[service], which adds aHasXtrait to a service traitXand makes everyHasXanX, and
#[loko::bundle], which makes a struct each service its fields provide, and#[wraps], which makes a wrapper
that replaces some of a service's methods and forwards the rest.loko: the services under one crate (loko::clock, …,loko::storewith featurestore), the platforms
TestPlatform,StdPlatform,TokioPlatform, andJsPlatform, and a prelude.