Register explicit scope/name coordinates independently of Definition type. Require provider-attested current scope snapshots for fetch and dispatch, compare optional scope_ref at membership precedence, and retain the same Descriptor through result validation. Migrate FS pinned-root boundaries and public self-scope example; document provider atomicity/lifecycle and root-only FS support. Add lifecycle, ref, replacement-race, root-lineage and compile-time exposure regressions. Validation: cargo fmt --all --check; git diff --check; cargo check --workspace --all-targets; cargo test --workspace --all-targets and --doc (232 passing test-harness cases including doctests); nix develop --command cargo clippy --workspace --all-targets -- -D warnings; RUSTDOCFLAGS=-Dwarnings cargo doc --workspace --no-deps. Narrow wip-host suite also passed.
22 lines
551 B
Rust
22 lines
551 B
Rust
use wip_host::{InterfaceRegistry, PublishedObject, WipObject};
|
|
use wip_interface::{OperationResult, interface};
|
|
|
|
#[interface]
|
|
pub trait Search {
|
|
fn search(&self) -> OperationResult<String>;
|
|
}
|
|
|
|
struct Object;
|
|
|
|
impl WipObject for Object {
|
|
fn name(&self) -> &str {
|
|
"object"
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
let mut registry = InterfaceRegistry::new();
|
|
let search = registry.register(&wip_host::Scope::new("/").unwrap(), "search", SearchDefinition, None).unwrap();
|
|
let _published = PublishedObject::new(Object).expose(&search).unwrap();
|
|
}
|