rust
提供了功能強大的模組系統,可用於按邏輯單位按層次劃分**。並管理他們的可見性。
模組是專案的集合,函式、結構、特性隱含模組、甚至其他模組。
預設情況下,模組中的專案具有私有可見性。但是可以使用pub
修飾符覆蓋使他成為模組之外可訪問的公共項。
mod mymod
// 加上`pub`標識修改函式的可見性,標明該函式是共有的
pub fn function()
// 同一模組的函式可以呼叫該模組的所有函式包括私有函式
pub fn indirect_access()
pub mod nested
#[allow(dead_code)]
fn private_function()
pub(in crate::mymod) fn public_function_in_mymod()
pub (self) fn public_function_in_nested()
pub (super) fn public_function_in_super()
}pub fn call_public_function_in_mymod()
pub(crate) fn public_function_in_crate()
mod private_nested
#[allow(dead_code)]
pub(crate) fn retired_function()
}}fn function()
fn main()
pub
標識修改函式的可見性,標明該函式是共有的。
預設函式都是模組私有的。
同一模組的函式可以呼叫該模組的所有函式包括私有函式。
pub(in path)
標識,函式對於path
模組是共有的。
pub(self)和pub(crate)
標識,函式在本模組是共有的,可以被上層模組呼叫。
pub(super)
標識,函式對於上層模組是共有的。
模組中的struct
預設是,私有的不可匯出的,如果需要使用,需要在宣告時加上pub
標識。
mod my
pub struct closebox
implclosebox}}
}fn main() ;
println!("openbox: {}", open.content);
let close = my::closebox::new("my name is lome");
// println!("{}", close)
}
openbox
與closebox
都是共用的struct
。
openbox
的filed
:content
是共有的,所以可以直接通過賦值得到。
closebox
的filed
:content
是私有的,所以不能直接賦值得到,只能通過共有的工廠函式new
來建立。
mod mymod
// 加上`pub`標識修改函式的可見性,標明該函式是共有的
pub fn function()
// 同一模組的函式可以呼叫該模組的所有函式包括私有函式
pub fn indirect_access()
pub mod nested
#[allow(dead_code)]
fn private_function()
pub(in crate::mymod) fn public_function_in_mymod()
pub (self) fn public_function_in_nested()
pub (super) fn public_function_in_super()
}pub fn call_public_function_in_mymod()
pub(crate) fn public_function_in_crate()
mod private_nested
#[allow(dead_code)]
pub(crate) fn retired_function()
}}fn function()
use mymod::;
use mymod::function as mymod_function;
use mymod::nested::function as nested_function;
fn main()
use
宣告可用於匯入完整路徑。也可以用as
來重新命名匯入模組的名字。
用self
和super
可以消除訪問專案時的歧義,並且防止不必要的路徑硬編碼。
mod my
mod cool
}pub fn indirect_function()
}}mod cool
}fn function()
fn main()
self
引用當前模組作用域。super
引用父模組的作用域。
module
可以被對映成檔案或資料夾
$ tree .
.|-- my
| |-- inaccessible.rs
| |-- mod.rs
| `-- nested.rs
`-- split.rs
THINKPHP 解決模組不存在時出現空頁面的問題
遇到的問題 最近使用thinkcmf開發了乙個企業 因為之前客戶的網域名稱變更過,然後就發現當某個模組不存在的時候就出現了空頁面 在 thinkphp論壇 上有人說在專案裡新增乙個emptyaction.class.php,然後再寫業務邏輯,結果搞了好長時間我一直都沒有找到action目錄 最後才發...
THINKPHP 解決模組不存在時出現空頁面的問題
遇到的問題 最近使用thinkcmf開發了乙個企業 因為之前客戶的網域名稱變更過,然後就發現當某個模組不存在的時候就出現了空頁面 在 thinkphp論壇 上有人說在專案裡新增乙個emptyaction.class.php,然後再寫業務邏輯,結果搞了好長時間我一直都沒有找到action目錄 最後才發...
存在還是不存在
又是一片安靜中醒來,又是乙個陰天,地面很濕潤,忽然有點秋天的感覺。昨天一天都進不來我的部落格,晚上剛進來寫了一篇小文緊接著就又是 找不到伺服器 到了深夜,終於可以上了,覺得自己長舒了一口氣。部落格依賴症。不過寫了半年多而已。依賴,一種要警惕的情緒,很容易使人沉迷,找不到自己。慌慌張張的日子終於過去了...