gen_server: prefix public types with Gen (GenServerRef, GenServerCtx, GenServerName, GenServerBuilder, NamedGenServerBuilder)

This commit is contained in:
smarm-agent
2026-06-20 10:48:33 +00:00
parent f646c5cd72
commit 3e316066c3
8 changed files with 98 additions and 98 deletions
+7 -7
View File
@@ -2,11 +2,11 @@
//!
//! A gen_server is multi-message (call / cast over one inbox), so it is named
//! by the *server* type rather than by a single message type. Registering it
//! under a [`ServerName`] lets clients `call` and `cast` by name, resolving on
//! under a [`GenServerName`] lets clients `call` and `cast` by name, resolving on
//! every use — so the address keeps working across a supervised restart, with
//! no stale [`ServerRef`] to refresh.
//! no stale [`GenServerRef`] to refresh.
use smarm::{call, cast, run, whereis_server, GenServer, ServerBuilder, ServerName, ServerRef};
use smarm::{call, cast, run, whereis_server, GenServer, GenServerBuilder, GenServerName, GenServerRef};
/// A counter server: synchronous `Get`, asynchronous `Inc` / `Add`.
struct Counter {
@@ -41,13 +41,13 @@ impl GenServer for Counter {
/// A durable name typed by the server, so by-name `call` / `cast` check against
/// `Counter`'s `Call` / `Cast` / `Reply`.
const COUNTER: ServerName<Counter> = ServerName::new("counter");
const COUNTER: GenServerName<Counter> = GenServerName::new("counter");
fn main() {
run(|| {
// Start the server and bind its name in one step. A named start is
// fallible: the name may already be held by another live server.
ServerBuilder::new(Counter { n: 0 })
GenServerBuilder::new(Counter { n: 0 })
.named(COUNTER)
.start()
.unwrap();
@@ -60,8 +60,8 @@ fn main() {
assert_eq!(call(COUNTER, Query::Get).unwrap(), 42);
// When you want a handle to hold or pass on rather than resolve per
// call, recover a typed `ServerRef` from the name.
let svc: Option<ServerRef<Counter>> = whereis_server(COUNTER);
// call, recover a typed `GenServerRef` from the name.
let svc: Option<GenServerRef<Counter>> = whereis_server(COUNTER);
if let Some(svc) = svc {
let _ = svc.call(Query::Get);
}