Repository: duckdb/duckdb
File: src/execution/index/art/node.cpp (C++)

Code before:
		}
		case NType::PREFIX:
		case NType::NODE_4:
		case NType::NODE_16:
		case NType::NODE_48:
		case NType::NODE_256: {
			result = ARTHandlingResult::CONTINUE;
			break;
		}
		default:
			throw InternalException("invalid node type for VerifyAllocations: %d", type);
		}
		node_counts[GetAllocatorIdx(type)]++;
		return result;
	};

	ARTScanner<ARTScanHandling::EMPLACE, const Node> scanner(art, handler, *this);
	scanner.Scan(handler);
}

//===--------------------------------------------------------------------===//
// Printing
//===--------------------------------------------------------------------===//

string Node::ToString(ART &art, int indent_level, bool inside_gate, bool display_ascii) const {
	auto indent = [](std::string &str, const int n) {
		for (int i = 0; i < n; ++i) {
			str += " ";
		}
	};
	// if inside gate, print byte values not ascii.
	auto format_byte = [&](uint8_t byte) {
		if (!inside_gate && display_ascii && byte >= 32 && byte <= 126) {
			return string(1, static_cast<char>(byte));
		}
		return to_string(byte);
	};
	auto type = GetType();
	bool is_gate = GetGateStatus() == GateStatus::GATE_SET;
	bool propagate_gate = inside_gate || is_gate;

	switch (type) {
	case NType::LEAF_INLINED: {
		string str = "";
		indent(str, indent_level);
		return str + "Inlined Leaf [row ID: " + to_string(GetRowId()) + "]\n";
	}
	case NType::LEAF:
		return Leaf::DeprecatedToString(art, *this);
	case NType::PREFIX: {
		string str = Prefix::ToString(art, *this, indent_level, propagate_gate, display_ascii);

Review comment (suggestion):
we have both out own `String`, and `src/include/duckdb/common/string.hpp` to include, so we should be able to remove `std` here

Code after:
		}
		case NType::PREFIX:
		case NType::NODE_4:
		case NType::NODE_16:
		case NType::NODE_48:
		case NType::NODE_256: {
			result = ARTHandlingResult::CONTINUE;
			break;
		}
		default:
			throw InternalException("invalid node type for VerifyAllocations: %d", type);
		}
		node_counts[GetAllocatorIdx(type)]++;
		return result;
	};

	ARTScanner<ARTScanHandling::EMPLACE, const Node> scanner(art, handler, *this);
	scanner.Scan(handler);
}

//===--------------------------------------------------------------------===//
// Printing
//===--------------------------------------------------------------------===//

string Node::ToString(ART &art, idx_t indent_level, bool inside_gate, bool display_ascii) const {
	auto indent = [](string &str, const idx_t n) {
		for (idx_t i = 0; i < n; ++i) {
			str += " ";
		}
	};
	// if inside gate, print byte values not ascii.
	auto format_byte = [&](uint8_t byte) {
		if (!inside_gate && display_ascii && byte >= 32 && byte <= 126) {
			return string(1, static_cast<char>(byte));
		}
		return to_string(byte);
	};
	auto type = GetType();
	bool is_gate = GetGateStatus() == GateStatus::GATE_SET;
	bool propagate_gate = inside_gate || is_gate;

	switch (type) {
	case NType::LEAF_INLINED: {
		string str = "";
		indent(str, indent_level);
		return str + "Inlined Leaf [row ID: " + to_string(GetRowId()) + "]\n";
	}
	case NType::LEAF:
		return Leaf::DeprecatedToString(art, *this);
	case NType::PREFIX: {
		string str = Prefix::ToString(art, *this, indent_level, propagate_gate, display_ascii);