neon::types

Struct 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 prop<'a, 'cx: 'a, K: PropertyKey>( &self, cx: &'a mut Cx<'cx>, key: K, ) -> PropOptions<'a, 'cx, Self, K>

Create a PropOptions for accessing a property. Read more
Source§

fn method<'a, 'cx: 'a, K: PropertyKey>( &self, cx: &'a mut Cx<'cx>, key: K, ) -> NeonResult<BindOptions<'a, 'cx>>

Gets a property from the object as a method and binds this to the object. Read more
Source§

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

👎Deprecating in a future version: use Object::prop() instead
Source§

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

👎Deprecating in a future version: use Object::prop() instead
Source§

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

👎Deprecating in a future version: use Object::prop() instead
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>

👎Deprecating in a future version: use Object::prop() instead
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,

👎Deprecating in a future version: use Object::method() instead
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

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

Source§

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>,

Source§

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.