Implement enum and conversion compatibility

This commit is contained in:
2026-08-08 23:22:06 +00:00
parent 66997128e7
commit 28bd5a0296
16 changed files with 1943 additions and 767 deletions

View File

@@ -11,8 +11,11 @@ description = "Core value-type shims for the MetaCrate LibreMetaverse rewrite"
workspace = true
[dependencies]
base64 = "0.22"
getrandom = "0.4"
md-5 = "0.10"
sha1 = "0.10"
sha2 = "0.11"
uuid = { version = "1.18", features = ["v4"] }
[dev-dependencies]

View File

@@ -135,8 +135,12 @@ pub struct CultureInfo(pub String);
#[derive(Clone, Debug, Eq, Hash, PartialEq)]
pub struct ExternalError(pub String);
/// Type-erased enum name and optional [`crate::EnumInfoAttribute`] text.
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
pub struct EnumValue(pub i64);
pub struct EnumValue {
pub(crate) name: &'static str,
pub(crate) text: Option<&'static str>,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct ArrayList(pub Vec<Object>);

View File

@@ -0,0 +1,418 @@
//! Native enum metadata, parsing, and flag operations.
#![allow(clippy::missing_errors_doc)] // Result shapes are fixed by the public compatibility map.
#![allow(clippy::must_use_candidate)] // Attributes are not part of the mapped C# surface.
use crate::compat::EnumValue;
/// Metadata needed to reproduce the reflection-based C# enum helpers.
pub trait EnumValueMetadata: Copy + Sized {
/// Parses a named value using the C# helper's case-insensitive comparison.
fn parse_name(name: &str) -> Option<Self>;
/// Returns the C# identifier for this value, when it is named.
fn variant_name(self) -> Option<&'static str>;
/// Returns the value's `EnumInfoAttribute.Text`, when present.
fn enum_text(self) -> Option<&'static str> {
None
}
}
/// C# enum presentation metadata.
#[derive(Clone, Debug, Default, Eq, Hash, PartialEq)]
pub struct EnumInfoAttribute {
/// Text used when presenting the enum to a user.
pub text: String,
}
impl EnumInfoAttribute {
/// Creates an attribute with empty presentation text.
pub fn new_with_constructor() -> Result<Self, crate::Error> {
Ok(Self::default())
}
/// Creates an attribute with the supplied presentation text.
pub fn new_with_string(text: String) -> Result<Self, crate::Error> {
Ok(Self { text })
}
}
/// Reflection-free equivalent of the C# enum metadata extension.
pub struct EnumInfoExtensions;
impl EnumInfoExtensions {
/// Returns attached presentation text, or an empty string when absent.
pub fn get_text(value: EnumValue) -> Result<String, crate::Error> {
Ok(value.text.unwrap_or_default().to_owned())
}
}
macro_rules! impl_enum_metadata {
($ty:ty; $($variant:ident $(=> $text:literal)?),+ $(,)?) => {
impl EnumValueMetadata for $ty {
fn parse_name(name: &str) -> Option<Self> {
$(if name.eq_ignore_ascii_case(stringify!($variant)) {
return Some(Self::$variant);
})+
None
}
fn variant_name(self) -> Option<&'static str> {
Some(match self { $(Self::$variant => stringify!($variant),)+ })
}
#[allow(unreachable_patterns)]
fn enum_text(self) -> Option<&'static str> {
match self {
$($(Self::$variant => Some($text),)?)+
_ => None,
}
}
}
impl From<$ty> for EnumValue {
fn from(value: $ty) -> Self {
Self {
name: value.variant_name().unwrap_or_default(),
text: value.enum_text(),
}
}
}
};
}
impl_enum_metadata!(crate::AssetType;
Animation => "animatn", Bodypart => "bodypart", CallingCard => "callcard",
Clothing => "clothing", Folder => "category", Gesture => "gesture",
ImageJPEG => "jpeg", ImageTGA => "img_tga", LSLBytecode => "lslbyte",
LSLText => "lsltext", Landmark => "landmark", Link => "link",
LinkFolder => "link_f", Material => "material", Mesh => "mesh",
Notecard => "notecard", Object => "object", Person => "person",
Script => "script", Settings => "settings", Simstate => "simstate",
Sound => "sound", SoundWAV => "snd_wav", Texture => "texture",
TextureTGA => "txtr_tga", Unknown => "invalid", Widget => "widget");
impl_enum_metadata!(crate::FolderType;
Animation => "Animations", BasicRoot => "Basic Root", BodyPart => "Body Parts",
CallingCard => "Calling Cards", Clothing => "Clothing",
CurrentOutfit => "Current Outfit", EnsembleEnd, EnsembleStart,
Favorites => "Favorites", Gesture => "Gestures", Inbox => "Received Items",
LSLText => "Scripts", Landmark => "Landmarks", LostAndFound => "Lost And Found",
MarketplaceListings => "Marketplace Listings", MarketplaceStock => "New Stock",
MarketplaceVersion => "Marketplace Version", Material => "Material", Mesh => "Meshes",
MyOutfits => "My Outfits", None, Notecard => "Notecards", Object => "Objects",
OldRoot, Outbox => "Merchant Outbox", Outfit => "New Outfit",
Root => "My Inventory", Settings => "Settings", Snapshot => "Photo Album",
Sound => "Sounds", Suitcase => "Suitcase", Texture => "Textures", Trash => "Trash");
impl_enum_metadata!(crate::WearableType;
Alpha => "Alpha", Eyes => "Eyes", Gloves => "Gloves", Hair => "Hair",
Invalid => "Invalid", Jacket => "Jacket", Pants => "Pants", Physics => "Physics",
Shape => "Shape", Shirt => "Shirt", Shoes => "Shoes", Skin => "Skin",
Skirt => "Skirt", Socks => "Socks", Tattoo => "Tattoo",
Underpants => "Underpants", Undershirt => "Undershirt", Universal => "Universal");
impl_enum_metadata!(crate::AttachmentPoint;
AltLeftEar => "Alt Left Ear", AltLeftEye => "Alt Left Eye",
AltRightEar => "Alt Right Ear", AltRightEye => "Alt Right Eye", Chest => "Chest",
Chin => "Chin", Default => "Default", Groin => "Groin", HUDBottom => "HUD Bottom",
HUDBottomLeft => "HUD Bottom Left", HUDBottomRight => "HUD Bottom Right",
HUDCenter => "HUD Center 1", HUDCenter2 => "HUD Center 2", HUDTop => "HUD Top Center",
HUDTopLeft => "HUD Top Left", HUDTopRight => "HUD Top Right", Jaw => "Jaw",
LeftEar => "Left Ear", LeftEyeball => "Left Eye", LeftFoot => "Left Foot",
LeftForearm => "Left Lower Arm", LeftHand => "Left Hand",
LeftHandRing => "Left Ring Finger", LeftHindFoot => "Left Hind Foot",
LeftHip => "Left Hip", LeftLowerLeg => "Left Lower Leg", LeftPec => "Left Pec",
LeftShoulder => "Left Shoulder", LeftUpperArm => "Left Upper Arm",
LeftUpperLeg => "Left Upper Leg", LeftWing => "Left Wing", Mouth => "Mouth",
Neck => "Neck", Nose => "Nose", Pelvis => "Pelvis", RightEar => "Right Ear",
RightEyeball => "Right Eye", RightFoot => "Right Foot",
RightForearm => "Right Lower Arm", RightHand => "Right Hand",
RightHandRing => "Right Ring Finger", RightHindFoot => "Right Hind Foot",
RightHip => "Right Hip", RightLowerLeg => "Right Lower Leg", RightPec => "Right Pec",
RightShoulder => "Right Shoulder", RightUpperArm => "Right Upper Arm",
RightUpperLeg => "Right Upper Leg", RightWing => "Right Wing",
Root => "Avatar Center", Skull => "Head", Spine => "Back", Stomach => "Belly",
TailBase => "Tail Base", TailTip => "Tail Tip", Tongue => "Tongue");
impl_enum_metadata!(crate::ClickAction; Buy, OpenMedia, OpenTask, Pay, PlayMedia, Sit, Touch);
impl_enum_metadata!(crate::FaceType; InnerSide, OuterSide0, OuterSide1, OuterSide2, OuterSide3, PathBegin, PathEnd, ProfileBegin, ProfileEnd);
impl_enum_metadata!(crate::JointType; Hinge, Invalid, Point);
impl_enum_metadata!(crate::Material; Flesh, Glass, Light, Metal, Plastic, Rubber, Stone, Wood);
impl_enum_metadata!(crate::ObjectCategory; Group, Invalid, None, Other, Owner, Selected, Temporary);
impl_enum_metadata!(crate::PCode; Avatar, Grass, NewTree, None, ParticleSystem, Prim, Tree);
impl_enum_metadata!(crate::PathCurve; Circle, Circle2, Flexible, Line, Test);
impl_enum_metadata!(crate::PhysicsShapeType; ConvexHull, None, Prim);
impl_enum_metadata!(crate::PrimType; Box, Cylinder, Mesh, Prism, Ring, Sculpt, Sphere, Torus, Tube, Unknown);
impl_enum_metadata!(crate::ProfileCurve; Circle, EqualTriangle, HalfCircle, IsoTriangle, RightTriangle, Square);
impl_enum_metadata!(crate::SaleType; Contents, Copy, Not, Original);
impl_enum_metadata!(crate::SculptType; Cylinder, Invert, Mesh, Mirror, None, Plane, Sphere, Torus);
impl_enum_metadata!(crate::UtilsPlatform; Linux, OSX, Unknown, Windows, WindowsCE);
macro_rules! impl_raw_enum_metadata {
($ty:ty; $($name:literal => $constant:ident),+ $(,)?) => {
impl EnumValueMetadata for $ty {
fn parse_name(name: &str) -> Option<Self> {
$(if name.eq_ignore_ascii_case($name) { return Some(Self::$constant); })+
None
}
fn variant_name(self) -> Option<&'static str> {
$(if self == Self::$constant { return Some($name); })+
None
}
}
impl From<$ty> for EnumValue {
fn from(value: $ty) -> Self {
Self { name: value.variant_name().unwrap_or_default(), text: None }
}
}
};
}
impl_raw_enum_metadata!(crate::HoleType;
"Circle" => Circle, "Same" => Same, "Square" => Square, "Triangle" => Triangle);
impl_raw_enum_metadata!(crate::InventoryType;
"Animation" => ANIMATION, "Attachment" => ATTACHMENT, "CallingCard" => CALLING_CARD,
"Category" => CATEGORY, "Gesture" => GESTURE, "LSL" => LSL,
"Landmark" => LANDMARK, "Material" => MATERIAL, "Mesh" => MESH,
"Notecard" => NOTECARD, "Object" => OBJECT, "RootCategory" => ROOT_CATEGORY,
"Settings" => SETTINGS, "Snapshot" => SNAPSHOT, "Sound" => SOUND,
"Texture" => TEXTURE, "Unknown" => UNKNOWN, "Wearable" => WEARABLE);
impl_raw_enum_metadata!(crate::ExtraParamType;
"ExtendedMesh" => EXTENDED_MESH, "Flexible" => FLEXIBLE, "Light" => LIGHT,
"LightImage" => LIGHT_IMAGE, "Mesh" => MESH, "ReflectionProbe" => REFLECTION_PROBE,
"RenderMaterial" => RENDER_MATERIAL, "Sculpt" => SCULPT);
impl_raw_enum_metadata!(crate::PrimFlags;
"AllowInventoryDrop" => ALLOW_INVENTORY_DROP, "AnimSource" => ANIM_SOURCE,
"CameraDecoupled" => CAMERA_DECOUPLED, "CameraSource" => CAMERA_SOURCE,
"CastShadows" => CAST_SHADOWS, "CreateSelected" => CREATE_SELECTED,
"DieAtEdge" => DIE_AT_EDGE, "Flying" => FLYING, "InventoryEmpty" => INVENTORY_EMPTY,
"JointHinge" => JOINT_HINGE, "JointLP2P" => JOINT_LP2_P, "JointP2P" => JOINT_P2_P,
"JointWheel" => JOINT_WHEEL, "Money" => MONEY, "None" => NONE,
"ObjectAnyOwner" => OBJECT_ANY_OWNER, "ObjectCopy" => OBJECT_COPY,
"ObjectGroupOwned" => OBJECT_GROUP_OWNED, "ObjectModify" => OBJECT_MODIFY,
"ObjectMove" => OBJECT_MOVE, "ObjectOwnerModify" => OBJECT_OWNER_MODIFY,
"ObjectTransfer" => OBJECT_TRANSFER, "ObjectYouOfficer" => OBJECT_YOU_OFFICER,
"ObjectYouOwner" => OBJECT_YOU_OWNER, "Phantom" => PHANTOM, "Physics" => PHYSICS,
"ReturnAtEdge" => RETURN_AT_EDGE, "Sandbox" => SANDBOX, "Scripted" => SCRIPTED,
"Temporary" => TEMPORARY, "TemporaryOnRez" => TEMPORARY_ON_REZ,
"Touch" => TOUCH, "ZlibCompressed" => ZLIB_COMPRESSED);
impl_raw_enum_metadata!(crate::SoundFlags;
"Loop" => LOOP_, "None" => NONE, "Queue" => QUEUE, "Stop" => STOP,
"SyncMaster" => SYNC_MASTER, "SyncPending" => SYNC_PENDING, "SyncSlave" => SYNC_SLAVE);
macro_rules! impl_flag_ops {
($ty:ty, $raw:ty) => {
impl $ty {
/// Returns every known and unknown protocol bit.
#[must_use]
pub const fn bits(self) -> $raw {
self.0
}
/// Constructs flags without discarding future protocol bits.
#[must_use]
pub const fn from_bits_retain(bits: $raw) -> Self {
Self(bits)
}
/// Returns whether all supplied bits are present.
#[must_use]
pub const fn contains(self, other: Self) -> bool {
self.0 & other.0 == other.0
}
/// Returns whether any supplied bit is present.
#[must_use]
pub const fn intersects(self, other: Self) -> bool {
self.0 & other.0 != 0
}
/// Returns whether no bits are set.
#[must_use]
pub const fn is_empty(self) -> bool {
self.0 == 0
}
}
impl std::ops::BitOr for $ty {
type Output = Self;
fn bitor(self, rhs: Self) -> Self {
Self(self.0 | rhs.0)
}
}
impl std::ops::BitAnd for $ty {
type Output = Self;
fn bitand(self, rhs: Self) -> Self {
Self(self.0 & rhs.0)
}
}
impl std::ops::BitXor for $ty {
type Output = Self;
fn bitxor(self, rhs: Self) -> Self {
Self(self.0 ^ rhs.0)
}
}
impl std::ops::Not for $ty {
type Output = Self;
fn not(self) -> Self {
Self(!self.0)
}
}
impl std::ops::BitOrAssign for $ty {
fn bitor_assign(&mut self, rhs: Self) {
self.0 |= rhs.0;
}
}
impl std::ops::BitAndAssign for $ty {
fn bitand_assign(&mut self, rhs: Self) {
self.0 &= rhs.0;
}
}
impl std::ops::BitXorAssign for $ty {
fn bitxor_assign(&mut self, rhs: Self) {
self.0 ^= rhs.0;
}
}
};
}
impl_flag_ops!(crate::ExtraParamType, u16);
impl_flag_ops!(crate::PrimFlags, u32);
impl_flag_ops!(crate::SoundFlags, u8);
impl crate::HoleType {
/// Returns the raw protocol value.
#[must_use]
pub const fn raw(self) -> u8 {
self.0
}
/// Retains a raw value, including extensions unknown to this version.
#[must_use]
pub const fn from_raw(value: u8) -> Self {
Self(value)
}
}
impl crate::InventoryType {
/// Returns the raw protocol value.
#[must_use]
pub const fn raw(self) -> i8 {
self.0
}
/// Retains a raw value, including extensions unknown to this version.
#[must_use]
pub const fn from_raw(value: i8) -> Self {
Self(value)
}
}
#[cfg(test)]
mod tests {
use super::*;
use crate::{
AssetType, AttachmentPoint, ClickAction, ExtraParamType, FaceType, FolderType, HoleType,
InventoryType, JointType, Material, ObjectCategory, PCode, PathCurve, PhysicsShapeType,
PrimFlags, PrimType, ProfileCurve, SaleType, SculptType, SoundFlags, UtilsPlatform,
WearableType,
};
#[test]
fn discriminants_and_unknown_flag_bits_round_trip() {
assert_eq!(AssetType::Material as i8, 57);
assert_eq!(AttachmentPoint::RightHindFoot as u8, 55);
assert_eq!(std::mem::size_of::<PrimFlags>(), 4);
let future = PrimFlags::from_bits_retain(0x0000_0001 | 0x0000_0800);
assert!(future.contains(PrimFlags::PHYSICS));
assert_eq!(future.bits(), 0x0000_0801);
assert_eq!((SoundFlags::LOOP_ | SoundFlags::QUEUE).bits(), 0x11);
assert_eq!(SoundFlags::from_bits_retain(0x80).bits(), 0x80);
assert_eq!(ExtraParamType::from_bits_retain(0x8000).bits(), 0x8000);
assert_eq!(HoleType::from_raw(0x40).raw(), 0x40);
assert_eq!(InventoryType::from_raw(120).raw(), 120);
}
#[test]
fn every_enum_uses_the_golden_underlying_width() {
assert_eq!(std::mem::size_of::<AssetType>(), 1);
assert_eq!(std::mem::size_of::<AttachmentPoint>(), 1);
assert_eq!(std::mem::size_of::<ClickAction>(), 1);
assert_eq!(std::mem::size_of::<ExtraParamType>(), 2);
assert_eq!(std::mem::size_of::<FaceType>(), 2);
assert_eq!(std::mem::size_of::<FolderType>(), 1);
assert_eq!(std::mem::size_of::<HoleType>(), 1);
assert_eq!(std::mem::size_of::<InventoryType>(), 1);
assert_eq!(std::mem::size_of::<JointType>(), 1);
assert_eq!(std::mem::size_of::<Material>(), 1);
assert_eq!(std::mem::size_of::<ObjectCategory>(), 4);
assert_eq!(std::mem::size_of::<PCode>(), 1);
assert_eq!(std::mem::size_of::<PathCurve>(), 1);
assert_eq!(std::mem::size_of::<PhysicsShapeType>(), 1);
assert_eq!(std::mem::size_of::<PrimFlags>(), 4);
assert_eq!(std::mem::size_of::<PrimType>(), 4);
assert_eq!(std::mem::size_of::<ProfileCurve>(), 1);
assert_eq!(std::mem::size_of::<SaleType>(), 1);
assert_eq!(std::mem::size_of::<SculptType>(), 1);
assert_eq!(std::mem::size_of::<SoundFlags>(), 1);
assert_eq!(std::mem::size_of::<UtilsPlatform>(), 4);
assert_eq!(std::mem::size_of::<WearableType>(), 1);
let all_prim_flags = PrimFlags::PHYSICS
| PrimFlags::CREATE_SELECTED
| PrimFlags::OBJECT_MODIFY
| PrimFlags::OBJECT_COPY
| PrimFlags::OBJECT_ANY_OWNER
| PrimFlags::OBJECT_YOU_OWNER
| PrimFlags::SCRIPTED
| PrimFlags::TOUCH
| PrimFlags::OBJECT_MOVE
| PrimFlags::MONEY
| PrimFlags::PHANTOM
| PrimFlags::INVENTORY_EMPTY
| PrimFlags::JOINT_HINGE
| PrimFlags::JOINT_P2_P
| PrimFlags::JOINT_LP2_P
| PrimFlags::JOINT_WHEEL
| PrimFlags::ALLOW_INVENTORY_DROP
| PrimFlags::OBJECT_TRANSFER
| PrimFlags::OBJECT_GROUP_OWNED
| PrimFlags::OBJECT_YOU_OFFICER
| PrimFlags::CAMERA_DECOUPLED
| PrimFlags::ANIM_SOURCE
| PrimFlags::CAMERA_SOURCE
| PrimFlags::CAST_SHADOWS
| PrimFlags::DIE_AT_EDGE
| PrimFlags::RETURN_AT_EDGE
| PrimFlags::SANDBOX
| PrimFlags::FLYING
| PrimFlags::OBJECT_OWNER_MODIFY
| PrimFlags::TEMPORARY_ON_REZ
| PrimFlags::TEMPORARY
| PrimFlags::ZLIB_COMPRESSED;
assert_eq!(all_prim_flags.bits(), u32::MAX);
let all_sound_flags = SoundFlags::LOOP_
| SoundFlags::SYNC_MASTER
| SoundFlags::SYNC_SLAVE
| SoundFlags::SYNC_PENDING
| SoundFlags::QUEUE
| SoundFlags::STOP;
assert_eq!(all_sound_flags.bits(), 0x3f);
}
#[test]
fn metadata_and_case_insensitive_parsing_match_csharp() {
assert_eq!(AssetType::parse_name("lsltEXt"), Some(AssetType::LSLText));
let value: EnumValue = AssetType::LSLText.into();
assert_eq!(
EnumInfoExtensions::get_text(value),
Ok("lsltext".to_owned())
);
let value: EnumValue = AttachmentPoint::Skull.into();
assert_eq!(EnumInfoExtensions::get_text(value), Ok("Head".to_owned()));
}
}

