xref

Crates.ioxref
lib.rsxref
version0.1.1
sourcesrc
created_at2020-08-13 21:50:39.38866
updated_at2020-08-13 21:52:51.590208
descriptionLike Cow, but also works with RefCell
homepage
repositoryhttps://github.com/math4tots/xref
max_upload_size
id276361
size19,551
Kyumin Kim (math4tots)

documentation

README

XRef and XRefMut

When you want to return some data that might be either owned or borrowed, it is common to return a Cow<T>.

However, Cow<T> has the following limitations:

  • T has to be ToOwned, and
  • if the data you want to borrow is behind a RefCell, you can't.

XRef<T> is like Cow<T>, except addresses the above limitations with the following differences:

  • T does not have to be ToOwned, (this means that now the type contained in Borrowed and Owned have to contain the exact matching types), and
  • XRef<T> has a third variant Ref which holds a std::cell::Ref<T>, for cases when the value is borrowed from a RefCell.

XRefMut<T> is like XRef<T> except that

  • all references are borrowed mutably (i.e. XRef::Borrowed holds a &mut T instead of &T, XRef::Ref holds a RefMut<T> instead of a Ref<T>),
  • XRefMut<T> implements DerefMut<T>, to allow borrowing data mutably without cloning.
Commit count: 3

cargo fmt