Appearance
导出Class
rust
use std::path::{Path, PathBuf};
use napi_derive::napi;
use tokio::{fs};
use futures::prelude::*;
use napi::bindgen_prelude::*;
// 此处可以通过js_name制定类名
#[napi(js_name = "ClassDemoName")]
pub struct ClassDemo {
name: String
}
#[napi]
impl ClassDemo {
// 设置当前的new方法为构造函数
#[napi(constructor)]
pub fn new() -> Self {
ClassDemo {
name: String::from("123")
}
}
// 设置一个工厂方法,必须返回当前的类, 最后会变成一个静态的方法,并且返回当前类的实例
#[napi(factory)]
pub fn with_initial_count(count: u32) -> ClassDemo {
ClassDemo {
name: String::from(count.to_string())
}
}
// 设置一个普通的异步方法
#[napi]
pub async fn read_dir(&self, query: String) -> napi::Result<String> {
let res = fs::read_to_string(PathBuf::from(query)).await?;
Ok(res)
}
// 设置一个普通方法
#[napi]
pub fn return_string(&self) -> napi::Result<String> {
Ok(String::from("value"))
}
// 设置一个getter
#[napi(getter)]
pub fn name(&self) -> &str {
self.name.as_str()
}
// 设置一个setter
#[napi(setter)]
pub fn set_name(&mut self, s: String) {
self.name = s;
}
// 设置方法的可访问性 writable / enumerable / configurable
#[napi(writable = false)]
pub fn get_name(&self) -> &str {
self.name.as_str()
}
}
use std::path::{Path, PathBuf};
use napi_derive::napi;
use tokio::{fs};
use futures::prelude::*;
use napi::bindgen_prelude::*;
// 此处可以通过js_name制定类名
#[napi(js_name = "ClassDemoName")]
pub struct ClassDemo {
name: String
}
#[napi]
impl ClassDemo {
// 设置当前的new方法为构造函数
#[napi(constructor)]
pub fn new() -> Self {
ClassDemo {
name: String::from("123")
}
}
// 设置一个工厂方法,必须返回当前的类, 最后会变成一个静态的方法,并且返回当前类的实例
#[napi(factory)]
pub fn with_initial_count(count: u32) -> ClassDemo {
ClassDemo {
name: String::from(count.to_string())
}
}
// 设置一个普通的异步方法
#[napi]
pub async fn read_dir(&self, query: String) -> napi::Result<String> {
let res = fs::read_to_string(PathBuf::from(query)).await?;
Ok(res)
}
// 设置一个普通方法
#[napi]
pub fn return_string(&self) -> napi::Result<String> {
Ok(String::from("value"))
}
// 设置一个getter
#[napi(getter)]
pub fn name(&self) -> &str {
self.name.as_str()
}
// 设置一个setter
#[napi(setter)]
pub fn set_name(&mut self, s: String) {
self.name = s;
}
// 设置方法的可访问性 writable / enumerable / configurable
#[napi(writable = false)]
pub fn get_name(&self) -> &str {
self.name.as_str()
}
}