View File

@@ -567,35 +567,14 @@ impl<TKey> libremetaverse_types::ICacheDictionaryRemovalStrategy<TKey>
}
/// C# type: `T:LibreMetaverse.EnumInfoAttribute`.
pub struct EnumInfoAttribute {
/// C# member: `F:LibreMetaverse.EnumInfoAttribute.Text`.
pub text: String,
}
impl EnumInfoAttribute {
/// C# member: `M:LibreMetaverse.EnumInfoAttribute.#ctor`.
pub fn new_with_constructor() -> Result<Self, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.EnumInfoAttribute.#ctor")
}
/// C# member: `M:LibreMetaverse.EnumInfoAttribute.#ctor(System.String)`.
pub fn new_with_string(text: String) -> Result<Self, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.EnumInfoAttribute.#ctor(System.String)",
)
}
}
/// C# member: `F:LibreMetaverse.EnumInfoAttribute.Text`.
/// C# member: `M:LibreMetaverse.EnumInfoAttribute.#ctor`.
/// C# member: `M:LibreMetaverse.EnumInfoAttribute.#ctor(System.String)`.
pub use crate::enum_compat::EnumInfoAttribute;
/// C# type: `T:LibreMetaverse.EnumInfoExtensions`.
pub struct EnumInfoExtensions;
impl EnumInfoExtensions {
/// C# member: `M:LibreMetaverse.EnumInfoExtensions.GetText(System.Enum)`.
pub fn get_text(
value: libremetaverse_types::compat::EnumValue,
) -> Result<String, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.EnumInfoExtensions.GetText(System.Enum)",
)
}
}
/// C# member: `M:LibreMetaverse.EnumInfoExtensions.GetText(System.Enum)`.
pub use crate::enum_compat::EnumInfoExtensions;
/// C# type: `T:LibreMetaverse.ExpiringCache`2`.
pub struct ExpiringCache<TKey, TValue> {
@@ -1802,719 +1781,122 @@ impl TokenBucket {
pub use crate::uuid::UUID;
/// C# type: `T:LibreMetaverse.Utils`.
pub struct Utils;
impl Utils {
/// C# member: `F:LibreMetaverse.Utils.DEG_TO_RAD`.
pub const DEG_TO_RAD: f32 = 0.017453292;
/// C# member: `F:LibreMetaverse.Utils.E`.
pub const E: f32 = 2.7182817;
/// C# member: `F:LibreMetaverse.Utils.EmptyBytes`.
pub fn empty_bytes() -> Vec<u8> {
libremetaverse_types::unimplemented_api!("F:LibreMetaverse.Utils.EmptyBytes")
}
/// C# member: `F:LibreMetaverse.Utils.EnUsCulture`.
pub fn en_us_culture() -> libremetaverse_types::compat::CultureInfo {
libremetaverse_types::unimplemented_api!("F:LibreMetaverse.Utils.EnUsCulture")
}
/// C# member: `F:LibreMetaverse.Utils.Epoch`.
pub fn epoch() -> std::time::SystemTime {
libremetaverse_types::unimplemented_api!("F:LibreMetaverse.Utils.Epoch")
}
/// C# member: `F:LibreMetaverse.Utils.InternStrings`.
pub fn intern_strings() -> bool {
libremetaverse_types::unimplemented_api!("F:LibreMetaverse.Utils.InternStrings")
}
/// C# member: `F:LibreMetaverse.Utils.LOG10E`.
pub const LOG10_E: f32 = 0.4342945;
/// C# member: `F:LibreMetaverse.Utils.LOG2E`.
pub const LOG2_E: f32 = 1.442695;
/// C# member: `F:LibreMetaverse.Utils.PI`.
pub const PI: f32 = 3.1415927;
/// C# member: `F:LibreMetaverse.Utils.PI_OVER_FOUR`.
pub const PI_OVER_FOUR: f32 = 0.7853982;
/// C# member: `F:LibreMetaverse.Utils.PI_OVER_TWO`.
pub const PI_OVER_TWO: f32 = 1.5707964;
/// C# member: `F:LibreMetaverse.Utils.RAD_TO_DEG`.
pub const RAD_TO_DEG: f32 = 57.29578;
/// C# member: `F:LibreMetaverse.Utils.TWO_PI`.
pub const TWO_PI: f32 = 6.2831855;
/// C# member: `M:LibreMetaverse.Utils.AssetTypeToString(LibreMetaverse.AssetType)`.
pub fn asset_type_to_string(
type_: libremetaverse_types::AssetType,
) -> Result<String, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.AssetTypeToString(LibreMetaverse.AssetType)",
)
}
/// C# member: `M:LibreMetaverse.Utils.ByteToFloat(System.Byte,System.Single,System.Single)`.
pub fn byte_to_float_with_byte_single_single(
val: u8,
lower: f32,
upper: f32,
) -> Result<f32, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.ByteToFloat(System.Byte,System.Single,System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Utils.ByteToFloat(System.Byte[],System.Int32,System.Single,System.Single)`.
pub fn byte_to_float_with_bytes_int32_single_single(
bytes: Vec<u8>,
pos: i32,
lower: f32,
upper: f32,
) -> Result<f32, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.ByteToFloat(System.Byte[],System.Int32,System.Single,System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Utils.BytesToDouble(System.Byte[],System.Int32)`.
pub fn bytes_to_double(bytes: Vec<u8>, pos: i32) -> Result<f64, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.BytesToDouble(System.Byte[],System.Int32)",
)
}
/// C# member: `M:LibreMetaverse.Utils.BytesToFloat(System.Byte[],System.Int32)`.
pub fn bytes_to_float(bytes: Vec<u8>, pos: i32) -> Result<f32, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.BytesToFloat(System.Byte[],System.Int32)",
)
}
/// C# member: `M:LibreMetaverse.Utils.BytesToHexString(System.Byte[],System.Int32,System.String)`.
pub fn bytes_to_hex_string_with_bytes_int32_string(
bytes: Vec<u8>,
length: i32,
field_name: Option<String>,
) -> Result<String, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.BytesToHexString(System.Byte[],System.Int32,System.String)",
)
}
/// C# member: `M:LibreMetaverse.Utils.BytesToHexString(System.Byte[],System.String)`.
pub fn bytes_to_hex_string_with_bytes_string(
bytes: Vec<u8>,
field_name: String,
) -> Result<String, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.BytesToHexString(System.Byte[],System.String)",
)
}
/// C# member: `M:LibreMetaverse.Utils.BytesToInt(System.Byte[])`.
pub fn bytes_to_int_with_bytes(bytes: Vec<u8>) -> Result<i32, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.BytesToInt(System.Byte[])")
}
/// C# member: `M:LibreMetaverse.Utils.BytesToInt(System.Byte[],System.Int32)`.
pub fn bytes_to_int_with_bytes_int32(bytes: Vec<u8>, pos: i32) -> Result<i32, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.BytesToInt(System.Byte[],System.Int32)",
)
}
/// C# member: `M:LibreMetaverse.Utils.BytesToInt16(System.Byte[])`.
pub fn bytes_to_int16_with_bytes(bytes: Vec<u8>) -> Result<i16, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.BytesToInt16(System.Byte[])")
}
/// C# member: `M:LibreMetaverse.Utils.BytesToInt16(System.Byte[],System.Int32)`.
pub fn bytes_to_int16_with_bytes_int32(bytes: Vec<u8>, pos: i32) -> Result<i16, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.BytesToInt16(System.Byte[],System.Int32)",
)
}
/// C# member: `M:LibreMetaverse.Utils.BytesToInt64(System.Byte[])`.
pub fn bytes_to_int64_with_bytes(bytes: Vec<u8>) -> Result<i64, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.BytesToInt64(System.Byte[])")
}
/// C# member: `M:LibreMetaverse.Utils.BytesToInt64(System.Byte[],System.Int32)`.
pub fn bytes_to_int64_with_bytes_int32(bytes: Vec<u8>, pos: i32) -> Result<i64, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.BytesToInt64(System.Byte[],System.Int32)",
)
}
/// C# member: `M:LibreMetaverse.Utils.BytesToString(System.Byte[])`.
pub fn bytes_to_string_with_bytes(bytes: Vec<u8>) -> Result<String, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.BytesToString(System.Byte[])")
}
/// C# member: `M:LibreMetaverse.Utils.BytesToString(System.Byte[],System.Int32,System.Int32)`.
pub fn bytes_to_string_with_bytes_int32_int32(
bytes: Vec<u8>,
index: i32,
count: i32,
) -> Result<String, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.BytesToString(System.Byte[],System.Int32,System.Int32)",
)
}
/// C# member: `M:LibreMetaverse.Utils.BytesToUInt(System.Byte[])`.
pub fn bytes_to_u_int_with_bytes(bytes: Vec<u8>) -> Result<u32, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.BytesToUInt(System.Byte[])")
}
/// C# member: `M:LibreMetaverse.Utils.BytesToUInt(System.Byte[],System.Int32)`.
pub fn bytes_to_u_int_with_bytes_int32(bytes: Vec<u8>, pos: i32) -> Result<u32, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.BytesToUInt(System.Byte[],System.Int32)",
)
}
/// C# member: `M:LibreMetaverse.Utils.BytesToUInt16(System.Byte[])`.
pub fn bytes_to_u_int16_with_bytes(bytes: Vec<u8>) -> Result<u16, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.BytesToUInt16(System.Byte[])")
}
/// C# member: `M:LibreMetaverse.Utils.BytesToUInt16(System.Byte[],System.Int32)`.
pub fn bytes_to_u_int16_with_bytes_int32(
bytes: Vec<u8>,
pos: i32,
) -> Result<u16, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.BytesToUInt16(System.Byte[],System.Int32)",
)
}
/// C# member: `M:LibreMetaverse.Utils.BytesToUInt64(System.Byte[])`.
pub fn bytes_to_u_int64(bytes: Vec<u8>) -> Result<u64, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.BytesToUInt64(System.Byte[])")
}
/// C# member: `M:LibreMetaverse.Utils.Clamp(System.Double,System.Double,System.Double)`.
pub fn clamp_with_double_double_double(
value: f64,
min: f64,
max: f64,
) -> Result<f64, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.Clamp(System.Double,System.Double,System.Double)",
)
}
/// C# member: `M:LibreMetaverse.Utils.Clamp(System.Int32,System.Int32,System.Int32)`.
pub fn clamp_with_int32_int32_int32(
value: i32,
min: i32,
max: i32,
) -> Result<i32, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.Clamp(System.Int32,System.Int32,System.Int32)",
)
}
/// C# member: `M:LibreMetaverse.Utils.Clamp(System.Single,System.Single,System.Single)`.
pub fn clamp_with_single_single_single(
value: f32,
min: f32,
max: f32,
) -> Result<f32, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.Clamp(System.Single,System.Single,System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Utils.CopyBytes(System.Byte[])`.
pub fn copy_bytes(bytes: Option<Vec<u8>>) -> Result<Option<Vec<u8>>, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.CopyBytes(System.Byte[])")
}
/// C# member: `M:LibreMetaverse.Utils.DateTimeToUnixTime(System.DateTime)`.
pub fn date_time_to_unix_time(time: std::time::SystemTime) -> Result<u32, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.DateTimeToUnixTime(System.DateTime)",
)
}
/// C# member: `M:LibreMetaverse.Utils.Distance(System.Single,System.Single)`.
pub fn distance(value1: f32, value2: f32) -> Result<f32, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.Distance(System.Single,System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Utils.DoubleToBytes(System.Double)`.
pub fn double_to_bytes_with_double(value: f64) -> Result<Vec<u8>, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.DoubleToBytes(System.Double)")
}
/// C# member: `M:LibreMetaverse.Utils.DoubleToBytes(System.Double,System.Byte[],System.Int32)`.
pub fn double_to_bytes_with_double_bytes_int32(
value: f64,
dest: Vec<u8>,
pos: i32,
) -> Result<(), crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.DoubleToBytes(System.Double,System.Byte[],System.Int32)",
)
}
/// C# member: `M:LibreMetaverse.Utils.DoubleToBytesBig(System.Double)`.
pub fn double_to_bytes_big(value: f64) -> Result<Vec<u8>, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.DoubleToBytesBig(System.Double)",
)
}
/// C# member: `M:LibreMetaverse.Utils.EnumToText(System.Enum)`.
pub fn enum_to_text(
value: libremetaverse_types::compat::EnumValue,
) -> Result<String, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.EnumToText(System.Enum)")
}
/// C# member: `M:LibreMetaverse.Utils.EnumTryParse``1(System.String,``0@)`.
pub fn enum_try_parse<T>(
str_type: String,
result: &mut Option<T>,
) -> Result<bool, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.EnumTryParse``1(System.String,``0@)",
)
}
/// C# member: `M:LibreMetaverse.Utils.FloatToByte(System.Single,System.Single,System.Single)`.
pub fn float_to_byte(val: f32, lower: f32, upper: f32) -> Result<u8, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.FloatToByte(System.Single,System.Single,System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Utils.FloatToBytes(System.Single)`.
pub fn float_to_bytes_with_single(value: f32) -> Result<Vec<u8>, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.FloatToBytes(System.Single)")
}
/// C# member: `M:LibreMetaverse.Utils.FloatToBytes(System.Single,System.Byte[],System.Int32)`.
pub fn float_to_bytes_with_single_bytes_int32(
value: f32,
dest: Vec<u8>,
pos: i32,
) -> Result<(), crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.FloatToBytes(System.Single,System.Byte[],System.Int32)",
)
}
/// C# member: `M:LibreMetaverse.Utils.FloatToUInt16(System.Single,System.Single,System.Single)`.
pub fn float_to_u_int16(value: f32, lower: f32, upper: f32) -> Result<u16, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.FloatToUInt16(System.Single,System.Single,System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Utils.FolderTypeToString(LibreMetaverse.FolderType)`.
pub fn folder_type_to_string(
type_: libremetaverse_types::FolderType,
) -> Result<String, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.FolderTypeToString(LibreMetaverse.FolderType)",
)
}
/// C# member: `M:LibreMetaverse.Utils.GetRunningPlatform`.
pub fn get_running_platform() -> Result<libremetaverse_types::UtilsPlatform, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.GetRunningPlatform")
}
/// C# member: `M:LibreMetaverse.Utils.GetUnixTime`.
pub fn get_unix_time() -> Result<u32, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.GetUnixTime")
}
/// C# member: `M:LibreMetaverse.Utils.Hermite(System.Double,System.Double,System.Double,System.Double,System.Double)`.
pub fn hermite_with_double_double_double_double_double(
value1: f64,
tangent1: f64,
value2: f64,
tangent2: f64,
amount: f64,
) -> Result<f64, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.Hermite(System.Double,System.Double,System.Double,System.Double,System.Double)",
)
}
/// C# member: `M:LibreMetaverse.Utils.Hermite(System.Single,System.Single,System.Single,System.Single,System.Single)`.
pub fn hermite_with_single_single_single_single_single(
value1: f32,
tangent1: f32,
value2: f32,
tangent2: f32,
amount: f32,
) -> Result<f32, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.Hermite(System.Single,System.Single,System.Single,System.Single,System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Utils.HexStringToBytes(System.String,System.Boolean)`.
pub fn hex_string_to_bytes(
hex_string: String,
handle_dirty: bool,
) -> Result<Vec<u8>, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.HexStringToBytes(System.String,System.Boolean)",
)
}
/// C# member: `M:LibreMetaverse.Utils.HostnameToIPv4(System.String)`.
pub fn hostname_to_i_pv4(hostname: String) -> Result<Option<std::net::IpAddr>, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.HostnameToIPv4(System.String)",
)
}
/// C# member: `M:LibreMetaverse.Utils.IPToUInt(System.Net.IPAddress)`.
pub fn ip_to_u_int(address: std::net::IpAddr) -> Result<u32, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.IPToUInt(System.Net.IPAddress)",
)
}
/// C# member: `M:LibreMetaverse.Utils.Int16ToBytes(System.Int16)`.
pub fn int16_to_bytes_with_int16(value: i16) -> Result<Vec<u8>, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.Int16ToBytes(System.Int16)")
}
/// C# member: `M:LibreMetaverse.Utils.Int16ToBytes(System.Int16,System.Byte[],System.Int32)`.
pub fn int16_to_bytes_with_int16_bytes_int32(
value: i16,
dest: Vec<u8>,
pos: i32,
) -> Result<(), crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.Int16ToBytes(System.Int16,System.Byte[],System.Int32)",
)
}
/// C# member: `M:LibreMetaverse.Utils.Int64ToBytes(System.Int64)`.
pub fn int64_to_bytes_with_int64(value: i64) -> Result<Vec<u8>, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.Int64ToBytes(System.Int64)")
}
/// C# member: `M:LibreMetaverse.Utils.Int64ToBytes(System.Int64,System.Byte[],System.Int32)`.
pub fn int64_to_bytes_with_int64_bytes_int32(
value: i64,
dest: Vec<u8>,
pos: i32,
) -> Result<(), crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.Int64ToBytes(System.Int64,System.Byte[],System.Int32)",
)
}
/// C# member: `M:LibreMetaverse.Utils.IntToBytes(System.Int32)`.
pub fn int_to_bytes_with_int32(value: i32) -> Result<Vec<u8>, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.IntToBytes(System.Int32)")
}
/// C# member: `M:LibreMetaverse.Utils.IntToBytes(System.Int32,System.Byte[],System.Int32)`.
pub fn int_to_bytes_with_int32_bytes_int32(
value: i32,
dest: Vec<u8>,
pos: i32,
) -> Result<(), crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.IntToBytes(System.Int32,System.Byte[],System.Int32)",
)
}
/// C# member: `M:LibreMetaverse.Utils.IntToBytesBig(System.Int32)`.
pub fn int_to_bytes_big(value: i32) -> Result<Vec<u8>, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.IntToBytesBig(System.Int32)")
}
/// C# member: `M:LibreMetaverse.Utils.InventoryTypeToString(LibreMetaverse.InventoryType)`.
pub fn inventory_type_to_string(
type_: libremetaverse_types::InventoryType,
) -> Result<String, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.InventoryTypeToString(LibreMetaverse.InventoryType)",
)
}
/// C# member: `M:LibreMetaverse.Utils.IsFinite(System.Double)`.
pub fn is_finite_with_double(value: f64) -> Result<bool, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.IsFinite(System.Double)")
}
/// C# member: `M:LibreMetaverse.Utils.IsFinite(System.Single)`.
pub fn is_finite_with_single(value: f32) -> Result<bool, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.IsFinite(System.Single)")
}
/// C# member: `M:LibreMetaverse.Utils.Lerp(System.Double,System.Double,System.Double)`.
pub fn lerp_with_double_double_double(
value1: f64,
value2: f64,
amount: f64,
) -> Result<f64, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.Lerp(System.Double,System.Double,System.Double)",
)
}
/// C# member: `M:LibreMetaverse.Utils.Lerp(System.Single,System.Single,System.Single)`.
pub fn lerp_with_single_single_single(
value1: f32,
value2: f32,
amount: f32,
) -> Result<f32, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.Lerp(System.Single,System.Single,System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Utils.LongToUInts(System.UInt64,System.UInt32@,System.UInt32@)`.
pub fn long_to_u_ints(a: u64, b: &mut u32, c: &mut u32) -> Result<(), crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.LongToUInts(System.UInt64,System.UInt32@,System.UInt32@)",
)
}
/// C# member: `M:LibreMetaverse.Utils.MD5(System.Byte[])`.
pub fn md5_with_bytes(data: Vec<u8>) -> Result<Vec<u8>, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.MD5(System.Byte[])")
}
/// C# member: `M:LibreMetaverse.Utils.MD5(System.String)`.
pub fn md5_with_string(str: String) -> Result<String, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.MD5(System.String)")
}
/// C# member: `M:LibreMetaverse.Utils.MD5String(System.String)`.
pub fn md5_string(value: String) -> Result<String, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.MD5String(System.String)")
}
/// C# member: `M:LibreMetaverse.Utils.PBKDF2(System.String)`.
pub fn pbkdf2(str: String) -> Result<String, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.PBKDF2(System.String)")
}
/// C# member: `M:LibreMetaverse.Utils.RandomDouble`.
pub fn random_double() -> Result<f64, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.RandomDouble")
}
/// C# member: `M:LibreMetaverse.Utils.ReadDoubleLittleEndian(System.Byte[],System.Int32)`.
pub fn read_double_little_endian(src: &[u8], pos: i32) -> Result<f64, crate::Error> {
crate::byte_order::read_double_little_endian(src, pos)
}
/// C# member: `M:LibreMetaverse.Utils.ReadSingleLittleEndian(System.Byte[],System.Int32)`.
pub fn read_single_little_endian(src: &[u8], pos: i32) -> Result<f32, crate::Error> {
crate::byte_order::read_single_little_endian(src, pos)
}
/// C# member: `M:LibreMetaverse.Utils.Round(System.Single)`.
pub fn round(val: f32) -> Result<i32, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.Round(System.Single)")
}
/// C# member: `M:LibreMetaverse.Utils.SHA1(System.Byte[])`.
pub fn sha1(data: Vec<u8>) -> Result<Vec<u8>, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.SHA1(System.Byte[])")
}
/// C# member: `M:LibreMetaverse.Utils.SHA1String(System.String)`.
pub fn sha1_string(value: String) -> Result<String, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.SHA1String(System.String)")
}
/// C# member: `M:LibreMetaverse.Utils.SHA256(System.Byte[])`.
pub fn sha256(data: Vec<u8>) -> Result<Vec<u8>, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.SHA256(System.Byte[])")
}
/// C# member: `M:LibreMetaverse.Utils.SHA256String(System.String)`.
pub fn sha256_string(value: String) -> Result<String, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.SHA256String(System.String)")
}
/// C# member: `M:LibreMetaverse.Utils.SaleTypeToString(LibreMetaverse.SaleType)`.
pub fn sale_type_to_string(
type_: libremetaverse_types::SaleType,
) -> Result<String, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.SaleTypeToString(LibreMetaverse.SaleType)",
)
}
/// C# member: `M:LibreMetaverse.Utils.SmoothStep(System.Double,System.Double,System.Double)`.
pub fn smooth_step_with_double_double_double(
value1: f64,
value2: f64,
amount: f64,
) -> Result<f64, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.SmoothStep(System.Double,System.Double,System.Double)",
)
}
/// C# member: `M:LibreMetaverse.Utils.SmoothStep(System.Single,System.Single,System.Single)`.
pub fn smooth_step_with_single_single_single(
value1: f32,
value2: f32,
amount: f32,
) -> Result<f32, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.SmoothStep(System.Single,System.Single,System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Utils.StringToAssetType(System.String)`.
pub fn string_to_asset_type(
type_: String,
) -> Result<libremetaverse_types::AssetType, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.StringToAssetType(System.String)",
)
}
/// C# member: `M:LibreMetaverse.Utils.StringToAttachmentPoint(System.String)`.
pub fn string_to_attachment_point(
value: String,
) -> Result<libremetaverse_types::AttachmentPoint, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.StringToAttachmentPoint(System.String)",
)
}
/// C# member: `M:LibreMetaverse.Utils.StringToBytes(System.String)`.
pub fn string_to_bytes(str: String) -> Result<Vec<u8>, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.StringToBytes(System.String)")
}
/// C# member: `M:LibreMetaverse.Utils.StringToFolderType(System.String)`.
pub fn string_to_folder_type(
type_: String,
) -> Result<libremetaverse_types::FolderType, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.StringToFolderType(System.String)",
)
}
/// C# member: `M:LibreMetaverse.Utils.StringToInventoryType(System.String)`.
pub fn string_to_inventory_type(
type_: String,
) -> Result<libremetaverse_types::InventoryType, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.StringToInventoryType(System.String)",
)
}
/// C# member: `M:LibreMetaverse.Utils.StringToSaleType(System.String)`.
pub fn string_to_sale_type(
value: String,
) -> Result<libremetaverse_types::SaleType, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.StringToSaleType(System.String)",
)
}
/// C# member: `M:LibreMetaverse.Utils.SwapWords(System.Byte)`.
pub fn swap_words(value: u8) -> Result<u8, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.SwapWords(System.Byte)")
}
/// C# member: `M:LibreMetaverse.Utils.Swap``1(``0@,``0@)`.
pub fn swap<T>(lhs: &mut Option<T>, rhs: &mut Option<T>) -> Result<(), crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.Swap``1(``0@,``0@)")
}
/// C# member: `M:LibreMetaverse.Utils.ToDegrees(System.Single)`.
pub fn to_degrees(radians: f32) -> Result<f32, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.ToDegrees(System.Single)")
}
/// C# member: `M:LibreMetaverse.Utils.ToRadians(System.Single)`.
pub fn to_radians(degrees: f32) -> Result<f32, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.ToRadians(System.Single)")
}
/// C# member: `M:LibreMetaverse.Utils.TryParseDouble(System.String,System.Double@)`.
pub fn try_parse_double(s: String, result: &mut f64) -> bool {
libremetaverse_types::unimplemented_api!(
"M:LibreMetaverse.Utils.TryParseDouble(System.String,System.Double@)"
)
}
/// C# member: `M:LibreMetaverse.Utils.TryParseHex(System.String,System.UInt32@)`.
pub fn try_parse_hex(s: String, result: &mut u32) -> bool {
libremetaverse_types::unimplemented_api!(
"M:LibreMetaverse.Utils.TryParseHex(System.String,System.UInt32@)"
)
}
/// C# member: `M:LibreMetaverse.Utils.TryParseSingle(System.String,System.Single@)`.
pub fn try_parse_single(s: String, result: &mut f32) -> bool {
libremetaverse_types::unimplemented_api!(
"M:LibreMetaverse.Utils.TryParseSingle(System.String,System.Single@)"
)
}
/// C# member: `M:LibreMetaverse.Utils.UInt16ToBytes(System.UInt16)`.
pub fn u_int16_to_bytes_with_u_int16(value: u16) -> Result<Vec<u8>, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.UInt16ToBytes(System.UInt16)")
}
/// C# member: `M:LibreMetaverse.Utils.UInt16ToBytes(System.UInt16,System.Byte[],System.Int32)`.
pub fn u_int16_to_bytes_with_u_int16_bytes_int32(
value: u16,
dest: Vec<u8>,
pos: i32,
) -> Result<(), crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.UInt16ToBytes(System.UInt16,System.Byte[],System.Int32)",
)
}
/// C# member: `M:LibreMetaverse.Utils.UInt16ToBytesBig(System.UInt16,System.Byte[],System.Int32)`.
pub fn u_int16_to_bytes_big(value: u16, dest: Vec<u8>, pos: i32) -> Result<(), crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.UInt16ToBytesBig(System.UInt16,System.Byte[],System.Int32)",
)
}
/// C# member: `M:LibreMetaverse.Utils.UInt16ToFloat(System.Byte[],System.Int32,System.Single,System.Single)`.
pub fn u_int16_to_float_with_bytes_int32_single_single(
bytes: Vec<u8>,
pos: i32,
lower: f32,
upper: f32,
) -> Result<f32, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.UInt16ToFloat(System.Byte[],System.Int32,System.Single,System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Utils.UInt16ToFloat(System.UInt16,System.Single,System.Single)`.
pub fn u_int16_to_float_with_u_int16_single_single(
val: u16,
lower: f32,
upper: f32,
) -> Result<f32, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.UInt16ToFloat(System.UInt16,System.Single,System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Utils.UInt64ToBytes(System.UInt64)`.
pub fn u_int64_to_bytes_with_u_int64(value: u64) -> Result<Vec<u8>, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.UInt64ToBytes(System.UInt64)")
}
/// C# member: `M:LibreMetaverse.Utils.UInt64ToBytes(System.UInt64,System.Byte[],System.Int32)`.
pub fn u_int64_to_bytes_with_u_int64_bytes_int32(
value: u64,
dest: Vec<u8>,
pos: i32,
) -> Result<(), crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.UInt64ToBytes(System.UInt64,System.Byte[],System.Int32)",
)
}
/// C# member: `M:LibreMetaverse.Utils.UInt64ToBytesBig(System.UInt64)`.
pub fn u_int64_to_bytes_big_with_u_int64(value: u64) -> Result<Vec<u8>, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.UInt64ToBytesBig(System.UInt64)",
)
}
/// C# member: `M:LibreMetaverse.Utils.UInt64ToBytesBig(System.UInt64,System.Byte[],System.Int32)`.
pub fn u_int64_to_bytes_big_with_u_int64_bytes_int32(
value: u64,
dest: Vec<u8>,
pos: i32,
) -> Result<(), crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.UInt64ToBytesBig(System.UInt64,System.Byte[],System.Int32)",
)
}
/// C# member: `M:LibreMetaverse.Utils.UIntToBytes(System.UInt32)`.
pub fn u_int_to_bytes_with_u_int32(value: u32) -> Result<Vec<u8>, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utils.UIntToBytes(System.UInt32)")
}
/// C# member: `M:LibreMetaverse.Utils.UIntToBytes(System.UInt32,System.Byte[],System.Int32)`.
pub fn u_int_to_bytes_with_u_int32_bytes_int32(
value: u32,
dest: Vec<u8>,
pos: i32,
) -> Result<(), crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.UIntToBytes(System.UInt32,System.Byte[],System.Int32)",
)
}
/// C# member: `M:LibreMetaverse.Utils.UIntToBytesBig(System.UInt32,System.Byte[],System.Int32)`.
pub fn u_int_to_bytes_big(value: u32, dest: Vec<u8>, pos: i32) -> Result<(), crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.UIntToBytesBig(System.UInt32,System.Byte[],System.Int32)",
)
}
/// C# member: `M:LibreMetaverse.Utils.UIntToHexString(System.UInt32)`.
pub fn u_int_to_hex_string(i: u32) -> Result<String, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.UIntToHexString(System.UInt32)",
)
}
/// C# member: `M:LibreMetaverse.Utils.UIntsToLong(System.UInt32,System.UInt32)`.
pub fn u_ints_to_long(a: u32, b: u32) -> Result<u64, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.UIntsToLong(System.UInt32,System.UInt32)",
)
}
/// C# member: `M:LibreMetaverse.Utils.UnixTimeToDateTime(System.Int32)`.
pub fn unix_time_to_date_time_with_int32(
timestamp: i32,
) -> Result<std::time::SystemTime, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.UnixTimeToDateTime(System.Int32)",
)
}
/// C# member: `M:LibreMetaverse.Utils.UnixTimeToDateTime(System.UInt32)`.
pub fn unix_time_to_date_time_with_u_int32(
timestamp: u32,
) -> Result<std::time::SystemTime, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Utils.UnixTimeToDateTime(System.UInt32)",
)
}
/// C# member: `M:LibreMetaverse.Utils.WriteDoubleLittleEndian(System.Byte[],System.Int32,System.Double)`.
pub fn write_double_little_endian(
dest: &mut [u8],
pos: i32,
value: f64,
) -> Result<(), crate::Error> {
crate::byte_order::write_double_little_endian(dest, pos, value)
}
/// C# member: `M:LibreMetaverse.Utils.WriteSingleLittleEndian(System.Byte[],System.Int32,System.Single)`.
pub fn write_single_little_endian(
dest: &mut [u8],
pos: i32,
value: f32,
) -> Result<(), crate::Error> {
crate::byte_order::write_single_little_endian(dest, pos, value)
}
}
/// C# member: `F:LibreMetaverse.Utils.DEG_TO_RAD`.
/// C# member: `F:LibreMetaverse.Utils.E`.
/// C# member: `F:LibreMetaverse.Utils.EmptyBytes`.
/// C# member: `F:LibreMetaverse.Utils.EnUsCulture`.
/// C# member: `F:LibreMetaverse.Utils.Epoch`.
/// C# member: `F:LibreMetaverse.Utils.InternStrings`.
/// C# member: `F:LibreMetaverse.Utils.LOG10E`.
/// C# member: `F:LibreMetaverse.Utils.LOG2E`.
/// C# member: `F:LibreMetaverse.Utils.PI`.
/// C# member: `F:LibreMetaverse.Utils.PI_OVER_FOUR`.
/// C# member: `F:LibreMetaverse.Utils.PI_OVER_TWO`.
/// C# member: `F:LibreMetaverse.Utils.RAD_TO_DEG`.
/// C# member: `F:LibreMetaverse.Utils.TWO_PI`.
/// C# member: `M:LibreMetaverse.Utils.AssetTypeToString(LibreMetaverse.AssetType)`.
/// C# member: `M:LibreMetaverse.Utils.ByteToFloat(System.Byte,System.Single,System.Single)`.
/// C# member: `M:LibreMetaverse.Utils.ByteToFloat(System.Byte[],System.Int32,System.Single,System.Single)`.
/// C# member: `M:LibreMetaverse.Utils.BytesToDouble(System.Byte[],System.Int32)`.
/// C# member: `M:LibreMetaverse.Utils.BytesToFloat(System.Byte[],System.Int32)`.
/// C# member: `M:LibreMetaverse.Utils.BytesToHexString(System.Byte[],System.Int32,System.String)`.
/// C# member: `M:LibreMetaverse.Utils.BytesToHexString(System.Byte[],System.String)`.
/// C# member: `M:LibreMetaverse.Utils.BytesToInt(System.Byte[])`.
/// C# member: `M:LibreMetaverse.Utils.BytesToInt(System.Byte[],System.Int32)`.
/// C# member: `M:LibreMetaverse.Utils.BytesToInt16(System.Byte[])`.
/// C# member: `M:LibreMetaverse.Utils.BytesToInt16(System.Byte[],System.Int32)`.
/// C# member: `M:LibreMetaverse.Utils.BytesToInt64(System.Byte[])`.
/// C# member: `M:LibreMetaverse.Utils.BytesToInt64(System.Byte[],System.Int32)`.
/// C# member: `M:LibreMetaverse.Utils.BytesToString(System.Byte[])`.
/// C# member: `M:LibreMetaverse.Utils.BytesToString(System.Byte[],System.Int32,System.Int32)`.
/// C# member: `M:LibreMetaverse.Utils.BytesToUInt(System.Byte[])`.
/// C# member: `M:LibreMetaverse.Utils.BytesToUInt(System.Byte[],System.Int32)`.
/// C# member: `M:LibreMetaverse.Utils.BytesToUInt16(System.Byte[])`.
/// C# member: `M:LibreMetaverse.Utils.BytesToUInt16(System.Byte[],System.Int32)`.
/// C# member: `M:LibreMetaverse.Utils.BytesToUInt64(System.Byte[])`.
/// C# member: `M:LibreMetaverse.Utils.Clamp(System.Double,System.Double,System.Double)`.
/// C# member: `M:LibreMetaverse.Utils.Clamp(System.Int32,System.Int32,System.Int32)`.
/// C# member: `M:LibreMetaverse.Utils.Clamp(System.Single,System.Single,System.Single)`.
/// C# member: `M:LibreMetaverse.Utils.CopyBytes(System.Byte[])`.
/// C# member: `M:LibreMetaverse.Utils.DateTimeToUnixTime(System.DateTime)`.
/// C# member: `M:LibreMetaverse.Utils.Distance(System.Single,System.Single)`.
/// C# member: `M:LibreMetaverse.Utils.DoubleToBytes(System.Double)`.
/// C# member: `M:LibreMetaverse.Utils.DoubleToBytes(System.Double,System.Byte[],System.Int32)`.
/// C# member: `M:LibreMetaverse.Utils.DoubleToBytesBig(System.Double)`.
/// C# member: `M:LibreMetaverse.Utils.EnumToText(System.Enum)`.
/// C# member: `M:LibreMetaverse.Utils.EnumTryParse``1(System.String,``0@)`.
/// C# member: `M:LibreMetaverse.Utils.FloatToByte(System.Single,System.Single,System.Single)`.
/// C# member: `M:LibreMetaverse.Utils.FloatToBytes(System.Single)`.
/// C# member: `M:LibreMetaverse.Utils.FloatToBytes(System.Single,System.Byte[],System.Int32)`.
/// C# member: `M:LibreMetaverse.Utils.FloatToUInt16(System.Single,System.Single,System.Single)`.
/// C# member: `M:LibreMetaverse.Utils.FolderTypeToString(LibreMetaverse.FolderType)`.
/// C# member: `M:LibreMetaverse.Utils.GetRunningPlatform`.
/// C# member: `M:LibreMetaverse.Utils.GetUnixTime`.
/// C# member: `M:LibreMetaverse.Utils.Hermite(System.Double,System.Double,System.Double,System.Double,System.Double)`.
/// C# member: `M:LibreMetaverse.Utils.Hermite(System.Single,System.Single,System.Single,System.Single,System.Single)`.
/// C# member: `M:LibreMetaverse.Utils.HexStringToBytes(System.String,System.Boolean)`.
/// C# member: `M:LibreMetaverse.Utils.HostnameToIPv4(System.String)`.
/// C# member: `M:LibreMetaverse.Utils.IPToUInt(System.Net.IPAddress)`.
/// C# member: `M:LibreMetaverse.Utils.Int16ToBytes(System.Int16)`.
/// C# member: `M:LibreMetaverse.Utils.Int16ToBytes(System.Int16,System.Byte[],System.Int32)`.
/// C# member: `M:LibreMetaverse.Utils.Int64ToBytes(System.Int64)`.
/// C# member: `M:LibreMetaverse.Utils.Int64ToBytes(System.Int64,System.Byte[],System.Int32)`.
/// C# member: `M:LibreMetaverse.Utils.IntToBytes(System.Int32)`.
/// C# member: `M:LibreMetaverse.Utils.IntToBytes(System.Int32,System.Byte[],System.Int32)`.
/// C# member: `M:LibreMetaverse.Utils.IntToBytesBig(System.Int32)`.
/// C# member: `M:LibreMetaverse.Utils.InventoryTypeToString(LibreMetaverse.InventoryType)`.
/// C# member: `M:LibreMetaverse.Utils.IsFinite(System.Double)`.
/// C# member: `M:LibreMetaverse.Utils.IsFinite(System.Single)`.
/// C# member: `M:LibreMetaverse.Utils.Lerp(System.Double,System.Double,System.Double)`.
/// C# member: `M:LibreMetaverse.Utils.Lerp(System.Single,System.Single,System.Single)`.
/// C# member: `M:LibreMetaverse.Utils.LongToUInts(System.UInt64,System.UInt32@,System.UInt32@)`.
/// C# member: `M:LibreMetaverse.Utils.MD5(System.Byte[])`.
/// C# member: `M:LibreMetaverse.Utils.MD5(System.String)`.
/// C# member: `M:LibreMetaverse.Utils.MD5String(System.String)`.
/// C# member: `M:LibreMetaverse.Utils.PBKDF2(System.String)`.
/// C# member: `M:LibreMetaverse.Utils.RandomDouble`.
/// C# member: `M:LibreMetaverse.Utils.ReadDoubleLittleEndian(System.Byte[],System.Int32)`.
/// C# member: `M:LibreMetaverse.Utils.ReadSingleLittleEndian(System.Byte[],System.Int32)`.
/// C# member: `M:LibreMetaverse.Utils.Round(System.Single)`.
/// C# member: `M:LibreMetaverse.Utils.SHA1(System.Byte[])`.
/// C# member: `M:LibreMetaverse.Utils.SHA1String(System.String)`.
/// C# member: `M:LibreMetaverse.Utils.SHA256(System.Byte[])`.
/// C# member: `M:LibreMetaverse.Utils.SHA256String(System.String)`.
/// C# member: `M:LibreMetaverse.Utils.SaleTypeToString(LibreMetaverse.SaleType)`.
/// C# member: `M:LibreMetaverse.Utils.SmoothStep(System.Double,System.Double,System.Double)`.
/// C# member: `M:LibreMetaverse.Utils.SmoothStep(System.Single,System.Single,System.Single)`.
/// C# member: `M:LibreMetaverse.Utils.StringToAssetType(System.String)`.
/// C# member: `M:LibreMetaverse.Utils.StringToAttachmentPoint(System.String)`.
/// C# member: `M:LibreMetaverse.Utils.StringToBytes(System.String)`.
/// C# member: `M:LibreMetaverse.Utils.StringToFolderType(System.String)`.
/// C# member: `M:LibreMetaverse.Utils.StringToInventoryType(System.String)`.
/// C# member: `M:LibreMetaverse.Utils.StringToSaleType(System.String)`.
/// C# member: `M:LibreMetaverse.Utils.SwapWords(System.Byte)`.
/// C# member: `M:LibreMetaverse.Utils.Swap``1(``0@,``0@)`.
/// C# member: `M:LibreMetaverse.Utils.ToDegrees(System.Single)`.
/// C# member: `M:LibreMetaverse.Utils.ToRadians(System.Single)`.
/// C# member: `M:LibreMetaverse.Utils.TryParseDouble(System.String,System.Double@)`.
/// C# member: `M:LibreMetaverse.Utils.TryParseHex(System.String,System.UInt32@)`.
/// C# member: `M:LibreMetaverse.Utils.TryParseSingle(System.String,System.Single@)`.
/// C# member: `M:LibreMetaverse.Utils.UInt16ToBytes(System.UInt16)`.
/// C# member: `M:LibreMetaverse.Utils.UInt16ToBytes(System.UInt16,System.Byte[],System.Int32)`.
/// C# member: `M:LibreMetaverse.Utils.UInt16ToBytesBig(System.UInt16,System.Byte[],System.Int32)`.
/// C# member: `M:LibreMetaverse.Utils.UInt16ToFloat(System.Byte[],System.Int32,System.Single,System.Single)`.
/// C# member: `M:LibreMetaverse.Utils.UInt16ToFloat(System.UInt16,System.Single,System.Single)`.
/// C# member: `M:LibreMetaverse.Utils.UInt64ToBytes(System.UInt64)`.
/// C# member: `M:LibreMetaverse.Utils.UInt64ToBytes(System.UInt64,System.Byte[],System.Int32)`.
/// C# member: `M:LibreMetaverse.Utils.UInt64ToBytesBig(System.UInt64)`.
/// C# member: `M:LibreMetaverse.Utils.UInt64ToBytesBig(System.UInt64,System.Byte[],System.Int32)`.
/// C# member: `M:LibreMetaverse.Utils.UIntToBytes(System.UInt32)`.
/// C# member: `M:LibreMetaverse.Utils.UIntToBytes(System.UInt32,System.Byte[],System.Int32)`.
/// C# member: `M:LibreMetaverse.Utils.UIntToBytesBig(System.UInt32,System.Byte[],System.Int32)`.
/// C# member: `M:LibreMetaverse.Utils.UIntToHexString(System.UInt32)`.
/// C# member: `M:LibreMetaverse.Utils.UIntsToLong(System.UInt32,System.UInt32)`.
/// C# member: `M:LibreMetaverse.Utils.UnixTimeToDateTime(System.Int32)`.
/// C# member: `M:LibreMetaverse.Utils.UnixTimeToDateTime(System.UInt32)`.
/// C# member: `M:LibreMetaverse.Utils.WriteDoubleLittleEndian(System.Byte[],System.Int32,System.Double)`.
/// C# member: `M:LibreMetaverse.Utils.WriteSingleLittleEndian(System.Byte[],System.Int32,System.Single)`.
pub use crate::utils::Utils;
/// C# type: `T:LibreMetaverse.Utils.Platform`.
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]

View File

@@ -6,12 +6,15 @@ mod byte_order;
mod color4;
pub mod compat;
mod crc32;
mod enum_compat;
mod generated;
mod geometry;
mod math_compat;
pub mod shim;
mod utils;
mod uuid;
mod vectors;
pub use enum_compat::EnumValueMetadata;
pub use generated::*;
pub use shim::{Error, NotImplemented, not_implemented};

View File

@@ -59,6 +59,8 @@ pub enum Error {
Cancelled,
/// An HTTP request completed with an unsuccessful response.
HttpRequest,
/// A host lookup or socket operation failed.
Socket,
}
impl Error {
@@ -72,7 +74,8 @@ impl Error {
| Self::InvalidOperation
| Self::IndexOutOfRange
| Self::Cancelled
| Self::HttpRequest => None,
| Self::HttpRequest
| Self::Socket => None,
}
}
}
@@ -95,6 +98,7 @@ impl fmt::Display for Error {
Self::IndexOutOfRange => formatter.write_str("index was out of range"),
Self::Cancelled => formatter.write_str("operation was cancelled"),
Self::HttpRequest => formatter.write_str("HTTP request failed"),
Self::Socket => formatter.write_str("socket operation failed"),
}
}
}

File diff suppressed because it is too large Load Diff