{"id":45173,"date":"2023-06-30T03:16:44","date_gmt":"2023-08-24T20:27:30","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/45173-2\/"},"modified":"2024-04-30T11:19:04","modified_gmt":"2024-04-30T03:19:04","slug":"45173-2","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/45173-2\/","title":{"rendered":""},"content":{"rendered":"<h1>\u80cc\u666f<\/h1>\n<blockquote><p>Rust \u3067 node \u306e native modules \u3092\u66f8\u304f\u306e\u3001Rust\u3092\u66f8\u3044\u3066\u307f\u305f\u3044\u304b\u3089\u3063\u3066\u3044\u3046\u7406\u7531\u3060\u3051\u3067\u8a66\u3057\u3066\u307f\u305f\u3044\u3002 https:\/\/t.co\/vek4YFjW5e https:\/\/t.co\/uqpd95C4QQ\u2014 Yosuke FURUKAWA (@yosuke_furukawa) 2015, 12\u6708 24<\/p><\/blockquote>\n<p>&nbsp;<\/p>\n<p>\u306a\u3093\u3066\u3001\u30c4\u30a4\u30fc\u30c8\u3092\u305f\u307e\u305f\u307e\u898b\u304b\u3051\u3001<\/p>\n<blockquote><p>\u539f\u7406\u7684\u306b\u3061\u3087\u3063\u3068\u307e\u3048\u306eRust\u3060\u3068dleopn\u6642\u306b\u547c\u3073\u51fa\u3059\u95a2\u6570\u3092\u6307\u5b9a\u3067\u304d\u306a\u304b\u3063\u305f\u304b\u3089\u76f4\u63a5.node\u30d5\u30a1\u30a4\u30eb\u306fRust\u304c\u5410\u3051\u306a\u3044\u306f\u305a\u306a\u3093\u3060\u3051\u3069\u3001\u305d\u306e\u8fba\u308a\u3069\u3046\u306a\u3063\u3066\u308b\u306e\u3060\u308d\u3046\u304b \/ \u201cdherman\/wc-demo \u00b7 GitHub\u201d https:\/\/t.co\/pdAqgRMFbW\u2014 kjunichi (@kjunichi) 2015, 12\u6708 24<\/p><\/blockquote>\n<h1>\u306a\u305c\u539f\u7406\u7684\u306b\u7121\u7406\u305d\u3046\u306a\u306e\u304b<\/h1>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">http:\/\/abrakatabura.hatenablog.com\/entry\/2015\/12\/14\/214922<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">https:\/\/users.rust-lang.org\/t\/library-onload-initialization\/3079\/2<\/ul>\n<h1>\u3084\u3063\u3066\u307f\u305f<\/h1>\n<p>Rust\u304c\u3042\u308b\u6642\u304b\u3089\u3001\u300cattribute((constructor))\u300d\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u305f\u306e\u304b\u3082\u3068\u601d\u3044\u3001\u8abf\u3079\u308b\u3082\u898b\u5f53\u305f\u3089\u305a\u3002<\/p>\n<p>wc-demo\u306e\u30b3\u30fc\u30c9\u3092\u305f\u3069\u308a\u3001\u4f9d\u5b58\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u306epackage.json\u3092\u305f\u3069\u308b\u3082<br \/>\nnode-ffi\u3059\u3089\u898b\u5f53\u305f\u3089\u305a\u3001\u3053\u308c\u306f\u4ffa\u304c\u77e5\u3089\u306a\u3044\u672a\u77e5\u306e\u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u3092\u4f7f\u3063\u3066\u89e3\u6c7a\u3057\u305f\u306e\u304b\uff01<\/p>\n<p>\u3068\u3001\u671f\u5f85\u3092\u81a8\u3089\u307e\u305b\u3066\u5b9f\u969b\u306b\u52d5\u304b\u3057\u3066\u307f\u305f\u3002<\/p>\n<h2>rust\u306e\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8<\/h2>\n<p>1.5\u4ee5\u4e0a\u3068wc-demo\u306b\u66f8\u3044\u3066\u3042\u308b\u306e\u3067\u3001<\/p>\n<pre class=\"post-pre\"><code>curl -sSf https:\/\/static.rust-lang.org\/rustup.sh | sh\r\n<\/code><\/pre>\n<p>OSX\u3067\u306fPkg\u3082\u7528\u610f\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3001\u305d\u3053\u3089\u3078\u3093\u306f\u304a\u597d\u307f\u3067\u3002<\/p>\n<h2>wc-demo\u3092\u30af\u30ed\u30fc\u30f3\u3057\u3066\u8a66\u3059<\/h2>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> nodebrew <span class=\"nb\">ls<\/span>\r\n<span class=\"go\">v0.10.35\r\nv0.12.0\r\nv4.2.1\r\nv5.1.1\r\nv5.2.0\r\nv5.3.0\r\n\r\ncurrent: v5.3.0\r\n\r\n<\/span><span class=\"gp\">$<\/span> npm <span class=\"nb\">install<\/span>\r\n<span class=\"go\">npm WARN prefer global node-gyp@3.0.3 should be installed with -g\r\n\r\n<\/span><span class=\"gp\">&gt;<\/span> wc-demo@0.0.0 postinstall \/Users\/kjw_junichi\/work\/rust\/neon\/wc-demo\r\n<span class=\"gp\">&gt;<\/span> neon build\r\n<span class=\"go\">\r\n  ACTION binding_gyp_wc_demo_target_generate Release\/obj.target\/wc_demo\/geni\/binding.cc\r\n  ACTION binding_gyp_wc_demo_target_cargo ..\/target\/release\/libwc_demo.a\r\nUnable to update file:\/\/\/Users\/kjw_junichi\/work\/rust\/neon\/wc-demo\r\n\r\nCaused by:\r\n  Could not find `Cargo.toml` in `\/Users\/kjunichi\/work\/rust\/neon\/neon`\r\nmake: *** [..\/target\/release\/libwc_demo.a] Error 101\r\ngyp ERR! build error \r\ngyp ERR! stack Error: `make` failed with exit code: 2\r\ngyp ERR! stack     at ChildProcess.onExit (\/Users\/kjunichi\/work\/rust\/neon\/wc-demo\/node_modules\/node-gyp\/lib\/build.js:270:23)\r\ngyp ERR! stack     at emitTwo (events.js:87:13)\r\ngyp ERR! stack     at ChildProcess.emit (events.js:172:7)\r\ngyp ERR! stack     at Process.ChildProcess._handle.onexit (internal\/child_process.js:200:12)\r\ngyp ERR! System Darwin 15.2.0\r\ngyp ERR! command \"\/Users\/kjunichi\/.nodebrew\/node\/v5.3.0\/bin\/node\" \"\/Users\/kjunichi\/work\/rust\/neon\/wc-demo\/node_modules\/.bin\/node-gyp\" \"rebuild\"\r\ngyp ERR! cwd \/Users\/kjunichi\/work\/rust\/neon\/wc-demo\r\ngyp ERR! node -v v5.3.0\r\ngyp ERR! node-gyp -v v3.0.3\r\ngyp ERR! not ok \r\n\r\nnpm ERR! Darwin 15.2.0\r\nnpm ERR! argv \"\/Users\/kjunichi\/.nodebrew\/node\/v5.3.0\/bin\/node\" \"\/Users\/kjunichi\/.nodebrew\/current\/bin\/npm\" \"install\"\r\nnpm ERR! node v5.3.0\r\nnpm ERR! npm  v3.3.12\r\nnpm ERR! code ELIFECYCLE\r\nnpm ERR! wc-demo@0.0.0 postinstall: `neon build`\r\nnpm ERR! Exit status 1\r\nnpm ERR! \r\nnpm ERR! Failed at the wc-demo@0.0.0 postinstall script 'neon build'.\r\nnpm ERR! Make sure you have the latest version of node.js and npm installed.\r\nnpm ERR! If you do, this is most likely a problem with the wc-demo package,\r\nnpm ERR! not with npm itself.\r\nnpm ERR! Tell the author that this fails on your system:\r\nnpm ERR!     neon build\r\nnpm ERR! You can get their info via:\r\nnpm ERR!     npm owner ls wc-demo\r\nnpm ERR! There is likely additional logging output above.\r\n\r\nnpm ERR! Please include the following file with any support request:\r\nnpm ERR!     \/Users\/kjunichi\/work\/rust\/neon\/wc-demo\/npm-debug.log\r\n<\/span><\/code><\/pre>\n<h2>\u52d5\u304b\u3059\u306b\u306f<\/h2>\n<pre class=\"post-pre\"><code><span class=\"nb\">cd<\/span> ..\r\ngit clone https:\/\/github.com\/dherman\/neon.git\r\nnpm <span class=\"nb\">install<\/span> <span class=\"nt\">-g<\/span> neon-cli\r\n<span class=\"nb\">cd <\/span>wc-demo\r\ncargo update\r\nnpm <span class=\"nb\">install<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> node <span class=\"nt\">-e<\/span> <span class=\"s1\">'require(\".\/\")'<\/span>\r\n<span class=\"go\">node -e 'require(\".\/\")'\r\n3092 [280ms, 914\u03bcs, 751ns]\r\n3092 [40ms, 930\u03bcs, 825ns]\r\n<\/span><\/code><\/pre>\n<p>\u52d5\u304d\u307e\u3057\u305f\uff01<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> <span class=\"nb\">cat <\/span>binding.gyp\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"err\">#<\/span> <span class=\"err\">THIS<\/span> <span class=\"err\">FILE<\/span> <span class=\"err\">WAS<\/span> <span class=\"err\">AUTOMATICALLY<\/span> <span class=\"err\">GENERATED.<\/span> <span class=\"err\">DO<\/span> <span class=\"err\">NOT<\/span> <span class=\"err\">EDIT.<\/span>\r\n\r\n<span class=\"p\">{<\/span>\r\n    <span class=\"nl\">\"target_defaults\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"nl\">\"default_configuration\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Release\"<\/span>\r\n    <span class=\"p\">},<\/span>\r\n\r\n    <span class=\"nl\">\"targets\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[{<\/span>\r\n        <span class=\"nl\">\"target_name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"wc_demo\"<\/span><span class=\"p\">,<\/span>\r\n\r\n        <span class=\"nl\">\"variables\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n            <span class=\"nl\">\"rust_inputs\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"s2\">\"src\/lib.rs\"<\/span><span class=\"p\">],<\/span>\r\n            <span class=\"nl\">\"static_lib\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"target\/release\/&lt;(STATIC_LIB_PREFIX)wc_demo&lt;(STATIC_LIB_SUFFIX)\"<\/span><span class=\"p\">,<\/span>\r\n            <span class=\"nl\">\"shared_lib\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"target\/release\/&lt;(SHARED_LIB_PREFIX)wc_demo&lt;(SHARED_LIB_SUFFIX)\"<\/span>\r\n        <span class=\"p\">},<\/span>\r\n\r\n        <span class=\"nl\">\"sources\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"s2\">\"&lt;(INTERMEDIATE_DIR)\/binding.cc\"<\/span><span class=\"p\">],<\/span>\r\n\r\n        <span class=\"nl\">\"include_dirs\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"s2\">\"&lt;!(neon include-path)\"<\/span><span class=\"p\">],<\/span>\r\n\r\n        <span class=\"nl\">\"libraries\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"s2\">\"..\/&lt;(shared_lib)\"<\/span><span class=\"p\">],<\/span>\r\n\r\n        <span class=\"nl\">\"actions\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[{<\/span>\r\n            <span class=\"nl\">\"action_name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"cargo\"<\/span><span class=\"p\">,<\/span>\r\n            <span class=\"nl\">\"inputs\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"s2\">\"&lt;@(rust_inputs)\"<\/span><span class=\"p\">],<\/span>\r\n            <span class=\"nl\">\"outputs\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"s2\">\"..\/&lt;(static_lib)\"<\/span><span class=\"p\">],<\/span>\r\n            <span class=\"nl\">\"action\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"s2\">\"cargo\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"rustc\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"--release\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"--\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"--crate-type\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"staticlib\"<\/span><span class=\"p\">]<\/span>\r\n        <span class=\"p\">},<\/span> <span class=\"p\">{<\/span>\r\n            <span class=\"nl\">\"action_name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"shared_lib\"<\/span><span class=\"p\">,<\/span>\r\n            <span class=\"nl\">\"inputs\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"s2\">\"&lt;(static_lib)\"<\/span><span class=\"p\">],<\/span>\r\n            <span class=\"nl\">\"outputs\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"s2\">\"..\/&lt;(shared_lib)\"<\/span><span class=\"p\">],<\/span>\r\n            <span class=\"err\">#<\/span> <span class=\"err\">FIXME:<\/span> <span class=\"err\">OSX-specific<\/span>\r\n            <span class=\"nl\">\"action\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"s2\">\"gcc\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"-dynamiclib\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"-Wl,-undefined,dynamic_lookup\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"-Wl,-force_load,&lt;(static_lib)\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"-o\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"&lt;(shared_lib)\"<\/span><span class=\"p\">]<\/span>\r\n        <span class=\"p\">},<\/span> <span class=\"p\">{<\/span>\r\n            <span class=\"nl\">\"action_name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"generate\"<\/span><span class=\"p\">,<\/span>\r\n            <span class=\"nl\">\"inputs\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[],<\/span>\r\n            <span class=\"nl\">\"outputs\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"s2\">\"&lt;(INTERMEDIATE_DIR)\/binding.cc\"<\/span><span class=\"p\">],<\/span>\r\n            <span class=\"nl\">\"action\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"s2\">\"neon\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"generate\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"&lt;(INTERMEDIATE_DIR)\/binding.cc\"<\/span><span class=\"p\">]<\/span>\r\n        <span class=\"p\">}]<\/span>\r\n    <span class=\"p\">}]<\/span>\r\n\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>\u3068\u3044\u3046\u3053\u3068\u3067\u3001biding.cc\u3092\u30a8\u30f3\u30c8\u30ea\u30dd\u30a4\u30f3\u30c8\u306b\u3057\u3066\u3001\u305d\u306e\u5148\u304cRust\u3067\u8a18\u8ff0\u3055\u308c\u305f\u30e2\u30b8\u30e5\u30fc\u30eb\u3068\u306a\u3063\u3066\u3044\u308b\u3088\u3046\u3067\u3059\u3002<\/p>\n<h1>\u95a2\u9023<\/h1>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Rust\u3067\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30a2\u30d7\u30ea\u3067\u30ad\u30fc\u304c\u62bc\u3055\u308c\u305f\u304b\u306e\u5224\u5b9a\u3057\u3064\u3064\u3001\u5225\u306e\u51e6\u7406\u3082\u9032\u3081\u308b\u306b\u306f<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Rust\u3067Web\u30ab\u30e1\u30e9\u306e\u6620\u50cf\u3092\u30b3\u30de\u30f3\u30c9\u30d7\u30ed\u30f3\u30d7\u30c8\u306b\u51fa\u3059\u30b3\u30de\u30f3\u30c9\u3092\u4f5c\u3063\u305f<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Rust\u3067Go\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u3046\u3068\u304d\u306eCargo\u306ebuild.rs\u306e\u66f8\u304d\u65b9<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Surface Go\u306e\u30ab\u30e1\u30e9\u6620\u50cf\u3092Rust\u3067\u30b3\u30de\u30f3\u30c9\u30d7\u30ed\u30f3\u30d7\u30c8\u306b\u8868\u793a\u3057\u305f<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">Rust\u3067\u5171\u6709\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f5c\u308b\u969b\u306b\u5fc5\u8981\u3060\u3063\u305fC\u306econst char*\u3092Rust\u306e&amp;str\u306b\u3059\u308b\u65b9\u6cd5<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\u80cc\u666f Rust \u3067 node \u306e native modules \u3092\u66f8\u304f\u306e\u3001Rust\u3092\u66f8\u3044\u3066\u307f\u305f\u3044\u304b\u3089\u3063\u3066\u3044\u3046\u7406 [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-45173","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>- Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/45173-2\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:description\" content=\"\u80cc\u666f Rust \u3067 node \u306e native modules \u3092\u66f8\u304f\u306e\u3001Rust\u3092\u66f8\u3044\u3066\u307f\u305f\u3044\u304b\u3089\u3063\u3066\u3044\u3046\u7406 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/45173-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-24T20:27:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-30T03:19:04+00:00\" \/>\n<meta name=\"author\" content=\"\u6587, \u7fd4\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u6587, \u7fd4\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/45173-2\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/45173-2\/\",\"name\":\"- Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-08-24T20:27:30+00:00\",\"dateModified\":\"2024-04-30T03:19:04+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/45173-2\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c\",\"name\":\"\u6587, \u7fd4\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g\",\"caption\":\"\u6587, \u7fd4\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/wenxiang\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/45173-2\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"- Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/45173-2\/","og_locale":"zh_CN","og_type":"article","og_description":"\u80cc\u666f Rust \u3067 node \u306e native modules \u3092\u66f8\u304f\u306e\u3001Rust\u3092\u66f8\u3044\u3066\u307f\u305f\u3044\u304b\u3089\u3063\u3066\u3044\u3046\u7406 [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/45173-2\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-08-24T20:27:30+00:00","article_modified_time":"2024-04-30T03:19:04+00:00","author":"\u6587, \u7fd4","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u6587, \u7fd4","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"3 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/45173-2\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/45173-2\/","name":"- Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-08-24T20:27:30+00:00","dateModified":"2024-04-30T03:19:04+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/45173-2\/"]}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c","name":"\u6587, \u7fd4","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g","caption":"\u6587, \u7fd4"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/wenxiang\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/45173-2\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/45173","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=45173"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/45173\/revisions"}],"predecessor-version":[{"id":91593,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/45173\/revisions\/91593"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=45173"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=45173"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=45173"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}