grpc 0.8.3

Rust implementation of gRPC
Documentation
use std::ops;
use std::sync::Arc;

pub enum ArcOrStatic<A: ?Sized + 'static> {
    Arc(Arc<A>),
    Static(&'static A),
}

impl<A: ?Sized> Clone for ArcOrStatic<A> {
    fn clone(&self) -> Self {
        match self {
            ArcOrStatic::Arc(a) => ArcOrStatic::Arc(a.clone()),
            ArcOrStatic::Static(a) => ArcOrStatic::Static(a),
        }
    }
}

impl<A: ?Sized> ops::Deref for ArcOrStatic<A> {
    type Target = A;

    fn deref(&self) -> &A {
        match self {
            ArcOrStatic::Arc(a) => &*a,
            ArcOrStatic::Static(a) => a,
        }
    }
}