Nix 2.93.3
Lix: A modern, delicious implementation of the Nix package manager; unstable internal interfaces
Loading...
Searching...
No Matches
BackedStringView Class Reference

#include <backed-string-view.hh>

Public Member Functions

 BackedStringView (std::string &&s)
 BackedStringView (std::string_view sv)
template<size_t N>
 BackedStringView (const char(&lit)[N])
 BackedStringView (const BackedStringView &)=delete
BackedStringViewoperator= (const BackedStringView &)=delete
 BackedStringView (BackedStringView &&other)=default
BackedStringViewoperator= (BackedStringView &&other)=default
bool isOwned () const
std::string toOwned () &&
std::string_view operator* () const
Ptr operator-> () const

Detailed Description

This wants to be a little bit like rust's Cow type. Some parts of the evaluator benefit greatly from being able to reuse existing allocations for strings, but have to be able to also use newly allocated storage for values.

We do not define implicit conversions, even with ref qualifiers, since those can easily become ambiguous to the reader and can degrade into copying behaviour we want to avoid.

Constructor & Destructor Documentation

◆ BackedStringView()

BackedStringView::BackedStringView ( BackedStringView && other)
default

We only want move operations defined since the sole purpose of this type is to avoid copies.


The documentation for this class was generated from the following file: