Nix 2.26.3
Nix, the purely functional package manager; unstable internal interfaces
 
Loading...
Searching...
No Matches
nix::BackedStringView Class Reference

#include <types.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()

nix::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: