golem-rust 2.1.0

Golem Rust tooling library that facilitates writing Golem backends in Rust
Documentation
use golem_rust::agent_definition;
use std::marker::PhantomData;

#[agent_definition]
trait GenericAgent {
    fn new(id: String) -> Self;
    fn len(&self) -> usize;
}

struct GenericAgentImpl<'a, T, const N: usize> {
    id: String,
    _marker: PhantomData<&'a [T; N]>,
}

impl<'a, T, const N: usize> GenericAgent for GenericAgentImpl<'a, T, N>
where
    T: Clone,
{
    fn new(id: String) -> Self {
        Self {
            id,
            _marker: PhantomData,
        }
    }

    fn len(&self) -> usize {
        self.id.len() + N
    }
}

fn main() {}