feat: succinct-zkvm std-lib support by nhtyy · Pull Request #1 · succinctlabs/rust-fork (original) (raw)

@@ -0,0 +1,118 @@

use super::unsupported;

use crate::error::Error as StdError;

use crate::ffi::{OsStr, OsString};

use crate:📑:PhantomData;

use crate::path::{self, PathBuf};

use crate::{fmt, io};

pub fn errno() -> i32 {

0

}

pub fn error_string(_errno: i32) -> String {

"operation successful".to_string()

}

pub fn getcwd() -> io::Result {

unsupported()

}

pub fn chdir(_: &path::Path) -> io::Result<()> {

unsupported()

}

pub struct SplitPaths<'a>(!, PhantomData<&'a ()>);

pub fn split_paths(_unparsed: &OsStr) -> SplitPaths<'_> {

panic!("unsupported")

}

impl<'a> Iterator for SplitPaths<'a> {

type Item = PathBuf;

fn next(&mut self) -> Option {

self.0

}

}

#[derive(Debug)]

pub struct JoinPathsError;

pub fn join_paths<I, T>(_paths: I) -> Result<OsString, JoinPathsError>

where

I: Iterator<Item = T>,

T: AsRef,

{

Err(JoinPathsError)

}

impl fmt::Display for JoinPathsError {

fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {

"not supported on this platform yet".fmt(f)

}

}

impl StdError for JoinPathsError {

#[allow(deprecated)]

fn description(&self) -> &str {

"not supported on this platform yet"

}

}

pub fn current_exe() -> io::Result {

unsupported()

}

pub struct Env(!);

impl Iterator for Env {

type Item = (OsString, OsString);

fn next(&mut self) -> Option<(OsString, OsString)> {

self.0

}

}

pub fn env() -> Env {

panic!("not supported on this platform")

}

impl Env {

pub fn str_debug(&self) -> impl fmt::Debug + '_ {

let Self(inner) = self;

match *inner {}

}

}

impl fmt::Debug for Env {

fn fmt(&self, _: &mut fmt::Formatter<'_>) -> fmt::Result {

let Self(inner) = self;

match *inner {}

}

}

pub fn getenv(_: &OsStr) -> Option {

panic!("getenv not implemented for succinct");

}

pub unsafe fn setenv(_: &OsStr, _: &OsStr) -> io::Result<()> {

Err(io::const_error!(io::ErrorKind::Unsupported, "cannot set env vars on this platform"))

}

pub unsafe fn unsetenv(_: &OsStr) -> io::Result<()> {

Err(io::const_error!(io::ErrorKind::Unsupported, "cannot unset env vars on this platform"))

}

pub fn temp_dir() -> PathBuf {

panic!("no filesystem on this platform")

}

pub fn home_dir() -> Option {

None

}

pub fn exit(_code: i32) -> ! {

crate::intrinsics::abort()

}

pub fn getpid() -> u32 {

panic!("no pids on this platform")

}