Struct neon::types::JsDate

source ·
pub struct JsDate(/* private fields */);
Expand description

The type of JavaScript Date objects.

§Example

The following shows an example of converting Rust SystemTime timestamps to JavaScript Date objects.

use easy_cast::Cast; // for safe numeric conversions
use neon::types::JsDate;
use std::{error::Error, fs::File, time::SystemTime};

/// Return the "modified" timestamp for the file at the given path.
fn last_modified(path: &str) -> Result<f64, Box<dyn Error>> {
    Ok(File::open(&path)?
        .metadata()?
        .modified()?
        .duration_since(SystemTime::UNIX_EPOCH)?
        .as_millis()
        .try_cast()?)
}

fn modified(mut cx: FunctionContext) -> JsResult<JsDate> {
    let path: Handle<JsString> = cx.argument(0)?;

    last_modified(&path.value(&mut cx))
        .and_then(|n| Ok(cx.date(n)?))
        .or_else(|err| cx.throw_error(err.to_string()))
}

Implementations§

source§

impl JsDate

source

pub const MIN_VALUE: f64 = -8.64E+15f64

The smallest possible Date value, defined by ECMAScript.

source

pub const MAX_VALUE: f64 = 8.64E+15f64

The largest possible Date value, defined by ECMAScript.

source

pub fn new<'a, C: Context<'a>, T: Into<f64>>( cx: &mut C, value: T ) -> Result<Handle<'a, JsDate>, DateError>

Creates a new Date. It errors when value is outside the range of valid JavaScript Date values. When value is NaN, the operation will succeed but with an invalid Date.

source

pub fn new_lossy<'a, C: Context<'a>, V: Into<f64>>( cx: &mut C, value: V ) -> Handle<'a, JsDate>

Creates a new Date with lossy conversion for out of bounds Date values. Out of bounds values will be treated as NaN.

source

pub fn value<'a, C: Context<'a>>(&self, cx: &mut C) -> f64

Gets the Date’s value. An invalid Date will return std::f64::NAN.

source

pub fn is_valid<'a, C: Context<'a>>(&self, cx: &mut C) -> bool

Checks if the Date’s value is valid. A Date is valid if its value is between JsDate::MIN_VALUE and JsDate::MAX_VALUE or if it is NaN.

Trait Implementations§

source§

impl Debug for JsDate

source§

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

Formats the value using the given formatter. Read more
source§

impl Object for JsDate

source§

fn get_opt<'a, V: Value, C: Context<'a>, K: PropertyKey>( &self, cx: &mut C, key: K ) -> NeonResult<Option<Handle<'a, V>>>

Gets a property from a JavaScript object that may be undefined and attempts to downcast the value if it existed.
source§

fn get_value<'a, C: Context<'a>, K: PropertyKey>( &self, cx: &mut C, key: K ) -> NeonResult<Handle<'a, JsValue>>

Gets a property from a JavaScript object as a JsValue. Read more
source§

fn get<'a, V: Value, C: Context<'a>, K: PropertyKey>( &self, cx: &mut C, key: K ) -> NeonResult<Handle<'a, V>>

Gets a property from a JavaScript object and attempts to downcast as a specific type. Equivalent to calling obj.get_value(&mut cx)?.downcast_or_throw(&mut cx). Read more
source§

fn get_own_property_names<'a, C: Context<'a>>( &self, cx: &mut C ) -> JsResult<'a, JsArray>

Available on crate feature napi-6 only.
source§

fn freeze<'a, C: Context<'a>>(&self, cx: &mut C) -> NeonResult<&Self>

source§

fn seal<'a, C: Context<'a>>(&self, cx: &mut C) -> NeonResult<&Self>

source§

fn set<'a, C: Context<'a>, K: PropertyKey, W: Value>( &self, cx: &mut C, key: K, val: Handle<'_, W> ) -> NeonResult<bool>

source§

fn root<'a, C: Context<'a>>(&self, cx: &mut C) -> Root<Self>

source§

fn call_method_with<'a, C, K>( &self, cx: &mut C, method: K ) -> NeonResult<CallOptions<'a>>
where C: Context<'a>, K: PropertyKey,

source§

impl Value for JsDate

source§

fn to_string<'cx, C: Context<'cx>>(&self, cx: &mut C) -> JsResult<'cx, JsString>

source§

fn as_value<'cx, C: Context<'cx>>(&self, _: &mut C) -> Handle<'cx, JsValue>

source§

fn to_raw(&self) -> Value

Available on crate feature sys only.
Get a raw reference to the wrapped Node-API value.
source§

unsafe fn from_raw<'cx, C: Context<'cx>>( cx: &C, value: Value ) -> Handle<'cx, Self>

Available on crate feature sys only.
Creates a value from a raw Node-API value. Read more

Auto Trait Implementations§

§

impl Freeze for JsDate

§

impl RefUnwindSafe for JsDate

§

impl !Send for JsDate

§

impl !Sync for JsDate

§

impl Unpin for JsDate

§

impl UnwindSafe for JsDate

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.