ComItf is now extern type only as &ComItf - this prevents users from writing methods that accept input parameters as ComItf<I>, which is an owned type with no ties to a lifetime. Also removed the Clone implementation from ComItf which would have allowed the user to bypass the reference counting.
Removal of Clone required changes to the way errors are stored as the previous Cell needed a Copy type - then again, we already did add_ref/release around the cell storage so we should have just used ComRc instead.
ComItf is now extern type only as
&ComItf
- this prevents users from writing methods that accept input parameters asComItf<I>
, which is an owned type with no ties to a lifetime. Also removed theClone
implementation fromComItf
which would have allowed the user to bypass the reference counting.Removal of
Clone
required changes to the way errors are stored as the previousCell
needed aCopy
type - then again, we already didadd_ref
/release
around the cell storage so we should have just usedComRc
instead.