https://github.com/timbray/RFC9839/blob/main/unichars.go
I don't know rust at all but I can pretty quickly understand:
var unicodeAssignables = []runePair{
{0x20, 0x7E}, // ASCII
{0xA, 0xA}, // newline
{0xA0, 0xD7FF}, // most of the BMP
{0xE000, 0xFDCF}, // BMP after surrogates
{0xFDF0, 0xFFFD}, // BMP after noncharacters block
{0x9, 0x9}, // Tab
{0xD, 0xD}, // CR
{0x10000, 0x1FFFD}, // astral planes from here down
{0x20000, 0x2FFFD},
{0x30000, 0x3FFFD},
{0x40000, 0x4FFFD},
{0x50000, 0x5FFFD},
{0x60000, 0x6FFFD},
{0x70000, 0x7FFFD},
{0x80000, 0x8FFFD},
{0x90000, 0x9FFFD},
{0xA0000, 0xAFFFD},
{0xB0000, 0xBFFFD},
{0xC0000, 0xCFFFD},
{0xD0000, 0xDFFFD},
{0xE0000, 0xEFFFD},
{0xF0000, 0xFFFFD},
{0x100000, 0x10FFFD},
}